Merge git://git.denx.de/u-boot-fsl-qoriq
[oweals/u-boot.git] / board / nvidia / jetson-tk1 / jetson-tk1.c
index daa74a4be02f029949803b6a3a21d435f4bb9e9c..c20da29a98adc6572d271634f6036fd9829a8b6e 100644 (file)
@@ -6,8 +6,9 @@
  */
 
 #include <common.h>
-#include <netdev.h>
+#include <dm.h>
 #include <power/as3722.h>
+#include <power/pmic.h>
 
 #include <asm/arch/gpio.h>
 #include <asm/arch/pinmux.h>
@@ -22,7 +23,7 @@ DECLARE_GLOBAL_DATA_PTR;
  */
 void pinmux_init(void)
 {
-       pinmux_set_tristate_input_clamping();
+       pinmux_clear_tristate_input_clamping();
 
        gpio_config_table(jetson_tk1_gpio_inits,
                          ARRAY_SIZE(jetson_tk1_gpio_inits));
@@ -32,50 +33,53 @@ void pinmux_init(void)
 
        pinmux_config_drvgrp_table(jetson_tk1_drvgrps,
                                   ARRAY_SIZE(jetson_tk1_drvgrps));
+
+       pinmux_config_mipipadctrlgrp_table(jetson_tk1_mipipadctrlgrps,
+                                       ARRAY_SIZE(jetson_tk1_mipipadctrlgrps));
 }
 
 #ifdef CONFIG_PCI_TEGRA
-int tegra_pcie_board_init(void)
+/* TODO: Convert to driver model */
+static int as3722_sd_enable(struct udevice *pmic, unsigned int sd)
 {
-       struct udevice *pmic;
        int err;
 
-       err = as3722_init(&pmic);
+       if (sd > 6)
+               return -EINVAL;
+
+       err = pmic_clrsetbits(pmic, AS3722_SD_CONTROL, 0, 1 << sd);
        if (err) {
-               error("failed to initialize AS3722 PMIC: %d\n", err);
+               pr_err("failed to update SD control register: %d", err);
                return err;
        }
 
-       err = as3722_sd_enable(pmic, 4);
-       if (err < 0) {
-               error("failed to enable SD4: %d\n", err);
-               return err;
-       }
+       return 0;
+}
 
-       err = as3722_sd_set_voltage(pmic, 4, 0x24);
-       if (err < 0) {
-               error("failed to set SD4 voltage: %d\n", err);
-               return err;
+int tegra_pcie_board_init(void)
+{
+       struct udevice *dev;
+       int ret;
+
+       ret = uclass_get_device_by_driver(UCLASS_PMIC,
+                                         DM_GET_DRIVER(pmic_as3722), &dev);
+       if (ret) {
+               debug("%s: Failed to find PMIC\n", __func__);
+               return ret;
        }
 
-       err = as3722_gpio_configure(pmic, 1, AS3722_GPIO_OUTPUT_VDDH |
-                                            AS3722_GPIO_INVERT);
-       if (err < 0) {
-               error("failed to configure GPIO#1 as output: %d\n", err);
-               return err;
+       ret = as3722_sd_enable(dev, 4);
+       if (ret < 0) {
+               pr_err("failed to enable SD4: %d\n", ret);
+               return ret;
        }
 
-       err = as3722_gpio_direction_output(pmic, 2, 1);
-       if (err < 0) {
-               error("failed to set GPIO#2 high: %d\n", err);
-               return err;
+       ret = as3722_sd_set_voltage(dev, 4, 0x24);
+       if (ret < 0) {
+               pr_err("failed to set SD4 voltage: %d\n", ret);
+               return ret;
        }
 
        return 0;
 }
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
 #endif /* PCI */