Loading drivers/iommu/mtk_iommu_v1.c +24 −1 Original line number Diff line number Diff line Loading @@ -431,9 +431,10 @@ static int mtk_iommu_create_mapping(struct device *dev, static int mtk_iommu_add_device(struct device *dev) { struct iommu_group *group; struct of_phandle_args iommu_spec; struct of_phandle_iterator it; struct mtk_iommu_data *data; struct iommu_group *group; int err; of_for_each_phandle(&it, err, dev->of_node, "iommus", Loading @@ -450,6 +451,9 @@ static int mtk_iommu_add_device(struct device *dev) if (!dev->iommu_fwspec || dev->iommu_fwspec->ops != &mtk_iommu_ops) return -ENODEV; /* Not a iommu client device */ data = dev->iommu_fwspec->iommu_priv; iommu_device_link(&data->iommu, dev); group = iommu_group_get_for_dev(dev); if (IS_ERR(group)) return PTR_ERR(group); Loading @@ -460,9 +464,14 @@ static int mtk_iommu_add_device(struct device *dev) static void mtk_iommu_remove_device(struct device *dev) { struct mtk_iommu_data *data; if (!dev->iommu_fwspec || dev->iommu_fwspec->ops != &mtk_iommu_ops) return; data = dev->iommu_fwspec->iommu_priv; iommu_device_unlink(&data->iommu, dev); iommu_group_remove_device(dev); iommu_fwspec_free(dev); } Loading Loading @@ -627,6 +636,17 @@ static int mtk_iommu_probe(struct platform_device *pdev) if (ret) return ret; ret = iommu_device_sysfs_add(&data->iommu, &pdev->dev, NULL, dev_name(&pdev->dev)); if (ret) return ret; iommu_device_set_ops(&data->iommu, &mtk_iommu_ops); ret = iommu_device_register(&data->iommu); if (ret) return ret; if (!iommu_present(&platform_bus_type)) bus_set_iommu(&platform_bus_type, &mtk_iommu_ops); Loading @@ -637,6 +657,9 @@ static int mtk_iommu_remove(struct platform_device *pdev) { struct mtk_iommu_data *data = platform_get_drvdata(pdev); iommu_device_sysfs_remove(&data->iommu); iommu_device_unregister(&data->iommu); if (iommu_present(&platform_bus_type)) bus_set_iommu(&platform_bus_type, NULL); Loading Loading
drivers/iommu/mtk_iommu_v1.c +24 −1 Original line number Diff line number Diff line Loading @@ -431,9 +431,10 @@ static int mtk_iommu_create_mapping(struct device *dev, static int mtk_iommu_add_device(struct device *dev) { struct iommu_group *group; struct of_phandle_args iommu_spec; struct of_phandle_iterator it; struct mtk_iommu_data *data; struct iommu_group *group; int err; of_for_each_phandle(&it, err, dev->of_node, "iommus", Loading @@ -450,6 +451,9 @@ static int mtk_iommu_add_device(struct device *dev) if (!dev->iommu_fwspec || dev->iommu_fwspec->ops != &mtk_iommu_ops) return -ENODEV; /* Not a iommu client device */ data = dev->iommu_fwspec->iommu_priv; iommu_device_link(&data->iommu, dev); group = iommu_group_get_for_dev(dev); if (IS_ERR(group)) return PTR_ERR(group); Loading @@ -460,9 +464,14 @@ static int mtk_iommu_add_device(struct device *dev) static void mtk_iommu_remove_device(struct device *dev) { struct mtk_iommu_data *data; if (!dev->iommu_fwspec || dev->iommu_fwspec->ops != &mtk_iommu_ops) return; data = dev->iommu_fwspec->iommu_priv; iommu_device_unlink(&data->iommu, dev); iommu_group_remove_device(dev); iommu_fwspec_free(dev); } Loading Loading @@ -627,6 +636,17 @@ static int mtk_iommu_probe(struct platform_device *pdev) if (ret) return ret; ret = iommu_device_sysfs_add(&data->iommu, &pdev->dev, NULL, dev_name(&pdev->dev)); if (ret) return ret; iommu_device_set_ops(&data->iommu, &mtk_iommu_ops); ret = iommu_device_register(&data->iommu); if (ret) return ret; if (!iommu_present(&platform_bus_type)) bus_set_iommu(&platform_bus_type, &mtk_iommu_ops); Loading @@ -637,6 +657,9 @@ static int mtk_iommu_remove(struct platform_device *pdev) { struct mtk_iommu_data *data = platform_get_drvdata(pdev); iommu_device_sysfs_remove(&data->iommu); iommu_device_unregister(&data->iommu); if (iommu_present(&platform_bus_type)) bus_set_iommu(&platform_bus_type, NULL); Loading