exynos4-dt: apply changes by upstream rebase
authorJoonyoung Shim <jy0922.shim@samsung.com>
Sat, 10 Jan 2015 03:43:01 +0000 (12:43 +0900)
committerLukasz Majewski <l.majewski@samsung.com>
Thu, 15 Jan 2015 12:12:24 +0000 (13:12 +0100)
I tested only odroid u3 board, please test trats2 board.

Change-Id: I73f445cc5856d9f665b1c4d83f60644853cb0840
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
board/samsung/common/exynos4-dt.c

index b0ba18917ba17be8b59d87b1dd3e7948a5ee7801..c5d27f51f1c62aa12902c05fbeb2668e404a6a50 100644 (file)
@@ -553,24 +553,48 @@ static void board_gpio_init(void)
                gpio_set_pull(EXYNOS4X12_GPIO_X37, S5P_GPIO_PULL_NONE);
        } else {
                /* eMMC reset */
+               gpio_request(EXYNOS4X12_GPIO_K12, "eMMC Reset");
+
                gpio_cfg_pin(EXYNOS4X12_GPIO_K12, S5P_GPIO_FUNC(0x1));
                gpio_set_pull(EXYNOS4X12_GPIO_K12, S5P_GPIO_PULL_NONE);
                gpio_set_drv(EXYNOS4X12_GPIO_K12, S5P_GPIO_DRV_4X);
 
                /* Enable FAN (Odroid U3) */
+               gpio_request(EXYNOS4X12_GPIO_D00, "FAN Control");
+
                gpio_set_pull(EXYNOS4X12_GPIO_D00, S5P_GPIO_PULL_UP);
                gpio_set_drv(EXYNOS4X12_GPIO_D00, S5P_GPIO_DRV_4X);
                gpio_direction_output(EXYNOS4X12_GPIO_D00, 1);
 
                /* OTG Vbus output (Odroid U3+) */
+               gpio_request(EXYNOS4X12_GPIO_L20, "OTG Vbus");
+
                gpio_set_pull(EXYNOS4X12_GPIO_L20, S5P_GPIO_PULL_NONE);
                gpio_set_drv(EXYNOS4X12_GPIO_L20, S5P_GPIO_DRV_4X);
                gpio_direction_output(EXYNOS4X12_GPIO_L20, 0);
 
                /* OTG INT (Odroid U3+) */
+               gpio_request(EXYNOS4X12_GPIO_X31, "OTG INT");
+
                gpio_set_pull(EXYNOS4X12_GPIO_X31, S5P_GPIO_PULL_UP);
                gpio_set_drv(EXYNOS4X12_GPIO_X31, S5P_GPIO_DRV_4X);
                gpio_direction_input(EXYNOS4X12_GPIO_X31);
+
+               /* Blue LED (Odroid X2/U2/U3) */
+               gpio_request(EXYNOS4X12_GPIO_C10, "Blue LED");
+
+               gpio_direction_output(EXYNOS4X12_GPIO_C10, 0);
+
+#ifdef CONFIG_CMD_USB
+               /* USB3503A Reference frequency */
+               gpio_request(EXYNOS4X12_GPIO_X30, "USB3503A RefFreq");
+
+               /* USB3503A Connect */
+               gpio_request(EXYNOS4X12_GPIO_X34, "USB3503A Connect");
+
+               /* USB3503A Reset */
+               gpio_request(EXYNOS4X12_GPIO_X35, "USB3503A Reset");
+#endif
        }
 }
 
@@ -646,10 +670,14 @@ static void board_init_i2c(void)
                i2c_id = PERIPH_ID_I2C7;
 
                /* I2C_8 */
+               gpio_request(EXYNOS4X12_GPIO_F14, "i2c8_clk");
+               gpio_request(EXYNOS4X12_GPIO_F15, "i2c8_data");
                gpio_direction_output(EXYNOS4X12_GPIO_F14, 1);
                gpio_direction_output(EXYNOS4X12_GPIO_F15, 1);
 
                /* I2C_9 */
+               gpio_request(EXYNOS4X12_GPIO_M21, "i2c9_clk");
+               gpio_request(EXYNOS4X12_GPIO_M20, "i2c9_data");
                gpio_direction_output(EXYNOS4X12_GPIO_M21, 1);
                gpio_direction_output(EXYNOS4X12_GPIO_M20, 1);
        } else {
@@ -682,7 +710,6 @@ int get_soft_i2c_sda_pin(void)
 int exynos_early_init_f(void)
 {
        board_clock_init();
-       board_gpio_init();
 
        return 0;
 }
@@ -694,6 +721,8 @@ int exynos_init(void)
 
        gd->bd->bi_arch_number = board_arch_num[gd->board_type];
 
+       board_gpio_init();
+
        if (!board_is_trats2())
                return 0;
 
@@ -792,9 +821,39 @@ struct s3c_plat_otg_data s5pc210_otg_data = {
        .usb_phy_ctrl   = EXYNOS4X12_USBPHY_CONTROL,
        .usb_flags      = PHY0_SLEEP,
 };
+#endif
+
+#if defined(CONFIG_USB_GADGET) || defined(CONFIG_CMD_USB)
 
 int board_usb_init(int index, enum usb_init_type init)
 {
+#ifdef CONFIG_CMD_USB
+       struct pmic *p_pmic;
+
+       /* Set Ref freq 0 => 24MHz, 1 => 26MHz*/
+       /* Odroid Us have it at 24MHz, Odroid Xs at 26MHz */
+       if (gd->board_type == ODROID_TYPE_U3)
+               gpio_direction_output(EXYNOS4X12_GPIO_X30, 0);
+       else
+               gpio_direction_output(EXYNOS4X12_GPIO_X30, 1);
+
+       /* Disconnect, Reset, Connect */
+       gpio_direction_output(EXYNOS4X12_GPIO_X34, 0);
+       gpio_direction_output(EXYNOS4X12_GPIO_X35, 0);
+       gpio_direction_output(EXYNOS4X12_GPIO_X35, 1);
+       gpio_direction_output(EXYNOS4X12_GPIO_X34, 1);
+
+       /* Power off and on BUCK8 for LAN9730 */
+       debug("LAN9730 - Turning power buck 8 OFF and ON.\n");
+
+       p_pmic = pmic_get("MAX77686_PMIC");
+       if (p_pmic && !pmic_probe(p_pmic)) {
+               max77686_set_buck_voltage(p_pmic, 8, 750000);
+               max77686_set_buck_voltage(p_pmic, 8, 3300000);
+       }
+
+#endif
+
        debug("USB_udc_probe\n");
        return s3c_udc_probe(&s5pc210_otg_data);
 }
@@ -846,6 +905,7 @@ void exynos_lcd_power_on(void)
                return;
 
        /* LCD_2.2V_EN: GPC0[1] */
+       gpio_request(EXYNOS4X12_GPIO_C01, "lcd_2v2_en");
        gpio_set_pull(EXYNOS4X12_GPIO_C01, S5P_GPIO_PULL_UP);
        gpio_direction_output(EXYNOS4X12_GPIO_C01, 1);
 
@@ -861,6 +921,7 @@ void exynos_reset_lcd(void)
                return;
 
        /* reset lcd */
+       gpio_request(EXYNOS4X12_GPIO_F21, "lcd_reset");
        gpio_direction_output(EXYNOS4X12_GPIO_F21, 0);
        udelay(10);
        gpio_set_value(EXYNOS4X12_GPIO_F21, 1);