Instead of reading SDRAM handoff data from 'qts' files, read it from
devicetree.

Signed-off-by: Simon Goldschmidt <simon.k.r.goldschm...@gmail.com>
---

Changes in v2: None

 drivers/ddr/altera/sdram_gen5.c | 61 ++++++++++++++++++++++++++++-----
 1 file changed, 53 insertions(+), 8 deletions(-)

diff --git a/drivers/ddr/altera/sdram_gen5.c b/drivers/ddr/altera/sdram_gen5.c
index 91d9f6c0fc..09ee45026c 100644
--- a/drivers/ddr/altera/sdram_gen5.c
+++ b/drivers/ddr/altera/sdram_gen5.c
@@ -572,20 +572,65 @@ static unsigned long sdram_calculate_size(
 static int altera_gen5_sdram_ofdata_to_platdata(struct udevice *dev)
 {
        struct altera_gen5_sdram_platdata *plat = dev->platdata;
+       int sz;
 
        plat->sdr = (struct socfpga_sdr *)devfdt_get_addr_index(dev, 0);
        if (!plat->sdr)
                return -ENODEV;
 
        /* Get handoff config */
-       plat->cfg = socfpga_get_sdram_config();
-       plat->rwcfg = socfpga_get_sdram_rwmgr_config();
-       plat->iocfg = socfpga_get_sdram_io_config();
-       plat->misccf = socfpga_get_sdram_misc_config();
-
-       socfpga_get_seq_inst_init(&plat->inst_rom_init,
-                                 &plat->inst_rom_init_len);
-       socfpga_get_seq_ac_init(&plat->ac_rom_init, &plat->ac_rom_init_len);
+       plat->cfg = (const struct socfpga_sdram_config *)
+               dev_read_u8_array_ptr(dev, "altr,sdr-cfg", sizeof(*plat->cfg));
+       if (!plat->cfg) {
+               debug("Failed to parse altr,sdr-cfg\n");
+               return -EINVAL;
+       }
+       plat->rwcfg = (const struct socfpga_sdram_rw_mgr_config *)
+               dev_read_u8_array_ptr(dev, "altr,sdr-rw-mgr-cfg",
+                                     sizeof(*plat->rwcfg));
+       if (!plat->rwcfg) {
+               debug("Failed to parse altr,sdr-rw-mgr-cfg\n");
+               return -EINVAL;
+       }
+       plat->iocfg = (const struct socfpga_sdram_io_config *)
+               dev_read_u8_array_ptr(dev, "altr,sdr-io-cfg",
+                                     sizeof(*plat->iocfg));
+       if (!plat->iocfg) {
+               debug("Failed to parse altr,sdr-io-cfg\n");
+               return -EINVAL;
+       }
+       plat->misccf = (const struct socfpga_sdram_misc_config *)
+               dev_read_u8_array_ptr(dev, "altr,sdr-misc-cfg",
+                                     sizeof(*plat->misccf));
+       if (!plat->misccf) {
+               debug("Failed to parse altr,sdr-misc-cfg\n");
+               return -EINVAL;
+       }
+
+       sz = dev_read_size(dev, "altr,sdr-inst-rom-init");
+       if (sz <= 0) {
+               debug("Failed to read altr,sdr-inst-rom-init size\n");
+               return sz;
+       }
+       plat->inst_rom_init_len = sz / sizeof(u32);
+       plat->inst_rom_init = (const u32*)dev_read_u8_array_ptr(dev,
+               "altr,sdr-inst-rom-init", sz);
+       if (!plat->inst_rom_init) {
+               debug("Failed to parse altr,sdr-inst-rom-init\n");
+               return -EINVAL;
+       }
+       sz = dev_read_size(dev, "altr,sdr-ac-rom-init");
+       if (sz <= 0) {
+               debug("Failed to read altr,sdr-ac-rom-init size\n");
+               return sz;
+       }
+       plat->ac_rom_init_len = sz / sizeof(u32);
+       plat->ac_rom_init = (const u32*)dev_read_u8_array_ptr(dev,
+               "altr,sdr-ac-rom-init", sz);
+       if (!plat->ac_rom_init) {
+               debug("Failed to parse altr,sdr-ac-rom-init\n");
+               return -EINVAL;
+       }
 
        return 0;
 }
-- 
2.20.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to