| From 37e3e51984f3a62830b4b3cc61ae51f52f149b10 Mon Sep 17 00:00:00 2001 |
| From: Eizan Miyamoto <eizan@chromium.org> |
| Date: Wed, 25 Aug 2021 16:33:22 +1000 |
| Subject: [PATCH] CHROMIUM: soc: mediatek: mmsys: instantiate mdp virtual |
| device from mmsys |
| |
| A virtual device that is probed by the mtk_mdp_core driver is |
| instantiated by the mtk_mmsys driver. |
| |
| This better reflects the logical organization of the hardware and |
| driver: there are a number of hardware blocks that are used by the MDP |
| that have no strict hierarchy, and the software driver is responsible |
| for driving them properly. |
| |
| BUG=b:229583743 |
| TEST=Open YouTube and check chrome://media-internals |
| |
| Signed-off-by: Eizan Miyamoto <eizan@chromium.org> |
| Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> |
| Reviewed-by: Houlong Wei <houlong.wei@mediatek.com> |
| Change-Id: Id2c54149c4e5950075d301822c069f32366ef92b |
| Signed-off-by: Pin-Yen Lin <treapking@chromium.org> |
| Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3583713 |
| Reviewed-by: Hsin-Yi Wang <hsinyi@chromium.org> |
| Commit-Queue: Hsin-Yi Wang <hsinyi@chromium.org> |
| --- |
| drivers/soc/mediatek/mtk-mmsys.c | 20 +++++++++++++++++++- |
| 1 file changed, 19 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c |
| index d2c7a87aab87e1dd7d53f69aab51231b88933fd2..87582fe864275ab1508626b6ddf20c472fe4ee73 100644 |
| --- a/drivers/soc/mediatek/mtk-mmsys.c |
| +++ b/drivers/soc/mediatek/mtk-mmsys.c |
| @@ -307,6 +307,7 @@ static int mtk_mmsys_probe(struct platform_device *pdev) |
| const struct mtk_mmsys_match_data *match_data; |
| struct mtk_mmsys *mmsys; |
| struct resource *res; |
| + struct platform_device *mdp; |
| int ret; |
| |
| mmsys = devm_kzalloc(dev, sizeof(*mmsys), GFP_KERNEL); |
| @@ -364,10 +365,27 @@ static int mtk_mmsys_probe(struct platform_device *pdev) |
| PLATFORM_DEVID_AUTO, NULL, 0); |
| if (IS_ERR(drm)) { |
| platform_device_unregister(clks); |
| - return PTR_ERR(drm); |
| + ret = PTR_ERR(drm); |
| + goto err_drm; |
| + } |
| + |
| + mdp = platform_device_register_data(&pdev->dev, "mtk-mdp", |
| + PLATFORM_DEVID_AUTO, NULL, 0); |
| + if (IS_ERR(mdp)) { |
| + ret = PTR_ERR(mdp); |
| + dev_err(dev, "Failed to register mdp: %d\n", ret); |
| + goto err_mdp; |
| } |
| |
| return 0; |
| + |
| +err_mdp: |
| + platform_device_unregister(drm); |
| + |
| +err_drm: |
| + platform_device_unregister(clks); |
| + |
| + return ret; |
| } |
| |
| static const struct of_device_id of_match_mtk_mmsys[] = { |
| -- |
| 2.38.1.584.g0f3c55d4c2-goog |
| |