]> git.sur5r.net Git - u-boot/blobdiff - board/freescale/ls1021aqds/ls1021aqds.c
libfdt: migrate include/libfdt_env.h to a wrapper
[u-boot] / board / freescale / ls1021aqds / ls1021aqds.c
index d889ad50fd04d83d88197234c9fc70f6d0ac35bd..8b3f4ad78d8e944f008c9ab3d30ed82437785830 100644 (file)
@@ -10,7 +10,7 @@
 #include <asm/arch/immap_ls102xa.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/fsl_serdes.h>
-#include <asm/arch/ls102xa_stream_id.h>
+#include <asm/arch/ls102xa_soc.h>
 #include <asm/arch/ls102xa_devdis.h>
 #include <asm/arch/ls102xa_sata.h>
 #include <hwconfig.h>
 #include <fsl_sec.h>
 #include <spl.h>
 #include <fsl_devdis.h>
-
+#include <fsl_validate.h>
+#include <fsl_ddr.h>
 #include "../common/sleep.h"
 #include "../common/qixis.h"
 #include "ls1021aqds_qixis.h"
 #ifdef CONFIG_U_QE
-#include "../../../drivers/qe/qe.h"
+#include <fsl_qe.h>
 #endif
 
 #define PIN_MUX_SEL_CAN                0x03
@@ -59,7 +60,7 @@ enum {
 
 int checkboard(void)
 {
-#ifndef CONFIG_QSPI_BOOT
+#if !defined(CONFIG_QSPI_BOOT) && !defined(CONFIG_SD_BOOT_QSPI)
        char buf[64];
 #endif
 #if !defined(CONFIG_SD_BOOT) && !defined(CONFIG_QSPI_BOOT)
@@ -88,7 +89,7 @@ int checkboard(void)
                printf("invalid setting of SW%u\n", QIXIS_LBMAP_SWITCH);
 #endif
 
-#ifndef CONFIG_QSPI_BOOT
+#if !defined(CONFIG_QSPI_BOOT) && !defined(CONFIG_SD_BOOT_QSPI)
        printf("Sys ID:0x%02x, Sys Ver: 0x%02x\n",
               QIXIS_READ(id), QIXIS_READ(arch));
 
@@ -140,17 +141,6 @@ unsigned long get_board_ddr_clk(void)
        return 66666666;
 }
 
-unsigned int get_soc_major_rev(void)
-{
-       struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
-       unsigned int svr, major;
-
-       svr = in_be32(&gur->svr);
-       major = SVR_MAJ(svr);
-
-       return major;
-}
-
 int select_i2c_ch_pca9547(u8 ch)
 {
        int ret;
@@ -172,9 +162,7 @@ int dram_init(void)
         * before accessing DDR SPD.
         */
        select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
-       gd->ram_size = initdram(0);
-
-       return 0;
+       return fsl_initdram();
 }
 
 #ifdef CONFIG_FSL_ESDHC
@@ -193,8 +181,6 @@ int board_mmc_init(bd_t *bis)
 int board_early_init_f(void)
 {
        struct ccsr_scfg *scfg = (struct ccsr_scfg *)CONFIG_SYS_FSL_SCFG_ADDR;
-       struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
-       unsigned int major;
 
 #ifdef CONFIG_TSEC_ENET
        /* clear BD & FR bits for BE BD's and frame data */
@@ -205,40 +191,7 @@ int board_early_init_f(void)
        init_early_memctl_regs();
 #endif
 
-#ifdef CONFIG_FSL_QSPI
-       out_be32(&scfg->qspi_cfg, SCFG_QSPI_CLKSEL);
-#endif
-
-#ifdef CONFIG_FSL_DCU_FB
-       out_be32(&scfg->pixclkcr, SCFG_PIXCLKCR_PXCKEN);
-#endif
-
-       /* Configure Little endian for SAI, ASRC and SPDIF */
-       out_be32(&scfg->endiancr, SCFG_ENDIANCR_LE);
-
-       /*
-        * Enable snoop requests and DVM message requests for
-        * Slave insterface S4 (A7 core cluster)
-        */
-       out_le32(&cci->slave[4].snoop_ctrl,
-                CCI400_DVM_MESSAGE_REQ_EN | CCI400_SNOOP_REQ_EN);
-
-       major = get_soc_major_rev();
-       if (major == SOC_MAJOR_VER_1_0) {
-               /*
-                * Set CCI-400 Slave interface S1, S2 Shareable Override
-                * Register All transactions are treated as non-shareable
-                */
-               out_le32(&cci->slave[1].sha_ord, CCI400_SHAORD_NON_SHAREABLE);
-               out_le32(&cci->slave[2].sha_ord, CCI400_SHAORD_NON_SHAREABLE);
-
-               /* Workaround for the issue that DDR could not respond to
-                * barrier transaction which is generated by executing DSB/ISB
-                * instruction. Set CCI-400 control override register to
-                * terminate the barrier transaction. After DDR is initialized,
-                * allow barrier transaction to DDR again */
-               out_le32(&cci->ctrl_ord, CCI400_CTRLORD_TERM_BARRIER);
-       }
+       arch_soc_init();
 
 #if defined(CONFIG_DEEP_SLEEP)
        if (is_warm_boot())
@@ -251,7 +204,8 @@ int board_early_init_f(void)
 #ifdef CONFIG_SPL_BUILD
 void board_init_f(ulong dummy)
 {
-       struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
+       struct ccsr_cci400 *cci = (struct ccsr_cci400 *)(CONFIG_SYS_IMMR +
+                                       CONFIG_SYS_CCI400_OFFSET);
        unsigned int major;
 
 #ifdef CONFIG_NAND_BOOT
@@ -414,6 +368,9 @@ int board_late_init(void)
 #ifdef CONFIG_SCSI_AHCI_PLAT
        ls1021a_sata_init();
 #endif
+#ifdef CONFIG_CHAIN_OF_TRUST
+       fsl_setenv_chain_of_trust();
+#endif
 
        return 0;
 }
@@ -467,47 +424,18 @@ int misc_init_r(void)
        return 0;
 }
 
-struct liodn_id_table sec_liodn_tbl[] = {
-       SET_SEC_JR_LIODN_ENTRY(0, 0x10, 0x10),
-       SET_SEC_JR_LIODN_ENTRY(1, 0x10, 0x10),
-       SET_SEC_JR_LIODN_ENTRY(2, 0x10, 0x10),
-       SET_SEC_JR_LIODN_ENTRY(3, 0x10, 0x10),
-       SET_SEC_RTIC_LIODN_ENTRY(a, 0x10),
-       SET_SEC_RTIC_LIODN_ENTRY(b, 0x10),
-       SET_SEC_RTIC_LIODN_ENTRY(c, 0x10),
-       SET_SEC_RTIC_LIODN_ENTRY(d, 0x10),
-       SET_SEC_DECO_LIODN_ENTRY(0, 0x10, 0x10),
-       SET_SEC_DECO_LIODN_ENTRY(1, 0x10, 0x10),
-       SET_SEC_DECO_LIODN_ENTRY(2, 0x10, 0x10),
-       SET_SEC_DECO_LIODN_ENTRY(3, 0x10, 0x10),
-       SET_SEC_DECO_LIODN_ENTRY(4, 0x10, 0x10),
-       SET_SEC_DECO_LIODN_ENTRY(5, 0x10, 0x10),
-       SET_SEC_DECO_LIODN_ENTRY(6, 0x10, 0x10),
-       SET_SEC_DECO_LIODN_ENTRY(7, 0x10, 0x10),
-};
-
-struct smmu_stream_id dev_stream_id[] = {
-       { 0x100, 0x01, "ETSEC MAC1" },
-       { 0x104, 0x02, "ETSEC MAC2" },
-       { 0x108, 0x03, "ETSEC MAC3" },
-       { 0x10c, 0x04, "PEX1" },
-       { 0x110, 0x05, "PEX2" },
-       { 0x114, 0x06, "qDMA" },
-       { 0x118, 0x07, "SATA" },
-       { 0x11c, 0x08, "USB3" },
-       { 0x120, 0x09, "QE" },
-       { 0x124, 0x0a, "eSDHC" },
-       { 0x128, 0x0b, "eMA" },
-       { 0x14c, 0x0c, "2D-ACE" },
-       { 0x150, 0x0d, "USB2" },
-       { 0x18c, 0x0e, "DEBUG" },
-};
-
 int board_init(void)
 {
-       struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
+       struct ccsr_cci400 *cci = (struct ccsr_cci400 *)(CONFIG_SYS_IMMR +
+                                       CONFIG_SYS_CCI400_OFFSET);
        unsigned int major;
 
+#ifdef CONFIG_SYS_FSL_ERRATUM_A010315
+       erratum_a010315();
+#endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A009942
+       erratum_a009942_check_cpo();
+#endif
        major = get_soc_major_rev();
        if (major == SOC_MAJOR_VER_1_0) {
                /* Set CCI-400 control override register to
@@ -522,14 +450,7 @@ int board_init(void)
        config_serdes_mux();
 #endif
 
-       ls1021x_config_caam_stream_id(sec_liodn_tbl,
-                                     ARRAY_SIZE(sec_liodn_tbl));
-       ls102xa_config_smmu_stream_id(dev_stream_id,
-                                     ARRAY_SIZE(dev_stream_id));
-
-#ifdef CONFIG_LAYERSCAPE_NS_ACCESS
-       enable_layerscape_ns_access();
-#endif
+       ls102xa_smmu_stream_id_init();
 
 #ifdef CONFIG_U_QE
        u_qe_init();
@@ -541,7 +462,8 @@ int board_init(void)
 #if defined(CONFIG_DEEP_SLEEP)
 void board_sleep_prepare(void)
 {
-       struct ccsr_cci400 __iomem *cci = (void *)CONFIG_SYS_CCI400_ADDR;
+       struct ccsr_cci400 __iomem *cci = (void *)(CONFIG_SYS_IMMR +
+                                               CONFIG_SYS_CCI400_OFFSET);
        unsigned int major;
 
        major = get_soc_major_rev();