mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 09:19:51 +00:00
drm fixes for 5.17-rc7
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 -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEEKbZHaGwW9KfbeusDHTzWXnEhr4FAmIhiEQACgkQDHTzWXnE hr7srhAAg/gBHlwAX/GSe1G44fKs1ImCjVnGUxkN3daNrA5/PPxpiq+I+WA04tHl dptyhPzcPG5I5zIhfZ6PAdGuqtDSx7JZzdlDFto5y2n+5RCFdEfUVzTGwNzg9fmy 2wQRBmtn2bJ/uA4p6LSWBo4w5Dyyl2T+ZX0ErP8Rn+ZFPy5fGQ++bwRIrcg70m4w Y4joj5BOsANyCTBKRhatEjZs3U4lL6osmsdJibx1d3bAWx2jB/eU3n/CuMT6q+0U TjNEEIoa5W8upT7oabGV9LKyEPbICSLVRn+qyRJrYVBr+zzVbqffYYBnbEnRxT/C DSwvVQw7CWzEV9kt5Oh7+9DGt/JR0T04cUvRGmqYH7xO84XFgVqn5c1rlcWzWzHt ZHiSLnAo+B1t05nkj/D1KRwMMIzKOq8yjvHbi9kfPCAhan7WoezS9+RM3NcRBGv9 s7BmdB8naPwatnJ2+vGa5eNnTn4BTRaKBYUq2loKN29cbB3GsOyaCqHYX8N5TNMp L6ZlzVOFBsTJIN5joGUYlXEE/TWVMIL+bW8IcPX7036R0Qa6DtxT92DQgqYr09GO Kz0INb8QBHBubYoYfIyD//unDonHJrTepXA3I8OftHexzvxbcR7xUBlJr1Scna80 KT2f9s1SdzFg0QaNqOZcOOdeZDrhpRk5UuvqN0R9UjZQEkhuYXQ= =fH+E -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
c4fc118ae2
13 changed files with 37 additions and 49 deletions
|
@ -777,7 +777,8 @@ bool amdgpu_vm_ready(struct amdgpu_vm *vm)
|
|||
amdgpu_vm_eviction_lock(vm);
|
||||
ret = !vm->evicting;
|
||||
amdgpu_vm_eviction_unlock(vm);
|
||||
return ret;
|
||||
|
||||
return ret && list_empty(&vm->evicted);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -6,6 +6,7 @@ config DRM_HDLCD
|
|||
depends on DRM && OF && (ARM || ARM64 || COMPILE_TEST)
|
||||
depends on COMMON_CLK
|
||||
select DRM_KMS_HELPER
|
||||
select DRM_GEM_CMA_HELPER
|
||||
help
|
||||
Choose this option if you have an ARM High Definition Colour LCD
|
||||
controller.
|
||||
|
|
|
@ -1802,6 +1802,7 @@ static inline void ti_sn_gpio_unregister(void) {}
|
|||
|
||||
static void ti_sn65dsi86_runtime_disable(void *data)
|
||||
{
|
||||
pm_runtime_dont_use_autosuspend(data);
|
||||
pm_runtime_disable(data);
|
||||
}
|
||||
|
||||
|
@ -1861,11 +1862,11 @@ static int ti_sn65dsi86_probe(struct i2c_client *client,
|
|||
"failed to get reference clock\n");
|
||||
|
||||
pm_runtime_enable(dev);
|
||||
pm_runtime_set_autosuspend_delay(pdata->dev, 500);
|
||||
pm_runtime_use_autosuspend(pdata->dev);
|
||||
ret = devm_add_action_or_reset(dev, ti_sn65dsi86_runtime_disable, dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
pm_runtime_set_autosuspend_delay(pdata->dev, 500);
|
||||
pm_runtime_use_autosuspend(pdata->dev);
|
||||
|
||||
ti_sn65dsi86_debugfs_init(pdata);
|
||||
|
||||
|
|
|
@ -2330,6 +2330,9 @@ EXPORT_SYMBOL(drm_connector_atomic_hdr_metadata_equal);
|
|||
void drm_connector_set_vrr_capable_property(
|
||||
struct drm_connector *connector, bool capable)
|
||||
{
|
||||
if (!connector->vrr_capable_property)
|
||||
return;
|
||||
|
||||
drm_object_property_set_value(&connector->base,
|
||||
connector->vrr_capable_property,
|
||||
capable);
|
||||
|
|
|
@ -678,7 +678,6 @@ static int decon_probe(struct platform_device *pdev)
|
|||
struct device *dev = &pdev->dev;
|
||||
struct decon_context *ctx;
|
||||
struct device_node *i80_if_timings;
|
||||
struct resource *res;
|
||||
int ret;
|
||||
|
||||
if (!dev->of_node)
|
||||
|
@ -728,16 +727,11 @@ static int decon_probe(struct platform_device *pdev)
|
|||
goto err_iounmap;
|
||||
}
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
|
||||
ctx->i80_if ? "lcd_sys" : "vsync");
|
||||
if (!res) {
|
||||
dev_err(dev, "irq request failed.\n");
|
||||
ret = -ENXIO;
|
||||
ret = platform_get_irq_byname(pdev, ctx->i80_if ? "lcd_sys" : "vsync");
|
||||
if (ret < 0)
|
||||
goto err_iounmap;
|
||||
}
|
||||
|
||||
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
||||
0, "drm_decon", ctx);
|
||||
ret = devm_request_irq(dev, ret, decon_irq_handler, 0, "drm_decon", ctx);
|
||||
if (ret) {
|
||||
dev_err(dev, "irq request failed.\n");
|
||||
goto err_iounmap;
|
||||
|
|
|
@ -1334,8 +1334,10 @@ static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi,
|
|||
int ret;
|
||||
int te_gpio_irq;
|
||||
|
||||
dsi->te_gpio = devm_gpiod_get_optional(dsi->dev, "te", GPIOD_IN);
|
||||
if (IS_ERR(dsi->te_gpio)) {
|
||||
dsi->te_gpio = gpiod_get_optional(panel, "te", GPIOD_IN);
|
||||
if (!dsi->te_gpio) {
|
||||
return 0;
|
||||
} else if (IS_ERR(dsi->te_gpio)) {
|
||||
dev_err(dsi->dev, "gpio request failed with %ld\n",
|
||||
PTR_ERR(dsi->te_gpio));
|
||||
return PTR_ERR(dsi->te_gpio);
|
||||
|
|
|
@ -1267,7 +1267,6 @@ static int fimc_probe(struct platform_device *pdev)
|
|||
struct exynos_drm_ipp_formats *formats;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct fimc_context *ctx;
|
||||
struct resource *res;
|
||||
int ret;
|
||||
int i, j, num_limits, num_formats;
|
||||
|
||||
|
@ -1330,14 +1329,12 @@ static int fimc_probe(struct platform_device *pdev)
|
|||
return PTR_ERR(ctx->regs);
|
||||
|
||||
/* resource irq */
|
||||
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
if (!res) {
|
||||
dev_err(dev, "failed to request irq resource.\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
ret = platform_get_irq(pdev, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = devm_request_irq(dev, res->start, fimc_irq_handler,
|
||||
0, dev_name(dev), ctx);
|
||||
ret = devm_request_irq(dev, ret, fimc_irq_handler,
|
||||
0, dev_name(dev), ctx);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "failed to request irq.\n");
|
||||
return ret;
|
||||
|
|
|
@ -1133,7 +1133,6 @@ static int fimd_probe(struct platform_device *pdev)
|
|||
struct device *dev = &pdev->dev;
|
||||
struct fimd_context *ctx;
|
||||
struct device_node *i80_if_timings;
|
||||
struct resource *res;
|
||||
int ret;
|
||||
|
||||
if (!dev->of_node)
|
||||
|
@ -1206,15 +1205,11 @@ static int fimd_probe(struct platform_device *pdev)
|
|||
if (IS_ERR(ctx->regs))
|
||||
return PTR_ERR(ctx->regs);
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
|
||||
ctx->i80_if ? "lcd_sys" : "vsync");
|
||||
if (!res) {
|
||||
dev_err(dev, "irq request failed.\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
ret = platform_get_irq_byname(pdev, ctx->i80_if ? "lcd_sys" : "vsync");
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = devm_request_irq(dev, res->start, fimd_irq_handler,
|
||||
0, "drm_fimd", ctx);
|
||||
ret = devm_request_irq(dev, ret, fimd_irq_handler, 0, "drm_fimd", ctx);
|
||||
if (ret) {
|
||||
dev_err(dev, "irq request failed.\n");
|
||||
return ret;
|
||||
|
|
|
@ -1220,7 +1220,6 @@ static int gsc_probe(struct platform_device *pdev)
|
|||
struct gsc_driverdata *driver_data;
|
||||
struct exynos_drm_ipp_formats *formats;
|
||||
struct gsc_context *ctx;
|
||||
struct resource *res;
|
||||
int num_formats, ret, i, j;
|
||||
|
||||
ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
|
||||
|
@ -1275,13 +1274,10 @@ static int gsc_probe(struct platform_device *pdev)
|
|||
return PTR_ERR(ctx->regs);
|
||||
|
||||
/* resource irq */
|
||||
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
if (!res) {
|
||||
dev_err(dev, "failed to request irq resource.\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
ctx->irq = platform_get_irq(pdev, 0);
|
||||
if (ctx->irq < 0)
|
||||
return ctx->irq;
|
||||
|
||||
ctx->irq = res->start;
|
||||
ret = devm_request_irq(dev, ctx->irq, gsc_irq_handler, 0,
|
||||
dev_name(dev), ctx);
|
||||
if (ret < 0) {
|
||||
|
|
|
@ -809,19 +809,17 @@ static int mixer_resources_init(struct mixer_context *mixer_ctx)
|
|||
return -ENXIO;
|
||||
}
|
||||
|
||||
res = platform_get_resource(mixer_ctx->pdev, IORESOURCE_IRQ, 0);
|
||||
if (res == NULL) {
|
||||
dev_err(dev, "get interrupt resource failed.\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
ret = platform_get_irq(mixer_ctx->pdev, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
mixer_ctx->irq = ret;
|
||||
|
||||
ret = devm_request_irq(dev, res->start, mixer_irq_handler,
|
||||
0, "drm_mixer", mixer_ctx);
|
||||
ret = devm_request_irq(dev, mixer_ctx->irq, mixer_irq_handler,
|
||||
0, "drm_mixer", mixer_ctx);
|
||||
if (ret) {
|
||||
dev_err(dev, "request interrupt failed.\n");
|
||||
return ret;
|
||||
}
|
||||
mixer_ctx->irq = res->start;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -110,7 +110,7 @@ static int guc_action_slpc_unset_param(struct intel_guc *guc, u8 id)
|
|||
{
|
||||
u32 request[] = {
|
||||
GUC_ACTION_HOST2GUC_PC_SLPC_REQUEST,
|
||||
SLPC_EVENT(SLPC_EVENT_PARAMETER_UNSET, 2),
|
||||
SLPC_EVENT(SLPC_EVENT_PARAMETER_UNSET, 1),
|
||||
id,
|
||||
};
|
||||
|
||||
|
|
|
@ -108,6 +108,7 @@ intel_pch_type(const struct drm_i915_private *dev_priv, unsigned short id)
|
|||
/* Comet Lake V PCH is based on KBP, which is SPT compatible */
|
||||
return PCH_SPT;
|
||||
case INTEL_PCH_ICP_DEVICE_ID_TYPE:
|
||||
case INTEL_PCH_ICP2_DEVICE_ID_TYPE:
|
||||
drm_dbg_kms(&dev_priv->drm, "Found Ice Lake PCH\n");
|
||||
drm_WARN_ON(&dev_priv->drm, !IS_ICELAKE(dev_priv));
|
||||
return PCH_ICP;
|
||||
|
@ -123,7 +124,6 @@ intel_pch_type(const struct drm_i915_private *dev_priv, unsigned short id)
|
|||
!IS_GEN9_BC(dev_priv));
|
||||
return PCH_TGP;
|
||||
case INTEL_PCH_JSP_DEVICE_ID_TYPE:
|
||||
case INTEL_PCH_JSP2_DEVICE_ID_TYPE:
|
||||
drm_dbg_kms(&dev_priv->drm, "Found Jasper Lake PCH\n");
|
||||
drm_WARN_ON(&dev_priv->drm, !IS_JSL_EHL(dev_priv));
|
||||
return PCH_JSP;
|
||||
|
|
|
@ -50,11 +50,11 @@ enum intel_pch {
|
|||
#define INTEL_PCH_CMP2_DEVICE_ID_TYPE 0x0680
|
||||
#define INTEL_PCH_CMP_V_DEVICE_ID_TYPE 0xA380
|
||||
#define INTEL_PCH_ICP_DEVICE_ID_TYPE 0x3480
|
||||
#define INTEL_PCH_ICP2_DEVICE_ID_TYPE 0x3880
|
||||
#define INTEL_PCH_MCC_DEVICE_ID_TYPE 0x4B00
|
||||
#define INTEL_PCH_TGP_DEVICE_ID_TYPE 0xA080
|
||||
#define INTEL_PCH_TGP2_DEVICE_ID_TYPE 0x4380
|
||||
#define INTEL_PCH_JSP_DEVICE_ID_TYPE 0x4D80
|
||||
#define INTEL_PCH_JSP2_DEVICE_ID_TYPE 0x3880
|
||||
#define INTEL_PCH_ADP_DEVICE_ID_TYPE 0x7A80
|
||||
#define INTEL_PCH_ADP2_DEVICE_ID_TYPE 0x5180
|
||||
#define INTEL_PCH_ADP3_DEVICE_ID_TYPE 0x7A00
|
||||
|
|
Loading…
Reference in a new issue