* Re: [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put [not found] <mailman.21807.1567503573.19300.linux-mediatek@lists.infradead.org> 2019-09-04 4:07 ` houlong wei (?) @ 2019-09-04 4:07 ` houlong wei 0 siblings, 0 replies; 12+ messages in thread From: houlong wei @ 2019-09-04 4:07 UTC (permalink / raw) To: Yong Wu, Matthias Brugger, Joerg Roedel, Rob Herring Cc: Evan Green, Robin Murphy, Tomasz Figa, Will Deacon, linux-mediatek, srv_heupstream, devicetree, linux-kernel, linux-arm-kernel, iommu, yong.wu, youlin.pei, Nicolas Boichat, Matthias Kaehlcke, anan.sun, cui.zhang, chao.hao, ming-fan.chen, minghsiu.tsai, houlong.wei Hi, Yong, I have inline comment below. > MediaTek IOMMU has already added the device_link between the consumer > and smi-larb device. If the mdp device call the pm_runtime_get_sync, > the smi-larb's pm_runtime_get_sync also be called automatically. > > CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > Reviewed-by: Evan Green <evgreen@chromium.org> > --- > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- > drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - > 3 files changed, 41 deletions(-) > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > index 9afe816..5985a9b 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > @@ -9,7 +9,6 @@ > #include <linux/of.h> > #include <linux/of_address.h> > #include <linux/of_platform.h> > -#include <soc/mediatek/smi.h> > > #include "mtk_mdp_comp.h" > > @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) > { > int i, err; > > - if (comp->larb_dev) { > - err = mtk_smi_larb_get(comp->larb_dev); > - if (err) > - dev_err(dev, > - "failed to get larb, err %d. type:%d id:%d\n", > - err, comp->type, comp->id); > - } In previous design,mtk_mdp_comp_clock_on() is called by each MDP hardware component, and mtk_smi_larb_get() is also called for each MDP hardware component which accesses DRAM via SMI larb. Since mdp device only contains mdp_rdma component, so pm_runtime_get_sync() will ignore other smi-larb clock. We need consider how to enable clocks of other smi-larb associated with other mdp component, e.g. mdp_wdma, mdp_wrot. > for (i = 0; i < ARRAY_SIZE(comp->clk); i++) { > if (IS_ERR(comp->clk[i])) > continue; > @@ -86,16 +77,11 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp) > continue; > clk_disable_unprepare(comp->clk[i]); > } > - > - if (comp->larb_dev) > - mtk_smi_larb_put(comp->larb_dev); > } > > int mtk_mdp_comp_init(struct device *dev, struct device_node *node, > struct mtk_mdp_comp *comp, enum mtk_mdp_comp_id comp_id) > { > - struct device_node *larb_node; > - struct platform_device *larb_pdev; > int i; > > if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) { > @@ -116,30 +102,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node, > break; > } > > - /* Only DMA capable components need the LARB property */ > - comp->larb_dev = NULL; > - if (comp->type != MTK_MDP_RDMA && > - comp->type != MTK_MDP_WDMA && > - comp->type != MTK_MDP_WROT) > - return 0; > - > - larb_node = of_parse_phandle(node, "mediatek,larb", 0); > - if (!larb_node) { > - dev_err(dev, > - "Missing mediadek,larb phandle in %pOF node\n", node); > - return -EINVAL; > - } > - > - larb_pdev = of_find_device_by_node(larb_node); > - if (!larb_pdev) { > - dev_warn(dev, "Waiting for larb device %pOF\n", larb_node); > - of_node_put(larb_node); > - return -EPROBE_DEFER; > - } > - of_node_put(larb_node); > - > - comp->larb_dev = &larb_pdev->dev; > - > return 0; > } > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > index 998a4b9..a2da8df 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > @@ -39,7 +39,6 @@ enum mtk_mdp_comp_id { > * @dev_node: component device node > * @clk: clocks required for component > * @regs: Mapped address of component registers. > - * @larb_dev: SMI device required for component > * @type: component type > * @id: component ID > */ > @@ -47,7 +46,6 @@ struct mtk_mdp_comp { > struct device_node *dev_node; > struct clk *clk[2]; > void __iomem *regs; > - struct device *larb_dev; > enum mtk_mdp_comp_type type; > enum mtk_mdp_comp_id id; > }; > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > index fc9faec..c237ed9 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > @@ -17,7 +17,6 @@ > #include <linux/platform_device.h> > #include <linux/pm_runtime.h> > #include <linux/workqueue.h> > -#include <soc/mediatek/smi.h> > > #include "mtk_mdp_core.h" > #include "mtk_mdp_m2m.h" ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put @ 2019-09-04 4:07 ` houlong wei 0 siblings, 0 replies; 12+ messages in thread From: houlong wei @ 2019-09-04 4:07 UTC (permalink / raw) To: Yong Wu, Matthias Brugger, Joerg Roedel, Rob Herring Cc: youlin.pei, devicetree, Nicolas Boichat, cui.zhang, srv_heupstream, chao.hao, Will Deacon, linux-kernel, Evan Green, houlong.wei, Tomasz Figa, iommu, Matthias Kaehlcke, linux-mediatek, yong.wu, minghsiu.tsai, ming-fan.chen, anan.sun, Robin Murphy, linux-arm-kernel Hi, Yong, I have inline comment below. > MediaTek IOMMU has already added the device_link between the consumer > and smi-larb device. If the mdp device call the pm_runtime_get_sync, > the smi-larb's pm_runtime_get_sync also be called automatically. > > CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > Reviewed-by: Evan Green <evgreen@chromium.org> > --- > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- > drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - > 3 files changed, 41 deletions(-) > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > index 9afe816..5985a9b 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > @@ -9,7 +9,6 @@ > #include <linux/of.h> > #include <linux/of_address.h> > #include <linux/of_platform.h> > -#include <soc/mediatek/smi.h> > > #include "mtk_mdp_comp.h" > > @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) > { > int i, err; > > - if (comp->larb_dev) { > - err = mtk_smi_larb_get(comp->larb_dev); > - if (err) > - dev_err(dev, > - "failed to get larb, err %d. type:%d id:%d\n", > - err, comp->type, comp->id); > - } In previous design,mtk_mdp_comp_clock_on() is called by each MDP hardware component, and mtk_smi_larb_get() is also called for each MDP hardware component which accesses DRAM via SMI larb. Since mdp device only contains mdp_rdma component, so pm_runtime_get_sync() will ignore other smi-larb clock. We need consider how to enable clocks of other smi-larb associated with other mdp component, e.g. mdp_wdma, mdp_wrot. > for (i = 0; i < ARRAY_SIZE(comp->clk); i++) { > if (IS_ERR(comp->clk[i])) > continue; > @@ -86,16 +77,11 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp) > continue; > clk_disable_unprepare(comp->clk[i]); > } > - > - if (comp->larb_dev) > - mtk_smi_larb_put(comp->larb_dev); > } > > int mtk_mdp_comp_init(struct device *dev, struct device_node *node, > struct mtk_mdp_comp *comp, enum mtk_mdp_comp_id comp_id) > { > - struct device_node *larb_node; > - struct platform_device *larb_pdev; > int i; > > if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) { > @@ -116,30 +102,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node, > break; > } > > - /* Only DMA capable components need the LARB property */ > - comp->larb_dev = NULL; > - if (comp->type != MTK_MDP_RDMA && > - comp->type != MTK_MDP_WDMA && > - comp->type != MTK_MDP_WROT) > - return 0; > - > - larb_node = of_parse_phandle(node, "mediatek,larb", 0); > - if (!larb_node) { > - dev_err(dev, > - "Missing mediadek,larb phandle in %pOF node\n", node); > - return -EINVAL; > - } > - > - larb_pdev = of_find_device_by_node(larb_node); > - if (!larb_pdev) { > - dev_warn(dev, "Waiting for larb device %pOF\n", larb_node); > - of_node_put(larb_node); > - return -EPROBE_DEFER; > - } > - of_node_put(larb_node); > - > - comp->larb_dev = &larb_pdev->dev; > - > return 0; > } > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > index 998a4b9..a2da8df 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > @@ -39,7 +39,6 @@ enum mtk_mdp_comp_id { > * @dev_node: component device node > * @clk: clocks required for component > * @regs: Mapped address of component registers. > - * @larb_dev: SMI device required for component > * @type: component type > * @id: component ID > */ > @@ -47,7 +46,6 @@ struct mtk_mdp_comp { > struct device_node *dev_node; > struct clk *clk[2]; > void __iomem *regs; > - struct device *larb_dev; > enum mtk_mdp_comp_type type; > enum mtk_mdp_comp_id id; > }; > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > index fc9faec..c237ed9 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > @@ -17,7 +17,6 @@ > #include <linux/platform_device.h> > #include <linux/pm_runtime.h> > #include <linux/workqueue.h> > -#include <soc/mediatek/smi.h> > > #include "mtk_mdp_core.h" > #include "mtk_mdp_m2m.h" _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put @ 2019-09-04 4:07 ` houlong wei 0 siblings, 0 replies; 12+ messages in thread From: houlong wei @ 2019-09-04 4:07 UTC (permalink / raw) To: Yong Wu, Matthias Brugger, Joerg Roedel, Rob Herring Cc: youlin.pei, devicetree, Nicolas Boichat, cui.zhang, srv_heupstream, chao.hao, Will Deacon, linux-kernel, Evan Green, houlong.wei, Tomasz Figa, iommu, Matthias Kaehlcke, linux-mediatek, minghsiu.tsai, ming-fan.chen, anan.sun, Robin Murphy, linux-arm-kernel Hi, Yong, I have inline comment below. > MediaTek IOMMU has already added the device_link between the consumer > and smi-larb device. If the mdp device call the pm_runtime_get_sync, > the smi-larb's pm_runtime_get_sync also be called automatically. > > CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > Reviewed-by: Evan Green <evgreen@chromium.org> > --- > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- > drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - > 3 files changed, 41 deletions(-) > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > index 9afe816..5985a9b 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > @@ -9,7 +9,6 @@ > #include <linux/of.h> > #include <linux/of_address.h> > #include <linux/of_platform.h> > -#include <soc/mediatek/smi.h> > > #include "mtk_mdp_comp.h" > > @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) > { > int i, err; > > - if (comp->larb_dev) { > - err = mtk_smi_larb_get(comp->larb_dev); > - if (err) > - dev_err(dev, > - "failed to get larb, err %d. type:%d id:%d\n", > - err, comp->type, comp->id); > - } In previous design,mtk_mdp_comp_clock_on() is called by each MDP hardware component, and mtk_smi_larb_get() is also called for each MDP hardware component which accesses DRAM via SMI larb. Since mdp device only contains mdp_rdma component, so pm_runtime_get_sync() will ignore other smi-larb clock. We need consider how to enable clocks of other smi-larb associated with other mdp component, e.g. mdp_wdma, mdp_wrot. > for (i = 0; i < ARRAY_SIZE(comp->clk); i++) { > if (IS_ERR(comp->clk[i])) > continue; > @@ -86,16 +77,11 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp) > continue; > clk_disable_unprepare(comp->clk[i]); > } > - > - if (comp->larb_dev) > - mtk_smi_larb_put(comp->larb_dev); > } > > int mtk_mdp_comp_init(struct device *dev, struct device_node *node, > struct mtk_mdp_comp *comp, enum mtk_mdp_comp_id comp_id) > { > - struct device_node *larb_node; > - struct platform_device *larb_pdev; > int i; > > if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) { > @@ -116,30 +102,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node, > break; > } > > - /* Only DMA capable components need the LARB property */ > - comp->larb_dev = NULL; > - if (comp->type != MTK_MDP_RDMA && > - comp->type != MTK_MDP_WDMA && > - comp->type != MTK_MDP_WROT) > - return 0; > - > - larb_node = of_parse_phandle(node, "mediatek,larb", 0); > - if (!larb_node) { > - dev_err(dev, > - "Missing mediadek,larb phandle in %pOF node\n", node); > - return -EINVAL; > - } > - > - larb_pdev = of_find_device_by_node(larb_node); > - if (!larb_pdev) { > - dev_warn(dev, "Waiting for larb device %pOF\n", larb_node); > - of_node_put(larb_node); > - return -EPROBE_DEFER; > - } > - of_node_put(larb_node); > - > - comp->larb_dev = &larb_pdev->dev; > - > return 0; > } > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > index 998a4b9..a2da8df 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > @@ -39,7 +39,6 @@ enum mtk_mdp_comp_id { > * @dev_node: component device node > * @clk: clocks required for component > * @regs: Mapped address of component registers. > - * @larb_dev: SMI device required for component > * @type: component type > * @id: component ID > */ > @@ -47,7 +46,6 @@ struct mtk_mdp_comp { > struct device_node *dev_node; > struct clk *clk[2]; > void __iomem *regs; > - struct device *larb_dev; > enum mtk_mdp_comp_type type; > enum mtk_mdp_comp_id id; > }; > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > index fc9faec..c237ed9 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > @@ -17,7 +17,6 @@ > #include <linux/platform_device.h> > #include <linux/pm_runtime.h> > #include <linux/workqueue.h> > -#include <soc/mediatek/smi.h> > > #include "mtk_mdp_core.h" > #include "mtk_mdp_m2m.h" _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put @ 2019-09-04 4:07 ` houlong wei 0 siblings, 0 replies; 12+ messages in thread From: houlong wei @ 2019-09-04 4:07 UTC (permalink / raw) To: Matthias Brugger, Joerg Roedel, Rob Herring Cc: youlin.pei, devicetree, Nicolas Boichat, cui.zhang, srv_heupstream, chao.hao, Will Deacon, linux-kernel, Evan Green, houlong.wei, Tomasz Figa, iommu, Matthias Kaehlcke, linux-mediatek, yong.wu, minghsiu.tsai, ming-fan.chen, anan.sun, Robin Murphy, linux-arm-kernel Hi, Yong, I have inline comment below. > MediaTek IOMMU has already added the device_link between the consumer > and smi-larb device. If the mdp device call the pm_runtime_get_sync, > the smi-larb's pm_runtime_get_sync also be called automatically. > > CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > Reviewed-by: Evan Green <evgreen@chromium.org> > --- > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- > drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - > 3 files changed, 41 deletions(-) > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > index 9afe816..5985a9b 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > @@ -9,7 +9,6 @@ > #include <linux/of.h> > #include <linux/of_address.h> > #include <linux/of_platform.h> > -#include <soc/mediatek/smi.h> > > #include "mtk_mdp_comp.h" > > @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) > { > int i, err; > > - if (comp->larb_dev) { > - err = mtk_smi_larb_get(comp->larb_dev); > - if (err) > - dev_err(dev, > - "failed to get larb, err %d. type:%d id:%d\n", > - err, comp->type, comp->id); > - } In previous design,mtk_mdp_comp_clock_on() is called by each MDP hardware component, and mtk_smi_larb_get() is also called for each MDP hardware component which accesses DRAM via SMI larb. Since mdp device only contains mdp_rdma component, so pm_runtime_get_sync() will ignore other smi-larb clock. We need consider how to enable clocks of other smi-larb associated with other mdp component, e.g. mdp_wdma, mdp_wrot. > for (i = 0; i < ARRAY_SIZE(comp->clk); i++) { > if (IS_ERR(comp->clk[i])) > continue; > @@ -86,16 +77,11 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp) > continue; > clk_disable_unprepare(comp->clk[i]); > } > - > - if (comp->larb_dev) > - mtk_smi_larb_put(comp->larb_dev); > } > > int mtk_mdp_comp_init(struct device *dev, struct device_node *node, > struct mtk_mdp_comp *comp, enum mtk_mdp_comp_id comp_id) > { > - struct device_node *larb_node; > - struct platform_device *larb_pdev; > int i; > > if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) { > @@ -116,30 +102,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node, > break; > } > > - /* Only DMA capable components need the LARB property */ > - comp->larb_dev = NULL; > - if (comp->type != MTK_MDP_RDMA && > - comp->type != MTK_MDP_WDMA && > - comp->type != MTK_MDP_WROT) > - return 0; > - > - larb_node = of_parse_phandle(node, "mediatek,larb", 0); > - if (!larb_node) { > - dev_err(dev, > - "Missing mediadek,larb phandle in %pOF node\n", node); > - return -EINVAL; > - } > - > - larb_pdev = of_find_device_by_node(larb_node); > - if (!larb_pdev) { > - dev_warn(dev, "Waiting for larb device %pOF\n", larb_node); > - of_node_put(larb_node); > - return -EPROBE_DEFER; > - } > - of_node_put(larb_node); > - > - comp->larb_dev = &larb_pdev->dev; > - > return 0; > } > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > index 998a4b9..a2da8df 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h > @@ -39,7 +39,6 @@ enum mtk_mdp_comp_id { > * @dev_node: component device node > * @clk: clocks required for component > * @regs: Mapped address of component registers. > - * @larb_dev: SMI device required for component > * @type: component type > * @id: component ID > */ > @@ -47,7 +46,6 @@ struct mtk_mdp_comp { > struct device_node *dev_node; > struct clk *clk[2]; > void __iomem *regs; > - struct device *larb_dev; > enum mtk_mdp_comp_type type; > enum mtk_mdp_comp_id id; > }; > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > index fc9faec..c237ed9 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > @@ -17,7 +17,6 @@ > #include <linux/platform_device.h> > #include <linux/pm_runtime.h> > #include <linux/workqueue.h> > -#include <soc/mediatek/smi.h> > > #include "mtk_mdp_core.h" > #include "mtk_mdp_m2m.h" ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put 2019-09-04 4:07 ` houlong wei (?) (?) @ 2019-09-05 5:56 ` Yong Wu -1 siblings, 0 replies; 12+ messages in thread From: Yong Wu @ 2019-09-05 5:56 UTC (permalink / raw) To: houlong wei Cc: Matthias Brugger, Joerg Roedel, Rob Herring, Evan Green, Robin Murphy, Tomasz Figa, Will Deacon, linux-mediatek, srv_heupstream, devicetree, linux-kernel, linux-arm-kernel, iommu, youlin.pei, Nicolas Boichat, Matthias Kaehlcke, anan.sun, cui.zhang, chao.hao, ming-fan.chen, minghsiu.tsai On Wed, 2019-09-04 at 12:07 +0800, houlong wei wrote: > Hi, Yong, > > I have inline comment below. Thanks for your review. > > > MediaTek IOMMU has already added the device_link between the consumer > > and smi-larb device. If the mdp device call the pm_runtime_get_sync, > > the smi-larb's pm_runtime_get_sync also be called automatically. > > > > CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > > Reviewed-by: Evan Green <evgreen@chromium.org> > > --- > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- > > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - > > 3 files changed, 41 deletions(-) > > > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > index 9afe816..5985a9b 100644 > > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > @@ -9,7 +9,6 @@ > > #include <linux/of.h> > > #include <linux/of_address.h> > > #include <linux/of_platform.h> > > -#include <soc/mediatek/smi.h> > > > > #include "mtk_mdp_comp.h" > > > > @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) > > { > > int i, err; > > > > - if (comp->larb_dev) { > > - err = mtk_smi_larb_get(comp->larb_dev); > > - if (err) > > - dev_err(dev, > > - "failed to get larb, err %d. type:%d id:%d\n", > > - err, comp->type, comp->id); > > - } > > In previous design,mtk_mdp_comp_clock_on() is called by each MDP > hardware component, and mtk_smi_larb_get() is also called for each MDP > hardware component which accesses DRAM via SMI larb. > > Since mdp device only contains mdp_rdma component, so > pm_runtime_get_sync() will ignore other smi-larb clock. We need consider > how to enable clocks of other smi-larb associated with other mdp > component, e.g. mdp_wdma, mdp_wrot. > Sorry, I'm not so familiar with mdp, thus, for MDP part, the test and reviewing from Minghsiu or you is expected. This patch only delete the smi interface literally. In my understanding, mdp should call pm_runtime_get with the corresponding device, no matter mdp_wdma or mdp_wrot device. Of course I am not sure the mdp flow, If this patch affect its function, please tell me. Also, If mdp driver need change correspondingly, I will put it into this series like [12/14] of this patchset which is from display. [snip] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put @ 2019-09-05 5:56 ` Yong Wu 0 siblings, 0 replies; 12+ messages in thread From: Yong Wu @ 2019-09-05 5:56 UTC (permalink / raw) To: houlong wei Cc: youlin.pei, devicetree, Nicolas Boichat, cui.zhang, srv_heupstream, chao.hao, Joerg Roedel, Will Deacon, linux-kernel, Evan Green, Tomasz Figa, iommu, Rob Herring, linux-mediatek, Matthias Brugger, minghsiu.tsai, ming-fan.chen, anan.sun, Robin Murphy, Matthias Kaehlcke, linux-arm-kernel On Wed, 2019-09-04 at 12:07 +0800, houlong wei wrote: > Hi, Yong, > > I have inline comment below. Thanks for your review. > > > MediaTek IOMMU has already added the device_link between the consumer > > and smi-larb device. If the mdp device call the pm_runtime_get_sync, > > the smi-larb's pm_runtime_get_sync also be called automatically. > > > > CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > > Reviewed-by: Evan Green <evgreen@chromium.org> > > --- > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- > > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - > > 3 files changed, 41 deletions(-) > > > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > index 9afe816..5985a9b 100644 > > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > @@ -9,7 +9,6 @@ > > #include <linux/of.h> > > #include <linux/of_address.h> > > #include <linux/of_platform.h> > > -#include <soc/mediatek/smi.h> > > > > #include "mtk_mdp_comp.h" > > > > @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) > > { > > int i, err; > > > > - if (comp->larb_dev) { > > - err = mtk_smi_larb_get(comp->larb_dev); > > - if (err) > > - dev_err(dev, > > - "failed to get larb, err %d. type:%d id:%d\n", > > - err, comp->type, comp->id); > > - } > > In previous design,mtk_mdp_comp_clock_on() is called by each MDP > hardware component, and mtk_smi_larb_get() is also called for each MDP > hardware component which accesses DRAM via SMI larb. > > Since mdp device only contains mdp_rdma component, so > pm_runtime_get_sync() will ignore other smi-larb clock. We need consider > how to enable clocks of other smi-larb associated with other mdp > component, e.g. mdp_wdma, mdp_wrot. > Sorry, I'm not so familiar with mdp, thus, for MDP part, the test and reviewing from Minghsiu or you is expected. This patch only delete the smi interface literally. In my understanding, mdp should call pm_runtime_get with the corresponding device, no matter mdp_wdma or mdp_wrot device. Of course I am not sure the mdp flow, If this patch affect its function, please tell me. Also, If mdp driver need change correspondingly, I will put it into this series like [12/14] of this patchset which is from display. [snip] _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put @ 2019-09-05 5:56 ` Yong Wu 0 siblings, 0 replies; 12+ messages in thread From: Yong Wu @ 2019-09-05 5:56 UTC (permalink / raw) To: houlong wei Cc: youlin.pei, devicetree, Nicolas Boichat, cui.zhang, srv_heupstream, chao.hao, Will Deacon, linux-kernel, Evan Green, Tomasz Figa, iommu, Rob Herring, linux-mediatek, Matthias Brugger, minghsiu.tsai, ming-fan.chen, anan.sun, Robin Murphy, Matthias Kaehlcke, linux-arm-kernel On Wed, 2019-09-04 at 12:07 +0800, houlong wei wrote: > Hi, Yong, > > I have inline comment below. Thanks for your review. > > > MediaTek IOMMU has already added the device_link between the consumer > > and smi-larb device. If the mdp device call the pm_runtime_get_sync, > > the smi-larb's pm_runtime_get_sync also be called automatically. > > > > CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > > Reviewed-by: Evan Green <evgreen@chromium.org> > > --- > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- > > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - > > 3 files changed, 41 deletions(-) > > > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > index 9afe816..5985a9b 100644 > > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > @@ -9,7 +9,6 @@ > > #include <linux/of.h> > > #include <linux/of_address.h> > > #include <linux/of_platform.h> > > -#include <soc/mediatek/smi.h> > > > > #include "mtk_mdp_comp.h" > > > > @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) > > { > > int i, err; > > > > - if (comp->larb_dev) { > > - err = mtk_smi_larb_get(comp->larb_dev); > > - if (err) > > - dev_err(dev, > > - "failed to get larb, err %d. type:%d id:%d\n", > > - err, comp->type, comp->id); > > - } > > In previous design,mtk_mdp_comp_clock_on() is called by each MDP > hardware component, and mtk_smi_larb_get() is also called for each MDP > hardware component which accesses DRAM via SMI larb. > > Since mdp device only contains mdp_rdma component, so > pm_runtime_get_sync() will ignore other smi-larb clock. We need consider > how to enable clocks of other smi-larb associated with other mdp > component, e.g. mdp_wdma, mdp_wrot. > Sorry, I'm not so familiar with mdp, thus, for MDP part, the test and reviewing from Minghsiu or you is expected. This patch only delete the smi interface literally. In my understanding, mdp should call pm_runtime_get with the corresponding device, no matter mdp_wdma or mdp_wrot device. Of course I am not sure the mdp flow, If this patch affect its function, please tell me. Also, If mdp driver need change correspondingly, I will put it into this series like [12/14] of this patchset which is from display. [snip] _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put @ 2019-09-05 5:56 ` Yong Wu 0 siblings, 0 replies; 12+ messages in thread From: Yong Wu @ 2019-09-05 5:56 UTC (permalink / raw) To: houlong wei Cc: Matthias Brugger, Joerg Roedel, Rob Herring, Evan Green, Robin Murphy, Tomasz Figa, Will Deacon, linux-mediatek, srv_heupstream, devicetree, linux-kernel, linux-arm-kernel, iommu, youlin.pei, Nicolas Boichat, Matthias Kaehlcke, anan.sun, cui.zhang, chao.hao, ming-fan.chen, minghsiu.tsai On Wed, 2019-09-04 at 12:07 +0800, houlong wei wrote: > Hi, Yong, > > I have inline comment below. Thanks for your review. > > > MediaTek IOMMU has already added the device_link between the consumer > > and smi-larb device. If the mdp device call the pm_runtime_get_sync, > > the smi-larb's pm_runtime_get_sync also be called automatically. > > > > CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > > Reviewed-by: Evan Green <evgreen@chromium.org> > > --- > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- > > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - > > 3 files changed, 41 deletions(-) > > > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > index 9afe816..5985a9b 100644 > > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > > @@ -9,7 +9,6 @@ > > #include <linux/of.h> > > #include <linux/of_address.h> > > #include <linux/of_platform.h> > > -#include <soc/mediatek/smi.h> > > > > #include "mtk_mdp_comp.h" > > > > @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) > > { > > int i, err; > > > > - if (comp->larb_dev) { > > - err = mtk_smi_larb_get(comp->larb_dev); > > - if (err) > > - dev_err(dev, > > - "failed to get larb, err %d. type:%d id:%d\n", > > - err, comp->type, comp->id); > > - } > > In previous design,mtk_mdp_comp_clock_on() is called by each MDP > hardware component, and mtk_smi_larb_get() is also called for each MDP > hardware component which accesses DRAM via SMI larb. > > Since mdp device only contains mdp_rdma component, so > pm_runtime_get_sync() will ignore other smi-larb clock. We need consider > how to enable clocks of other smi-larb associated with other mdp > component, e.g. mdp_wdma, mdp_wrot. > Sorry, I'm not so familiar with mdp, thus, for MDP part, the test and reviewing from Minghsiu or you is expected. This patch only delete the smi interface literally. In my understanding, mdp should call pm_runtime_get with the corresponding device, no matter mdp_wdma or mdp_wrot device. Of course I am not sure the mdp flow, If this patch affect its function, please tell me. Also, If mdp driver need change correspondingly, I will put it into this series like [12/14] of this patchset which is from display. [snip] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v3 00/14] Clean up "mediatek,larb" after adding device_link @ 2019-09-03 9:37 Yong Wu 2019-09-03 9:37 ` Yong Wu 0 siblings, 1 reply; 12+ messages in thread From: Yong Wu @ 2019-09-03 9:37 UTC (permalink / raw) To: Matthias Brugger, Joerg Roedel, Rob Herring Cc: Evan Green, Robin Murphy, Tomasz Figa, Will Deacon, linux-mediatek, srv_heupstream, devicetree, linux-kernel, linux-arm-kernel, iommu, yong.wu, youlin.pei, Nicolas Boichat, Matthias Kaehlcke, anan.sun, cui.zhang, chao.hao, ming-fan.chen MediaTek IOMMU block diagram always like below: M4U | smi-common | ------------- | | ... | | larb1 larb2 | | vdec venc All the consumer connect with smi-larb, then connect with smi-common. MediaTek IOMMU don't have its power-domain. When the consumer works, it should enable the smi-larb's power which also need enable the smi-common's power firstly. Thus, Firstly, use the device link connect the consumer and the smi-larbs. then add device link between the smi-larb and smi-common. After adding the device_link, then "mediatek,larb" property can be removed. the iommu consumer don't need call the mtk_smi_larb_get/put to enable the power and clock of smi-larb and smi-common. This patchset depends on "MT8183 IOMMU SUPPORT"[1]. [1] http://lists.infradead.org/pipermail/linux-mediatek/2019-August/022611.html Change notes: v3: 1) rebase on v5.3-rc1 and the latest mt8183 patchset. 2) Use device_is_bound to check whether the driver is ready from Matthias. 3) Add DL_FLAG_STATELESS flag when calling device_link_add and explain the reason in the commit message[3/14]. 4) Add a display patch[12/14] into this series. otherwise it may affect display HW fastlogo even though it don't happen in mt8183. v2: http://lists.infradead.org/pipermail/linux-mediatek/2019-June/020440.html 1) rebase on v5.2-rc1. 2) Move adding device_link between the consumer and smi-larb into iommu_add_device from Robin. 3) add DL_FLAG_AUTOREMOVE_CONSUMER even though the smi is built-in from Evan. 4) Remove the shutdown callback in iommu. v1: https://lists.linuxfoundation.org/pipermail/iommu/2019-January/032387.html Yong Wu (13): dt-binding: mediatek: Get rid of mediatek,larb for multimedia HW iommu/mediatek: Add probe_defer for smi-larb iommu/mediatek: Add device_link between the consumer and the larb devices memory: mtk-smi: Add device-link between smi-larb and smi-common media: mtk-jpeg: Get rid of mtk_smi_larb_get/put media: mtk-mdp: Get rid of mtk_smi_larb_get/put media: mtk-vcodec: Get rid of mtk_smi_larb_get/put drm/mediatek: Get rid of mtk_smi_larb_get/put memory: mtk-smi: Get rid of mtk_smi_larb_get/put iommu/mediatek: Use builtin_platform_driver memory: mtk-smi: Use device_is_bound to check if smi-common is ready arm: dts: mediatek: Get rid of mediatek,larb for MM nodes arm64: dts: mediatek: Get rid of mediatek,larb for MM nodes Yongqiang Niu (1): drm/mediatek: Add pm runtime support for ovl and rdma .../bindings/display/mediatek/mediatek,disp.txt | 9 ---- .../bindings/media/mediatek-jpeg-decoder.txt | 4 -- .../devicetree/bindings/media/mediatek-mdp.txt | 8 ---- .../devicetree/bindings/media/mediatek-vcodec.txt | 4 -- arch/arm/boot/dts/mt2701.dtsi | 1 - arch/arm/boot/dts/mt7623.dtsi | 1 - arch/arm64/boot/dts/mediatek/mt8173.dtsi | 15 ------ drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 5 ++ drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 5 ++ drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 20 ++++---- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 31 ++---------- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 2 +- drivers/iommu/mtk_iommu.c | 56 ++++++++++------------ drivers/iommu/mtk_iommu_v1.c | 49 ++++++++++--------- drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 22 --------- drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 2 - drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------- drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 - drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - .../media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c | 22 --------- drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h | 3 -- drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c | 1 - .../media/platform/mtk-vcodec/mtk_vcodec_enc_pm.c | 47 ------------------ drivers/memory/mtk-smi.c | 41 +++++++--------- include/soc/mediatek/smi.h | 20 -------- 25 files changed, 93 insertions(+), 316 deletions(-) -- 1.9.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put 2019-09-03 9:37 [PATCH v3 00/14] Clean up "mediatek,larb" after adding device_link Yong Wu 2019-09-03 9:37 ` Yong Wu (?) @ 2019-09-03 9:37 ` Yong Wu 0 siblings, 0 replies; 12+ messages in thread From: Yong Wu @ 2019-09-03 9:37 UTC (permalink / raw) To: Matthias Brugger, Joerg Roedel, Rob Herring Cc: Evan Green, Robin Murphy, Tomasz Figa, Will Deacon, linux-mediatek, srv_heupstream, devicetree, linux-kernel, linux-arm-kernel, iommu, yong.wu, youlin.pei, Nicolas Boichat, Matthias Kaehlcke, anan.sun, cui.zhang, chao.hao, ming-fan.chen, Minghsiu Tsai MediaTek IOMMU has already added the device_link between the consumer and smi-larb device. If the mdp device call the pm_runtime_get_sync, the smi-larb's pm_runtime_get_sync also be called automatically. CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: Evan Green <evgreen@chromium.org> --- drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - 3 files changed, 41 deletions(-) diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c index 9afe816..5985a9b 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c @@ -9,7 +9,6 @@ #include <linux/of.h> #include <linux/of_address.h> #include <linux/of_platform.h> -#include <soc/mediatek/smi.h> #include "mtk_mdp_comp.h" @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) { int i, err; - if (comp->larb_dev) { - err = mtk_smi_larb_get(comp->larb_dev); - if (err) - dev_err(dev, - "failed to get larb, err %d. type:%d id:%d\n", - err, comp->type, comp->id); - } - for (i = 0; i < ARRAY_SIZE(comp->clk); i++) { if (IS_ERR(comp->clk[i])) continue; @@ -86,16 +77,11 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp) continue; clk_disable_unprepare(comp->clk[i]); } - - if (comp->larb_dev) - mtk_smi_larb_put(comp->larb_dev); } int mtk_mdp_comp_init(struct device *dev, struct device_node *node, struct mtk_mdp_comp *comp, enum mtk_mdp_comp_id comp_id) { - struct device_node *larb_node; - struct platform_device *larb_pdev; int i; if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) { @@ -116,30 +102,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node, break; } - /* Only DMA capable components need the LARB property */ - comp->larb_dev = NULL; - if (comp->type != MTK_MDP_RDMA && - comp->type != MTK_MDP_WDMA && - comp->type != MTK_MDP_WROT) - return 0; - - larb_node = of_parse_phandle(node, "mediatek,larb", 0); - if (!larb_node) { - dev_err(dev, - "Missing mediadek,larb phandle in %pOF node\n", node); - return -EINVAL; - } - - larb_pdev = of_find_device_by_node(larb_node); - if (!larb_pdev) { - dev_warn(dev, "Waiting for larb device %pOF\n", larb_node); - of_node_put(larb_node); - return -EPROBE_DEFER; - } - of_node_put(larb_node); - - comp->larb_dev = &larb_pdev->dev; - return 0; } diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h index 998a4b9..a2da8df 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h @@ -39,7 +39,6 @@ enum mtk_mdp_comp_id { * @dev_node: component device node * @clk: clocks required for component * @regs: Mapped address of component registers. - * @larb_dev: SMI device required for component * @type: component type * @id: component ID */ @@ -47,7 +46,6 @@ struct mtk_mdp_comp { struct device_node *dev_node; struct clk *clk[2]; void __iomem *regs; - struct device *larb_dev; enum mtk_mdp_comp_type type; enum mtk_mdp_comp_id id; }; diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c index fc9faec..c237ed9 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c @@ -17,7 +17,6 @@ #include <linux/platform_device.h> #include <linux/pm_runtime.h> #include <linux/workqueue.h> -#include <soc/mediatek/smi.h> #include "mtk_mdp_core.h" #include "mtk_mdp_m2m.h" -- 1.9.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put @ 2019-09-03 9:37 ` Yong Wu 0 siblings, 0 replies; 12+ messages in thread From: Yong Wu @ 2019-09-03 9:37 UTC (permalink / raw) To: Matthias Brugger, Joerg Roedel, Rob Herring Cc: youlin.pei, devicetree, Nicolas Boichat, cui.zhang, srv_heupstream, chao.hao, Will Deacon, linux-kernel, Evan Green, Tomasz Figa, iommu, Matthias Kaehlcke, linux-mediatek, yong.wu, Minghsiu Tsai, ming-fan.chen, anan.sun, Robin Murphy, linux-arm-kernel MediaTek IOMMU has already added the device_link between the consumer and smi-larb device. If the mdp device call the pm_runtime_get_sync, the smi-larb's pm_runtime_get_sync also be called automatically. CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: Evan Green <evgreen@chromium.org> --- drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - 3 files changed, 41 deletions(-) diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c index 9afe816..5985a9b 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c @@ -9,7 +9,6 @@ #include <linux/of.h> #include <linux/of_address.h> #include <linux/of_platform.h> -#include <soc/mediatek/smi.h> #include "mtk_mdp_comp.h" @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) { int i, err; - if (comp->larb_dev) { - err = mtk_smi_larb_get(comp->larb_dev); - if (err) - dev_err(dev, - "failed to get larb, err %d. type:%d id:%d\n", - err, comp->type, comp->id); - } - for (i = 0; i < ARRAY_SIZE(comp->clk); i++) { if (IS_ERR(comp->clk[i])) continue; @@ -86,16 +77,11 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp) continue; clk_disable_unprepare(comp->clk[i]); } - - if (comp->larb_dev) - mtk_smi_larb_put(comp->larb_dev); } int mtk_mdp_comp_init(struct device *dev, struct device_node *node, struct mtk_mdp_comp *comp, enum mtk_mdp_comp_id comp_id) { - struct device_node *larb_node; - struct platform_device *larb_pdev; int i; if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) { @@ -116,30 +102,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node, break; } - /* Only DMA capable components need the LARB property */ - comp->larb_dev = NULL; - if (comp->type != MTK_MDP_RDMA && - comp->type != MTK_MDP_WDMA && - comp->type != MTK_MDP_WROT) - return 0; - - larb_node = of_parse_phandle(node, "mediatek,larb", 0); - if (!larb_node) { - dev_err(dev, - "Missing mediadek,larb phandle in %pOF node\n", node); - return -EINVAL; - } - - larb_pdev = of_find_device_by_node(larb_node); - if (!larb_pdev) { - dev_warn(dev, "Waiting for larb device %pOF\n", larb_node); - of_node_put(larb_node); - return -EPROBE_DEFER; - } - of_node_put(larb_node); - - comp->larb_dev = &larb_pdev->dev; - return 0; } diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h index 998a4b9..a2da8df 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h @@ -39,7 +39,6 @@ enum mtk_mdp_comp_id { * @dev_node: component device node * @clk: clocks required for component * @regs: Mapped address of component registers. - * @larb_dev: SMI device required for component * @type: component type * @id: component ID */ @@ -47,7 +46,6 @@ struct mtk_mdp_comp { struct device_node *dev_node; struct clk *clk[2]; void __iomem *regs; - struct device *larb_dev; enum mtk_mdp_comp_type type; enum mtk_mdp_comp_id id; }; diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c index fc9faec..c237ed9 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c @@ -17,7 +17,6 @@ #include <linux/platform_device.h> #include <linux/pm_runtime.h> #include <linux/workqueue.h> -#include <soc/mediatek/smi.h> #include "mtk_mdp_core.h" #include "mtk_mdp_m2m.h" -- 1.9.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put @ 2019-09-03 9:37 ` Yong Wu 0 siblings, 0 replies; 12+ messages in thread From: Yong Wu @ 2019-09-03 9:37 UTC (permalink / raw) To: Matthias Brugger, Joerg Roedel, Rob Herring Cc: youlin.pei, devicetree, Nicolas Boichat, cui.zhang, srv_heupstream, chao.hao, Will Deacon, linux-kernel, Evan Green, Tomasz Figa, iommu, Matthias Kaehlcke, linux-mediatek, Minghsiu Tsai, ming-fan.chen, anan.sun, Robin Murphy, linux-arm-kernel MediaTek IOMMU has already added the device_link between the consumer and smi-larb device. If the mdp device call the pm_runtime_get_sync, the smi-larb's pm_runtime_get_sync also be called automatically. CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: Evan Green <evgreen@chromium.org> --- drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - 3 files changed, 41 deletions(-) diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c index 9afe816..5985a9b 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c @@ -9,7 +9,6 @@ #include <linux/of.h> #include <linux/of_address.h> #include <linux/of_platform.h> -#include <soc/mediatek/smi.h> #include "mtk_mdp_comp.h" @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) { int i, err; - if (comp->larb_dev) { - err = mtk_smi_larb_get(comp->larb_dev); - if (err) - dev_err(dev, - "failed to get larb, err %d. type:%d id:%d\n", - err, comp->type, comp->id); - } - for (i = 0; i < ARRAY_SIZE(comp->clk); i++) { if (IS_ERR(comp->clk[i])) continue; @@ -86,16 +77,11 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp) continue; clk_disable_unprepare(comp->clk[i]); } - - if (comp->larb_dev) - mtk_smi_larb_put(comp->larb_dev); } int mtk_mdp_comp_init(struct device *dev, struct device_node *node, struct mtk_mdp_comp *comp, enum mtk_mdp_comp_id comp_id) { - struct device_node *larb_node; - struct platform_device *larb_pdev; int i; if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) { @@ -116,30 +102,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node, break; } - /* Only DMA capable components need the LARB property */ - comp->larb_dev = NULL; - if (comp->type != MTK_MDP_RDMA && - comp->type != MTK_MDP_WDMA && - comp->type != MTK_MDP_WROT) - return 0; - - larb_node = of_parse_phandle(node, "mediatek,larb", 0); - if (!larb_node) { - dev_err(dev, - "Missing mediadek,larb phandle in %pOF node\n", node); - return -EINVAL; - } - - larb_pdev = of_find_device_by_node(larb_node); - if (!larb_pdev) { - dev_warn(dev, "Waiting for larb device %pOF\n", larb_node); - of_node_put(larb_node); - return -EPROBE_DEFER; - } - of_node_put(larb_node); - - comp->larb_dev = &larb_pdev->dev; - return 0; } diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h index 998a4b9..a2da8df 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h @@ -39,7 +39,6 @@ enum mtk_mdp_comp_id { * @dev_node: component device node * @clk: clocks required for component * @regs: Mapped address of component registers. - * @larb_dev: SMI device required for component * @type: component type * @id: component ID */ @@ -47,7 +46,6 @@ struct mtk_mdp_comp { struct device_node *dev_node; struct clk *clk[2]; void __iomem *regs; - struct device *larb_dev; enum mtk_mdp_comp_type type; enum mtk_mdp_comp_id id; }; diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c index fc9faec..c237ed9 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c @@ -17,7 +17,6 @@ #include <linux/platform_device.h> #include <linux/pm_runtime.h> #include <linux/workqueue.h> -#include <soc/mediatek/smi.h> #include "mtk_mdp_core.h" #include "mtk_mdp_m2m.h" -- 1.9.1 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put @ 2019-09-03 9:37 ` Yong Wu 0 siblings, 0 replies; 12+ messages in thread From: Yong Wu @ 2019-09-03 9:37 UTC (permalink / raw) To: Matthias Brugger, Joerg Roedel, Rob Herring Cc: Evan Green, Robin Murphy, Tomasz Figa, Will Deacon, linux-mediatek, srv_heupstream, devicetree, linux-kernel, linux-arm-kernel, iommu, yong.wu, youlin.pei, Nicolas Boichat, Matthias Kaehlcke, anan.sun, cui.zhang, chao.hao, ming-fan.chen, Minghsiu Tsai MediaTek IOMMU has already added the device_link between the consumer and smi-larb device. If the mdp device call the pm_runtime_get_sync, the smi-larb's pm_runtime_get_sync also be called automatically. CC: Minghsiu Tsai <minghsiu.tsai@mediatek.com> Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: Evan Green <evgreen@chromium.org> --- drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 38 --------------------------- drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 -- drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 1 - 3 files changed, 41 deletions(-) diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c index 9afe816..5985a9b 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c @@ -9,7 +9,6 @@ #include <linux/of.h> #include <linux/of_address.h> #include <linux/of_platform.h> -#include <soc/mediatek/smi.h> #include "mtk_mdp_comp.h" @@ -58,14 +57,6 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp) { int i, err; - if (comp->larb_dev) { - err = mtk_smi_larb_get(comp->larb_dev); - if (err) - dev_err(dev, - "failed to get larb, err %d. type:%d id:%d\n", - err, comp->type, comp->id); - } - for (i = 0; i < ARRAY_SIZE(comp->clk); i++) { if (IS_ERR(comp->clk[i])) continue; @@ -86,16 +77,11 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp) continue; clk_disable_unprepare(comp->clk[i]); } - - if (comp->larb_dev) - mtk_smi_larb_put(comp->larb_dev); } int mtk_mdp_comp_init(struct device *dev, struct device_node *node, struct mtk_mdp_comp *comp, enum mtk_mdp_comp_id comp_id) { - struct device_node *larb_node; - struct platform_device *larb_pdev; int i; if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) { @@ -116,30 +102,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node, break; } - /* Only DMA capable components need the LARB property */ - comp->larb_dev = NULL; - if (comp->type != MTK_MDP_RDMA && - comp->type != MTK_MDP_WDMA && - comp->type != MTK_MDP_WROT) - return 0; - - larb_node = of_parse_phandle(node, "mediatek,larb", 0); - if (!larb_node) { - dev_err(dev, - "Missing mediadek,larb phandle in %pOF node\n", node); - return -EINVAL; - } - - larb_pdev = of_find_device_by_node(larb_node); - if (!larb_pdev) { - dev_warn(dev, "Waiting for larb device %pOF\n", larb_node); - of_node_put(larb_node); - return -EPROBE_DEFER; - } - of_node_put(larb_node); - - comp->larb_dev = &larb_pdev->dev; - return 0; } diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h index 998a4b9..a2da8df 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h @@ -39,7 +39,6 @@ enum mtk_mdp_comp_id { * @dev_node: component device node * @clk: clocks required for component * @regs: Mapped address of component registers. - * @larb_dev: SMI device required for component * @type: component type * @id: component ID */ @@ -47,7 +46,6 @@ struct mtk_mdp_comp { struct device_node *dev_node; struct clk *clk[2]; void __iomem *regs; - struct device *larb_dev; enum mtk_mdp_comp_type type; enum mtk_mdp_comp_id id; }; diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c index fc9faec..c237ed9 100644 --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c @@ -17,7 +17,6 @@ #include <linux/platform_device.h> #include <linux/pm_runtime.h> #include <linux/workqueue.h> -#include <soc/mediatek/smi.h> #include "mtk_mdp_core.h" #include "mtk_mdp_m2m.h" -- 1.9.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2019-09-05 5:57 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <mailman.21807.1567503573.19300.linux-mediatek@lists.infradead.org> 2019-09-04 4:07 ` [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put houlong wei 2019-09-04 4:07 ` houlong wei 2019-09-04 4:07 ` houlong wei 2019-09-04 4:07 ` houlong wei 2019-09-05 5:56 ` Yong Wu 2019-09-05 5:56 ` Yong Wu 2019-09-05 5:56 ` Yong Wu 2019-09-05 5:56 ` Yong Wu 2019-09-03 9:37 [PATCH v3 00/14] Clean up "mediatek,larb" after adding device_link Yong Wu 2019-09-03 9:37 ` [PATCH v3 06/14] media: mtk-mdp: Get rid of mtk_smi_larb_get/put Yong Wu 2019-09-03 9:37 ` Yong Wu 2019-09-03 9:37 ` Yong Wu 2019-09-03 9:37 ` Yong Wu
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.