linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] Harmony PCI-e and regulators
@ 2011-03-08 12:58 Mike Rapoport
  2011-03-08 12:58 ` [PATCH 1/3] ARM: tegra: harmony: update PCI-e initialization sequence Mike Rapoport
                   ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: Mike Rapoport @ 2011-03-08 12:58 UTC (permalink / raw)
  To: linux-arm-kernel

These patches provide update for Harmony PCI-e intialization and add
registration of the TPS65862 PMIC.
Additionally, there are several tegra_defconfig updates. These updates
allow booting the Harmony with PCI-e enabled and add ability to boot
TrimSlice with root on NFS.

The patches were generated vs. Olof's board-for-next-i2c that seems to
disappear. If there are now objection to these patches I can push them
into separate branch in my tree, so that it can be pulled after Tegra
I2C is merged.

Mike Rapoport (3):
  ARM: tegra: harmony: update PCI-e initialization sequence
  ARM: tegra: harmony: initialize the TPS65862 PMIC
  ARM: tegra: update defconfig

 arch/arm/configs/tegra_defconfig          |   12 ++-
 arch/arm/mach-tegra/Makefile              |    1 +
 arch/arm/mach-tegra/board-harmony-pcie.c  |   24 ++++-
 arch/arm/mach-tegra/board-harmony-power.c |  161 +++++++++++++++++++++++++++++
 arch/arm/mach-tegra/board-harmony.c       |    1 +
 arch/arm/mach-tegra/board-harmony.h       |    1 +
 6 files changed, 197 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm/mach-tegra/board-harmony-power.c

-- 
1.7.3.1

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/3] ARM: tegra: harmony: update PCI-e initialization sequence
  2011-03-08 12:58 [PATCH 0/3] Harmony PCI-e and regulators Mike Rapoport
@ 2011-03-08 12:58 ` Mike Rapoport
  2011-03-08 12:58 ` [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC Mike Rapoport
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 16+ messages in thread
From: Mike Rapoport @ 2011-03-08 12:58 UTC (permalink / raw)
  To: linux-arm-kernel

On Harmony board PCI-e subsystem can be enabled only after certain
voltage regulators are on. One of the regulators is an internal
regulator on the PMIC and another one is controlled by a PMIC GPIO.
Addition of the voltage control to the Harmony PCI-e initialization
allows booting of kernel with CONFIG_TEGRA_PCI even if the PMIC driver
is not loaded. In this case the PCI-e initialization will fail
gracefully intead of hanging the system.

Signed-off-by: Mike Rapoport <mike@compulab.co.il>
---
 arch/arm/mach-tegra/board-harmony-pcie.c |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-tegra/board-harmony-pcie.c b/arch/arm/mach-tegra/board-harmony-pcie.c
index f7e7d45..9c27b95 100644
--- a/arch/arm/mach-tegra/board-harmony-pcie.c
+++ b/arch/arm/mach-tegra/board-harmony-pcie.c
@@ -27,13 +27,29 @@
 
 #ifdef CONFIG_TEGRA_PCI
 
+/* GPIO 3 of the PMIC */
+#define EN_VDD_1V05_GPIO	(TEGRA_NR_GPIOS + 2)
+
 static int __init harmony_pcie_init(void)
 {
+	struct regulator *regulator = NULL;
 	int err;
 
 	if (!machine_is_harmony())
 		return 0;
 
+	err = gpio_request(EN_VDD_1V05_GPIO, "EN_VDD_1V05");
+	if (err)
+		return err;
+
+	gpio_direction_output(EN_VDD_1V05_GPIO, 1);
+
+	regulator = regulator_get(NULL, "pex_clk");
+	if (IS_ERR_OR_NULL(regulator))
+		goto err_reg;
+
+	regulator_enable(regulator);
+
 	tegra_pinmux_set_tristate(TEGRA_PINGROUP_GPV, TEGRA_TRI_NORMAL);
 	tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXA, TEGRA_TRI_NORMAL);
 	tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXK, TEGRA_TRI_NORMAL);
@@ -49,9 +65,15 @@ err_pcie:
 	tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXA, TEGRA_TRI_TRISTATE);
 	tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXK, TEGRA_TRI_TRISTATE);
 
+	regulator_disable(regulator);
+	regulator_put(regulator);
+err_reg:
+	gpio_free(EN_VDD_1V05_GPIO);
+
 	return err;
 }
 
-subsys_initcall(harmony_pcie_init);
+/* PCI should be initialized after I2C, mfd and regulators */
+subsys_initcall_sync(harmony_pcie_init);
 
 #endif
-- 
1.7.3.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-08 12:58 [PATCH 0/3] Harmony PCI-e and regulators Mike Rapoport
  2011-03-08 12:58 ` [PATCH 1/3] ARM: tegra: harmony: update PCI-e initialization sequence Mike Rapoport
@ 2011-03-08 12:58 ` Mike Rapoport
  2011-03-08 13:15   ` Mark Brown
  2011-03-08 22:12   ` Marc Dietrich
  2011-03-08 12:58 ` [PATCH 3/3] ARM: tegra: update defconfig Mike Rapoport
  2011-03-08 18:06 ` [PATCH 0/3] Harmony PCI-e and regulators Olof Johansson
  3 siblings, 2 replies; 16+ messages in thread
From: Mike Rapoport @ 2011-03-08 12:58 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Mike Rapoport <mike@compulab.co.il>
---
 arch/arm/mach-tegra/Makefile              |    1 +
 arch/arm/mach-tegra/board-harmony-power.c |  161 +++++++++++++++++++++++++++++
 arch/arm/mach-tegra/board-harmony.c       |    1 +
 arch/arm/mach-tegra/board-harmony.h       |    1 +
 4 files changed, 164 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/mach-tegra/board-harmony-power.c

diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile
index 9bf39fa..cdc4788 100644
--- a/arch/arm/mach-tegra/Makefile
+++ b/arch/arm/mach-tegra/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_TEGRA_PCI)			+= pcie.o
 obj-${CONFIG_MACH_HARMONY}              += board-harmony.o
 obj-${CONFIG_MACH_HARMONY}              += board-harmony-pinmux.o
 obj-${CONFIG_MACH_HARMONY}              += board-harmony-pcie.o
+obj-${CONFIG_MACH_HARMONY}              += board-harmony-power.o
 
 obj-${CONFIG_MACH_SEABOARD}             += board-seaboard.o
 obj-${CONFIG_MACH_SEABOARD}             += board-seaboard-pinmux.o
diff --git a/arch/arm/mach-tegra/board-harmony-power.c b/arch/arm/mach-tegra/board-harmony-power.c
new file mode 100644
index 0000000..ca43d7a
--- /dev/null
+++ b/arch/arm/mach-tegra/board-harmony-power.c
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2010 NVIDIA, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307, USA
+ */
+#include <linux/i2c.h>
+#include <linux/platform_device.h>
+#include <linux/gpio.h>
+
+#include <linux/regulator/machine.h>
+#include <linux/mfd/tps6586x.h>
+
+#include <mach/irqs.h>
+
+#define PMC_CTRL		0x0
+#define PMC_CTRL_INTR_LOW	(1 << 17)
+
+static struct regulator_consumer_supply tps658621_sm0_supply[] = {
+	REGULATOR_SUPPLY("vdd_core", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_sm1_supply[] = {
+	REGULATOR_SUPPLY("vdd_cpu", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_sm2_supply[] = {
+	REGULATOR_SUPPLY("vdd_sm2", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_ldo0_supply[] = {
+	REGULATOR_SUPPLY("pex_clk", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_ldo1_supply[] = {
+	REGULATOR_SUPPLY("avdd_pll", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_ldo2_supply[] = {
+	REGULATOR_SUPPLY("vdd_rtc", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_ldo3_supply[] = {
+	REGULATOR_SUPPLY("avdd_usb", NULL),
+	REGULATOR_SUPPLY("avdd_usb_pll", NULL),
+	REGULATOR_SUPPLY("avdd_lvds", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_ldo4_supply[] = {
+	REGULATOR_SUPPLY("avdd_osc", NULL),
+	REGULATOR_SUPPLY("vddio_sys", "panjit_touch"),
+};
+
+static struct regulator_consumer_supply tps658621_ldo5_supply[] = {
+	REGULATOR_SUPPLY("vcore_mmc", "sdhci-tegra.1"),
+	REGULATOR_SUPPLY("vcore_mmc", "sdhci-tegra.3"),
+};
+
+static struct regulator_consumer_supply tps658621_ldo6_supply[] = {
+	REGULATOR_SUPPLY("avdd_vdac", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_ldo7_supply[] = {
+	REGULATOR_SUPPLY("avdd_hdmi", NULL),
+	REGULATOR_SUPPLY("vdd_fuse", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_ldo8_supply[] = {
+	REGULATOR_SUPPLY("avdd_hdmi_pll", NULL),
+};
+
+static struct regulator_consumer_supply tps658621_ldo9_supply[] = {
+	REGULATOR_SUPPLY("avdd_2v85", NULL),
+	REGULATOR_SUPPLY("vdd_ddr_rx", NULL),
+	REGULATOR_SUPPLY("avdd_amp", NULL),
+};
+
+#define REGULATOR_INIT(_id, _minmv, _maxmv)				\
+	{								\
+		.constraints = {					\
+			.min_uV = (_minmv)*1000,			\
+			.max_uV = (_maxmv)*1000,			\
+			.valid_modes_mask = (REGULATOR_MODE_NORMAL |	\
+					     REGULATOR_MODE_STANDBY),	\
+			.valid_ops_mask = (REGULATOR_CHANGE_MODE |	\
+					   REGULATOR_CHANGE_STATUS |	\
+					   REGULATOR_CHANGE_VOLTAGE),	\
+		},							\
+		.num_consumer_supplies = ARRAY_SIZE(tps658621_##_id##_supply),\
+		.consumer_supplies = tps658621_##_id##_supply,		\
+	}
+
+static struct regulator_init_data sm0_data = REGULATOR_INIT(sm0, 725, 1500);
+static struct regulator_init_data sm1_data = REGULATOR_INIT(sm1, 725, 1500);
+static struct regulator_init_data sm2_data = REGULATOR_INIT(sm2, 3000, 4550);
+static struct regulator_init_data ldo0_data = REGULATOR_INIT(ldo0, 1250, 3300);
+static struct regulator_init_data ldo1_data = REGULATOR_INIT(ldo1, 725, 1500);
+static struct regulator_init_data ldo2_data = REGULATOR_INIT(ldo2, 725, 1500);
+static struct regulator_init_data ldo3_data = REGULATOR_INIT(ldo3, 1250, 3300);
+static struct regulator_init_data ldo4_data = REGULATOR_INIT(ldo4, 1700, 2475);
+static struct regulator_init_data ldo5_data = REGULATOR_INIT(ldo5, 1250, 3300);
+static struct regulator_init_data ldo6_data = REGULATOR_INIT(ldo6, 1250, 3300);
+static struct regulator_init_data ldo7_data = REGULATOR_INIT(ldo7, 1250, 3300);
+static struct regulator_init_data ldo8_data = REGULATOR_INIT(ldo8, 1250, 3300);
+static struct regulator_init_data ldo9_data = REGULATOR_INIT(ldo9, 1250, 3300);
+
+#define TPS_REG(_id, _data)			\
+	{					\
+		.id = TPS6586X_ID_##_id,	\
+		.name = "tps6586x-regulator",	\
+		.platform_data = _data,		\
+	}
+
+static struct tps6586x_subdev_info tps_devs[] = {
+	TPS_REG(SM_0, &sm0_data),
+	TPS_REG(SM_1, &sm1_data),
+	TPS_REG(SM_2, &sm2_data),
+	TPS_REG(LDO_0, &ldo0_data),
+	TPS_REG(LDO_1, &ldo1_data),
+	TPS_REG(LDO_2, &ldo2_data),
+	TPS_REG(LDO_3, &ldo3_data),
+	TPS_REG(LDO_4, &ldo4_data),
+	TPS_REG(LDO_5, &ldo5_data),
+	TPS_REG(LDO_6, &ldo6_data),
+	TPS_REG(LDO_7, &ldo7_data),
+	TPS_REG(LDO_8, &ldo8_data),
+	TPS_REG(LDO_9, &ldo9_data),
+};
+
+static struct tps6586x_platform_data tps_platform = {
+	.irq_base	= TEGRA_NR_IRQS,
+	.num_subdevs	= ARRAY_SIZE(tps_devs),
+	.subdevs	= tps_devs,
+	.gpio_base	= TEGRA_NR_GPIOS,
+};
+
+static struct i2c_board_info __initdata harmony_regulators[] = {
+	{
+		I2C_BOARD_INFO("tps6586x", 0x34),
+		.irq		= INT_EXTERNAL_PMU,
+		.platform_data	= &tps_platform,
+	},
+};
+
+int __init harmony_regulator_init(void)
+{
+	i2c_register_board_info(3, harmony_regulators, 1);
+
+	return 0;
+}
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c
index 2d7d9d9..7de4a7e 100644
--- a/arch/arm/mach-tegra/board-harmony.c
+++ b/arch/arm/mach-tegra/board-harmony.c
@@ -147,6 +147,7 @@ static void __init tegra_harmony_init(void)
 
 	platform_add_devices(harmony_devices, ARRAY_SIZE(harmony_devices));
 	harmony_i2c_init();
+	harmony_regulator_init();
 }
 
 MACHINE_START(HARMONY, "harmony")
diff --git a/arch/arm/mach-tegra/board-harmony.h b/arch/arm/mach-tegra/board-harmony.h
index 09ca775..0a69661 100644
--- a/arch/arm/mach-tegra/board-harmony.h
+++ b/arch/arm/mach-tegra/board-harmony.h
@@ -18,5 +18,6 @@
 #define _MACH_TEGRA_BOARD_HARMONY_H
 
 void harmony_pinmux_init(void);
+int harmony_regulator_init(void);
 
 #endif
-- 
1.7.3.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 3/3] ARM: tegra: update defconfig
  2011-03-08 12:58 [PATCH 0/3] Harmony PCI-e and regulators Mike Rapoport
  2011-03-08 12:58 ` [PATCH 1/3] ARM: tegra: harmony: update PCI-e initialization sequence Mike Rapoport
  2011-03-08 12:58 ` [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC Mike Rapoport
@ 2011-03-08 12:58 ` Mike Rapoport
  2011-03-08 18:06 ` [PATCH 0/3] Harmony PCI-e and regulators Olof Johansson
  3 siblings, 0 replies; 16+ messages in thread
From: Mike Rapoport @ 2011-03-08 12:58 UTC (permalink / raw)
  To: linux-arm-kernel

* Enable TPS6586x PMIC driver
* Enable RealTek 8169 used on TrimSlice
* Allow booting with root on NFS

Signed-off-by: Mike Rapoport <mike@compulab.co.il>
---
 arch/arm/configs/tegra_defconfig |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig
index 294235f..8727c0c 100644
--- a/arch/arm/configs/tegra_defconfig
+++ b/arch/arm/configs/tegra_defconfig
@@ -43,6 +43,10 @@ CONFIG_PACKET=y
 CONFIG_UNIX=y
 CONFIG_NET_KEY=y
 CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
 CONFIG_INET_ESP=y
 # CONFIG_INET_XFRM_MODE_TUNNEL is not set
 # CONFIG_INET_XFRM_MODE_BEET is not set
@@ -69,7 +73,7 @@ CONFIG_APDS9802ALS=y
 CONFIG_ISL29003=y
 CONFIG_NETDEVICES=y
 CONFIG_DUMMY=y
-# CONFIG_NETDEV_1000 is not set
+CONFIG_R8169=y
 # CONFIG_NETDEV_10000 is not set
 # CONFIG_WLAN is not set
 # CONFIG_INPUT is not set
@@ -88,7 +92,9 @@ CONFIG_I2C_TEGRA=y
 CONFIG_POWER_SUPPLY=y
 CONFIG_BATTERY_BQ20Z75=y
 CONFIG_SENSORS_LM90=y
-# CONFIG_MFD_SUPPORT is not set
+CONFIG_MFD_TPS6586X=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_TPS6586X=y
 # CONFIG_USB_SUPPORT is not set
 CONFIG_MMC=y
 CONFIG_MMC_SDHCI=y
@@ -110,6 +116,8 @@ CONFIG_EXT3_FS_SECURITY=y
 # CONFIG_DNOTIFY is not set
 CONFIG_VFAT_FS=y
 CONFIG_TMPFS=y
+CONFIG_NFS_FS=y
+CONFIG_ROOT_NFS=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_EFI_PARTITION=y
 CONFIG_NLS_CODEPAGE_437=y
-- 
1.7.3.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-08 12:58 ` [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC Mike Rapoport
@ 2011-03-08 13:15   ` Mark Brown
  2011-03-09  7:41     ` Mike Rapoport
  2011-03-08 22:12   ` Marc Dietrich
  1 sibling, 1 reply; 16+ messages in thread
From: Mark Brown @ 2011-03-08 13:15 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Mar 08, 2011 at 02:58:58PM +0200, Mike Rapoport wrote:

> +static struct regulator_consumer_supply tps658621_ldo2_supply[] = {
> +	REGULATOR_SUPPLY("vdd_rtc", NULL),
> +};

I feel sure that some of these could be using a struct device, though
since they're probably all going to be required to be always on I'd
expect it's not useful to have them mapped as supplies at all and the
drivers could just assume they were there.

> +#define REGULATOR_INIT(_id, _minmv, _maxmv)				\
> +	{								\

This should be namespaced, someone might add a generic macro with that
name.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 0/3] Harmony PCI-e and regulators
  2011-03-08 12:58 [PATCH 0/3] Harmony PCI-e and regulators Mike Rapoport
                   ` (2 preceding siblings ...)
  2011-03-08 12:58 ` [PATCH 3/3] ARM: tegra: update defconfig Mike Rapoport
@ 2011-03-08 18:06 ` Olof Johansson
  3 siblings, 0 replies; 16+ messages in thread
From: Olof Johansson @ 2011-03-08 18:06 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Tue, Mar 8, 2011 at 4:58 AM, Mike Rapoport <mike@compulab.co.il> wrote:
> These patches provide update for Harmony PCI-e intialization and add
> registration of the TPS65862 PMIC.
> Additionally, there are several tegra_defconfig updates. These updates
> allow booting the Harmony with PCI-e enabled and add ability to boot
> TrimSlice with root on NFS.
>
> The patches were generated vs. Olof's board-for-next-i2c that seems to
> disappear. If there are now objection to these patches I can push them
> into separate branch in my tree, so that it can be pulled after Tegra
> I2C is merged.

Given the discussion yesterday, I merged what was essentially in the
-i2c branch into the regular boards-for-next branch. I can take these
through the same branch, since Colin hasn't pulled yet.


-Olof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-08 12:58 ` [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC Mike Rapoport
  2011-03-08 13:15   ` Mark Brown
@ 2011-03-08 22:12   ` Marc Dietrich
  2011-03-09  6:23     ` Mike Rapoport
  1 sibling, 1 reply; 16+ messages in thread
From: Marc Dietrich @ 2011-03-08 22:12 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Mike,

Am Dienstag 08 M?rz 2011, um 13:58:58 schrieb Mike Rapoport:
> Signed-off-by: Mike Rapoport <mike@compulab.co.il>
> ---
>  arch/arm/mach-tegra/Makefile              |    1 +
>  arch/arm/mach-tegra/board-harmony-power.c |  161 +++++++++++++++++++++++++++++
>  arch/arm/mach-tegra/board-harmony.c       |    1 +
>  arch/arm/mach-tegra/board-harmony.h       |    1 +
>  4 files changed, 164 insertions(+), 0 deletions(-)
>  create mode 100644 arch/arm/mach-tegra/board-harmony-power.c

...
> 
> diff --git a/arch/arm/mach-tegra/board-harmony-power.c b/arch/arm/mach-tegra/board-harmony-power.c
> new file mode 100644
> index 0000000..ca43d7a
> --- /dev/null
> +++ b/arch/arm/mach-tegra/board-harmony-power.c
...
> +static struct i2c_board_info __initdata harmony_regulators[] = {
> +	{
> +		I2C_BOARD_INFO("tps6586x", 0x34),
> +		.irq		= INT_EXTERNAL_PMU,
> +		.platform_data	= &tps_platform,
> +	},
> +};
> +
> +int __init harmony_regulator_init(void)
> +{
> +	i2c_register_board_info(3, harmony_regulators, 1);

I don't know harmony well, but are you sure this is 3, not 4, as on all other boards?

Marc

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-08 22:12   ` Marc Dietrich
@ 2011-03-09  6:23     ` Mike Rapoport
  2011-03-09 11:14       ` Marvin
  0 siblings, 1 reply; 16+ messages in thread
From: Mike Rapoport @ 2011-03-09  6:23 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/09/11 00:12, Marc Dietrich wrote:
> Hi Mike,
> 
> Am Dienstag 08 M?rz 2011, um 13:58:58 schrieb Mike Rapoport:
>> Signed-off-by: Mike Rapoport <mike@compulab.co.il>
>> ---
>>  arch/arm/mach-tegra/Makefile              |    1 +
>>  arch/arm/mach-tegra/board-harmony-power.c |  161 +++++++++++++++++++++++++++++
>>  arch/arm/mach-tegra/board-harmony.c       |    1 +
>>  arch/arm/mach-tegra/board-harmony.h       |    1 +
>>  4 files changed, 164 insertions(+), 0 deletions(-)
>>  create mode 100644 arch/arm/mach-tegra/board-harmony-power.c
> 
> ...
>>
>> diff --git a/arch/arm/mach-tegra/board-harmony-power.c b/arch/arm/mach-tegra/board-harmony-power.c
>> new file mode 100644
>> index 0000000..ca43d7a
>> --- /dev/null
>> +++ b/arch/arm/mach-tegra/board-harmony-power.c
> ...
>> +static struct i2c_board_info __initdata harmony_regulators[] = {
>> +	{
>> +		I2C_BOARD_INFO("tps6586x", 0x34),
>> +		.irq		= INT_EXTERNAL_PMU,
>> +		.platform_data	= &tps_platform,
>> +	},
>> +};
>> +
>> +int __init harmony_regulator_init(void)
>> +{
>> +	i2c_register_board_info(3, harmony_regulators, 1);
> 
> I don't know harmony well, but are you sure this is 3, not 4, as on all other boards?

In the mainline version of i2c-tegra the adapter (and therefore bus) number
equals the platform device id, and in case of DVC adapter it's 3.

> 
> Marc


-- 
Sincerely yours,
Mike.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-08 13:15   ` Mark Brown
@ 2011-03-09  7:41     ` Mike Rapoport
  2011-03-09 10:15       ` Mark Brown
  0 siblings, 1 reply; 16+ messages in thread
From: Mike Rapoport @ 2011-03-09  7:41 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/08/11 15:15, Mark Brown wrote:
> On Tue, Mar 08, 2011 at 02:58:58PM +0200, Mike Rapoport wrote:
> 
>> +static struct regulator_consumer_supply tps658621_ldo2_supply[] = {
>> +	REGULATOR_SUPPLY("vdd_rtc", NULL),
>> +};
> 
> I feel sure that some of these could be using a struct device, though
> since they're probably all going to be required to be always on I'd
> expect it's not useful to have them mapped as supplies at all and the
> drivers could just assume they were there.

I'd prefer to keep it as is for now and update the supplies when merging the
drivers that actually use them.

>> +#define REGULATOR_INIT(_id, _minmv, _maxmv)				\
>> +	{								\
> 
> This should be namespaced, someone might add a generic macro with that
> name.

Ok, will fix.

-- 
Sincerely yours,
Mike.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-09  7:41     ` Mike Rapoport
@ 2011-03-09 10:15       ` Mark Brown
  2011-03-09 11:53         ` Mike Rapoport
  0 siblings, 1 reply; 16+ messages in thread
From: Mark Brown @ 2011-03-09 10:15 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Mar 09, 2011 at 09:41:23AM +0200, Mike Rapoport wrote:
> On 03/08/11 15:15, Mark Brown wrote:

> > I feel sure that some of these could be using a struct device, though
> > since they're probably all going to be required to be always on I'd
> > expect it's not useful to have them mapped as supplies at all and the
> > drivers could just assume they were there.

> I'd prefer to keep it as is for now and update the supplies when merging the
> drivers that actually use them.

There's no point in keepig them if they don't match up with the actual
drivers and having this sort of stuff in the kernel means it might get
picked up as reference code by other users.  If you want to label the
supplies to match the rails on the board the name field in constraints
is intended for that purpose.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-09  6:23     ` Mike Rapoport
@ 2011-03-09 11:14       ` Marvin
  0 siblings, 0 replies; 16+ messages in thread
From: Marvin @ 2011-03-09 11:14 UTC (permalink / raw)
  To: linux-arm-kernel

> On 03/09/11 00:12, Marc Dietrich wrote:
> > Am Dienstag 08 M?rz 2011, um 13:58:58 schrieb Mike Rapoport:
> >>
> >> diff --git a/arch/arm/mach-tegra/board-harmony-power.c b/arch/arm/mach-tegra/board-harmony-power.c
> >> new file mode 100644
> >> index 0000000..ca43d7a
> >> --- /dev/null
> >> +++ b/arch/arm/mach-tegra/board-harmony-power.c
> > ...
> >> +static struct i2c_board_info __initdata harmony_regulators[] = {
> >> +	{
> >> +		I2C_BOARD_INFO("tps6586x", 0x34),
> >> +		.irq		= INT_EXTERNAL_PMU,
> >> +		.platform_data	= &tps_platform,
> >> +	},
> >> +};
> >> +
> >> +int __init harmony_regulator_init(void)
> >> +{
> >> +	i2c_register_board_info(3, harmony_regulators, 1);
> > 
> > I don't know harmony well, but are you sure this is 3, not 4, as on all other boards?
> 
> In the mainline version of i2c-tegra the adapter (and therefore bus) number
> equals the platform device id, and in case of DVC adapter it's 3.

Thanks for clarification. I guess this saved me from some headaches.

Marc

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-09 10:15       ` Mark Brown
@ 2011-03-09 11:53         ` Mike Rapoport
  2011-03-09 12:22           ` Mark Brown
  0 siblings, 1 reply; 16+ messages in thread
From: Mike Rapoport @ 2011-03-09 11:53 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/09/11 12:15, Mark Brown wrote:
> On Wed, Mar 09, 2011 at 09:41:23AM +0200, Mike Rapoport wrote:
>> On 03/08/11 15:15, Mark Brown wrote:
> 
>>> I feel sure that some of these could be using a struct device, though
>>> since they're probably all going to be required to be always on I'd
>>> expect it's not useful to have them mapped as supplies at all and the
>>> drivers could just assume they were there.
> 
>> I'd prefer to keep it as is for now and update the supplies when merging the
>> drivers that actually use them.
> 
> There's no point in keepig them if they don't match up with the actual
> drivers and having this sort of stuff in the kernel means it might get
> picked up as reference code by other users.  If you want to label the
> supplies to match the rails on the board the name field in constraints
> is intended for that purpose.

As for me, I'd be fine with registering only the pex_clk supply and ldo0 to
allow PCI-e on Harmony :)
If Tegra folks are Ok with it, I'd drop the rest and we'll add more regulators
and supplies together with drivers that use them.

-- 
Sincerely yours,
Mike.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-09 11:53         ` Mike Rapoport
@ 2011-03-09 12:22           ` Mark Brown
  2011-03-09 13:19             ` Mike Rapoport
  0 siblings, 1 reply; 16+ messages in thread
From: Mark Brown @ 2011-03-09 12:22 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Mar 09, 2011 at 01:53:38PM +0200, Mike Rapoport wrote:

> As for me, I'd be fine with registering only the pex_clk supply and ldo0 to
> allow PCI-e on Harmony :)
> If Tegra folks are Ok with it, I'd drop the rest and we'll add more regulators
> and supplies together with drivers that use them.

Note that there's no issue with having no supplies set for a regulator
so no reason not to register the supplies themselves, it's just the
supply map that I was flagging.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-09 13:19             ` Mike Rapoport
@ 2011-03-09 13:15               ` Mark Brown
  2011-03-09 13:23                 ` Mike Rapoport
  0 siblings, 1 reply; 16+ messages in thread
From: Mark Brown @ 2011-03-09 13:15 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Mar 09, 2011 at 03:19:40PM +0200, Mike Rapoport wrote:
> On 03/09/11 14:22, Mark Brown wrote:

> > Note that there's no issue with having no supplies set for a regulator
> > so no reason not to register the supplies themselves, it's just the
> > supply map that I was flagging.

> I.e. having something like

> static struct regulator_consumer_supply tps658621_ldo7_supply[] = {
> };

Well, I'd just omit the array entirely if it's empty but yes.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-09 12:22           ` Mark Brown
@ 2011-03-09 13:19             ` Mike Rapoport
  2011-03-09 13:15               ` Mark Brown
  0 siblings, 1 reply; 16+ messages in thread
From: Mike Rapoport @ 2011-03-09 13:19 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/09/11 14:22, Mark Brown wrote:
> On Wed, Mar 09, 2011 at 01:53:38PM +0200, Mike Rapoport wrote:
> 
>> As for me, I'd be fine with registering only the pex_clk supply and ldo0 to
>> allow PCI-e on Harmony :)
>> If Tegra folks are Ok with it, I'd drop the rest and we'll add more regulators
>> and supplies together with drivers that use them.
> 
> Note that there's no issue with having no supplies set for a regulator
> so no reason not to register the supplies themselves, it's just the
> supply map that I was flagging.

I.e. having something like

static struct regulator_consumer_supply tps658621_ldo7_supply[] = {
};

instead of

static struct regulator_consumer_supply tps658621_ldo7_supply[] = {
	REGULATOR_SUPPLY("avdd_hdmi", NULL),
	REGULATOR_SUPPLY("vdd_fuse", NULL),
};

?

> --
> To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
Sincerely yours,
Mike.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC
  2011-03-09 13:15               ` Mark Brown
@ 2011-03-09 13:23                 ` Mike Rapoport
  0 siblings, 0 replies; 16+ messages in thread
From: Mike Rapoport @ 2011-03-09 13:23 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/09/11 15:15, Mark Brown wrote:
> On Wed, Mar 09, 2011 at 03:19:40PM +0200, Mike Rapoport wrote:
>> On 03/09/11 14:22, Mark Brown wrote:
> 
>>> Note that there's no issue with having no supplies set for a regulator
>>> so no reason not to register the supplies themselves, it's just the
>>> supply map that I was flagging.
> 
>> I.e. having something like
> 
>> static struct regulator_consumer_supply tps658621_ldo7_supply[] = {
>> };
> 
> Well, I'd just omit the array entirely if it's empty but yes.

This would break nice un-namespaced REGULATOR_INIT macros :)

> --
> To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
Sincerely yours,
Mike.

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2011-03-09 13:23 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-08 12:58 [PATCH 0/3] Harmony PCI-e and regulators Mike Rapoport
2011-03-08 12:58 ` [PATCH 1/3] ARM: tegra: harmony: update PCI-e initialization sequence Mike Rapoport
2011-03-08 12:58 ` [PATCH 2/3] ARM: tegra: harmony: initialize the TPS65862 PMIC Mike Rapoport
2011-03-08 13:15   ` Mark Brown
2011-03-09  7:41     ` Mike Rapoport
2011-03-09 10:15       ` Mark Brown
2011-03-09 11:53         ` Mike Rapoport
2011-03-09 12:22           ` Mark Brown
2011-03-09 13:19             ` Mike Rapoport
2011-03-09 13:15               ` Mark Brown
2011-03-09 13:23                 ` Mike Rapoport
2011-03-08 22:12   ` Marc Dietrich
2011-03-09  6:23     ` Mike Rapoport
2011-03-09 11:14       ` Marvin
2011-03-08 12:58 ` [PATCH 3/3] ARM: tegra: update defconfig Mike Rapoport
2011-03-08 18:06 ` [PATCH 0/3] Harmony PCI-e and regulators Olof Johansson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).