Skip to content

Commit 49ff3e7

Browse files
committed
Merge tag 'drm-misc-fixes-2024-10-17' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-fixes
Short summary of fixes pull: ast: - Clear EDID on unplugged connectors host1x: - Fix boot on Tegra186 - Set DMA parameters mgag200: - Revert VBLANK support panel: - himax-hx83192: Adjust power and gamma qaic: - Sgtable loop fixes vmwgfx: - Limit display layout allocatino size - Handle allocation errors in connector checks - Clean up KMS code for 2d-only setup - Report surface-check errors correctly - Remove NULL test around kvfree() Signed-off-by: Dave Airlie <[email protected]> From: Thomas Zimmermann <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents 7626b4e + c09c4f2 commit 49ff3e7

25 files changed

+48
-240
lines changed

drivers/accel/qaic/qaic_control.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ static int encode_addr_size_pairs(struct dma_xfer *xfer, struct wrapper_list *wr
496496
nents = sgt->nents;
497497
nents_dma = nents;
498498
*size = QAIC_MANAGE_EXT_MSG_LENGTH - msg_hdr_len - sizeof(**out_trans);
499-
for_each_sgtable_sg(sgt, sg, i) {
499+
for_each_sgtable_dma_sg(sgt, sg, i) {
500500
*size -= sizeof(*asp);
501501
/* Save 1K for possible follow-up transactions. */
502502
if (*size < SZ_1K) {

drivers/accel/qaic/qaic_data.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ static int clone_range_of_sgt_for_slice(struct qaic_device *qdev, struct sg_tabl
184184
nents = 0;
185185

186186
size = size ? size : PAGE_SIZE;
187-
for (sg = sgt_in->sgl; sg; sg = sg_next(sg)) {
187+
for_each_sgtable_dma_sg(sgt_in, sg, j) {
188188
len = sg_dma_len(sg);
189189

190190
if (!len)
@@ -221,7 +221,7 @@ static int clone_range_of_sgt_for_slice(struct qaic_device *qdev, struct sg_tabl
221221

222222
/* copy relevant sg node and fix page and length */
223223
sgn = sgf;
224-
for_each_sgtable_sg(sgt, sg, j) {
224+
for_each_sgtable_dma_sg(sgt, sg, j) {
225225
memcpy(sg, sgn, sizeof(*sg));
226226
if (sgn == sgf) {
227227
sg_dma_address(sg) += offf;
@@ -301,7 +301,7 @@ static int encode_reqs(struct qaic_device *qdev, struct bo_slice *slice,
301301
* fence.
302302
*/
303303
dev_addr = req->dev_addr;
304-
for_each_sgtable_sg(slice->sgt, sg, i) {
304+
for_each_sgtable_dma_sg(slice->sgt, sg, i) {
305305
slice->reqs[i].cmd = cmd;
306306
slice->reqs[i].src_addr = cpu_to_le64(slice->dir == DMA_TO_DEVICE ?
307307
sg_dma_address(sg) : dev_addr);

drivers/gpu/drm/ast/ast_sil164.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ static int ast_sil164_connector_helper_get_modes(struct drm_connector *connector
2929
if (ast_connector->physical_status == connector_status_connected) {
3030
count = drm_connector_helper_get_modes(connector);
3131
} else {
32+
drm_edid_connector_update(connector, NULL);
33+
3234
/*
3335
* There's no EDID data without a connected monitor. Set BMC-
3436
* compatible modes in this case. The XGA default resolution

drivers/gpu/drm/ast/ast_vga.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ static int ast_vga_connector_helper_get_modes(struct drm_connector *connector)
2929
if (ast_connector->physical_status == connector_status_connected) {
3030
count = drm_connector_helper_get_modes(connector);
3131
} else {
32+
drm_edid_connector_update(connector, NULL);
33+
3234
/*
3335
* There's no EDID data without a connected monitor. Set BMC-
3436
* compatible modes in this case. The XGA default resolution

drivers/gpu/drm/mgag200/mgag200_drv.c

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include <drm/drm_managed.h>
1919
#include <drm/drm_module.h>
2020
#include <drm/drm_pciids.h>
21-
#include <drm/drm_vblank.h>
2221

2322
#include "mgag200_drv.h"
2423

@@ -85,34 +84,6 @@ resource_size_t mgag200_probe_vram(void __iomem *mem, resource_size_t size)
8584
return offset - 65536;
8685
}
8786

88-
static irqreturn_t mgag200_irq_handler(int irq, void *arg)
89-
{
90-
struct drm_device *dev = arg;
91-
struct mga_device *mdev = to_mga_device(dev);
92-
struct drm_crtc *crtc;
93-
u32 status, ien;
94-
95-
status = RREG32(MGAREG_STATUS);
96-
97-
if (status & MGAREG_STATUS_VLINEPEN) {
98-
ien = RREG32(MGAREG_IEN);
99-
if (!(ien & MGAREG_IEN_VLINEIEN))
100-
goto out;
101-
102-
crtc = drm_crtc_from_index(dev, 0);
103-
if (WARN_ON_ONCE(!crtc))
104-
goto out;
105-
drm_crtc_handle_vblank(crtc);
106-
107-
WREG32(MGAREG_ICLEAR, MGAREG_ICLEAR_VLINEICLR);
108-
109-
return IRQ_HANDLED;
110-
}
111-
112-
out:
113-
return IRQ_NONE;
114-
}
115-
11687
/*
11788
* DRM driver
11889
*/
@@ -196,7 +167,6 @@ int mgag200_device_init(struct mga_device *mdev,
196167
const struct mgag200_device_funcs *funcs)
197168
{
198169
struct drm_device *dev = &mdev->base;
199-
struct pci_dev *pdev = to_pci_dev(dev->dev);
200170
u8 crtcext3, misc;
201171
int ret;
202172

@@ -223,14 +193,6 @@ int mgag200_device_init(struct mga_device *mdev,
223193
mutex_unlock(&mdev->rmmio_lock);
224194

225195
WREG32(MGAREG_IEN, 0);
226-
WREG32(MGAREG_ICLEAR, MGAREG_ICLEAR_VLINEICLR);
227-
228-
ret = devm_request_irq(&pdev->dev, pdev->irq, mgag200_irq_handler, IRQF_SHARED,
229-
dev->driver->name, dev);
230-
if (ret) {
231-
drm_err(dev, "Failed to acquire interrupt, error %d\n", ret);
232-
return ret;
233-
}
234196

235197
return 0;
236198
}

drivers/gpu/drm/mgag200/mgag200_drv.h

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -391,35 +391,25 @@ int mgag200_crtc_helper_atomic_check(struct drm_crtc *crtc, struct drm_atomic_st
391391
void mgag200_crtc_helper_atomic_flush(struct drm_crtc *crtc, struct drm_atomic_state *old_state);
392392
void mgag200_crtc_helper_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_state *old_state);
393393
void mgag200_crtc_helper_atomic_disable(struct drm_crtc *crtc, struct drm_atomic_state *old_state);
394-
bool mgag200_crtc_helper_get_scanout_position(struct drm_crtc *crtc, bool in_vblank_irq,
395-
int *vpos, int *hpos,
396-
ktime_t *stime, ktime_t *etime,
397-
const struct drm_display_mode *mode);
398394

399395
#define MGAG200_CRTC_HELPER_FUNCS \
400396
.mode_valid = mgag200_crtc_helper_mode_valid, \
401397
.atomic_check = mgag200_crtc_helper_atomic_check, \
402398
.atomic_flush = mgag200_crtc_helper_atomic_flush, \
403399
.atomic_enable = mgag200_crtc_helper_atomic_enable, \
404-
.atomic_disable = mgag200_crtc_helper_atomic_disable, \
405-
.get_scanout_position = mgag200_crtc_helper_get_scanout_position
400+
.atomic_disable = mgag200_crtc_helper_atomic_disable
406401

407402
void mgag200_crtc_reset(struct drm_crtc *crtc);
408403
struct drm_crtc_state *mgag200_crtc_atomic_duplicate_state(struct drm_crtc *crtc);
409404
void mgag200_crtc_atomic_destroy_state(struct drm_crtc *crtc, struct drm_crtc_state *crtc_state);
410-
int mgag200_crtc_enable_vblank(struct drm_crtc *crtc);
411-
void mgag200_crtc_disable_vblank(struct drm_crtc *crtc);
412405

413406
#define MGAG200_CRTC_FUNCS \
414407
.reset = mgag200_crtc_reset, \
415408
.destroy = drm_crtc_cleanup, \
416409
.set_config = drm_atomic_helper_set_config, \
417410
.page_flip = drm_atomic_helper_page_flip, \
418411
.atomic_duplicate_state = mgag200_crtc_atomic_duplicate_state, \
419-
.atomic_destroy_state = mgag200_crtc_atomic_destroy_state, \
420-
.enable_vblank = mgag200_crtc_enable_vblank, \
421-
.disable_vblank = mgag200_crtc_disable_vblank, \
422-
.get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp
412+
.atomic_destroy_state = mgag200_crtc_atomic_destroy_state
423413

424414
void mgag200_set_mode_regs(struct mga_device *mdev, const struct drm_display_mode *mode,
425415
bool set_vidrst);

drivers/gpu/drm/mgag200/mgag200_g200.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include <drm/drm_drv.h>
99
#include <drm/drm_gem_atomic_helper.h>
1010
#include <drm/drm_probe_helper.h>
11-
#include <drm/drm_vblank.h>
1211

1312
#include "mgag200_drv.h"
1413

@@ -404,9 +403,5 @@ struct mga_device *mgag200_g200_device_create(struct pci_dev *pdev, const struct
404403
drm_mode_config_reset(dev);
405404
drm_kms_helper_poll_init(dev);
406405

407-
ret = drm_vblank_init(dev, 1);
408-
if (ret)
409-
return ERR_PTR(ret);
410-
411406
return mdev;
412407
}

drivers/gpu/drm/mgag200/mgag200_g200eh.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include <drm/drm_drv.h>
99
#include <drm/drm_gem_atomic_helper.h>
1010
#include <drm/drm_probe_helper.h>
11-
#include <drm/drm_vblank.h>
1211

1312
#include "mgag200_drv.h"
1413

@@ -276,9 +275,5 @@ struct mga_device *mgag200_g200eh_device_create(struct pci_dev *pdev, const stru
276275
drm_mode_config_reset(dev);
277276
drm_kms_helper_poll_init(dev);
278277

279-
ret = drm_vblank_init(dev, 1);
280-
if (ret)
281-
return ERR_PTR(ret);
282-
283278
return mdev;
284279
}

drivers/gpu/drm/mgag200/mgag200_g200eh3.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#include <drm/drm_drv.h>
88
#include <drm/drm_gem_atomic_helper.h>
99
#include <drm/drm_probe_helper.h>
10-
#include <drm/drm_vblank.h>
1110

1211
#include "mgag200_drv.h"
1312

@@ -181,9 +180,5 @@ struct mga_device *mgag200_g200eh3_device_create(struct pci_dev *pdev,
181180
drm_mode_config_reset(dev);
182181
drm_kms_helper_poll_init(dev);
183182

184-
ret = drm_vblank_init(dev, 1);
185-
if (ret)
186-
return ERR_PTR(ret);
187-
188183
return mdev;
189184
}

drivers/gpu/drm/mgag200/mgag200_g200er.c

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include <drm/drm_drv.h>
99
#include <drm/drm_gem_atomic_helper.h>
1010
#include <drm/drm_probe_helper.h>
11-
#include <drm/drm_vblank.h>
1211

1312
#include "mgag200_drv.h"
1413

@@ -206,17 +205,14 @@ static void mgag200_g200er_crtc_helper_atomic_enable(struct drm_crtc *crtc,
206205
mgag200_crtc_set_gamma_linear(mdev, format);
207206

208207
mgag200_enable_display(mdev);
209-
210-
drm_crtc_vblank_on(crtc);
211208
}
212209

213210
static const struct drm_crtc_helper_funcs mgag200_g200er_crtc_helper_funcs = {
214211
.mode_valid = mgag200_crtc_helper_mode_valid,
215212
.atomic_check = mgag200_crtc_helper_atomic_check,
216213
.atomic_flush = mgag200_crtc_helper_atomic_flush,
217214
.atomic_enable = mgag200_g200er_crtc_helper_atomic_enable,
218-
.atomic_disable = mgag200_crtc_helper_atomic_disable,
219-
.get_scanout_position = mgag200_crtc_helper_get_scanout_position,
215+
.atomic_disable = mgag200_crtc_helper_atomic_disable
220216
};
221217

222218
static const struct drm_crtc_funcs mgag200_g200er_crtc_funcs = {
@@ -312,9 +308,5 @@ struct mga_device *mgag200_g200er_device_create(struct pci_dev *pdev, const stru
312308
drm_mode_config_reset(dev);
313309
drm_kms_helper_poll_init(dev);
314310

315-
ret = drm_vblank_init(dev, 1);
316-
if (ret)
317-
return ERR_PTR(ret);
318-
319311
return mdev;
320312
}

0 commit comments

Comments
 (0)