Commit ba1f1f70 authored by Daniel Kurtz's avatar Daniel Kurtz Committed by Mauro Carvalho Chehab

[media] media: mtk-mdp: Fix mdp device tree

If the mdp_* nodes are under an mdp sub-node, their corresponding
platform device does not automatically get its iommu assigned properly.

Fix this by moving the mdp component nodes up a level such that they are
siblings of mdp and all other SoC subsystems.  This also simplifies the
device tree.

Although it fixes iommu assignment issue, it also break compatibility
with old device tree. So, the patch in driver is needed to iterate over
sibling mdp device nodes, not child ones, to keep driver work properly.
Signed-off-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
Signed-off-by: default avatarMinghsiu Tsai <minghsiu.tsai@mediatek.com>
Signed-off-by: default avatarMatthias Brugger <matthias.bgg@gmail.com>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent c5789f41
...@@ -103,7 +103,7 @@ static int mtk_mdp_probe(struct platform_device *pdev) ...@@ -103,7 +103,7 @@ static int mtk_mdp_probe(struct platform_device *pdev)
{ {
struct mtk_mdp_dev *mdp; struct mtk_mdp_dev *mdp;
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct device_node *node; struct device_node *node, *parent;
int i, ret = 0; int i, ret = 0;
mdp = devm_kzalloc(dev, sizeof(*mdp), GFP_KERNEL); mdp = devm_kzalloc(dev, sizeof(*mdp), GFP_KERNEL);
...@@ -117,8 +117,16 @@ static int mtk_mdp_probe(struct platform_device *pdev) ...@@ -117,8 +117,16 @@ static int mtk_mdp_probe(struct platform_device *pdev)
mutex_init(&mdp->lock); mutex_init(&mdp->lock);
mutex_init(&mdp->vpulock); mutex_init(&mdp->vpulock);
/* Old dts had the components as child nodes */
if (of_get_next_child(dev->of_node, NULL)) {
parent = dev->of_node;
dev_warn(dev, "device tree is out of date\n");
} else {
parent = dev->of_node->parent;
}
/* Iterate over sibling MDP function blocks */ /* Iterate over sibling MDP function blocks */
for_each_child_of_node(dev->of_node, node) { for_each_child_of_node(parent, node) {
const struct of_device_id *of_id; const struct of_device_id *of_id;
enum mtk_mdp_comp_type comp_type; enum mtk_mdp_comp_type comp_type;
int comp_id; int comp_id;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment