]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - drivers/video/tegra124/sor.c
dm: video: tegra124: Convert to livetree
[people/ms/u-boot.git] / drivers / video / tegra124 / sor.c
index 4324071cdc89cd3fa18c7404d060ae9422f52595..700ab25d4678ee3fee668f5424656478bca3dd42 100644 (file)
@@ -7,9 +7,9 @@
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
-#include <fdtdec.h>
 #include <malloc.h>
 #include <panel.h>
+#include <syscon.h>
 #include <video_bridge.h>
 #include <asm/io.h>
 #include <asm/arch/clock.h>
@@ -759,15 +759,12 @@ int tegra_dc_sor_attach(struct udevice *dc_dev, struct udevice *dev,
                        const struct display_timing *timing)
 {
        struct tegra_dc_sor_data *sor = dev_get_priv(dev);
-       const void *blob = gd->fdt_blob;
        struct dc_ctlr *disp_ctrl;
        u32 reg_val;
-       int node;
 
        /* Use the first display controller */
        debug("%s\n", __func__);
-       node = dev_of_offset(dc_dev);
-       disp_ctrl = (struct dc_ctlr *)fdtdec_get_addr(blob, node, "reg");
+       disp_ctrl = (struct dc_ctlr *)dev_read_addr(dc_dev);
 
        tegra_dc_sor_enable_dc(disp_ctrl);
        tegra_dc_sor_config_panel(sor, 0, link_cfg, timing);
@@ -974,16 +971,13 @@ int tegra_dc_sor_detach(struct udevice *dc_dev, struct udevice *dev)
 {
        struct tegra_dc_sor_data *sor = dev_get_priv(dev);
        int dc_reg_ctx[DC_REG_SAVE_SPACE];
-       const void *blob = gd->fdt_blob;
        struct dc_ctlr *disp_ctrl;
        unsigned long dc_int_mask;
-       int node;
        int ret;
 
        debug("%s\n", __func__);
        /* Use the first display controller */
-       node = dev_of_offset(dc_dev);
-       disp_ctrl = (struct dc_ctlr *)fdtdec_get_addr(blob, node, "reg");
+       disp_ctrl = (struct dc_ctlr *)dev_read_addr(dev);
 
        /* Sleep mode */
        tegra_sor_writel(sor, SUPER_STATE1, SUPER_STATE1_ASY_HEAD_OP_SLEEP |
@@ -1050,18 +1044,13 @@ static int tegra_sor_set_backlight(struct udevice *dev, int percent)
 static int tegra_sor_ofdata_to_platdata(struct udevice *dev)
 {
        struct tegra_dc_sor_data *priv = dev_get_priv(dev);
-       const void *blob = gd->fdt_blob;
-       int node;
        int ret;
 
-       priv->base = (void *)fdtdec_get_addr(blob, dev_of_offset(dev), "reg");
+       priv->base = (void *)dev_read_addr(dev);
 
-       node = fdtdec_next_compatible(blob, 0, COMPAT_NVIDIA_TEGRA124_PMC);
-       if (node < 0) {
-               debug("%s: Cannot find PMC\n", __func__);
-               return -ENOENT;
-       }
-       priv->pmc_base = (void *)fdtdec_get_addr(blob, node, "reg");
+       priv->pmc_base = (void *)syscon_get_first_range(TEGRA_SYSCON_PMC);
+       if (IS_ERR(priv->pmc_base))
+               return PTR_ERR(priv->pmc_base);
 
        ret = uclass_get_device_by_phandle(UCLASS_PANEL, dev, "nvidia,panel",
                                           &priv->panel);