diff mbox series

[2/2] rockchip: video: Convert to use APIs which support live DT

Message ID 20200219014538.18366-2-kever.yang@rock-chips.com
State Accepted
Commit 653ac184ee8c785564d70ee9ccceffbd9a48b737
Delegated to: Kever Yang
Headers show
Series [1/2] rockchip: video: Use ofnode_decode_display_timing() to parse timing | expand

Commit Message

Kever Yang Feb. 19, 2020, 1:45 a.m. UTC
Use ofnode_ or dev_ APIs instead of fdt_ and fdtdec_ APIs so that the
driver can support live DT.

Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
---

 drivers/video/rockchip/rk3288_mipi.c |  1 -
 drivers/video/rockchip/rk3399_mipi.c |  1 -
 drivers/video/rockchip/rk_edp.c      |  2 +-
 drivers/video/rockchip/rk_lvds.c     | 10 ++++------
 drivers/video/rockchip/rk_mipi.c     | 11 +++++------
 5 files changed, 10 insertions(+), 15 deletions(-)

Comments

Simon Glass Feb. 20, 2020, 3:04 a.m. UTC | #1
Hi Kever,

On Tue, 18 Feb 2020 at 18:45, Kever Yang <kever.yang@rock-chips.com> wrote:
>
> Use ofnode_ or dev_ APIs instead of fdt_ and fdtdec_ APIs so that the
> driver can support live DT.
>
> Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
> ---
>
>  drivers/video/rockchip/rk3288_mipi.c |  1 -
>  drivers/video/rockchip/rk3399_mipi.c |  1 -
>  drivers/video/rockchip/rk_edp.c      |  2 +-
>  drivers/video/rockchip/rk_lvds.c     | 10 ++++------
>  drivers/video/rockchip/rk_mipi.c     | 11 +++++------
>  5 files changed, 10 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/video/rockchip/rk3288_mipi.c b/drivers/video/rockchip/rk3288_mipi.c
> index 65891ce45c..5b2dc2ad02 100644
> --- a/drivers/video/rockchip/rk3288_mipi.c
> +++ b/drivers/video/rockchip/rk3288_mipi.c
> @@ -8,7 +8,6 @@
>  #include <clk.h>
>  #include <display.h>
>  #include <dm.h>
> -#include <fdtdec.h>
>  #include <panel.h>
>  #include <regmap.h>
>  #include "rk_mipi.h"
> diff --git a/drivers/video/rockchip/rk3399_mipi.c b/drivers/video/rockchip/rk3399_mipi.c
> index a5b7ba69a8..03e1349509 100644
> --- a/drivers/video/rockchip/rk3399_mipi.c
> +++ b/drivers/video/rockchip/rk3399_mipi.c
> @@ -8,7 +8,6 @@
>  #include <clk.h>
>  #include <display.h>
>  #include <dm.h>
> -#include <fdtdec.h>
>  #include <panel.h>
>  #include <regmap.h>
>  #include "rk_mipi.h"
> diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c
> index 4330725a25..e617a974a5 100644
> --- a/drivers/video/rockchip/rk_edp.c
> +++ b/drivers/video/rockchip/rk_edp.c
> @@ -995,7 +995,7 @@ static int rk_edp_ofdata_to_platdata(struct udevice *dev)
>  {
>         struct rk_edp_priv *priv = dev_get_priv(dev);
>
> -       priv->regs = (struct rk3288_edp *)devfdt_get_addr(dev);
> +       priv->regs = dev_read_addr_ptr(dev);
>         priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
>
>         return 0;
> diff --git a/drivers/video/rockchip/rk_lvds.c b/drivers/video/rockchip/rk_lvds.c
> index cae8bada32..92e70f6317 100644
> --- a/drivers/video/rockchip/rk_lvds.c
> +++ b/drivers/video/rockchip/rk_lvds.c
> @@ -171,13 +171,11 @@ int rk_lvds_read_timing(struct udevice *dev, struct display_timing *timing)
>  static int rk_lvds_ofdata_to_platdata(struct udevice *dev)
>  {
>         struct rk_lvds_priv *priv = dev_get_priv(dev);
> -       const void *blob = gd->fdt_blob;
> -       int node = dev_of_offset(dev);
>         int ret;
> -       priv->regs = (void *)devfdt_get_addr(dev);
> +       priv->regs = dev_read_addr_ptr(dev);
>         priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
>
> -       ret = fdtdec_get_int(blob, node, "rockchip,output", -1);
> +       ret = dev_read_s32_default(dev, "rockchip,output", -1);

if (!dev_read_s32(...) {

>         if (ret != -1) {
>                 priv->output = ret;
>                 debug("LVDS output : %d\n", ret);
> @@ -186,7 +184,7 @@ static int rk_lvds_ofdata_to_platdata(struct udevice *dev)
>                 priv->output = LVDS_OUTPUT_RGB;
>         }
>
> -       ret = fdtdec_get_int(blob, node, "rockchip,data-mapping", -1);
> +       ret = dev_read_s32_default(dev, "rockchip,data-mapping", -1);
>         if (ret != -1) {

Same here

>                 priv->format = ret;
>                 debug("LVDS data-mapping : %d\n", ret);
> @@ -195,7 +193,7 @@ static int rk_lvds_ofdata_to_platdata(struct udevice *dev)
>                 priv->format = LVDS_FORMAT_JEIDA;
>         }
>
> -       ret = fdtdec_get_int(blob, node, "rockchip,data-width", -1);
> +       ret = dev_read_s32_default(dev, "rockchip,data-width", -1);

and here

>         if (ret != -1) {
>                 debug("LVDS data-width : %d\n", ret);
>                 if (ret == 24) {
> diff --git a/drivers/video/rockchip/rk_mipi.c b/drivers/video/rockchip/rk_mipi.c
> index a77bdfd24d..f1c21bb8d7 100644
> --- a/drivers/video/rockchip/rk_mipi.c
> +++ b/drivers/video/rockchip/rk_mipi.c
> @@ -8,7 +8,6 @@
>  #include <clk.h>
>  #include <display.h>
>  #include <dm.h>
> -#include <fdtdec.h>
>  #include <panel.h>
>  #include <regmap.h>
>  #include "rk_mipi.h"
> @@ -76,7 +75,7 @@ static void rk_mipi_dsi_write(uintptr_t regs, u32 reg, u32 val)
>  int rk_mipi_dsi_enable(struct udevice *dev,
>                        const struct display_timing *timing)
>  {
> -       int node, timing_node;
> +       ofnode node, timing_node;
>         int val;
>         struct rk_mipi_priv *priv = dev_get_priv(dev);
>         uintptr_t regs = priv->regs;
> @@ -119,10 +118,10 @@ int rk_mipi_dsi_enable(struct udevice *dev,
>         rk_mipi_dsi_write(regs, VID_PKT_SIZE, 0x4b0);
>
>         /* Set dpi color coding depth 24 bit */
> -       timing_node = fdt_subnode_offset(gd->fdt_blob, dev_of_offset(dev),
> -                                                                        "display-timings");
> -       node = fdt_first_subnode(gd->fdt_blob, timing_node);
> -       val = fdtdec_get_int(gd->fdt_blob, node, "bits-per-pixel", -1);
> +       timing_node = ofnode_find_subnode(dev->node, "display-timings");
> +       node = ofnode_first_subnode(timing_node);
> +
> +       val = ofnode_read_u32_default(node, "bits-per-pixel", -1);
>         switch (val) {
>         case 16:
>                 rk_mipi_dsi_write(regs, DPI_COLOR_CODING, DPI_16BIT_CFG_1);
> --
> 2.17.1
>

Regards,
Simon
Simon Glass March 29, 2020, 2:26 p.m. UTC | #2
On Wed, 19 Feb 2020 at 20:04, Simon Glass <sjg@chromium.org> wrote:
>
> Hi Kever,
>
> On Tue, 18 Feb 2020 at 18:45, Kever Yang <kever.yang@rock-chips.com> wrote:
> >
> > Use ofnode_ or dev_ APIs instead of fdt_ and fdtdec_ APIs so that the
> > driver can support live DT.
> >
> > Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
> > ---
> >
> >  drivers/video/rockchip/rk3288_mipi.c |  1 -
> >  drivers/video/rockchip/rk3399_mipi.c |  1 -
> >  drivers/video/rockchip/rk_edp.c      |  2 +-
> >  drivers/video/rockchip/rk_lvds.c     | 10 ++++------
> >  drivers/video/rockchip/rk_mipi.c     | 11 +++++------
> >  5 files changed, 10 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/video/rockchip/rk3288_mipi.c b/drivers/video/rockchip/rk3288_mipi.c
> > index 65891ce45c..5b2dc2ad02 100644
> > --- a/drivers/video/rockchip/rk3288_mipi.c
> > +++ b/drivers/video/rockchip/rk3288_mipi.c
> > @@ -8,7 +8,6 @@
> >  #include <clk.h>
> >  #include <display.h>
> >  #include <dm.h>
> > -#include <fdtdec.h>
> >  #include <panel.h>
> >  #include <regmap.h>
> >  #include "rk_mipi.h"
> > diff --git a/drivers/video/rockchip/rk3399_mipi.c b/drivers/video/rockchip/rk3399_mipi.c
> > index a5b7ba69a8..03e1349509 100644
> > --- a/drivers/video/rockchip/rk3399_mipi.c
> > +++ b/drivers/video/rockchip/rk3399_mipi.c
> > @@ -8,7 +8,6 @@
> >  #include <clk.h>
> >  #include <display.h>
> >  #include <dm.h>
> > -#include <fdtdec.h>
> >  #include <panel.h>
> >  #include <regmap.h>
> >  #include "rk_mipi.h"
> > diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c
> > index 4330725a25..e617a974a5 100644
> > --- a/drivers/video/rockchip/rk_edp.c
> > +++ b/drivers/video/rockchip/rk_edp.c
> > @@ -995,7 +995,7 @@ static int rk_edp_ofdata_to_platdata(struct udevice *dev)
> >  {
> >         struct rk_edp_priv *priv = dev_get_priv(dev);
> >
> > -       priv->regs = (struct rk3288_edp *)devfdt_get_addr(dev);
> > +       priv->regs = dev_read_addr_ptr(dev);
> >         priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
> >
> >         return 0;
> > diff --git a/drivers/video/rockchip/rk_lvds.c b/drivers/video/rockchip/rk_lvds.c
> > index cae8bada32..92e70f6317 100644
> > --- a/drivers/video/rockchip/rk_lvds.c
> > +++ b/drivers/video/rockchip/rk_lvds.c
> > @@ -171,13 +171,11 @@ int rk_lvds_read_timing(struct udevice *dev, struct display_timing *timing)
> >  static int rk_lvds_ofdata_to_platdata(struct udevice *dev)
> >  {
> >         struct rk_lvds_priv *priv = dev_get_priv(dev);
> > -       const void *blob = gd->fdt_blob;
> > -       int node = dev_of_offset(dev);
> >         int ret;
> > -       priv->regs = (void *)devfdt_get_addr(dev);
> > +       priv->regs = dev_read_addr_ptr(dev);
> >         priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
> >
> > -       ret = fdtdec_get_int(blob, node, "rockchip,output", -1);
> > +       ret = dev_read_s32_default(dev, "rockchip,output", -1);
>
> if (!dev_read_s32(...) {
>
> >         if (ret != -1) {
> >                 priv->output = ret;
> >                 debug("LVDS output : %d\n", ret);
> > @@ -186,7 +184,7 @@ static int rk_lvds_ofdata_to_platdata(struct udevice *dev)
> >                 priv->output = LVDS_OUTPUT_RGB;
> >         }
> >
> > -       ret = fdtdec_get_int(blob, node, "rockchip,data-mapping", -1);
> > +       ret = dev_read_s32_default(dev, "rockchip,data-mapping", -1);
> >         if (ret != -1) {
>
> Same here
>
> >                 priv->format = ret;
> >                 debug("LVDS data-mapping : %d\n", ret);
> > @@ -195,7 +193,7 @@ static int rk_lvds_ofdata_to_platdata(struct udevice *dev)
> >                 priv->format = LVDS_FORMAT_JEIDA;
> >         }
> >
> > -       ret = fdtdec_get_int(blob, node, "rockchip,data-width", -1);
> > +       ret = dev_read_s32_default(dev, "rockchip,data-width", -1);
>
> and here
>
> >         if (ret != -1) {
> >                 debug("LVDS data-width : %d\n", ret);
> >                 if (ret == 24) {
> > diff --git a/drivers/video/rockchip/rk_mipi.c b/drivers/video/rockchip/rk_mipi.c
> > index a77bdfd24d..f1c21bb8d7 100644
> > --- a/drivers/video/rockchip/rk_mipi.c
> > +++ b/drivers/video/rockchip/rk_mipi.c
> > @@ -8,7 +8,6 @@
> >  #include <clk.h>
> >  #include <display.h>
> >  #include <dm.h>
> > -#include <fdtdec.h>
> >  #include <panel.h>
> >  #include <regmap.h>
> >  #include "rk_mipi.h"
> > @@ -76,7 +75,7 @@ static void rk_mipi_dsi_write(uintptr_t regs, u32 reg, u32 val)
> >  int rk_mipi_dsi_enable(struct udevice *dev,
> >                        const struct display_timing *timing)
> >  {
> > -       int node, timing_node;
> > +       ofnode node, timing_node;
> >         int val;
> >         struct rk_mipi_priv *priv = dev_get_priv(dev);
> >         uintptr_t regs = priv->regs;
> > @@ -119,10 +118,10 @@ int rk_mipi_dsi_enable(struct udevice *dev,
> >         rk_mipi_dsi_write(regs, VID_PKT_SIZE, 0x4b0);
> >
> >         /* Set dpi color coding depth 24 bit */
> > -       timing_node = fdt_subnode_offset(gd->fdt_blob, dev_of_offset(dev),
> > -                                                                        "display-timings");
> > -       node = fdt_first_subnode(gd->fdt_blob, timing_node);
> > -       val = fdtdec_get_int(gd->fdt_blob, node, "bits-per-pixel", -1);
> > +       timing_node = ofnode_find_subnode(dev->node, "display-timings");
> > +       node = ofnode_first_subnode(timing_node);
> > +
> > +       val = ofnode_read_u32_default(node, "bits-per-pixel", -1);
> >         switch (val) {
> >         case 16:
> >                 rk_mipi_dsi_write(regs, DPI_COLOR_CODING, DPI_16BIT_CFG_1);
> > --
> > 2.17.1
> >

Reviewed-by: Simon Glass <sjg@chromium.org>

Sorry, but this patch is better than the alternative v2 now that I see
the contortions that need to be used.


- Simon
diff mbox series

Patch

diff --git a/drivers/video/rockchip/rk3288_mipi.c b/drivers/video/rockchip/rk3288_mipi.c
index 65891ce45c..5b2dc2ad02 100644
--- a/drivers/video/rockchip/rk3288_mipi.c
+++ b/drivers/video/rockchip/rk3288_mipi.c
@@ -8,7 +8,6 @@ 
 #include <clk.h>
 #include <display.h>
 #include <dm.h>
-#include <fdtdec.h>
 #include <panel.h>
 #include <regmap.h>
 #include "rk_mipi.h"
diff --git a/drivers/video/rockchip/rk3399_mipi.c b/drivers/video/rockchip/rk3399_mipi.c
index a5b7ba69a8..03e1349509 100644
--- a/drivers/video/rockchip/rk3399_mipi.c
+++ b/drivers/video/rockchip/rk3399_mipi.c
@@ -8,7 +8,6 @@ 
 #include <clk.h>
 #include <display.h>
 #include <dm.h>
-#include <fdtdec.h>
 #include <panel.h>
 #include <regmap.h>
 #include "rk_mipi.h"
diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c
index 4330725a25..e617a974a5 100644
--- a/drivers/video/rockchip/rk_edp.c
+++ b/drivers/video/rockchip/rk_edp.c
@@ -995,7 +995,7 @@  static int rk_edp_ofdata_to_platdata(struct udevice *dev)
 {
 	struct rk_edp_priv *priv = dev_get_priv(dev);
 
-	priv->regs = (struct rk3288_edp *)devfdt_get_addr(dev);
+	priv->regs = dev_read_addr_ptr(dev);
 	priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
 
 	return 0;
diff --git a/drivers/video/rockchip/rk_lvds.c b/drivers/video/rockchip/rk_lvds.c
index cae8bada32..92e70f6317 100644
--- a/drivers/video/rockchip/rk_lvds.c
+++ b/drivers/video/rockchip/rk_lvds.c
@@ -171,13 +171,11 @@  int rk_lvds_read_timing(struct udevice *dev, struct display_timing *timing)
 static int rk_lvds_ofdata_to_platdata(struct udevice *dev)
 {
 	struct rk_lvds_priv *priv = dev_get_priv(dev);
-	const void *blob = gd->fdt_blob;
-	int node = dev_of_offset(dev);
 	int ret;
-	priv->regs = (void *)devfdt_get_addr(dev);
+	priv->regs = dev_read_addr_ptr(dev);
 	priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
 
-	ret = fdtdec_get_int(blob, node, "rockchip,output", -1);
+	ret = dev_read_s32_default(dev, "rockchip,output", -1);
 	if (ret != -1) {
 		priv->output = ret;
 		debug("LVDS output : %d\n", ret);
@@ -186,7 +184,7 @@  static int rk_lvds_ofdata_to_platdata(struct udevice *dev)
 		priv->output = LVDS_OUTPUT_RGB;
 	}
 
-	ret = fdtdec_get_int(blob, node, "rockchip,data-mapping", -1);
+	ret = dev_read_s32_default(dev, "rockchip,data-mapping", -1);
 	if (ret != -1) {
 		priv->format = ret;
 		debug("LVDS data-mapping : %d\n", ret);
@@ -195,7 +193,7 @@  static int rk_lvds_ofdata_to_platdata(struct udevice *dev)
 		priv->format = LVDS_FORMAT_JEIDA;
 	}
 
-	ret = fdtdec_get_int(blob, node, "rockchip,data-width", -1);
+	ret = dev_read_s32_default(dev, "rockchip,data-width", -1);
 	if (ret != -1) {
 		debug("LVDS data-width : %d\n", ret);
 		if (ret == 24) {
diff --git a/drivers/video/rockchip/rk_mipi.c b/drivers/video/rockchip/rk_mipi.c
index a77bdfd24d..f1c21bb8d7 100644
--- a/drivers/video/rockchip/rk_mipi.c
+++ b/drivers/video/rockchip/rk_mipi.c
@@ -8,7 +8,6 @@ 
 #include <clk.h>
 #include <display.h>
 #include <dm.h>
-#include <fdtdec.h>
 #include <panel.h>
 #include <regmap.h>
 #include "rk_mipi.h"
@@ -76,7 +75,7 @@  static void rk_mipi_dsi_write(uintptr_t regs, u32 reg, u32 val)
 int rk_mipi_dsi_enable(struct udevice *dev,
 		       const struct display_timing *timing)
 {
-	int node, timing_node;
+	ofnode node, timing_node;
 	int val;
 	struct rk_mipi_priv *priv = dev_get_priv(dev);
 	uintptr_t regs = priv->regs;
@@ -119,10 +118,10 @@  int rk_mipi_dsi_enable(struct udevice *dev,
 	rk_mipi_dsi_write(regs, VID_PKT_SIZE, 0x4b0);
 
 	/* Set dpi color coding depth 24 bit */
-	timing_node = fdt_subnode_offset(gd->fdt_blob, dev_of_offset(dev),
-									 "display-timings");
-	node = fdt_first_subnode(gd->fdt_blob, timing_node);
-	val = fdtdec_get_int(gd->fdt_blob, node, "bits-per-pixel", -1);
+	timing_node = ofnode_find_subnode(dev->node, "display-timings");
+	node = ofnode_first_subnode(timing_node);
+
+	val = ofnode_read_u32_default(node, "bits-per-pixel", -1);
 	switch (val) {
 	case 16:
 		rk_mipi_dsi_write(regs, DPI_COLOR_CODING, DPI_16BIT_CFG_1);