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