Skip to content

Commit

Permalink
media: iommu/mediatek: Add probe_defer for smi-larb
Browse files Browse the repository at this point in the history
Prepare for adding device_link.

The iommu consumer should use device_link to connect with the
smi-larb(supplier). then the smi-larb should run before the iommu
consumer. Here we delay the iommu driver until the smi driver is ready,
then all the iommu consumers always are after the smi driver.

When there is no this patch, if some consumer drivers run before
smi-larb, the supplier link_status is DL_DEV_NO_DRIVER(0) in the
device_link_add, then device_links_driver_bound will use WARN_ON
to complain that the link_status of supplier is not right.

device_is_bound may be more elegant here. but it is not allowed to
EXPORT from https://lore.kernel.org/patchwork/patch/1334670/.

Signed-off-by: Yong Wu <[email protected]>
Tested-by: Frank Wunderlich <[email protected]> # BPI-R2/MT7623
Acked-by: Joerg Roedel <[email protected]>
Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
  • Loading branch information
YongWu-HF authored and mchehab committed Jan 28, 2022
1 parent 2fb0fee commit 7d09aaf
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 0 deletions.
4 changes: 4 additions & 0 deletions drivers/iommu/mtk_iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -850,6 +850,10 @@ static int mtk_iommu_probe(struct platform_device *pdev)
of_node_put(larbnode);
return -ENODEV;
}
if (!plarbdev->dev.driver) {
of_node_put(larbnode);
return -EPROBE_DEFER;
}
data->larb_imu[id].dev = &plarbdev->dev;

component_match_add_release(dev, &match, release_of,
Expand Down
4 changes: 4 additions & 0 deletions drivers/iommu/mtk_iommu_v1.c
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@ static int mtk_iommu_probe(struct platform_device *pdev)
of_node_put(larbnode);
return -ENODEV;
}
if (!plarbdev->dev.driver) {
of_node_put(larbnode);
return -EPROBE_DEFER;
}
data->larb_imu[i].dev = &plarbdev->dev;

component_match_add_release(dev, &match, release_of,
Expand Down

0 comments on commit 7d09aaf

Please sign in to comment.