All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 6/7] ARM: tegra: enable SD card on p2771-0000
Date: Sun, 31 Jul 2016 19:04:07 -0600	[thread overview]
Message-ID: <CAPnjgZ0Bc9OXOL8ivdoa9HfXaysJ7-+8yqdS9bESBLbH6PBgEA@mail.gmail.com> (raw)
In-Reply-To: <20160729191506.24803-6-swarren@wwwdotorg.org>

Hi Stephen,

On 29 July 2016 at 13:15, Stephen Warren <swarren@wwwdotorg.org> wrote:
> From: Stephen Warren <swarren@nvidia.com>
>
> 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>
> ---
>  arch/arm/dts/tegra186-p2771-0000-a02.dts |  5 +++++
>  arch/arm/dts/tegra186-p2771-0000-b00.dts |  5 +++++
>  arch/arm/dts/tegra186-p2771-0000.dtsi    | 14 ++++++++++++++
>  board/nvidia/p2771-0000/p2771-0000.c     | 26 ++++++++++++++++++++++++++
>  configs/p2771-0000-a02_defconfig         |  1 +
>  configs/p2771-0000-b00_defconfig         |  1 +
>  6 files changed, 52 insertions(+)
>
> diff --git a/arch/arm/dts/tegra186-p2771-0000-a02.dts b/arch/arm/dts/tegra186-p2771-0000-a02.dts
> index 70f4326c0913..5ed3817a41c6 100644
> --- a/arch/arm/dts/tegra186-p2771-0000-a02.dts
> +++ b/arch/arm/dts/tegra186-p2771-0000-a02.dts
> @@ -5,4 +5,9 @@
>  / {
>         model = "NVIDIA P2771-0000 A02";
>         compatible = "nvidia,p2771-0000-a02", "nvidia,p2771-0000", "nvidia,tegra186";
> +
> +       sdhci at 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>;
> +       };
>  };
> diff --git a/arch/arm/dts/tegra186-p2771-0000-b00.dts b/arch/arm/dts/tegra186-p2771-0000-b00.dts
> index 2384a65e870a..90c99c33ccc6 100644
> --- a/arch/arm/dts/tegra186-p2771-0000-b00.dts
> +++ b/arch/arm/dts/tegra186-p2771-0000-b00.dts
> @@ -5,4 +5,9 @@
>  / {
>         model = "NVIDIA P2771-0000 B00";
>         compatible = "nvidia,p2771-0000-b00", "nvidia,p2771-0000", "nvidia,tegra186";
> +
> +       sdhci at 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>;
> +       };
>  };
> diff --git a/arch/arm/dts/tegra186-p2771-0000.dtsi b/arch/arm/dts/tegra186-p2771-0000.dtsi
> index 4e2b6fbf97f8..d867674fd04e 100644
> --- a/arch/arm/dts/tegra186-p2771-0000.dtsi
> +++ b/arch/arm/dts/tegra186-p2771-0000.dtsi
> @@ -10,6 +10,8 @@
>
>         aliases {
>                 sdhci0 = "/sdhci at 3460000";
> +               sdhci1 = "/sdhci at 3400000";
> +               i2c0 = "/bpmp/i2c";
>                 i2c1 = "/i2c at 3160000";
>                 i2c2 = "/i2c at c240000";
>                 i2c3 = "/i2c at 3180000";
> @@ -39,6 +41,12 @@
>                 status = "okay";
>         };
>
> +       sdhci at 3400000 {
> +               status = "okay";
> +               wp-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 4) GPIO_ACTIVE_HIGH>;
> +               bus-width = <4>;
> +       };
> +
>         sdhci at 3460000 {
>                 status = "okay";
>                 bus-width = <8>;
> @@ -55,4 +63,10 @@
>         i2c at 31e0000 {
>                 status = "okay";
>         };
> +
> +       bpmp {
> +               i2c {
> +                       status = "okay";
> +               };
> +       };
>  };
> diff --git a/board/nvidia/p2771-0000/p2771-0000.c b/board/nvidia/p2771-0000/p2771-0000.c
> index 4ba8ebc0dce8..0c828a200542 100644
> --- a/board/nvidia/p2771-0000/p2771-0000.c
> +++ b/board/nvidia/p2771-0000/p2771-0000.c
> @@ -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;
> +       }

Can you add a simple pmic driver for this? It's really easy and avoids
the horrible busnum stuff. The i2c_get_chip_for_busnum() should
ideally not be used.

> +
> +       return 0;
> +}
> diff --git a/configs/p2771-0000-a02_defconfig b/configs/p2771-0000-a02_defconfig
> index 1fe25f58f199..404f7acf7ef5 100644
> --- a/configs/p2771-0000-a02_defconfig
> +++ b/configs/p2771-0000-a02_defconfig
> @@ -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
> diff --git a/configs/p2771-0000-b00_defconfig b/configs/p2771-0000-b00_defconfig
> index 552fb6cec78b..ad35c99bbbcc 100644
> --- a/configs/p2771-0000-b00_defconfig
> +++ b/configs/p2771-0000-b00_defconfig
> @@ -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
> --
> 2.9.2
>

Regards,
Simon

  reply	other threads:[~2016-08-01  1:04 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-29 19:15 [U-Boot] [PATCH 1/7] dt-bindings: allow child nodes inside the Tegra BPMP Stephen Warren
2016-07-29 19:15 ` [U-Boot] [PATCH 2/7] misc: Tegra BPMP: support child node devices Stephen Warren
2016-08-01  1:03   ` Simon Glass
2016-08-01 15:56     ` Stephen Warren
2016-07-29 19:15 ` [U-Boot] [PATCH 3/7] dt-bindings: add Tegra186 BPMP I2C binding Stephen Warren
2016-08-01  1:03   ` Simon Glass
2016-08-01  4:24   ` Heiko Schocher
2016-07-29 19:15 ` [U-Boot] [PATCH 4/7] i2c: add Tegra186 BPMP driver Stephen Warren
2016-08-01  1:03   ` Simon Glass
2016-08-01  4:25   ` Heiko Schocher
2016-07-29 19:15 ` [U-Boot] [PATCH 5/7] ARM: tegra: add BPMP to Tegra186 device tree Stephen Warren
2016-08-01  1:03   ` Simon Glass
2016-07-29 19:15 ` [U-Boot] [PATCH 6/7] ARM: tegra: enable SD card on p2771-0000 Stephen Warren
2016-08-01  1:04   ` Simon Glass [this message]
2016-08-01 16:02     ` Stephen Warren
2016-08-04  1:16       ` Simon Glass
2016-07-29 19:15 ` [U-Boot] [PATCH 7/7] ARM: tegra: enable PCIe controller " Stephen Warren
2016-08-01  1:04   ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAPnjgZ0Bc9OXOL8ivdoa9HfXaysJ7-+8yqdS9bESBLbH6PBgEA@mail.gmail.com \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.