arm: Disable ATAGs support
[platform/kernel/u-boot.git] / board / ti / panda / panda.c
index cda09a9..d806299 100644 (file)
@@ -1,25 +1,26 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * (C) Copyright 2010
  * Texas Instruments Incorporated, <www.ti.com>
  * Steve Sakoman  <steve@sakoman.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 #include <common.h>
+#include <init.h>
+#include <log.h>
+#include <net.h>
+#include <serial.h>
+#include <asm/global_data.h>
+#include <asm/mach-types.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/mmc_host_def.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/gpio.h>
 #include <asm/gpio.h>
+#include <env.h>
+#include <twl6030.h>
 
 #include "panda_mux_data.h"
 
-#ifdef CONFIG_USB_EHCI
-#include <usb.h>
-#include <asm/arch/ehci.h>
-#include <asm/ehci-omap.h>
-#endif
-
 #define PANDA_ULPI_PHY_TYPE_GPIO       182
 #define PANDA_BOARD_ID_1_GPIO          101
 #define PANDA_ES_BOARD_ID_1_GPIO        48
@@ -50,7 +51,18 @@ int board_init(void)
        return 0;
 }
 
-int board_eth_init(bd_t *bis)
+#if defined(CONFIG_SPL_OS_BOOT)
+int spl_start_uboot(void)
+{
+       /* break into full u-boot on 'c' */
+       if (serial_tstc() && serial_getc() == 'c')
+               return 1;
+
+       return 0;
+}
+#endif /* CONFIG_SPL_OS_BOOT */
+
+int board_eth_init(struct bd_info *bis)
 {
        return 0;
 }
@@ -101,7 +113,7 @@ int get_board_revision(void)
                board_id4 = gpio_get_value(PANDA_ES_BOARD_ID_4_GPIO);
 
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
-               setenv("board_name", strcat(CONFIG_SYS_BOARD, "-es"));
+               env_set("board_name", "panda-es");
 #endif
                board_id = ((board_id4 << 4) | (board_id3 << 3) |
                        (board_id2 << 2) | (board_id1 << 1) | (board_id0));
@@ -115,7 +127,7 @@ int get_board_revision(void)
 
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
                if ((board_id >= 0x3) && (processor_rev == OMAP4430_ES2_3))
-                       setenv("board_name", strcat(CONFIG_SYS_BOARD, "-a4"));
+                       env_set("board_name", "panda-a4");
 #endif
        }
 
@@ -180,6 +192,22 @@ void emif_get_reg_dump(u32 emif_nr, const struct emif_regs **regs)
        else
                *regs = &emif_regs_elpida_400_mhz_1cs;
 }
+
+void emif_get_dmm_regs(const struct dmm_lisa_map_regs
+                                               **dmm_lisa_regs)
+{
+       u32 omap_rev = omap_revision();
+
+       if (omap_rev == OMAP4430_ES1_0)
+               *dmm_lisa_regs = &lisa_map_2G_x_1_x_2;
+       else if (omap_rev == OMAP4430_ES2_3)
+               *dmm_lisa_regs = &lisa_map_2G_x_2_x_2;
+       else if (omap_rev < OMAP4460_ES1_0)
+               *dmm_lisa_regs = &lisa_map_2G_x_2_x_2;
+       else
+               *dmm_lisa_regs = &ma_lisa_map_2G_x_2_x_2;
+}
+
 #endif
 
 /**
@@ -193,7 +221,6 @@ int misc_init_r(void)
 {
        int phy_type;
        u32 auxclk, altclksrc;
-       uint8_t device_mac[6];
 
        /* EHCI is not supported on ES1.0 */
        if (omap_revision() == OMAP4430_ES1_0)
@@ -247,25 +274,12 @@ int misc_init_r(void)
 
        writel(altclksrc, &scrm->altclksrc);
 
-       if (!getenv("usbethaddr")) {
-               /*
-                * create a fake MAC address from the processor ID code.
-                * first byte is 0x02 to signify locally administered.
-                */
-               device_mac[0] = 0x02;
-               device_mac[1] = readl(STD_FUSE_DIE_ID_3) & 0xff;
-               device_mac[2] = readl(STD_FUSE_DIE_ID_2) & 0xff;
-               device_mac[3] = readl(STD_FUSE_DIE_ID_1) & 0xff;
-               device_mac[4] = readl(STD_FUSE_DIE_ID_0) & 0xff;
-               device_mac[5] = (readl(STD_FUSE_DIE_ID_0) >> 8) & 0xff;
-
-               eth_setenv_enetaddr("usbethaddr", device_mac);
-       }
+       omap_die_id_usbethaddr();
 
        return 0;
 }
 
-void set_muxconf_regs_essential(void)
+void set_muxconf_regs(void)
 {
        do_set_mux((*ctrl)->control_padconf_core_base,
                   core_padconf_array_essential,
@@ -284,75 +298,21 @@ void set_muxconf_regs_essential(void)
                           sizeof(struct pad_conf_entry));
 }
 
-void set_muxconf_regs_non_essential(void)
-{
-       do_set_mux((*ctrl)->control_padconf_core_base,
-                  core_padconf_array_non_essential,
-                  sizeof(core_padconf_array_non_essential) /
-                  sizeof(struct pad_conf_entry));
-
-       if (omap_revision() < OMAP4460_ES1_0)
-               do_set_mux((*ctrl)->control_padconf_core_base,
-                          core_padconf_array_non_essential_4430,
-                          sizeof(core_padconf_array_non_essential_4430) /
-                          sizeof(struct pad_conf_entry));
-       else
-               do_set_mux((*ctrl)->control_padconf_core_base,
-                          core_padconf_array_non_essential_4460,
-                          sizeof(core_padconf_array_non_essential_4460) /
-                          sizeof(struct pad_conf_entry));
-
-       do_set_mux((*ctrl)->control_padconf_wkup_base,
-                  wkup_padconf_array_non_essential,
-                  sizeof(wkup_padconf_array_non_essential) /
-                  sizeof(struct pad_conf_entry));
-
-       if (omap_revision() < OMAP4460_ES1_0)
-               do_set_mux((*ctrl)->control_padconf_wkup_base,
-                          wkup_padconf_array_non_essential_4430,
-                          sizeof(wkup_padconf_array_non_essential_4430) /
-                          sizeof(struct pad_conf_entry));
-}
-
-#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_GENERIC_MMC)
-int board_mmc_init(bd_t *bis)
+#if defined(CONFIG_MMC)
+int board_mmc_init(struct bd_info *bis)
 {
        return omap_mmc_init(0, 0, 0, -1, -1);
 }
-#endif
-
-#ifdef CONFIG_USB_EHCI
-
-static struct omap_usbhs_board_data usbhs_bdata = {
-       .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
-       .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED,
-       .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
-};
-
-int ehci_hcd_init(int index, enum usb_init_type init,
-               struct ehci_hccr **hccr, struct ehci_hcor **hcor)
-{
-       int ret;
-       unsigned int utmi_clk;
-
-       /* Now we can enable our port clocks */
-       utmi_clk = readl((void *)CM_L3INIT_HSUSBHOST_CLKCTRL);
-       utmi_clk |= HSUSBHOST_CLKCTRL_CLKSEL_UTMI_P1_MASK;
-       sr32((void *)CM_L3INIT_HSUSBHOST_CLKCTRL, 0, 32, utmi_clk);
-
-       ret = omap_ehci_hcd_init(index, &usbhs_bdata, hccr, hcor);
-       if (ret < 0)
-               return ret;
-
-       return 0;
-}
 
-int ehci_hcd_stop(int index)
+#if !defined(CONFIG_SPL_BUILD)
+void board_mmc_power_init(void)
 {
-       return omap_ehci_hcd_stop();
+       twl6030_power_mmc_init(0);
 }
 #endif
+#endif
 
+#ifdef CONFIG_REVISION_TAG
 /*
  * get_board_rev() - get board revision
  */
@@ -360,3 +320,4 @@ u32 get_board_rev(void)
 {
        return 0x20;
 }
+#endif