Skip to content

Commit c4fc118

Browse files
committed
Merge tag 'drm-fixes-2022-03-04' of git://anongit.freedesktop.org/drm/drm
Pull drm fixes from Dave Airlie: "Things are quieting down as expected, just a small set of fixes, i915, exynos, amdgpu, vrr, bridge and hdlcd. Nothing scary at all. i915: - Fix GuC SLPC unset command - Fix misidentification of some Apple MacBook Pro laptops as Jasper Lake amdgpu: - Suspend regression fix exynos: - irq handling fixes - Fix two regressions to TE-gpio handling arm/hdlcd: - Select DRM_GEM_CMEA_HELPER for HDLCD bridge: - ti-sn65dsi86: Properly undo autosuspend vrr: - Fix potential NULL-pointer deref" * tag 'drm-fixes-2022-03-04' of git://anongit.freedesktop.org/drm/drm: drm/amdgpu: fix suspend/resume hang regression drm/vrr: Set VRR capable prop only if it is attached to connector drm/arm: arm hdlcd select DRM_GEM_CMA_HELPER drm/bridge: ti-sn65dsi86: Properly undo autosuspend drm/i915: s/JSP2/ICP2/ PCH drm/i915/guc/slpc: Correct the param count for unset param drm/exynos: Search for TE-gpio in DSI panel's node drm/exynos: Don't fail if no TE-gpio is defined for DSI driver drm/exynos: gsc: Use platform_get_irq() to get the interrupt drm/exynos/fimc: Use platform_get_irq() to get the interrupt drm/exynos/exynos_drm_fimd: Use platform_get_irq_byname() to get the interrupt drm/exynos: mixer: Use platform_get_irq() to get the interrupt drm/exynos/exynos7_drm_decon: Use platform_get_irq_byname() to get the interrupt
2 parents 0b7344a + 8fdb196 commit c4fc118

File tree

13 files changed

+37
-49
lines changed

13 files changed

+37
-49
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,8 @@ bool amdgpu_vm_ready(struct amdgpu_vm *vm)
777777
amdgpu_vm_eviction_lock(vm);
778778
ret = !vm->evicting;
779779
amdgpu_vm_eviction_unlock(vm);
780-
return ret;
780+
781+
return ret && list_empty(&vm->evicted);
781782
}
782783

783784
/**

drivers/gpu/drm/arm/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ config DRM_HDLCD
66
depends on DRM && OF && (ARM || ARM64 || COMPILE_TEST)
77
depends on COMMON_CLK
88
select DRM_KMS_HELPER
9+
select DRM_GEM_CMA_HELPER
910
help
1011
Choose this option if you have an ARM High Definition Colour LCD
1112
controller.

drivers/gpu/drm/bridge/ti-sn65dsi86.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1802,6 +1802,7 @@ static inline void ti_sn_gpio_unregister(void) {}
18021802

18031803
static void ti_sn65dsi86_runtime_disable(void *data)
18041804
{
1805+
pm_runtime_dont_use_autosuspend(data);
18051806
pm_runtime_disable(data);
18061807
}
18071808

@@ -1861,11 +1862,11 @@ static int ti_sn65dsi86_probe(struct i2c_client *client,
18611862
"failed to get reference clock\n");
18621863

18631864
pm_runtime_enable(dev);
1865+
pm_runtime_set_autosuspend_delay(pdata->dev, 500);
1866+
pm_runtime_use_autosuspend(pdata->dev);
18641867
ret = devm_add_action_or_reset(dev, ti_sn65dsi86_runtime_disable, dev);
18651868
if (ret)
18661869
return ret;
1867-
pm_runtime_set_autosuspend_delay(pdata->dev, 500);
1868-
pm_runtime_use_autosuspend(pdata->dev);
18691870

18701871
ti_sn65dsi86_debugfs_init(pdata);
18711872

drivers/gpu/drm/drm_connector.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2330,6 +2330,9 @@ EXPORT_SYMBOL(drm_connector_atomic_hdr_metadata_equal);
23302330
void drm_connector_set_vrr_capable_property(
23312331
struct drm_connector *connector, bool capable)
23322332
{
2333+
if (!connector->vrr_capable_property)
2334+
return;
2335+
23332336
drm_object_property_set_value(&connector->base,
23342337
connector->vrr_capable_property,
23352338
capable);

drivers/gpu/drm/exynos/exynos7_drm_decon.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,6 @@ static int decon_probe(struct platform_device *pdev)
678678
struct device *dev = &pdev->dev;
679679
struct decon_context *ctx;
680680
struct device_node *i80_if_timings;
681-
struct resource *res;
682681
int ret;
683682

684683
if (!dev->of_node)
@@ -728,16 +727,11 @@ static int decon_probe(struct platform_device *pdev)
728727
goto err_iounmap;
729728
}
730729

731-
res = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
732-
ctx->i80_if ? "lcd_sys" : "vsync");
733-
if (!res) {
734-
dev_err(dev, "irq request failed.\n");
735-
ret = -ENXIO;
730+
ret = platform_get_irq_byname(pdev, ctx->i80_if ? "lcd_sys" : "vsync");
731+
if (ret < 0)
736732
goto err_iounmap;
737-
}
738733

739-
ret = devm_request_irq(dev, res->start, decon_irq_handler,
740-
0, "drm_decon", ctx);
734+
ret = devm_request_irq(dev, ret, decon_irq_handler, 0, "drm_decon", ctx);
741735
if (ret) {
742736
dev_err(dev, "irq request failed.\n");
743737
goto err_iounmap;

drivers/gpu/drm/exynos/exynos_drm_dsi.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,8 +1334,10 @@ static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi,
13341334
int ret;
13351335
int te_gpio_irq;
13361336

1337-
dsi->te_gpio = devm_gpiod_get_optional(dsi->dev, "te", GPIOD_IN);
1338-
if (IS_ERR(dsi->te_gpio)) {
1337+
dsi->te_gpio = gpiod_get_optional(panel, "te", GPIOD_IN);
1338+
if (!dsi->te_gpio) {
1339+
return 0;
1340+
} else if (IS_ERR(dsi->te_gpio)) {
13391341
dev_err(dsi->dev, "gpio request failed with %ld\n",
13401342
PTR_ERR(dsi->te_gpio));
13411343
return PTR_ERR(dsi->te_gpio);

drivers/gpu/drm/exynos/exynos_drm_fimc.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,7 +1267,6 @@ static int fimc_probe(struct platform_device *pdev)
12671267
struct exynos_drm_ipp_formats *formats;
12681268
struct device *dev = &pdev->dev;
12691269
struct fimc_context *ctx;
1270-
struct resource *res;
12711270
int ret;
12721271
int i, j, num_limits, num_formats;
12731272

@@ -1330,14 +1329,12 @@ static int fimc_probe(struct platform_device *pdev)
13301329
return PTR_ERR(ctx->regs);
13311330

13321331
/* resource irq */
1333-
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
1334-
if (!res) {
1335-
dev_err(dev, "failed to request irq resource.\n");
1336-
return -ENOENT;
1337-
}
1332+
ret = platform_get_irq(pdev, 0);
1333+
if (ret < 0)
1334+
return ret;
13381335

1339-
ret = devm_request_irq(dev, res->start, fimc_irq_handler,
1340-
0, dev_name(dev), ctx);
1336+
ret = devm_request_irq(dev, ret, fimc_irq_handler,
1337+
0, dev_name(dev), ctx);
13411338
if (ret < 0) {
13421339
dev_err(dev, "failed to request irq.\n");
13431340
return ret;

drivers/gpu/drm/exynos/exynos_drm_fimd.c

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,7 +1133,6 @@ static int fimd_probe(struct platform_device *pdev)
11331133
struct device *dev = &pdev->dev;
11341134
struct fimd_context *ctx;
11351135
struct device_node *i80_if_timings;
1136-
struct resource *res;
11371136
int ret;
11381137

11391138
if (!dev->of_node)
@@ -1206,15 +1205,11 @@ static int fimd_probe(struct platform_device *pdev)
12061205
if (IS_ERR(ctx->regs))
12071206
return PTR_ERR(ctx->regs);
12081207

1209-
res = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
1210-
ctx->i80_if ? "lcd_sys" : "vsync");
1211-
if (!res) {
1212-
dev_err(dev, "irq request failed.\n");
1213-
return -ENXIO;
1214-
}
1208+
ret = platform_get_irq_byname(pdev, ctx->i80_if ? "lcd_sys" : "vsync");
1209+
if (ret < 0)
1210+
return ret;
12151211

1216-
ret = devm_request_irq(dev, res->start, fimd_irq_handler,
1217-
0, "drm_fimd", ctx);
1212+
ret = devm_request_irq(dev, ret, fimd_irq_handler, 0, "drm_fimd", ctx);
12181213
if (ret) {
12191214
dev_err(dev, "irq request failed.\n");
12201215
return ret;

drivers/gpu/drm/exynos/exynos_drm_gsc.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1220,7 +1220,6 @@ static int gsc_probe(struct platform_device *pdev)
12201220
struct gsc_driverdata *driver_data;
12211221
struct exynos_drm_ipp_formats *formats;
12221222
struct gsc_context *ctx;
1223-
struct resource *res;
12241223
int num_formats, ret, i, j;
12251224

12261225
ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
@@ -1275,13 +1274,10 @@ static int gsc_probe(struct platform_device *pdev)
12751274
return PTR_ERR(ctx->regs);
12761275

12771276
/* resource irq */
1278-
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
1279-
if (!res) {
1280-
dev_err(dev, "failed to request irq resource.\n");
1281-
return -ENOENT;
1282-
}
1277+
ctx->irq = platform_get_irq(pdev, 0);
1278+
if (ctx->irq < 0)
1279+
return ctx->irq;
12831280

1284-
ctx->irq = res->start;
12851281
ret = devm_request_irq(dev, ctx->irq, gsc_irq_handler, 0,
12861282
dev_name(dev), ctx);
12871283
if (ret < 0) {

drivers/gpu/drm/exynos/exynos_mixer.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -809,19 +809,17 @@ static int mixer_resources_init(struct mixer_context *mixer_ctx)
809809
return -ENXIO;
810810
}
811811

812-
res = platform_get_resource(mixer_ctx->pdev, IORESOURCE_IRQ, 0);
813-
if (res == NULL) {
814-
dev_err(dev, "get interrupt resource failed.\n");
815-
return -ENXIO;
816-
}
812+
ret = platform_get_irq(mixer_ctx->pdev, 0);
813+
if (ret < 0)
814+
return ret;
815+
mixer_ctx->irq = ret;
817816

818-
ret = devm_request_irq(dev, res->start, mixer_irq_handler,
819-
0, "drm_mixer", mixer_ctx);
817+
ret = devm_request_irq(dev, mixer_ctx->irq, mixer_irq_handler,
818+
0, "drm_mixer", mixer_ctx);
820819
if (ret) {
821820
dev_err(dev, "request interrupt failed.\n");
822821
return ret;
823822
}
824-
mixer_ctx->irq = res->start;
825823

826824
return 0;
827825
}

0 commit comments

Comments
 (0)