ARM: tegra: enable SD card on p2771-0000
authorStephen Warren <swarren@nvidia.com>
Fri, 29 Jul 2016 19:15:05 +0000 (13:15 -0600)
committerTom Warren <twarren@nvidia.com>
Mon, 15 Aug 2016 17:26:13 +0000 (10:26 -0700)
Now that clock and reset drivers exist for Tegra186, we can enable the SD
card controller. Now that a BPMP I2C driver exists for Tegra186, we can
communicate with the PMIC to enable power to the SD card. Hook up the DT
content and board code required to make the SD card work.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
arch/arm/dts/tegra186-p2771-0000-a02.dts
arch/arm/dts/tegra186-p2771-0000-b00.dts
arch/arm/dts/tegra186-p2771-0000.dtsi
board/nvidia/p2771-0000/p2771-0000.c
configs/p2771-0000-a02_defconfig
configs/p2771-0000-b00_defconfig

index 70f4326c091320fde5cb81ed161ebbf30286c5cd..5ed3817a41c636f66dc65e2c6c32a931a07cfdcc 100644 (file)
@@ -5,4 +5,9 @@
 / {
        model = "NVIDIA P2771-0000 A02";
        compatible = "nvidia,p2771-0000-a02", "nvidia,p2771-0000", "nvidia,tegra186";
+
+       sdhci@3400000 {
+               cd-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 6) GPIO_ACTIVE_LOW>;
+               power-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 5) GPIO_ACTIVE_HIGH>;
+       };
 };
index 2384a65e870a2114d6a42b5841fd4899d8805ae7..90c99c33ccc6e7b5b09d7e9f74e04bc35fd557d3 100644 (file)
@@ -5,4 +5,9 @@
 / {
        model = "NVIDIA P2771-0000 B00";
        compatible = "nvidia,p2771-0000-b00", "nvidia,p2771-0000", "nvidia,tegra186";
+
+       sdhci@3400000 {
+               cd-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 5) GPIO_ACTIVE_LOW>;
+               power-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 6) GPIO_ACTIVE_HIGH>;
+       };
 };
index 4e2b6fbf97f80456e644b7cd390048c2e8485b9e..d867674fd04e327c67e76579a67e68de8a59425b 100644 (file)
@@ -10,6 +10,8 @@
 
        aliases {
                sdhci0 = "/sdhci@3460000";
+               sdhci1 = "/sdhci@3400000";
+               i2c0 = "/bpmp/i2c";
                i2c1 = "/i2c@3160000";
                i2c2 = "/i2c@c240000";
                i2c3 = "/i2c@3180000";
                status = "okay";
        };
 
+       sdhci@3400000 {
+               status = "okay";
+               wp-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 4) GPIO_ACTIVE_HIGH>;
+               bus-width = <4>;
+       };
+
        sdhci@3460000 {
                status = "okay";
                bus-width = <8>;
        i2c@31e0000 {
                status = "okay";
        };
+
+       bpmp {
+               i2c {
+                       status = "okay";
+               };
+       };
 };
index 4ba8ebc0dce87232c951fcfac0632be9866e2821..0c828a200542d023d6db2cf92fec4ad82874a75a 100644 (file)
@@ -5,3 +5,29 @@
  */
 
 #include <common.h>
+#include <i2c.h>
+#include "../p2571/max77620_init.h"
+
+int tegra_board_init(void)
+{
+       struct udevice *dev;
+       uchar val;
+       int ret;
+
+       /* Turn on MAX77620 LDO3 to 3.3V for SD card power */
+       debug("%s: Set LDO3 for VDDIO_SDMMC_AP power to 3.3V\n", __func__);
+       ret = i2c_get_chip_for_busnum(0, MAX77620_I2C_ADDR_7BIT, 1, &dev);
+       if (ret) {
+               printf("%s: Cannot find MAX77620 I2C chip\n", __func__);
+               return ret;
+       }
+       /* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */
+       val = 0xF2;
+       ret = dm_i2c_write(dev, MAX77620_CNFG1_L3_REG, &val, 1);
+       if (ret) {
+               printf("i2c_write 0 0x3c 0x27 failed: %d\n", ret);
+               return ret;
+       }
+
+       return 0;
+}
index 1fe25f58f199d6a085a461e7bae186e144ec4b55..404f7acf7ef53ff1d55593efe73662458b57e65d 100644 (file)
@@ -26,6 +26,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_TEGRA186_BPMP_I2C=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
index 552fb6cec78b54378426b8d01e0c8b7368ae7ef1..ad35c99bbbcc25a3d9c38048572eb55568f9dbe0 100644 (file)
@@ -26,6 +26,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_TEGRA186_BPMP_I2C=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_DM_USB=y