Message ID | 20200326133633.28601-2-kever.yang@rock-chips.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/2] rockchip: video: Use ofnode_decode_display_timing() to parse timing | expand |
Hi Kever, On Thu, 26 Mar 2020 at 07:37, Kever Yang <kever.yang at 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 at rock-chips.com> > --- > > Changes in v2: > - use dev_read_s32() instead of dev_read_s32_default(); > > 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 | 28 +++++++++------------------- > drivers/video/rockchip/rk_mipi.c | 11 +++++------ > 5 files changed, 15 insertions(+), 28 deletions(-) > > diff --git a/drivers/video/rockchip/rk3288_mipi.c b/drivers/video/rockchip/rk3288_mipi.c > index f4444b9c34..71d3faf169 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 74ebe770a9..cfaa37797e 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 8703df0ec0..842034c77c 100644 > --- a/drivers/video/rockchip/rk_edp.c > +++ b/drivers/video/rockchip/rk_edp.c > @@ -996,7 +996,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..a11d793135 100644 > --- a/drivers/video/rockchip/rk_lvds.c > +++ b/drivers/video/rockchip/rk_lvds.c > @@ -171,32 +171,22 @@ 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); > - if (ret != -1) { > - priv->output = ret; > - debug("LVDS output : %d\n", ret); > - } else { > - /* default set it as output rgb */ > + if (!dev_read_s32(dev, "rockchip,output", &priv->output)) > + debug("LVDS output : %d\n", priv->output); > + else /* default set it as output rgb */ > priv->output = LVDS_OUTPUT_RGB; Can you use dev_read_u32_default() ? also below. > - } > > - ret = fdtdec_get_int(blob, node, "rockchip,data-mapping", -1); > - if (ret != -1) { > - priv->format = ret; > - debug("LVDS data-mapping : %d\n", ret); > - } else { > - /* default set it as format jeida */ > + if (!dev_read_s32(dev, "rockchip,data-mapping", &priv->format)) > + debug("LVDS data-mapping : %d\n", priv->format); > + else /* default set it as format jeida */ > priv->format = LVDS_FORMAT_JEIDA; > - } > > - ret = fdtdec_get_int(blob, node, "rockchip,data-width", -1); > - if (ret != -1) { > + if (!dev_read_s32(dev, "rockchip,data-width", &ret)) { > debug("LVDS data-width : %d\n", ret); > if (ret == 24) { > priv->format |= LVDS_24BIT; > 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
Hi Simon, On 2020/3/29 ??4:05, Simon Glass wrote: > Hi Kever, > > On Thu, 26 Mar 2020 at 07:37, Kever Yang <kever.yang at 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 at rock-chips.com> >> --- >> >> Changes in v2: >> - use dev_read_s32() instead of dev_read_s32_default(); [...] >> >> 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 | 28 +++++++++------------------- >> drivers/video/rockchip/rk_mipi.c | 11 +++++------ >> 5 files changed, 15 insertions(+), 28 deletions(-) >> >> diff --git a/drivers/video/rockchip/rk3288_mipi.c b/drivers/video/rockchip/rk3288_mipi.c >> index f4444b9c34..71d3faf169 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 74ebe770a9..cfaa37797e 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 8703df0ec0..842034c77c 100644 >> --- a/drivers/video/rockchip/rk_edp.c >> +++ b/drivers/video/rockchip/rk_edp.c >> @@ -996,7 +996,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..a11d793135 100644 >> --- a/drivers/video/rockchip/rk_lvds.c >> +++ b/drivers/video/rockchip/rk_lvds.c >> @@ -171,32 +171,22 @@ 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); >> - if (ret != -1) { >> - priv->output = ret; >> - debug("LVDS output : %d\n", ret); >> - } else { >> - /* default set it as output rgb */ >> + if (!dev_read_s32(dev, "rockchip,output", &priv->output)) >> + debug("LVDS output : %d\n", priv->output); >> + else /* default set it as output rgb */ >> priv->output = LVDS_OUTPUT_RGB; > Can you use dev_read_u32_default() ? Could you share the point about which API should be used? It's both OK to me and I think it's up to user to decide which is more convenient for them. The main update of this version for this patch is update to use dev_read_s32() instead of dev_read_u32_default() as your request.? Maybe you can take V1 patch[0]? Thanks, - Kever [0] http://patchwork.ozlabs.org/patch/1240459/ > also below. > >> - } >> >> - ret = fdtdec_get_int(blob, node, "rockchip,data-mapping", -1); >> - if (ret != -1) { >> - priv->format = ret; >> - debug("LVDS data-mapping : %d\n", ret); >> - } else { >> - /* default set it as format jeida */ >> + if (!dev_read_s32(dev, "rockchip,data-mapping", &priv->format)) >> + debug("LVDS data-mapping : %d\n", priv->format); >> + else /* default set it as format jeida */ >> priv->format = LVDS_FORMAT_JEIDA; >> - } >> >> - ret = fdtdec_get_int(blob, node, "rockchip,data-width", -1); >> - if (ret != -1) { >> + if (!dev_read_s32(dev, "rockchip,data-width", &ret)) { >> debug("LVDS data-width : %d\n", ret); >> if (ret == 24) { >> priv->format |= LVDS_24BIT; >> 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 > >
Hi Kever, On Sun, 29 Mar 2020 at 07:27, Kever Yang <kever.yang at rock-chips.com> wrote: > > Hi Simon, > > > On 2020/3/29 ??4:05, Simon Glass wrote: > > Hi Kever, > > > > On Thu, 26 Mar 2020 at 07:37, Kever Yang <kever.yang at 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 at rock-chips.com> > >> --- > >> > >> Changes in v2: > >> - use dev_read_s32() instead of dev_read_s32_default(); > [...] > >> > >> 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 | 28 +++++++++------------------- > >> drivers/video/rockchip/rk_mipi.c | 11 +++++------ > >> 5 files changed, 15 insertions(+), 28 deletions(-) > >> > >> diff --git a/drivers/video/rockchip/rk3288_mipi.c b/drivers/video/rockchip/rk3288_mipi.c > >> index f4444b9c34..71d3faf169 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 74ebe770a9..cfaa37797e 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 8703df0ec0..842034c77c 100644 > >> --- a/drivers/video/rockchip/rk_edp.c > >> +++ b/drivers/video/rockchip/rk_edp.c > >> @@ -996,7 +996,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..a11d793135 100644 > >> --- a/drivers/video/rockchip/rk_lvds.c > >> +++ b/drivers/video/rockchip/rk_lvds.c > >> @@ -171,32 +171,22 @@ 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); > >> - if (ret != -1) { > >> - priv->output = ret; > >> - debug("LVDS output : %d\n", ret); > >> - } else { > >> - /* default set it as output rgb */ > >> + if (!dev_read_s32(dev, "rockchip,output", &priv->output)) > >> + debug("LVDS output : %d\n", priv->output); > >> + else /* default set it as output rgb */ > >> priv->output = LVDS_OUTPUT_RGB; > > Can you use dev_read_u32_default() ? > > > Could you share the point about which API should be used? It's both OK > to me and I think > > it's up to user to decide which is more convenient for them. > > The main update of this version for this patch is update to use > dev_read_s32() instead of > > dev_read_u32_default() as your request. Maybe you can take V1 patch[0]? Yes that was better, sorry. Regards, Simon > > > Thanks, > > - Kever > > [0] http://patchwork.ozlabs.org/patch/1240459/ > > > also below. > > > >> - } > >> > >> - ret = fdtdec_get_int(blob, node, "rockchip,data-mapping", -1); > >> - if (ret != -1) { > >> - priv->format = ret; > >> - debug("LVDS data-mapping : %d\n", ret); > >> - } else { > >> - /* default set it as format jeida */ > >> + if (!dev_read_s32(dev, "rockchip,data-mapping", &priv->format)) > >> + debug("LVDS data-mapping : %d\n", priv->format); > >> + else /* default set it as format jeida */ > >> priv->format = LVDS_FORMAT_JEIDA; > >> - } > >> > >> - ret = fdtdec_get_int(blob, node, "rockchip,data-width", -1); > >> - if (ret != -1) { > >> + if (!dev_read_s32(dev, "rockchip,data-width", &ret)) { > >> debug("LVDS data-width : %d\n", ret); > >> if (ret == 24) { > >> priv->format |= LVDS_24BIT; > >> 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 > > > > > >
diff --git a/drivers/video/rockchip/rk3288_mipi.c b/drivers/video/rockchip/rk3288_mipi.c index f4444b9c34..71d3faf169 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 74ebe770a9..cfaa37797e 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 8703df0ec0..842034c77c 100644 --- a/drivers/video/rockchip/rk_edp.c +++ b/drivers/video/rockchip/rk_edp.c @@ -996,7 +996,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..a11d793135 100644 --- a/drivers/video/rockchip/rk_lvds.c +++ b/drivers/video/rockchip/rk_lvds.c @@ -171,32 +171,22 @@ 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); - if (ret != -1) { - priv->output = ret; - debug("LVDS output : %d\n", ret); - } else { - /* default set it as output rgb */ + if (!dev_read_s32(dev, "rockchip,output", &priv->output)) + debug("LVDS output : %d\n", priv->output); + else /* default set it as output rgb */ priv->output = LVDS_OUTPUT_RGB; - } - ret = fdtdec_get_int(blob, node, "rockchip,data-mapping", -1); - if (ret != -1) { - priv->format = ret; - debug("LVDS data-mapping : %d\n", ret); - } else { - /* default set it as format jeida */ + if (!dev_read_s32(dev, "rockchip,data-mapping", &priv->format)) + debug("LVDS data-mapping : %d\n", priv->format); + else /* default set it as format jeida */ priv->format = LVDS_FORMAT_JEIDA; - } - ret = fdtdec_get_int(blob, node, "rockchip,data-width", -1); - if (ret != -1) { + if (!dev_read_s32(dev, "rockchip,data-width", &ret)) { debug("LVDS data-width : %d\n", ret); if (ret == 24) { priv->format |= LVDS_24BIT; 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);
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 at rock-chips.com> --- Changes in v2: - use dev_read_s32() instead of dev_read_s32_default(); 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 | 28 +++++++++------------------- drivers/video/rockchip/rk_mipi.c | 11 +++++------ 5 files changed, 15 insertions(+), 28 deletions(-)