]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/samsung/smdk5420/smdk5420.c
exynos: config: Move common options to the common headers and tidy up
[karo-tx-uboot.git] / board / samsung / smdk5420 / smdk5420.c
index 55f0ea255b302d604dd9cfae47496f27202f69c7..57cc92c50b9729ea746b40cbedb928aa7ddac277 100644 (file)
@@ -6,40 +6,30 @@
 
 #include <common.h>
 #include <fdtdec.h>
-#include <asm/io.h>
-#include <i2c.h>
-#include <lcd.h>
-#include <parade.h>
-#include <spi.h>
 #include <errno.h>
+#include <asm/io.h>
 #include <asm/gpio.h>
-#include <asm/arch/board.h>
 #include <asm/arch/cpu.h>
-#include <asm/arch/pinmux.h>
+#include <asm/arch/board.h>
+#include <asm/arch/power.h>
 #include <asm/arch/system.h>
+#include <asm/arch/pinmux.h>
 #include <asm/arch/dp_info.h>
+#include <asm/arch/xhci-exynos.h>
 #include <power/tps65090_pmic.h>
+#include <i2c.h>
+#include <lcd.h>
+#include <mmc.h>
+#include <parade.h>
+#include <spi.h>
+#include <usb.h>
+#include <dwc3-uboot.h>
+#include <samsung-usb-phy-uboot.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifdef CONFIG_USB_EHCI_EXYNOS
-static int board_usb_vbus_init(void)
-{
-       /* Enable VBUS power switch */
-       gpio_direction_output(EXYNOS5420_GPIO_X26, 1);
-
-       /* VBUS turn ON time */
-       mdelay(3);
-
-       return 0;
-}
-#endif
-
 int exynos_init(void)
 {
-#ifdef CONFIG_USB_EHCI_EXYNOS
-       board_usb_vbus_init();
-#endif
        return 0;
 }
 
@@ -60,9 +50,9 @@ static int has_edp_bridge(void)
 
 void exynos_lcd_power_on(void)
 {
+#ifdef CONFIG_POWER_TPS65090
        int ret;
 
-#ifdef CONFIG_POWER_TPS65090
        ret = tps65090_init();
        if (ret < 0) {
                printf("%s: tps65090_init() failed\n", __func__);
@@ -74,16 +64,6 @@ void exynos_lcd_power_on(void)
 
        mdelay(5);
 
-       /* TODO(ajaykumar.rs@samsung.com): Use device tree */
-       gpio_request(EXYNOS5420_GPIO_X35, "edp_slp#");
-       gpio_direction_output(EXYNOS5420_GPIO_X35, 1);  /* EDP_SLP# */
-       mdelay(10);
-       gpio_request(EXYNOS5420_GPIO_Y77, "edp_rst#");
-       gpio_direction_output(EXYNOS5420_GPIO_Y77, 1);  /* EDP_RST# */
-       gpio_request(EXYNOS5420_GPIO_X26, "edp_hpd");
-       gpio_direction_input(EXYNOS5420_GPIO_X26);      /* EDP_HPD */
-       gpio_set_pull(EXYNOS5420_GPIO_X26, S5P_GPIO_PULL_NONE);
-
        if (has_edp_bridge())
                if (parade_init(gd->fdt_blob))
                        printf("%s: ps8625_init() failed\n", __func__);
@@ -91,11 +71,6 @@ void exynos_lcd_power_on(void)
 
 void exynos_backlight_on(unsigned int onoff)
 {
-       /* For PWM */
-       gpio_request(EXYNOS5420_GPIO_B20, "backlight_on");
-       gpio_cfg_pin(EXYNOS5420_GPIO_B20, S5P_GPIO_FUNC(0x1));
-       gpio_set_value(EXYNOS5420_GPIO_B20, 1);
-
 #ifdef CONFIG_POWER_TPS65090
        tps65090_fet_enable(1);
 #endif
@@ -106,3 +81,63 @@ int board_get_revision(void)
 {
        return 0;
 }
+
+#ifdef CONFIG_USB_DWC3
+static struct dwc3_device dwc3_device_data = {
+       .maximum_speed = USB_SPEED_SUPER,
+       .base = 0x12400000,
+       .dr_mode = USB_DR_MODE_PERIPHERAL,
+       .index = 0,
+};
+
+int usb_gadget_handle_interrupts(void)
+{
+       dwc3_uboot_handle_interrupt(0);
+       return 0;
+}
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+       struct exynos_usb3_phy *phy = (struct exynos_usb3_phy *)
+               samsung_get_base_usb3_phy();
+
+       if (!phy) {
+               error("usb3 phy not supported");
+               return -ENODEV;
+       }
+
+       set_usbdrd_phy_ctrl(POWER_USB_DRD_PHY_CTRL_EN);
+       exynos5_usb3_phy_init(phy);
+
+       return dwc3_uboot_init(&dwc3_device_data);
+}
+#endif
+#ifdef CONFIG_SET_DFU_ALT_INFO
+char *get_dfu_alt_system(char *interface, char *devstr)
+{
+       return getenv("dfu_alt_system");
+}
+
+char *get_dfu_alt_boot(char *interface, char *devstr)
+{
+       struct mmc *mmc;
+       char *alt_boot;
+       int dev_num;
+
+       dev_num = simple_strtoul(devstr, NULL, 10);
+
+       mmc = find_mmc_device(dev_num);
+       if (!mmc)
+               return NULL;
+
+       if (mmc_init(mmc))
+               return NULL;
+
+       if (IS_SD(mmc))
+               alt_boot = CONFIG_DFU_ALT_BOOT_SD;
+       else
+               alt_boot = CONFIG_DFU_ALT_BOOT_EMMC;
+
+       return alt_boot;
+}
+#endif