ARM: am335x: Add phyCORE AM335x R2 support
[oweals/u-boot.git] / board / sunxi / board.c
index 26284db1112bf1b176d350b53acd77375067b1d5..98bc3cd0c13cd5c03a4e404a4079957a526ec83b 100644 (file)
@@ -28,7 +28,7 @@
 #endif
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <crc.h>
+#include <u-boot/crc.h>
 #include <environment.h>
 #include <linux/libfdt.h>
 #include <nand.h>
@@ -98,6 +98,10 @@ void i2c_init_board(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPH(2), SUN8I_GPH_TWI0);
        sunxi_gpio_set_cfgpin(SUNXI_GPH(3), SUN8I_GPH_TWI0);
        clock_twi_onoff(0, 1);
+#elif defined(CONFIG_MACH_SUN50I)
+       sunxi_gpio_set_cfgpin(SUNXI_GPH(0), SUN50I_GPH_TWI0);
+       sunxi_gpio_set_cfgpin(SUNXI_GPH(1), SUN50I_GPH_TWI0);
+       clock_twi_onoff(0, 1);
 #endif
 #endif
 
@@ -120,6 +124,10 @@ void i2c_init_board(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPH(4), SUN8I_GPH_TWI1);
        sunxi_gpio_set_cfgpin(SUNXI_GPH(5), SUN8I_GPH_TWI1);
        clock_twi_onoff(1, 1);
+#elif defined(CONFIG_MACH_SUN50I)
+       sunxi_gpio_set_cfgpin(SUNXI_GPH(2), SUN50I_GPH_TWI1);
+       sunxi_gpio_set_cfgpin(SUNXI_GPH(3), SUN50I_GPH_TWI1);
+       clock_twi_onoff(1, 1);
 #endif
 #endif
 
@@ -142,6 +150,10 @@ void i2c_init_board(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPE(12), SUN8I_GPE_TWI2);
        sunxi_gpio_set_cfgpin(SUNXI_GPE(13), SUN8I_GPE_TWI2);
        clock_twi_onoff(2, 1);
+#elif defined(CONFIG_MACH_SUN50I)
+       sunxi_gpio_set_cfgpin(SUNXI_GPE(14), SUN50I_GPE_TWI2);
+       sunxi_gpio_set_cfgpin(SUNXI_GPE(15), SUN50I_GPE_TWI2);
+       clock_twi_onoff(2, 1);
 #endif
 #endif
 
@@ -196,6 +208,10 @@ enum env_location env_get_location(enum env_operation op, int prio)
 }
 #endif
 
+#ifdef CONFIG_DM_MMC
+static void mmc_pinmux_setup(int sdc);
+#endif
+
 /* add board specific code here */
 int board_init(void)
 {
@@ -257,6 +273,17 @@ int board_init(void)
        i2c_init_board();
 #endif
 
+#ifdef CONFIG_DM_MMC
+       /*
+        * Temporary workaround for enabling MMC clocks until a sunxi DM
+        * pinctrl driver lands.
+        */
+       mmc_pinmux_setup(CONFIG_MMC_SUNXI_SLOT);
+#if CONFIG_MMC_SUNXI_SLOT_EXTRA != -1
+       mmc_pinmux_setup(CONFIG_MMC_SUNXI_SLOT_EXTRA);
+#endif
+#endif /* CONFIG_DM_MMC */
+
        /* Uses dm gpio code so do this here and not in i2c_init_board() */
        return soft_i2c_board_init();
 }
@@ -637,6 +664,13 @@ void sunxi_board_init(void)
        power_failed |= axp_set_sw(IS_ENABLED(CONFIG_AXP_SW_ON));
 #endif
 #endif
+       printf("DRAM:");
+       gd->ram_size = sunxi_dram_init();
+       printf(" %d MiB\n", (int)(gd->ram_size >> 20));
+       if (!gd->ram_size)
+               hang();
+
+       sunxi_spl_store_dram_size(gd->ram_size);
 
        /*
         * Only clock up the CPU to full speed if we are reasonably
@@ -645,16 +679,7 @@ void sunxi_board_init(void)
        if (!power_failed)
                clock_set_pll1(CONFIG_SYS_CLK_FREQ);
        else
-               printf("Error setting up the power controller.\n"
-                      "CPU frequency not set.\n");
-
-       printf("DRAM:");
-       gd->ram_size = sunxi_dram_init();
-       printf(" %d MiB\n", (int)(gd->ram_size >> 20));
-       if (!gd->ram_size)
-               hang();
-
-       sunxi_spl_store_dram_size(gd->ram_size);
+               printf("Failed to set core voltage! Can't set CPU frequency\n");
 }
 #endif
 
@@ -665,7 +690,7 @@ int g_dnl_board_usb_cable_connected(void)
        struct phy phy;
        int ret;
 
-       ret = uclass_get_device(UCLASS_USB_DEV_GENERIC, 0, &dev);
+       ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, 0, &dev);
        if (ret) {
                pr_err("%s: Cannot find USB device\n", __func__);
                return ret;