Message ID | 20200219014538.18366-2-kever.yang@rock-chips.com |
---|---|
State | Accepted |
Commit | 653ac184ee8c785564d70ee9ccceffbd9a48b737 |
Headers | show |
Series | [1/2] rockchip: video: Use ofnode_decode_display_timing() to parse timing | expand |
Hi Kever, On Tue, 18 Feb 2020 at 18:45, 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> > --- > > 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
On Wed, 19 Feb 2020 at 20:04, Simon Glass <sjg at chromium.org> wrote: > > Hi Kever, > > On Tue, 18 Feb 2020 at 18:45, 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> > > --- > > > > 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 at 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 --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);
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> --- 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(-)