All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Warren <twarren@nvidia.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] T210: P2571: Enable SD-card power via PMIC LDO2
Date: Wed, 29 Jul 2015 09:24:20 -0700	[thread overview]
Message-ID: <1438187063-3400-1-git-send-email-twarren@nvidia.com> (raw)

This was done in the 32-bit AVP loader (SPL) but is
board-specific so should be moved to the CPU portion.

Signed-off-by: Tom Warren <twarren@nvidia.com>
---
 board/nvidia/p2571/Makefile        |  1 -
 board/nvidia/p2571/max77620_init.c | 85 --------------------------------------
 board/nvidia/p2571/max77620_init.h |  3 +-
 board/nvidia/p2571/p2571.c         | 22 ++++++++++
 4 files changed, 24 insertions(+), 87 deletions(-)
 delete mode 100644 board/nvidia/p2571/max77620_init.c

diff --git a/board/nvidia/p2571/Makefile b/board/nvidia/p2571/Makefile
index 223062e..627b7ef 100644
--- a/board/nvidia/p2571/Makefile
+++ b/board/nvidia/p2571/Makefile
@@ -5,5 +5,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y	+= max77620_init.o
 obj-y	+= p2571.o
diff --git a/board/nvidia/p2571/max77620_init.c b/board/nvidia/p2571/max77620_init.c
deleted file mode 100644
index ed8d4dc..0000000
--- a/board/nvidia/p2571/max77620_init.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2013-2015
- * NVIDIA Corporation <www.nvidia.com>
- *
- * SPDX-License-Identifier:     GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch-tegra/tegra_i2c.h>
-#include "max77620_init.h"
-
-/* MAX77620-PMIC-specific early init code - get CPU rails up, etc */
-
-void tegra_i2c_ll_write_addr(uint addr, uint config)
-{
-	struct i2c_ctlr *reg = (struct i2c_ctlr *)TEGRA_DVC_BASE;
-
-	writel(addr, &reg->cmd_addr0);
-	writel(config, &reg->cnfg);
-}
-
-void tegra_i2c_ll_write_data(uint data, uint config)
-{
-	struct i2c_ctlr *reg = (struct i2c_ctlr *)TEGRA_DVC_BASE;
-
-	writel(data, &reg->cmd_data1);
-	writel(config, &reg->cnfg);
-}
-
-void pmic_enable_cpu_vdd(void)
-{
-	uint reg;
-	debug("%s entry\n", __func__);
-
-	/* Setup/Enable GPIO5 - VDD_CPU_REG_EN */
-	debug("%s: Setting GPIO5 to enable CPU regulator\n", __func__);
-	/* B3=1=logic high,B2=dontcare,B1=0=output,B0=1=push-pull */
-	reg = 0x0900 | MAX77620_GPIO5_REG;
-	tegra_i2c_ll_write_addr(MAX77620_I2C_ADDR, 2);
-	tegra_i2c_ll_write_data(reg, I2C_SEND_2_BYTES);
-	udelay(10 * 1000);
-
-	/* Setup/Enable GPIO1 - VDD_HDMI_5V0_BST_EN */
-	debug("%s: Setting GPIO1 to enable HDMI\n", __func__);
-	reg = 0x0900 | MAX77620_GPIO1_REG;
-	tegra_i2c_ll_write_addr(MAX77620_I2C_ADDR, 2);
-	tegra_i2c_ll_write_data(reg, I2C_SEND_2_BYTES);
-	udelay(10 * 1000);
-
-	/* GPIO 0,1,5,6,7 = GPIO, 2,3,4 = alt mode */
-	reg = 0x1C00 | MAX77620_AME_GPIO;
-	tegra_i2c_ll_write_addr(MAX77620_I2C_ADDR, 2);
-	tegra_i2c_ll_write_data(reg, I2C_SEND_2_BYTES);
-	udelay(10 * 1000);
-
-	/* Disable SD1 Remote Sense, Set SD1 for LPDDR4 to 1.125v */
-	debug("%s: Set SD1 for LPDDR4, disable SD1RS, voltage to 1.125v\n",
-	      __func__);
-	/* bit1=0, SD1 remote sense disabled */
-	reg = 0x0400 | MAX77620_CNFG2SD_REG;
-	tegra_i2c_ll_write_addr(MAX77620_I2C_ADDR, 2);
-	tegra_i2c_ll_write_data(reg, I2C_SEND_2_BYTES);
-	udelay(10 * 1000);
-
-	/* SD1 output = 1.125V */
-	reg = 0x2A00 | MAX77620_SD1_REG;
-	tegra_i2c_ll_write_addr(MAX77620_I2C_ADDR, 2);
-	tegra_i2c_ll_write_data(reg, I2C_SEND_2_BYTES);
-	udelay(10 * 1000);
-
-	debug("%s: Set LDO2 for VDDIO_SDMMC_AP power to 3.3V\n", __func__);
-	/* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */
-	reg = 0xF200 | MAX77620_CNFG1_L2_REG;
-	tegra_i2c_ll_write_addr(MAX77620_I2C_ADDR, 2);
-	tegra_i2c_ll_write_data(reg, I2C_SEND_2_BYTES);
-	udelay(10 * 1000);
-
-	debug("%s: Set LDO1 for USB3 phy power to 1.05V??\n", __func__);
-	/* 0xCA for 105v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */
-	reg = 0xCA00 | MAX77620_CNFG1_L1_REG;
-	tegra_i2c_ll_write_addr(MAX77620_I2C_ADDR, 2);
-	tegra_i2c_ll_write_data(reg, I2C_SEND_2_BYTES);
-	udelay(10 * 1000);
-}
diff --git a/board/nvidia/p2571/max77620_init.h b/board/nvidia/p2571/max77620_init.h
index 9d5cce7..92c3719 100644
--- a/board/nvidia/p2571/max77620_init.h
+++ b/board/nvidia/p2571/max77620_init.h
@@ -10,7 +10,8 @@
 
 /* MAX77620-PMIC-specific early init regs */
 
-#define MAX77620_I2C_ADDR		0x78		/* or 0x3C 7-bit */
+#define MAX77620_I2C_ADDR		0x78
+#define MAX77620_I2C_ADDR_7BIT		0x3C
 
 #define MAX77620_SD0_REG		0x16
 #define MAX77620_SD1_REG		0x17
diff --git a/board/nvidia/p2571/p2571.c b/board/nvidia/p2571/p2571.c
index fc710c1..842242c 100644
--- a/board/nvidia/p2571/p2571.c
+++ b/board/nvidia/p2571/p2571.c
@@ -6,10 +6,32 @@
  */
 
 #include <common.h>
+#include <i2c.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/pinmux.h>
+#include "max77620_init.h"
 #include "pinmux-config-p2571.h"
 
+void pin_mux_mmc(void)
+{
+	struct udevice *dev;
+	uchar val;
+	int ret;
+
+	/* Turn on MAX77620 LDO2 to 3.3V for SD card power */
+	debug("%s: Set LDO2 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;
+	}
+	/* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */
+	val = 0xF2;
+	ret = dm_i2c_write(dev, MAX77620_CNFG1_L2_REG, &val, 1);
+	if (ret)
+		printf("i2c_write 0 0x3c 0x27 failed: %d\n", ret);
+}
+
 /*
  * Routine: pinmux_init
  * Description: Do individual peripheral pinmux configs
-- 
1.8.2.1.610.g562af5b

             reply	other threads:[~2015-07-29 16:24 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-29 16:24 Tom Warren [this message]
2015-07-29 16:24 ` [U-Boot] [PATCH] T210: P2571: Restore USB gadget mode (ums) Tom Warren
2015-07-29 16:24 ` [U-Boot] [PATCH] T210: P2571: Turn CPU fan on Tom Warren
2015-07-29 16:24 ` [U-Boot] [PATCH] Tegra: Allow TZ writes to VPR aperature regs Tom Warren
2015-08-05 19:51   ` Stephen Warren
2015-08-05 19:57     ` Tom Warren
2015-07-29 18:19 ` [U-Boot] [PATCH] T210: P2571: Enable SD-card power via PMIC LDO2 Stephen Warren

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=1438187063-3400-1-git-send-email-twarren@nvidia.com \
    --to=twarren@nvidia.com \
    --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.