[PATCH 2/2] rockchip: video: Convert to use APIs which support live DT
Simon Glass
sjg at chromium.org
Sun Mar 29 16:26:18 CEST 2020
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
More information about the U-Boot
mailing list