* [PATCH v2 1/5] [media] mtk-mdp: remove mtk_mdp_comp.regs from mtk_mdp_comp.h
2020-05-06 5:49 [PATCH v2 0/5] MTK MDP driver cleanups to prep for futher work Eizan Miyamoto
@ 2020-05-06 5:49 ` Eizan Miyamoto
2020-05-06 15:19 ` Enric Balletbo i Serra
2020-05-06 5:49 ` [PATCH v2 2/5] [media] mtk-mdp: handle vb2_dma_contig_set_max_seg_size errors during probe Eizan Miyamoto
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Eizan Miyamoto @ 2020-05-06 5:49 UTC (permalink / raw)
To: LKML
Cc: Eizan Miyamoto, Enric Balletbo I Serra, Andrew-CT Chen,
Houlong Wei, Matthias Brugger, Mauro Carvalho Chehab,
Minghsiu Tsai, linux-arm-kernel, linux-media, linux-mediatek
These fields are not used and can be removed.
Signed-off-by: eizan@chromium.org
Reviewed-by: Enric Balletbo I Serra <enric.balletbo@collabora.com>
Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
---
Changes in v1: None
drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 1 -
drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 --
2 files changed, 3 deletions(-)
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
index 58abfbdfb82d..c76cd61fb178 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
@@ -106,7 +106,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node,
comp->dev_node = of_node_get(node);
comp->id = comp_id;
comp->type = mtk_mdp_matches[comp_id].type;
- comp->regs = of_iomap(node, 0);
for (i = 0; i < ARRAY_SIZE(comp->clk); i++) {
comp->clk[i] = of_clk_get(node, i);
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
index 998a4b953025..3b83bd6e0d8b 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
@@ -38,7 +38,6 @@ enum mtk_mdp_comp_id {
* struct mtk_mdp_comp - the MDP's function component data
* @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
@@ -46,7 +45,6 @@ enum mtk_mdp_comp_id {
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;
--
2.26.2.526.g744177e7f7-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/5] [media] mtk-mdp: remove mtk_mdp_comp.regs from mtk_mdp_comp.h
2020-05-06 5:49 ` [PATCH v2 1/5] [media] mtk-mdp: remove mtk_mdp_comp.regs from mtk_mdp_comp.h Eizan Miyamoto
@ 2020-05-06 15:19 ` Enric Balletbo i Serra
0 siblings, 0 replies; 10+ messages in thread
From: Enric Balletbo i Serra @ 2020-05-06 15:19 UTC (permalink / raw)
To: Eizan Miyamoto, LKML
Cc: Andrew-CT Chen, Houlong Wei, Matthias Brugger,
Mauro Carvalho Chehab, Minghsiu Tsai, linux-arm-kernel,
linux-media, linux-mediatek
Hi Eizan,
Thank you for the patch.
On 6/5/20 7:49, Eizan Miyamoto wrote:
> These fields are not used and can be removed.
>
> Signed-off-by: eizan@chromium.org
You need to drop the above line, for this and the other patches.
> Reviewed-by: Enric Balletbo I Serra <enric.balletbo@collabora.com>
> Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
> ---
>
> Changes in v1: None
>
> drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 1 -
> drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 --
> 2 files changed, 3 deletions(-)
>
> diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
> index 58abfbdfb82d..c76cd61fb178 100644
> --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
> +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
> @@ -106,7 +106,6 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node,
> comp->dev_node = of_node_get(node);
> comp->id = comp_id;
> comp->type = mtk_mdp_matches[comp_id].type;
> - comp->regs = of_iomap(node, 0);
>
> for (i = 0; i < ARRAY_SIZE(comp->clk); i++) {
> comp->clk[i] = of_clk_get(node, i);
> diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
> index 998a4b953025..3b83bd6e0d8b 100644
> --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
> +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
> @@ -38,7 +38,6 @@ enum mtk_mdp_comp_id {
> * struct mtk_mdp_comp - the MDP's function component data
> * @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
> @@ -46,7 +45,6 @@ enum mtk_mdp_comp_id {
> 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;
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 2/5] [media] mtk-mdp: handle vb2_dma_contig_set_max_seg_size errors during probe
2020-05-06 5:49 [PATCH v2 0/5] MTK MDP driver cleanups to prep for futher work Eizan Miyamoto
2020-05-06 5:49 ` [PATCH v2 1/5] [media] mtk-mdp: remove mtk_mdp_comp.regs from mtk_mdp_comp.h Eizan Miyamoto
@ 2020-05-06 5:49 ` Eizan Miyamoto
2020-05-06 15:22 ` Enric Balletbo Serra
2020-05-06 5:49 ` [PATCH v2 3/5] [media] mtk-mdp: handle vpu_wdt_reg_handler() " Eizan Miyamoto
` (2 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Eizan Miyamoto @ 2020-05-06 5:49 UTC (permalink / raw)
To: LKML
Cc: Eizan Miyamoto, Andrew-CT Chen, Houlong Wei, Matthias Brugger,
Mauro Carvalho Chehab, Minghsiu Tsai, linux-arm-kernel,
linux-media, linux-mediatek
This is a cleanup to better handle errors during MDP probe.
Signed-off-by: eizan@chromium.org
Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
---
Changes in v1:
- remove unnecessary error handling labels in favor of err_m2m_register
drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
index aeaed2cf4458..9b24b8d46eb7 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
@@ -193,7 +193,11 @@ static int mtk_mdp_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, mdp);
- vb2_dma_contig_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32));
+ ret = vb2_dma_contig_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32));
+ if (ret) {
+ dev_err(&pdev->dev, "Failed to set vb2 dma mag seg size\n");
+ goto err_m2m_register;
+ }
pm_runtime_enable(dev);
dev_dbg(dev, "mdp-%d registered successfully\n", mdp->id);
--
2.26.2.526.g744177e7f7-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/5] [media] mtk-mdp: handle vb2_dma_contig_set_max_seg_size errors during probe
2020-05-06 5:49 ` [PATCH v2 2/5] [media] mtk-mdp: handle vb2_dma_contig_set_max_seg_size errors during probe Eizan Miyamoto
@ 2020-05-06 15:22 ` Enric Balletbo Serra
0 siblings, 0 replies; 10+ messages in thread
From: Enric Balletbo Serra @ 2020-05-06 15:22 UTC (permalink / raw)
To: Eizan Miyamoto
Cc: LKML, Andrew-CT Chen, Minghsiu Tsai, Houlong Wei,
moderated list:ARM/Mediatek SoC support, Matthias Brugger,
Mauro Carvalho Chehab, Linux ARM, linux-media
Hi Eizan,
Thank you for your patch.
Missatge de Eizan Miyamoto <eizan@chromium.org> del dia dc., 6 de maig
2020 a les 7:51:
>
> This is a cleanup to better handle errors during MDP probe.
>
> Signed-off-by: eizan@chromium.org
As I commented on the first patch you should drop the above line.
> Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
Other than that:
Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> ---
>
> Changes in v1:
> - remove unnecessary error handling labels in favor of err_m2m_register
>
> drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
> index aeaed2cf4458..9b24b8d46eb7 100644
> --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
> +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
> @@ -193,7 +193,11 @@ static int mtk_mdp_probe(struct platform_device *pdev)
>
> platform_set_drvdata(pdev, mdp);
>
> - vb2_dma_contig_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32));
> + ret = vb2_dma_contig_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32));
> + if (ret) {
> + dev_err(&pdev->dev, "Failed to set vb2 dma mag seg size\n");
> + goto err_m2m_register;
> + }
>
> pm_runtime_enable(dev);
> dev_dbg(dev, "mdp-%d registered successfully\n", mdp->id);
> --
> 2.26.2.526.g744177e7f7-goog
>
>
> _______________________________________________
> Linux-mediatek mailing list
> Linux-mediatek@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 3/5] [media] mtk-mdp: handle vpu_wdt_reg_handler() errors during probe
2020-05-06 5:49 [PATCH v2 0/5] MTK MDP driver cleanups to prep for futher work Eizan Miyamoto
2020-05-06 5:49 ` [PATCH v2 1/5] [media] mtk-mdp: remove mtk_mdp_comp.regs from mtk_mdp_comp.h Eizan Miyamoto
2020-05-06 5:49 ` [PATCH v2 2/5] [media] mtk-mdp: handle vb2_dma_contig_set_max_seg_size errors during probe Eizan Miyamoto
@ 2020-05-06 5:49 ` Eizan Miyamoto
2020-05-06 15:24 ` Enric Balletbo Serra
2020-05-06 5:49 ` [PATCH v2 4/5] [media] mtk-mdp: convert mtk_mdp_dev.comp array to list Eizan Miyamoto
2020-05-06 5:49 ` [PATCH v2 5/5] [media] mtk-mdp: Remove mtk_mdp_comp.id and supporting functionality Eizan Miyamoto
4 siblings, 1 reply; 10+ messages in thread
From: Eizan Miyamoto @ 2020-05-06 5:49 UTC (permalink / raw)
To: LKML
Cc: Eizan Miyamoto, Andrew-CT Chen, Houlong Wei, Matthias Brugger,
Mauro Carvalho Chehab, Minghsiu Tsai, linux-arm-kernel,
linux-media, linux-mediatek
This is a cleanup to better handle errors during MDP probe.
Signed-off-by: eizan@chromium.org
Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
---
Changes in v1:
- remove unnecessary error handling labels in favor of err_m2m_register
drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
index 9b24b8d46eb7..17d155219ba2 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
@@ -188,8 +188,12 @@ static int mtk_mdp_probe(struct platform_device *pdev)
}
mdp->vpu_dev = vpu_get_plat_device(pdev);
- vpu_wdt_reg_handler(mdp->vpu_dev, mtk_mdp_reset_handler, mdp,
- VPU_RST_MDP);
+ ret = vpu_wdt_reg_handler(mdp->vpu_dev, mtk_mdp_reset_handler, mdp,
+ VPU_RST_MDP);
+ if (ret) {
+ dev_err(&pdev->dev, "Failed to register reset handler\n");
+ goto err_m2m_register;
+ }
platform_set_drvdata(pdev, mdp);
--
2.26.2.526.g744177e7f7-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 3/5] [media] mtk-mdp: handle vpu_wdt_reg_handler() errors during probe
2020-05-06 5:49 ` [PATCH v2 3/5] [media] mtk-mdp: handle vpu_wdt_reg_handler() " Eizan Miyamoto
@ 2020-05-06 15:24 ` Enric Balletbo Serra
0 siblings, 0 replies; 10+ messages in thread
From: Enric Balletbo Serra @ 2020-05-06 15:24 UTC (permalink / raw)
To: Eizan Miyamoto
Cc: LKML, Andrew-CT Chen, Minghsiu Tsai, Houlong Wei,
moderated list:ARM/Mediatek SoC support, Matthias Brugger,
Mauro Carvalho Chehab, Linux ARM, linux-media
Hi Eizan,
Thank you for your patch.
Missatge de Eizan Miyamoto <eizan@chromium.org> del dia dc., 6 de maig
2020 a les 7:51:
>
> This is a cleanup to better handle errors during MDP probe.
>
> Signed-off-by: eizan@chromium.org
ditto, remove the above line.
> Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
> ---
Other than that:
Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
>
> Changes in v1:
> - remove unnecessary error handling labels in favor of err_m2m_register
>
> drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
> index 9b24b8d46eb7..17d155219ba2 100644
> --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
> +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
> @@ -188,8 +188,12 @@ static int mtk_mdp_probe(struct platform_device *pdev)
> }
>
> mdp->vpu_dev = vpu_get_plat_device(pdev);
> - vpu_wdt_reg_handler(mdp->vpu_dev, mtk_mdp_reset_handler, mdp,
> - VPU_RST_MDP);
> + ret = vpu_wdt_reg_handler(mdp->vpu_dev, mtk_mdp_reset_handler, mdp,
> + VPU_RST_MDP);
> + if (ret) {
> + dev_err(&pdev->dev, "Failed to register reset handler\n");
> + goto err_m2m_register;
> + }
>
> platform_set_drvdata(pdev, mdp);
>
> --
> 2.26.2.526.g744177e7f7-goog
>
>
> _______________________________________________
> Linux-mediatek mailing list
> Linux-mediatek@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 4/5] [media] mtk-mdp: convert mtk_mdp_dev.comp array to list
2020-05-06 5:49 [PATCH v2 0/5] MTK MDP driver cleanups to prep for futher work Eizan Miyamoto
` (2 preceding siblings ...)
2020-05-06 5:49 ` [PATCH v2 3/5] [media] mtk-mdp: handle vpu_wdt_reg_handler() " Eizan Miyamoto
@ 2020-05-06 5:49 ` Eizan Miyamoto
2020-05-06 5:49 ` [PATCH v2 5/5] [media] mtk-mdp: Remove mtk_mdp_comp.id and supporting functionality Eizan Miyamoto
4 siblings, 0 replies; 10+ messages in thread
From: Eizan Miyamoto @ 2020-05-06 5:49 UTC (permalink / raw)
To: LKML
Cc: Eizan Miyamoto, Enric Balletbo I Serra, Andrew-CT Chen,
Houlong Wei, Matthias Brugger, Mauro Carvalho Chehab,
Minghsiu Tsai, linux-arm-kernel, linux-media, linux-mediatek
The functions mtk_mdp_register/unregister_component have been created to
add / remove items from the list of components.
This will eventually enable us to specify a list of components in the
device tree instead of hardcoding them into this driver.
The list is modified by a single thread at driver probe time, and will
not be traversed by another thread until the call to pm_runtime_enable
at the end of probing.
Signed-off-by: eizan@chromium.org
Reviewed-by: Enric Balletbo I Serra <enric.balletbo@collabora.com>
Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
---
Changes in v1: None
drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 1 +
drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 2 +
drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 46 +++++++++++++------
drivers/media/platform/mtk-mdp/mtk_mdp_core.h | 10 +++-
4 files changed, 43 insertions(+), 16 deletions(-)
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
index c76cd61fb178..da2bdad7a8d1 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
@@ -103,6 +103,7 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node,
return -EINVAL;
}
+ INIT_LIST_HEAD(&comp->node);
comp->dev_node = of_node_get(node);
comp->id = comp_id;
comp->type = mtk_mdp_matches[comp_id].type;
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
index 3b83bd6e0d8b..1f745891c6c3 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
@@ -36,6 +36,7 @@ enum mtk_mdp_comp_id {
/**
* struct mtk_mdp_comp - the MDP's function component data
+ * @node: list node to track sibing MDP components
* @dev_node: component device node
* @clk: clocks required for component
* @larb_dev: SMI device required for component
@@ -43,6 +44,7 @@ enum mtk_mdp_comp_id {
* @id: component ID
*/
struct mtk_mdp_comp {
+ struct list_head node;
struct device_node *dev_node;
struct clk *clk[2];
struct device *larb_dev;
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
index 17d155219ba2..40b9fda8b03b 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
@@ -55,19 +55,19 @@ MODULE_DEVICE_TABLE(of, mtk_mdp_of_ids);
static void mtk_mdp_clock_on(struct mtk_mdp_dev *mdp)
{
struct device *dev = &mdp->pdev->dev;
- int i;
+ struct mtk_mdp_comp *comp_node;
- for (i = 0; i < ARRAY_SIZE(mdp->comp); i++)
- mtk_mdp_comp_clock_on(dev, mdp->comp[i]);
+ list_for_each_entry(comp_node, &mdp->comp_list, node)
+ mtk_mdp_comp_clock_on(dev, comp_node);
}
static void mtk_mdp_clock_off(struct mtk_mdp_dev *mdp)
{
struct device *dev = &mdp->pdev->dev;
- int i;
+ struct mtk_mdp_comp *comp_node;
- for (i = 0; i < ARRAY_SIZE(mdp->comp); i++)
- mtk_mdp_comp_clock_off(dev, mdp->comp[i]);
+ list_for_each_entry(comp_node, &mdp->comp_list, node)
+ mtk_mdp_comp_clock_off(dev, comp_node);
}
static void mtk_mdp_wdt_worker(struct work_struct *work)
@@ -91,12 +91,25 @@ static void mtk_mdp_reset_handler(void *priv)
queue_work(mdp->wdt_wq, &mdp->wdt_work);
}
+void mtk_mdp_register_component(struct mtk_mdp_dev *mdp,
+ struct mtk_mdp_comp *comp)
+{
+ list_add(&mdp->comp_list, &comp->node);
+}
+
+void mtk_mdp_unregister_component(struct mtk_mdp_dev *mdp,
+ struct mtk_mdp_comp *comp)
+{
+ list_del(&comp->node);
+}
+
static int mtk_mdp_probe(struct platform_device *pdev)
{
struct mtk_mdp_dev *mdp;
struct device *dev = &pdev->dev;
struct device_node *node, *parent;
- int i, ret = 0;
+ struct mtk_mdp_comp *comp, *comp_temp;
+ int ret = 0;
mdp = devm_kzalloc(dev, sizeof(*mdp), GFP_KERNEL);
if (!mdp)
@@ -104,6 +117,7 @@ static int mtk_mdp_probe(struct platform_device *pdev)
mdp->id = pdev->id;
mdp->pdev = pdev;
+ INIT_LIST_HEAD(&mdp->comp_list);
INIT_LIST_HEAD(&mdp->ctx_list);
mutex_init(&mdp->lock);
@@ -124,7 +138,6 @@ static int mtk_mdp_probe(struct platform_device *pdev)
const struct of_device_id *of_id;
enum mtk_mdp_comp_type comp_type;
int comp_id;
- struct mtk_mdp_comp *comp;
of_id = of_match_node(mtk_mdp_comp_dt_ids, node);
if (!of_id)
@@ -150,13 +163,14 @@ static int mtk_mdp_probe(struct platform_device *pdev)
of_node_put(node);
goto err_comp;
}
- mdp->comp[comp_id] = comp;
ret = mtk_mdp_comp_init(dev, node, comp, comp_id);
if (ret) {
of_node_put(node);
goto err_comp;
}
+
+ mtk_mdp_register_component(mdp, comp);
}
mdp->job_wq = create_singlethread_workqueue(MTK_MDP_MODULE_NAME);
@@ -220,8 +234,10 @@ static int mtk_mdp_probe(struct platform_device *pdev)
err_alloc_job_wq:
err_comp:
- for (i = 0; i < ARRAY_SIZE(mdp->comp); i++)
- mtk_mdp_comp_deinit(dev, mdp->comp[i]);
+ list_for_each_entry_safe(comp, comp_temp, &mdp->comp_list, node) {
+ mtk_mdp_unregister_component(mdp, comp);
+ mtk_mdp_comp_deinit(dev, comp);
+ }
dev_dbg(dev, "err %d\n", ret);
return ret;
@@ -230,7 +246,7 @@ static int mtk_mdp_probe(struct platform_device *pdev)
static int mtk_mdp_remove(struct platform_device *pdev)
{
struct mtk_mdp_dev *mdp = platform_get_drvdata(pdev);
- int i;
+ struct mtk_mdp_comp *comp, *comp_temp;
pm_runtime_disable(&pdev->dev);
vb2_dma_contig_clear_max_seg_size(&pdev->dev);
@@ -243,8 +259,10 @@ static int mtk_mdp_remove(struct platform_device *pdev)
flush_workqueue(mdp->job_wq);
destroy_workqueue(mdp->job_wq);
- for (i = 0; i < ARRAY_SIZE(mdp->comp); i++)
- mtk_mdp_comp_deinit(&pdev->dev, mdp->comp[i]);
+ list_for_each_entry_safe(comp, comp_temp, &mdp->comp_list, node) {
+ mtk_mdp_unregister_component(mdp, comp);
+ mtk_mdp_comp_deinit(&pdev->dev, comp);
+ }
dev_dbg(&pdev->dev, "%s driver unloaded\n", pdev->name);
return 0;
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.h b/drivers/media/platform/mtk-mdp/mtk_mdp_core.h
index dd130cc218c9..a7da14b97077 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.h
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.h
@@ -136,7 +136,7 @@ struct mtk_mdp_variant {
* @pdev: pointer to the image processor platform device
* @variant: the IP variant information
* @id: image processor device index (0..MTK_MDP_MAX_DEVS)
- * @comp: MDP function components
+ * @comp_list: list of MDP function components
* @m2m_dev: v4l2 memory-to-memory device data
* @ctx_list: list of struct mtk_mdp_ctx
* @vdev: video device for image processor driver
@@ -154,7 +154,7 @@ struct mtk_mdp_dev {
struct platform_device *pdev;
struct mtk_mdp_variant *variant;
u16 id;
- struct mtk_mdp_comp *comp[MTK_MDP_COMP_ID_MAX];
+ struct list_head comp_list;
struct v4l2_m2m_dev *m2m_dev;
struct list_head ctx_list;
struct video_device *vdev;
@@ -221,6 +221,12 @@ struct mtk_mdp_ctx {
extern int mtk_mdp_dbg_level;
+void mtk_mdp_register_component(struct mtk_mdp_dev *mdp,
+ struct mtk_mdp_comp *comp);
+
+void mtk_mdp_unregister_component(struct mtk_mdp_dev *mdp,
+ struct mtk_mdp_comp *comp);
+
#if defined(DEBUG)
#define mtk_mdp_dbg(level, fmt, args...) \
--
2.26.2.526.g744177e7f7-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 5/5] [media] mtk-mdp: Remove mtk_mdp_comp.id and supporting functionality
2020-05-06 5:49 [PATCH v2 0/5] MTK MDP driver cleanups to prep for futher work Eizan Miyamoto
` (3 preceding siblings ...)
2020-05-06 5:49 ` [PATCH v2 4/5] [media] mtk-mdp: convert mtk_mdp_dev.comp array to list Eizan Miyamoto
@ 2020-05-06 5:49 ` Eizan Miyamoto
2020-05-06 15:33 ` Enric Balletbo Serra
4 siblings, 1 reply; 10+ messages in thread
From: Eizan Miyamoto @ 2020-05-06 5:49 UTC (permalink / raw)
To: LKML
Cc: Eizan Miyamoto, Andrew-CT Chen, Houlong Wei, Matthias Brugger,
Mauro Carvalho Chehab, Minghsiu Tsai, linux-arm-kernel,
linux-media, linux-mediatek
Since components are registered in a list, the numeric component id that
specified a location in an array is not necessary.
Signed-off-by: eizan@chromium.org
Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
---
Changes in v1:
- rebase onto linux-next/master to pick up
757570f11fa4b0ce5472a6583de6f06e996a8527
drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 60 +++----------------
drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 19 +-----
drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 10 +---
3 files changed, 11 insertions(+), 78 deletions(-)
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
index da2bdad7a8d1..362fff924aef 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
@@ -14,46 +14,6 @@
#include "mtk_mdp_comp.h"
-static const char * const mtk_mdp_comp_stem[MTK_MDP_COMP_TYPE_MAX] = {
- "mdp-rdma",
- "mdp-rsz",
- "mdp-wdma",
- "mdp-wrot",
-};
-
-struct mtk_mdp_comp_match {
- enum mtk_mdp_comp_type type;
- int alias_id;
-};
-
-static const struct mtk_mdp_comp_match mtk_mdp_matches[MTK_MDP_COMP_ID_MAX] = {
- { MTK_MDP_RDMA, 0 },
- { MTK_MDP_RDMA, 1 },
- { MTK_MDP_RSZ, 0 },
- { MTK_MDP_RSZ, 1 },
- { MTK_MDP_RSZ, 2 },
- { MTK_MDP_WDMA, 0 },
- { MTK_MDP_WROT, 0 },
- { MTK_MDP_WROT, 1 },
-};
-
-int mtk_mdp_comp_get_id(struct device *dev, struct device_node *node,
- enum mtk_mdp_comp_type comp_type)
-{
- int id = of_alias_get_id(node, mtk_mdp_comp_stem[comp_type]);
- int i;
-
- for (i = 0; i < ARRAY_SIZE(mtk_mdp_matches); i++) {
- if (comp_type == mtk_mdp_matches[i].type &&
- id == mtk_mdp_matches[i].alias_id)
- return i;
- }
-
- dev_err(dev, "Failed to get id. type: %d, id: %d\n", comp_type, id);
-
- return -EINVAL;
-}
-
void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp)
{
int i, err;
@@ -62,8 +22,8 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp)
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);
+ "failed to get larb, err %d. type:%d\n",
+ err, comp->type);
}
for (i = 0; i < ARRAY_SIZE(comp->clk); i++) {
@@ -72,8 +32,8 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp)
err = clk_prepare_enable(comp->clk[i]);
if (err)
dev_err(dev,
- "failed to enable clock, err %d. type:%d id:%d i:%d\n",
- err, comp->type, comp->id, i);
+ "failed to enable clock, err %d. type:%d i:%d\n",
+ err, comp->type, i);
}
}
@@ -92,21 +52,15 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp)
}
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 mtk_mdp_comp *comp,
+ enum mtk_mdp_comp_type comp_type)
{
struct device_node *larb_node;
struct platform_device *larb_pdev;
int i;
- if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) {
- dev_err(dev, "Invalid comp_id %d\n", comp_id);
- return -EINVAL;
- }
-
- INIT_LIST_HEAD(&comp->node);
comp->dev_node = of_node_get(node);
- comp->id = comp_id;
- comp->type = mtk_mdp_matches[comp_id].type;
+ comp->type = comp_type;
for (i = 0; i < ARRAY_SIZE(comp->clk); i++) {
comp->clk[i] = of_clk_get(node, i);
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
index 1f745891c6c3..1bf0242cce46 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
@@ -22,18 +22,6 @@ enum mtk_mdp_comp_type {
MTK_MDP_COMP_TYPE_MAX,
};
-enum mtk_mdp_comp_id {
- MTK_MDP_COMP_RDMA0,
- MTK_MDP_COMP_RDMA1,
- MTK_MDP_COMP_RSZ0,
- MTK_MDP_COMP_RSZ1,
- MTK_MDP_COMP_RSZ2,
- MTK_MDP_COMP_WDMA,
- MTK_MDP_COMP_WROT0,
- MTK_MDP_COMP_WROT1,
- MTK_MDP_COMP_ID_MAX,
-};
-
/**
* struct mtk_mdp_comp - the MDP's function component data
* @node: list node to track sibing MDP components
@@ -41,7 +29,6 @@ enum mtk_mdp_comp_id {
* @clk: clocks required for component
* @larb_dev: SMI device required for component
* @type: component type
- * @id: component ID
*/
struct mtk_mdp_comp {
struct list_head node;
@@ -49,14 +36,12 @@ struct mtk_mdp_comp {
struct clk *clk[2];
struct device *larb_dev;
enum mtk_mdp_comp_type type;
- enum mtk_mdp_comp_id id;
};
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 mtk_mdp_comp *comp,
+ enum mtk_mdp_comp_type comp_type);
void mtk_mdp_comp_deinit(struct device *dev, struct mtk_mdp_comp *comp);
-int mtk_mdp_comp_get_id(struct device *dev, struct device_node *node,
- enum mtk_mdp_comp_type comp_type);
void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp);
void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp);
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
index 40b9fda8b03b..acbc5a01ae4c 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
@@ -137,7 +137,6 @@ static int mtk_mdp_probe(struct platform_device *pdev)
for_each_child_of_node(parent, node) {
const struct of_device_id *of_id;
enum mtk_mdp_comp_type comp_type;
- int comp_id;
of_id = of_match_node(mtk_mdp_comp_dt_ids, node);
if (!of_id)
@@ -150,12 +149,7 @@ static int mtk_mdp_probe(struct platform_device *pdev)
}
comp_type = (enum mtk_mdp_comp_type)of_id->data;
- comp_id = mtk_mdp_comp_get_id(dev, node, comp_type);
- if (comp_id < 0) {
- dev_warn(dev, "Skipping unknown component %pOF\n",
- node);
- continue;
- }
+
comp = devm_kzalloc(dev, sizeof(*comp), GFP_KERNEL);
if (!comp) {
@@ -164,7 +158,7 @@ static int mtk_mdp_probe(struct platform_device *pdev)
goto err_comp;
}
- ret = mtk_mdp_comp_init(dev, node, comp, comp_id);
+ ret = mtk_mdp_comp_init(dev, node, comp, comp_type);
if (ret) {
of_node_put(node);
goto err_comp;
--
2.26.2.526.g744177e7f7-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 5/5] [media] mtk-mdp: Remove mtk_mdp_comp.id and supporting functionality
2020-05-06 5:49 ` [PATCH v2 5/5] [media] mtk-mdp: Remove mtk_mdp_comp.id and supporting functionality Eizan Miyamoto
@ 2020-05-06 15:33 ` Enric Balletbo Serra
0 siblings, 0 replies; 10+ messages in thread
From: Enric Balletbo Serra @ 2020-05-06 15:33 UTC (permalink / raw)
To: Eizan Miyamoto
Cc: LKML, Andrew-CT Chen, Minghsiu Tsai, Houlong Wei,
moderated list:ARM/Mediatek SoC support, Matthias Brugger,
Mauro Carvalho Chehab, Linux ARM, linux-media
Hi Eizan,
Thank you for the patch. Two trivial comments
Missatge de Eizan Miyamoto <eizan@chromium.org> del dia dc., 6 de maig
2020 a les 7:51:
>
> Since components are registered in a list, the numeric component id that
> specified a location in an array is not necessary.
>
> Signed-off-by: eizan@chromium.org
ditto: Drop the above line.
> Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
> ---
>
> Changes in v1:
> - rebase onto linux-next/master to pick up
> 757570f11fa4b0ce5472a6583de6f06e996a8527
>
You probably should mention this in the cover-letter or as a comment
here to make the maintainer aware of this dependency.
> drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 60 +++----------------
> drivers/media/platform/mtk-mdp/mtk_mdp_comp.h | 19 +-----
> drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 10 +---
> 3 files changed, 11 insertions(+), 78 deletions(-)
>
> diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
> index da2bdad7a8d1..362fff924aef 100644
> --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
> +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c
> @@ -14,46 +14,6 @@
> #include "mtk_mdp_comp.h"
>
>
> -static const char * const mtk_mdp_comp_stem[MTK_MDP_COMP_TYPE_MAX] = {
> - "mdp-rdma",
> - "mdp-rsz",
> - "mdp-wdma",
> - "mdp-wrot",
> -};
> -
> -struct mtk_mdp_comp_match {
> - enum mtk_mdp_comp_type type;
> - int alias_id;
> -};
> -
> -static const struct mtk_mdp_comp_match mtk_mdp_matches[MTK_MDP_COMP_ID_MAX] = {
> - { MTK_MDP_RDMA, 0 },
> - { MTK_MDP_RDMA, 1 },
> - { MTK_MDP_RSZ, 0 },
> - { MTK_MDP_RSZ, 1 },
> - { MTK_MDP_RSZ, 2 },
> - { MTK_MDP_WDMA, 0 },
> - { MTK_MDP_WROT, 0 },
> - { MTK_MDP_WROT, 1 },
> -};
> -
> -int mtk_mdp_comp_get_id(struct device *dev, struct device_node *node,
> - enum mtk_mdp_comp_type comp_type)
> -{
> - int id = of_alias_get_id(node, mtk_mdp_comp_stem[comp_type]);
> - int i;
> -
> - for (i = 0; i < ARRAY_SIZE(mtk_mdp_matches); i++) {
> - if (comp_type == mtk_mdp_matches[i].type &&
> - id == mtk_mdp_matches[i].alias_id)
> - return i;
> - }
> -
> - dev_err(dev, "Failed to get id. type: %d, id: %d\n", comp_type, id);
> -
> - return -EINVAL;
> -}
> -
> void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp)
> {
> int i, err;
> @@ -62,8 +22,8 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp)
> 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);
> + "failed to get larb, err %d. type:%d\n",
> + err, comp->type);
> }
>
> for (i = 0; i < ARRAY_SIZE(comp->clk); i++) {
> @@ -72,8 +32,8 @@ void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp)
> err = clk_prepare_enable(comp->clk[i]);
> if (err)
> dev_err(dev,
> - "failed to enable clock, err %d. type:%d id:%d i:%d\n",
> - err, comp->type, comp->id, i);
> + "failed to enable clock, err %d. type:%d i:%d\n",
> + err, comp->type, i);
> }
> }
>
> @@ -92,21 +52,15 @@ void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp)
> }
>
> 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 mtk_mdp_comp *comp,
> + enum mtk_mdp_comp_type comp_type)
> {
> struct device_node *larb_node;
> struct platform_device *larb_pdev;
> int i;
>
> - if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) {
> - dev_err(dev, "Invalid comp_id %d\n", comp_id);
> - return -EINVAL;
> - }
> -
> - INIT_LIST_HEAD(&comp->node);
> comp->dev_node = of_node_get(node);
> - comp->id = comp_id;
> - comp->type = mtk_mdp_matches[comp_id].type;
> + comp->type = comp_type;
>
> for (i = 0; i < ARRAY_SIZE(comp->clk); i++) {
> comp->clk[i] = of_clk_get(node, i);
> diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
> index 1f745891c6c3..1bf0242cce46 100644
> --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
> +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.h
> @@ -22,18 +22,6 @@ enum mtk_mdp_comp_type {
> MTK_MDP_COMP_TYPE_MAX,
> };
>
> -enum mtk_mdp_comp_id {
> - MTK_MDP_COMP_RDMA0,
> - MTK_MDP_COMP_RDMA1,
> - MTK_MDP_COMP_RSZ0,
> - MTK_MDP_COMP_RSZ1,
> - MTK_MDP_COMP_RSZ2,
> - MTK_MDP_COMP_WDMA,
> - MTK_MDP_COMP_WROT0,
> - MTK_MDP_COMP_WROT1,
> - MTK_MDP_COMP_ID_MAX,
> -};
> -
> /**
> * struct mtk_mdp_comp - the MDP's function component data
> * @node: list node to track sibing MDP components
> @@ -41,7 +29,6 @@ enum mtk_mdp_comp_id {
> * @clk: clocks required for component
> * @larb_dev: SMI device required for component
> * @type: component type
> - * @id: component ID
> */
> struct mtk_mdp_comp {
> struct list_head node;
> @@ -49,14 +36,12 @@ struct mtk_mdp_comp {
> struct clk *clk[2];
> struct device *larb_dev;
> enum mtk_mdp_comp_type type;
> - enum mtk_mdp_comp_id id;
> };
>
> 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 mtk_mdp_comp *comp,
> + enum mtk_mdp_comp_type comp_type);
> void mtk_mdp_comp_deinit(struct device *dev, struct mtk_mdp_comp *comp);
> -int mtk_mdp_comp_get_id(struct device *dev, struct device_node *node,
> - enum mtk_mdp_comp_type comp_type);
> void mtk_mdp_comp_clock_on(struct device *dev, struct mtk_mdp_comp *comp);
> void mtk_mdp_comp_clock_off(struct device *dev, struct mtk_mdp_comp *comp);
>
> diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
> index 40b9fda8b03b..acbc5a01ae4c 100644
> --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
> +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c
> @@ -137,7 +137,6 @@ static int mtk_mdp_probe(struct platform_device *pdev)
> for_each_child_of_node(parent, node) {
> const struct of_device_id *of_id;
> enum mtk_mdp_comp_type comp_type;
> - int comp_id;
>
> of_id = of_match_node(mtk_mdp_comp_dt_ids, node);
> if (!of_id)
> @@ -150,12 +149,7 @@ static int mtk_mdp_probe(struct platform_device *pdev)
> }
>
> comp_type = (enum mtk_mdp_comp_type)of_id->data;
> - comp_id = mtk_mdp_comp_get_id(dev, node, comp_type);
> - if (comp_id < 0) {
> - dev_warn(dev, "Skipping unknown component %pOF\n",
> - node);
> - continue;
> - }
> +
Look like you are introducing a double line break, remove it.
Other than that:
Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
>
> comp = devm_kzalloc(dev, sizeof(*comp), GFP_KERNEL);
> if (!comp) {
> @@ -164,7 +158,7 @@ static int mtk_mdp_probe(struct platform_device *pdev)
> goto err_comp;
> }
>
> - ret = mtk_mdp_comp_init(dev, node, comp, comp_id);
> + ret = mtk_mdp_comp_init(dev, node, comp, comp_type);
> if (ret) {
> of_node_put(node);
> goto err_comp;
> --
> 2.26.2.526.g744177e7f7-goog
>
>
> _______________________________________________
> Linux-mediatek mailing list
> Linux-mediatek@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply [flat|nested] 10+ messages in thread