Merge tag 'efi-2020-07-rc4' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
[oweals/u-boot.git] / board / freescale / bsc9132qds / bsc9132qds.c
index 31bbf62ee592679e0a70c116a1aa5b3f5ad3acbe..6870674f7a4144a6fd29eada5274519a69018ca5 100644 (file)
@@ -1,26 +1,32 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright 2013 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
+#include <image.h>
+#include <init.h>
+#include <net.h>
 #include <asm/processor.h>
 #include <asm/mmu.h>
 #include <asm/cache.h>
 #include <asm/immap_85xx.h>
 #include <asm/io.h>
+#include <env.h>
 #include <miiphy.h>
-#include <libfdt.h>
+#include <linux/libfdt.h>
 #include <fdt_support.h>
 #include <fsl_mdio.h>
 #include <tsec.h>
 #include <mmc.h>
 #include <netdev.h>
-#include <asm/fsl_ifc.h>
+#include <fsl_ifc.h>
 #include <hwconfig.h>
 #include <i2c.h>
 #include <fsl_ddr_sdram.h>
+#include <jffs2/load_kernel.h>
+#include <mtd_node.h>
+#include <flash.h>
 
 #ifdef CONFIG_PCI
 #include <pci.h>
@@ -33,9 +39,9 @@ DECLARE_GLOBAL_DATA_PTR;
 
 int board_early_init_f(void)
 {
-       struct fsl_ifc *ifc = (void *)CONFIG_SYS_IFC_ADDR;
+       struct fsl_ifc ifc = {(void *)CONFIG_SYS_IFC_ADDR, (void *)NULL};
 
-       setbits_be32(&ifc->ifc_gcr, 1 << IFC_GCR_TBCTL_TRN_TIME_SHIFT);
+       setbits_be32(&ifc.gregs->ifc_gcr, 1 << IFC_GCR_TBCTL_TRN_TIME_SHIFT);
 
        return 0;
 }
@@ -133,24 +139,24 @@ void dsp_ddr_configure(void)
         *copy the ddr controller settings from PowerPC side DDR controller
         *to the DSP DDR controller as connected DDR memories are similar.
         */
-       ccsr_ddr_t __iomem *pa_ddr =
-                       (ccsr_ddr_t __iomem *)CONFIG_SYS_FSL_DDR_ADDR;
-       ccsr_ddr_t temp_ddr;
-       ccsr_ddr_t __iomem *dsp_ddr =
-                       (ccsr_ddr_t __iomem *)CONFIG_SYS_FSL_DSP_CCSR_DDR_ADDR;
+       struct ccsr_ddr __iomem *pa_ddr =
+                       (struct ccsr_ddr __iomem *)CONFIG_SYS_FSL_DDR_ADDR;
+       struct ccsr_ddr temp_ddr;
+       struct ccsr_ddr __iomem *dsp_ddr =
+                       (struct ccsr_ddr __iomem *)CONFIG_SYS_FSL_DSP_CCSR_DDR_ADDR;
 
-       memcpy(&temp_ddr, pa_ddr, sizeof(ccsr_ddr_t));
+       memcpy(&temp_ddr, pa_ddr, sizeof(struct ccsr_ddr));
        temp_ddr.cs0_bnds = CONFIG_SYS_DDR1_CS0_BNDS;
        temp_ddr.sdram_cfg &= ~SDRAM_CFG_MEM_EN;
-       memcpy(dsp_ddr, &temp_ddr, sizeof(ccsr_ddr_t));
+       memcpy(dsp_ddr, &temp_ddr, sizeof(struct ccsr_ddr));
        dsp_ddr->sdram_cfg |= SDRAM_CFG_MEM_EN;
 }
 
 int board_early_init_r(void)
 {
-#ifndef CONFIG_SYS_NO_FLASH
+#ifdef CONFIG_MTD_NOR_FLASH
        const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
-       const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+       int flash_esel = find_tlb_idx((void *)flashbase, 1);
 
        /*
         * Remap Boot flash region to caching-inhibited
@@ -161,8 +167,14 @@ int board_early_init_r(void)
        flush_dcache();
        invalidate_icache();
 
-       /* invalidate existing TLB entry for flash */
-       disable_tlb(flash_esel);
+       if (flash_esel == -1) {
+               /* very unlikely unless something is messed up */
+               puts("Error: Could not find TLB for FLASH BASE\n");
+               flash_esel = 2; /* give our best effort to continue */
+       } else {
+               /* invalidate existing TLB entry for flash */
+               disable_tlb(flash_esel);
+       }
 
        set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
                        MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
@@ -218,9 +230,9 @@ int checkboard(void)
        return 0;
 }
 
-#ifdef CONFIG_TSEC_ENET
 int board_eth_init(bd_t *bis)
 {
+#ifdef CONFIG_TSEC_ENET
        struct fsl_pq_mdio_info mdio_info;
        struct tsec_info_struct tsec_info[4];
        int num = 0;
@@ -241,6 +253,7 @@ int board_eth_init(bd_t *bis)
 
        fsl_pq_mdio_init(bis, &mdio_info);
        tsec_eth_init(bis, tsec_info, num);
+#endif
 
        #ifdef CONFIG_PCI
        pci_eth_init(bis);
@@ -248,7 +261,6 @@ int board_eth_init(bd_t *bis)
 
        return 0;
 }
-#endif
 
 #define USBMUX_SEL_MASK                0xc0
 #define USBMUX_SEL_UART2       0xc0
@@ -348,21 +360,30 @@ void fdt_del_node_compat(void *blob, const char *compatible)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+#ifdef CONFIG_FDT_FIXUP_PARTITIONS
+static const struct node_info nodes[] = {
+       { "cfi-flash",                  MTD_DEV_TYPE_NOR,  },
+       { "fsl,ifc-nand",               MTD_DEV_TYPE_NAND, },
+};
+#endif
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
 
        ft_cpu_setup(blob, bd);
 
-       base = getenv_bootm_low();
-       size = getenv_bootm_size();
+       base = env_get_bootm_low();
+       size = env_get_bootm_size();
 
        #if defined(CONFIG_PCI)
        FT_FSL_PCI_SETUP;
        #endif
 
        fdt_fixup_memory(blob, (u64)base, (u64)size);
+#ifdef CONFIG_FDT_FIXUP_PARTITIONS
+       fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
+#endif
 
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
        u32 porbmsr = in_be32(&gur->porbmsr);
@@ -376,7 +397,7 @@ void ft_board_setup(void *blob, bd_t *bd)
                        /* remove dts usb node */
                        fdt_del_node_compat(blob, "fsl-usb2-dr");
                } else {
-                       fdt_fixup_dr_usb(blob, bd);
+                       fsl_fdt_fixup_dr_usb(blob, bd);
                        fdt_del_node_and_alias(blob, "serial2");
                }
        }
@@ -405,5 +426,7 @@ void ft_board_setup(void *blob, bd_t *bd)
                        printf("\nRemove sim from hwconfig and reset\n");
                }
        }
+
+       return 0;
 }
 #endif