diff mbox series

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

Message ID 20200326133633.28601-2-kever.yang@rock-chips.com
State Rejected
Delegated to: Kever Yang
Headers show
Series [v2,1/2] rockchip: video: Use ofnode_decode_display_timing() to parse timing | expand

Commit Message

Kever Yang March 26, 2020, 1:36 p.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>
---

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(-)

Comments

Simon Glass March 28, 2020, 8:05 p.m. UTC | #1
Hi Kever,

On Thu, 26 Mar 2020 at 07:37, 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>
> ---
>
> 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
Kever Yang March 29, 2020, 1:27 p.m. UTC | #2
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@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>
>> ---
>>
>> 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
>
>
Simon Glass March 29, 2020, 2:26 p.m. UTC | #3
Hi Kever,

On Sun, 29 Mar 2020 at 07:27, Kever Yang <kever.yang@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@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>
> >> ---
> >>
> >> 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 mbox series

Patch

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);