summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2011-06-20 10:44:11 -0600
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:45:58 -0800
commit43fe9a2b83d6e16e669bc35c8f7c398963ce0ff3 (patch)
treecd3c7f7e102f058b9819a36fa7f7919ed6c39fc9 /arch
parent256534830b50e25cadd4f60778889ed83d08b42d (diff)
ARM: Tegra: Harmony: Add correct I2C platform data
board-harmony.c's I2C platform data was structured for the upstream driver, but this branch contains the downstream driver. Fix the platform data to match; pull it in from the chromeos-2.6.38 branch. Also, modify any affected calls to i2c_register_board_info for the bus numbering changes. Signed-off-by: Stephen Warren <swarren@nvidia.com> Change-Id: Ie1586455a2f5d46e497dcf594f7a83c4b70eda60 Rebase-Id: R6ebe439ccf53a5a0a0f0a3d826bade8bfa75a2bb
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/board-harmony-power.c2
-rw-r--r--arch/arm/mach-tegra/board-harmony.c42
2 files changed, 43 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/board-harmony-power.c b/arch/arm/mach-tegra/board-harmony-power.c
index 5ad8b2f94f8d..0b4912b8bc50 100644
--- a/arch/arm/mach-tegra/board-harmony-power.c
+++ b/arch/arm/mach-tegra/board-harmony-power.c
@@ -113,7 +113,7 @@ static struct i2c_board_info __initdata harmony_regulators[] = {
int __init harmony_regulator_init(void)
{
- i2c_register_board_info(3, harmony_regulators, 1);
+ i2c_register_board_info(4, harmony_regulators, 1);
return 0;
}
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c
index 19f9f75dd64c..dd2f818d850d 100644
--- a/arch/arm/mach-tegra/board-harmony.c
+++ b/arch/arm/mach-tegra/board-harmony.c
@@ -175,6 +175,43 @@ static struct platform_device harmony_audio_device = {
},
};
+static struct tegra_i2c_platform_data harmony_i2c1_platform_data = {
+ .adapter_nr = 0,
+ .bus_count = 1,
+ .bus_clk_rate = { 400000, 0 },
+};
+
+static const struct tegra_pingroup_config i2c2_ddc = {
+ .pingroup = TEGRA_PINGROUP_DDC,
+ .func = TEGRA_MUX_I2C2,
+};
+
+static const struct tegra_pingroup_config i2c2_gen2 = {
+ .pingroup = TEGRA_PINGROUP_PTA,
+ .func = TEGRA_MUX_I2C2,
+};
+
+static struct tegra_i2c_platform_data harmony_i2c2_platform_data = {
+ .adapter_nr = 1,
+ .bus_count = 2,
+ .bus_clk_rate = { 100000, 100000 },
+ .bus_mux = { &i2c2_ddc, &i2c2_gen2 },
+ .bus_mux_len = { 1, 1 },
+};
+
+static struct tegra_i2c_platform_data harmony_i2c3_platform_data = {
+ .adapter_nr = 3,
+ .bus_count = 1,
+ .bus_clk_rate = { 400000, 0 },
+};
+
+static struct tegra_i2c_platform_data harmony_dvc_platform_data = {
+ .adapter_nr = 4,
+ .bus_count = 1,
+ .bus_clk_rate = { 400000, 0 },
+ .is_dvc = true,
+};
+
static struct wm8903_platform_data harmony_wm8903_pdata = {
.irq_active_low = 0,
.micdet_cfg = 0,
@@ -197,6 +234,11 @@ static struct i2c_board_info __initdata wm8903_board_info = {
static void __init harmony_i2c_init(void)
{
+ tegra_i2c_device1.dev.platform_data = &harmony_i2c1_platform_data;
+ tegra_i2c_device2.dev.platform_data = &harmony_i2c2_platform_data;
+ tegra_i2c_device3.dev.platform_data = &harmony_i2c3_platform_data;
+ tegra_i2c_device4.dev.platform_data = &harmony_dvc_platform_data;
+
platform_device_register(&tegra_i2c_device1);
platform_device_register(&tegra_i2c_device2);
platform_device_register(&tegra_i2c_device3);