mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
Mediatek DRM Fixes - 20261002
1. Add missing IS_ERR check for ovl_adaptor platform device 2. Fix VID_DOWNSAMPLE_CONFIG register offset 3. Fix pdev reference leak in mtk_drm_bind() 4. Fix runtime PM leak in mtk_hdmi_ddc_v2_probe() 5. Fix ovl adaptor platform device leak -----BEGIN PGP SIGNATURE----- iQJMBAABCgA2FiEEACwLKSDmq+9RDv5P4cpzo8lZTiQFAmq+7DsYHGNodW5rdWFu Zy5odUBrZXJuZWwub3JnAAoJEOHKc6PJWU4kGecP/RRjm19xz4RfetZ40rfAPgvB OHLOxZyLv6661kp4TAk7KY9Weuv+LwPQoUmKHClP1eMQhrt7jtktqpS0ZXk8LoJB A7AiiWigLzMEMRet8IeH3Bn8zuq0lefIZpo5ycMT8idkH0+I3SguTrYQ13sZw2CF PxkYGcTZidTDABhU1nOGuBhl+aq/uEi/nsKHi02YyqDlWNQJtvGXsfYpKnCU4TzV uGsSaR+eIWb6m4uFmJeqZ3Ltjm6F7lzfFF/JOsYOuAm4wCVG61TrNEwTCifnW9x9 auIYMS7vEpQAAEaIsVmBMSMQ+LAdpAb5Lv5kFYU3LUwldNRG0gb+zsEBEc8TWlkS fTDHXDZaWusAIVVjADaCB2UnIbcGmIl0aGmwJ/DJ35T+QdaJwYGO5VGomeORJkRD KO+J9vX94gdAvqJyjWJnojVnRVevzVe68ByHfyUuEIJ9bagmiqPQKXEVO9kenS8G ZUKaXKn5hG+TGJsXen6kzr93vrZuEt/W3IqrITFLe3TboQr4M/3Om4xkL5TAAYr+ ghzVXSTIYbSeUKxUE705L7SsxyyqJg+llp/ySPod+79zzk8m5tj0BZqABr55UJU8 VyoYx3fCcYGC/H8gbUpKFTItycvNpvJg7Vx2+rnyXmO7elozwT7lErjRUDS/EQGu LonAWuHIrTLDdXz4GVHW =WUlr -----END PGP SIGNATURE----- Merge tag 'mediatek-drm-fixes-20261002' of https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux into drm-fixes Mediatek DRM Fixes - 20261002 1. Add missing IS_ERR check for ovl_adaptor platform device 2. Fix VID_DOWNSAMPLE_CONFIG register offset 3. Fix pdev reference leak in mtk_drm_bind() 4. Fix runtime PM leak in mtk_hdmi_ddc_v2_probe() 5. Fix ovl adaptor platform device leak Signed-off-by: Dave Airlie <airlied@redhat.com> From: Chun-Kuang Hu <chunkuang.hu@kernel.org> Link: https://patch.msgid.link/20261001234906.14940-1-chunkuang.hu@kernel.org
This commit is contained in:
commit
47400a32d0
|
|
@ -638,8 +638,10 @@ static int mtk_drm_bind(struct device *dev)
|
|||
private->mtk_drm_bound = true;
|
||||
private->dev = dev;
|
||||
|
||||
if (!mtk_drm_get_all_drm_priv(dev))
|
||||
if (!mtk_drm_get_all_drm_priv(dev)) {
|
||||
put_device(private->mutex_dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
drm = drm_dev_alloc(&mtk_drm_driver, dev);
|
||||
if (IS_ERR(drm)) {
|
||||
|
|
@ -1060,7 +1062,7 @@ static int mtk_drm_probe(struct platform_device *pdev)
|
|||
struct mtk_mmsys_driver_data *mtk_drm_data;
|
||||
struct device_node *node;
|
||||
struct component_match *match = NULL;
|
||||
struct platform_device *ovl_adaptor;
|
||||
struct platform_device *ovl_adaptor = NULL;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
|
|
@ -1112,6 +1114,9 @@ static int mtk_drm_probe(struct platform_device *pdev)
|
|||
PLATFORM_DEVID_AUTO,
|
||||
(void *)private->mmsys_dev,
|
||||
sizeof(*private->mmsys_dev));
|
||||
if (IS_ERR(ovl_adaptor))
|
||||
return PTR_ERR(ovl_adaptor);
|
||||
|
||||
private->ddp_comp[DDP_COMPONENT_DRM_OVL_ADAPTOR].dev = &ovl_adaptor->dev;
|
||||
mtk_ddp_comp_init(dev, NULL, &private->ddp_comp[DDP_COMPONENT_DRM_OVL_ADAPTOR],
|
||||
DDP_COMPONENT_DRM_OVL_ADAPTOR);
|
||||
|
|
@ -1205,6 +1210,8 @@ static int mtk_drm_probe(struct platform_device *pdev)
|
|||
err_pm:
|
||||
pm_runtime_disable(dev);
|
||||
err_node:
|
||||
if (ovl_adaptor)
|
||||
platform_device_unregister(ovl_adaptor);
|
||||
of_node_put(private->mutex_node);
|
||||
for (i = 0; i < DDP_COMPONENT_DRM_ID_MAX; i++)
|
||||
of_node_put(private->comp_node[i]);
|
||||
|
|
@ -1214,9 +1221,15 @@ static int mtk_drm_probe(struct platform_device *pdev)
|
|||
static void mtk_drm_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct mtk_drm_private *private = platform_get_drvdata(pdev);
|
||||
struct device *ovl_adaptor_dev;
|
||||
int i;
|
||||
|
||||
ovl_adaptor_dev =
|
||||
private->ddp_comp[DDP_COMPONENT_DRM_OVL_ADAPTOR].dev;
|
||||
|
||||
component_master_del(&pdev->dev, &mtk_drm_ops);
|
||||
if (ovl_adaptor_dev)
|
||||
platform_device_unregister(to_platform_device(ovl_adaptor_dev));
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
of_node_put(private->mutex_node);
|
||||
for (i = 0; i < DDP_COMPONENT_DRM_ID_MAX; i++)
|
||||
|
|
|
|||
|
|
@ -376,8 +376,10 @@ static int mtk_hdmi_ddc_v2_probe(struct platform_device *pdev)
|
|||
pm_runtime_get_sync(dev);
|
||||
|
||||
ret = devm_i2c_add_adapter(dev, &ddc->adap);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_noidle(dev);
|
||||
return dev_err_probe(dev, ret, "Cannot add DDC I2C adapter\n");
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, ddc);
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@
|
|||
#define TPI_AUDIO_LOOKUP_EN BIT(2)
|
||||
|
||||
/* Video downsampling configuration */
|
||||
#define VID_DOWNSAMPLE_CONFIG 0x8d0
|
||||
#define VID_DOWNSAMPLE_CONFIG 0x8f0
|
||||
#define C444_C422_CONFIG_ENABLE BIT(0)
|
||||
#define C422_C420_CONFIG_ENABLE BIT(4)
|
||||
#define C422_C420_CONFIG_BYPASS BIT(5)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user