aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-tegra
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r--arch/arm/mach-tegra/board-harmony.c5
-rw-r--r--arch/arm/mach-tegra/board-paz00-pinmux.c3
-rw-r--r--arch/arm/mach-tegra/board-paz00.c64
-rw-r--r--arch/arm/mach-tegra/board-paz00.h8
-rw-r--r--arch/arm/mach-tegra/board-seaboard-pinmux.c6
-rw-r--r--arch/arm/mach-tegra/board-seaboard.c81
-rw-r--r--arch/arm/mach-tegra/board-seaboard.h12
-rw-r--r--arch/arm/mach-tegra/board-trimslice.c4
8 files changed, 170 insertions, 13 deletions
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c
index 93c793f48ca..f0bdc5e3fe5 100644
--- a/arch/arm/mach-tegra/board-harmony.c
+++ b/arch/arm/mach-tegra/board-harmony.c
@@ -49,7 +49,8 @@ static struct plat_serial8250_port debug_uart_platform_data[] = {
49 .membase = IO_ADDRESS(TEGRA_UARTD_BASE), 49 .membase = IO_ADDRESS(TEGRA_UARTD_BASE),
50 .mapbase = TEGRA_UARTD_BASE, 50 .mapbase = TEGRA_UARTD_BASE,
51 .irq = INT_UARTD, 51 .irq = INT_UARTD,
52 .flags = UPF_BOOT_AUTOCONF, 52 .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,
53 .type = PORT_TEGRA,
53 .iotype = UPIO_MEM, 54 .iotype = UPIO_MEM,
54 .regshift = 2, 55 .regshift = 2,
55 .uartclk = 216000000, 56 .uartclk = 216000000,
@@ -117,6 +118,7 @@ static struct platform_device *harmony_devices[] __initdata = {
117 &tegra_sdhci_device1, 118 &tegra_sdhci_device1,
118 &tegra_sdhci_device2, 119 &tegra_sdhci_device2,
119 &tegra_sdhci_device4, 120 &tegra_sdhci_device4,
121 &tegra_ehci3_device,
120 &tegra_i2s_device1, 122 &tegra_i2s_device1,
121 &tegra_das_device, 123 &tegra_das_device,
122 &tegra_pcm_device, 124 &tegra_pcm_device,
@@ -140,6 +142,7 @@ static __initdata struct tegra_clk_init_table harmony_clk_init_table[] = {
140 { "pll_a_out0", "pll_a", 11289600, true }, 142 { "pll_a_out0", "pll_a", 11289600, true },
141 { "cdev1", NULL, 0, true }, 143 { "cdev1", NULL, 0, true },
142 { "i2s1", "pll_a_out0", 11289600, false}, 144 { "i2s1", "pll_a_out0", 11289600, false},
145 { "usb3", "clk_m", 12000000, true },
143 { NULL, NULL, 0, 0}, 146 { NULL, NULL, 0, 0},
144}; 147};
145 148
diff --git a/arch/arm/mach-tegra/board-paz00-pinmux.c b/arch/arm/mach-tegra/board-paz00-pinmux.c
index bdd2627dd87..22257697d3e 100644
--- a/arch/arm/mach-tegra/board-paz00-pinmux.c
+++ b/arch/arm/mach-tegra/board-paz00-pinmux.c
@@ -145,6 +145,9 @@ static struct tegra_gpio_table gpio_table[] = {
145 { .gpio = TEGRA_GPIO_SD1_WP, .enable = true }, 145 { .gpio = TEGRA_GPIO_SD1_WP, .enable = true },
146 { .gpio = TEGRA_GPIO_SD1_POWER, .enable = true }, 146 { .gpio = TEGRA_GPIO_SD1_POWER, .enable = true },
147 { .gpio = TEGRA_ULPI_RST, .enable = true }, 147 { .gpio = TEGRA_ULPI_RST, .enable = true },
148 { .gpio = TEGRA_WIFI_PWRN, .enable = true },
149 { .gpio = TEGRA_WIFI_RST, .enable = true },
150 { .gpio = TEGRA_WIFI_LED, .enable = true },
148}; 151};
149 152
150void paz00_pinmux_init(void) 153void paz00_pinmux_init(void)
diff --git a/arch/arm/mach-tegra/board-paz00.c b/arch/arm/mach-tegra/board-paz00.c
index fbc9e0ed926..55c55ba89f1 100644
--- a/arch/arm/mach-tegra/board-paz00.c
+++ b/arch/arm/mach-tegra/board-paz00.c
@@ -26,6 +26,8 @@
26#include <linux/pda_power.h> 26#include <linux/pda_power.h>
27#include <linux/io.h> 27#include <linux/io.h>
28#include <linux/i2c.h> 28#include <linux/i2c.h>
29#include <linux/gpio.h>
30#include <linux/rfkill-gpio.h>
29 31
30#include <asm/mach-types.h> 32#include <asm/mach-types.h>
31#include <asm/mach/arch.h> 33#include <asm/mach/arch.h>
@@ -35,7 +37,6 @@
35#include <mach/iomap.h> 37#include <mach/iomap.h>
36#include <mach/irqs.h> 38#include <mach/irqs.h>
37#include <mach/sdhci.h> 39#include <mach/sdhci.h>
38#include <mach/gpio.h>
39 40
40#include "board.h" 41#include "board.h"
41#include "board-paz00.h" 42#include "board-paz00.h"
@@ -45,10 +46,22 @@
45 46
46static struct plat_serial8250_port debug_uart_platform_data[] = { 47static struct plat_serial8250_port debug_uart_platform_data[] = {
47 { 48 {
49 /* serial port on JP1 */
50 .membase = IO_ADDRESS(TEGRA_UARTA_BASE),
51 .mapbase = TEGRA_UARTA_BASE,
52 .irq = INT_UARTA,
53 .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,
54 .type = PORT_TEGRA,
55 .iotype = UPIO_MEM,
56 .regshift = 2,
57 .uartclk = 216000000,
58 }, {
59 /* serial port on mini-pcie */
48 .membase = IO_ADDRESS(TEGRA_UARTD_BASE), 60 .membase = IO_ADDRESS(TEGRA_UARTD_BASE),
49 .mapbase = TEGRA_UARTD_BASE, 61 .mapbase = TEGRA_UARTD_BASE,
50 .irq = INT_UARTD, 62 .irq = INT_UARTD,
51 .flags = UPF_BOOT_AUTOCONF, 63 .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,
64 .type = PORT_TEGRA,
52 .iotype = UPIO_MEM, 65 .iotype = UPIO_MEM,
53 .regshift = 2, 66 .regshift = 2,
54 .uartclk = 216000000, 67 .uartclk = 216000000,
@@ -65,10 +78,48 @@ static struct platform_device debug_uart = {
65 }, 78 },
66}; 79};
67 80
81static struct rfkill_gpio_platform_data wifi_rfkill_platform_data = {
82 .name = "wifi_rfkill",
83 .reset_gpio = TEGRA_WIFI_RST,
84 .shutdown_gpio = TEGRA_WIFI_PWRN,
85 .type = RFKILL_TYPE_WLAN,
86};
87
88static struct platform_device wifi_rfkill_device = {
89 .name = "rfkill_gpio",
90 .id = -1,
91 .dev = {
92 .platform_data = &wifi_rfkill_platform_data,
93 },
94};
95
96static struct gpio_led gpio_leds[] = {
97 {
98 .name = "wifi-led",
99 .default_trigger = "rfkill0",
100 .gpio = TEGRA_WIFI_LED,
101 },
102};
103
104static struct gpio_led_platform_data gpio_led_info = {
105 .leds = gpio_leds,
106 .num_leds = ARRAY_SIZE(gpio_leds),
107};
108
109static struct platform_device leds_gpio = {
110 .name = "leds-gpio",
111 .id = -1,
112 .dev = {
113 .platform_data = &gpio_led_info,
114 },
115};
116
68static struct platform_device *paz00_devices[] __initdata = { 117static struct platform_device *paz00_devices[] __initdata = {
69 &debug_uart, 118 &debug_uart,
70 &tegra_sdhci_device1,
71 &tegra_sdhci_device4, 119 &tegra_sdhci_device4,
120 &tegra_sdhci_device1,
121 &wifi_rfkill_device,
122 &leds_gpio,
72}; 123};
73 124
74static void paz00_i2c_init(void) 125static void paz00_i2c_init(void)
@@ -94,7 +145,14 @@ static void __init tegra_paz00_fixup(struct tag *tags, char **cmdline,
94 145
95static __initdata struct tegra_clk_init_table paz00_clk_init_table[] = { 146static __initdata struct tegra_clk_init_table paz00_clk_init_table[] = {
96 /* name parent rate enabled */ 147 /* name parent rate enabled */
148 { "uarta", "pll_p", 216000000, true },
97 { "uartd", "pll_p", 216000000, true }, 149 { "uartd", "pll_p", 216000000, true },
150
151 { "pll_p_out4", "pll_p", 24000000, true },
152 { "usbd", "clk_m", 12000000, false },
153 { "usb2", "clk_m", 12000000, false },
154 { "usb3", "clk_m", 12000000, false },
155
98 { NULL, NULL, 0, 0}, 156 { NULL, NULL, 0, 0},
99}; 157};
100 158
diff --git a/arch/arm/mach-tegra/board-paz00.h b/arch/arm/mach-tegra/board-paz00.h
index 42ce8639b90..8aff06eb58c 100644
--- a/arch/arm/mach-tegra/board-paz00.h
+++ b/arch/arm/mach-tegra/board-paz00.h
@@ -19,11 +19,19 @@
19 19
20#include <mach/gpio-tegra.h> 20#include <mach/gpio-tegra.h>
21 21
22/* SDCARD */
22#define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV5 23#define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV5
23#define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH1 24#define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH1
24#define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PT3 25#define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PT3
26
27/* ULPI */
25#define TEGRA_ULPI_RST TEGRA_GPIO_PV0 28#define TEGRA_ULPI_RST TEGRA_GPIO_PV0
26 29
30/* WIFI */
31#define TEGRA_WIFI_PWRN TEGRA_GPIO_PK5
32#define TEGRA_WIFI_RST TEGRA_GPIO_PD1
33#define TEGRA_WIFI_LED TEGRA_GPIO_PD0
34
27void paz00_pinmux_init(void); 35void paz00_pinmux_init(void);
28 36
29#endif 37#endif
diff --git a/arch/arm/mach-tegra/board-seaboard-pinmux.c b/arch/arm/mach-tegra/board-seaboard-pinmux.c
index 0bda495e974..74f78b7e3f1 100644
--- a/arch/arm/mach-tegra/board-seaboard-pinmux.c
+++ b/arch/arm/mach-tegra/board-seaboard-pinmux.c
@@ -49,7 +49,7 @@ static __initdata struct tegra_pingroup_config seaboard_pinmux[] = {
49 {TEGRA_PINGROUP_CRTP, TEGRA_MUX_CRT, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE}, 49 {TEGRA_PINGROUP_CRTP, TEGRA_MUX_CRT, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
50 {TEGRA_PINGROUP_CSUS, TEGRA_MUX_VI_SENSOR_CLK, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE}, 50 {TEGRA_PINGROUP_CSUS, TEGRA_MUX_VI_SENSOR_CLK, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
51 {TEGRA_PINGROUP_DAP1, TEGRA_MUX_DAP1, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL}, 51 {TEGRA_PINGROUP_DAP1, TEGRA_MUX_DAP1, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
52 {TEGRA_PINGROUP_DAP2, TEGRA_MUX_DAP2, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE}, 52 {TEGRA_PINGROUP_DAP2, TEGRA_MUX_DAP2, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
53 {TEGRA_PINGROUP_DAP3, TEGRA_MUX_DAP3, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE}, 53 {TEGRA_PINGROUP_DAP3, TEGRA_MUX_DAP3, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
54 {TEGRA_PINGROUP_DAP4, TEGRA_MUX_DAP4, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL}, 54 {TEGRA_PINGROUP_DAP4, TEGRA_MUX_DAP4, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
55 {TEGRA_PINGROUP_DDC, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE}, 55 {TEGRA_PINGROUP_DDC, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
@@ -133,7 +133,7 @@ static __initdata struct tegra_pingroup_config seaboard_pinmux[] = {
133 {TEGRA_PINGROUP_SPDO, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL}, 133 {TEGRA_PINGROUP_SPDO, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
134 {TEGRA_PINGROUP_SPIA, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE}, 134 {TEGRA_PINGROUP_SPIA, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
135 {TEGRA_PINGROUP_SPIB, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE}, 135 {TEGRA_PINGROUP_SPIB, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
136 {TEGRA_PINGROUP_SPIC, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE}, 136 {TEGRA_PINGROUP_SPIC, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
137 {TEGRA_PINGROUP_SPID, TEGRA_MUX_SPI1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE}, 137 {TEGRA_PINGROUP_SPID, TEGRA_MUX_SPI1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
138 {TEGRA_PINGROUP_SPIE, TEGRA_MUX_SPI1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE}, 138 {TEGRA_PINGROUP_SPIE, TEGRA_MUX_SPI1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
139 {TEGRA_PINGROUP_SPIF, TEGRA_MUX_SPI1, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE}, 139 {TEGRA_PINGROUP_SPIF, TEGRA_MUX_SPI1, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
@@ -167,6 +167,8 @@ static struct tegra_gpio_table gpio_table[] = {
167 { .gpio = TEGRA_GPIO_LIDSWITCH, .enable = true }, 167 { .gpio = TEGRA_GPIO_LIDSWITCH, .enable = true },
168 { .gpio = TEGRA_GPIO_POWERKEY, .enable = true }, 168 { .gpio = TEGRA_GPIO_POWERKEY, .enable = true },
169 { .gpio = TEGRA_GPIO_ISL29018_IRQ, .enable = true }, 169 { .gpio = TEGRA_GPIO_ISL29018_IRQ, .enable = true },
170 { .gpio = TEGRA_GPIO_CDC_IRQ, .enable = true },
171 { .gpio = TEGRA_GPIO_USB1, .enable = true },
170}; 172};
171 173
172void __init seaboard_pinmux_init(void) 174void __init seaboard_pinmux_init(void)
diff --git a/arch/arm/mach-tegra/board-seaboard.c b/arch/arm/mach-tegra/board-seaboard.c
index 9e98ac706f4..bf13ea355ef 100644
--- a/arch/arm/mach-tegra/board-seaboard.c
+++ b/arch/arm/mach-tegra/board-seaboard.c
@@ -25,9 +25,12 @@
25#include <linux/gpio.h> 25#include <linux/gpio.h>
26#include <linux/gpio_keys.h> 26#include <linux/gpio_keys.h>
27 27
28#include <sound/wm8903.h>
29
28#include <mach/iomap.h> 30#include <mach/iomap.h>
29#include <mach/irqs.h> 31#include <mach/irqs.h>
30#include <mach/sdhci.h> 32#include <mach/sdhci.h>
33#include <mach/tegra_wm8903_pdata.h>
31 34
32#include <asm/mach-types.h> 35#include <asm/mach-types.h>
33#include <asm/mach/arch.h> 36#include <asm/mach/arch.h>
@@ -41,7 +44,8 @@
41static struct plat_serial8250_port debug_uart_platform_data[] = { 44static struct plat_serial8250_port debug_uart_platform_data[] = {
42 { 45 {
43 /* Memory and IRQ filled in before registration */ 46 /* Memory and IRQ filled in before registration */
44 .flags = UPF_BOOT_AUTOCONF, 47 .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,
48 .type = PORT_TEGRA,
45 .iotype = UPIO_MEM, 49 .iotype = UPIO_MEM,
46 .regshift = 2, 50 .regshift = 2,
47 .uartclk = 216000000, 51 .uartclk = 216000000,
@@ -62,6 +66,12 @@ static __initdata struct tegra_clk_init_table seaboard_clk_init_table[] = {
62 /* name parent rate enabled */ 66 /* name parent rate enabled */
63 { "uartb", "pll_p", 216000000, true}, 67 { "uartb", "pll_p", 216000000, true},
64 { "uartd", "pll_p", 216000000, true}, 68 { "uartd", "pll_p", 216000000, true},
69 { "pll_a", "pll_p_out1", 56448000, true },
70 { "pll_a_out0", "pll_a", 11289600, true },
71 { "cdev1", NULL, 0, true },
72 { "i2s1", "pll_a_out0", 11289600, false},
73 { "usbd", "clk_m", 12000000, true},
74 { "usb3", "clk_m", 12000000, true},
65 { NULL, NULL, 0, 0}, 75 { NULL, NULL, 0, 0},
66}; 76};
67 77
@@ -117,6 +127,22 @@ static struct tegra_sdhci_platform_data sdhci_pdata4 = {
117 .is_8bit = 1, 127 .is_8bit = 1,
118}; 128};
119 129
130static struct tegra_wm8903_platform_data seaboard_audio_pdata = {
131 .gpio_spkr_en = TEGRA_GPIO_SPKR_EN,
132 .gpio_hp_det = TEGRA_GPIO_HP_DET,
133 .gpio_hp_mute = -1,
134 .gpio_int_mic_en = -1,
135 .gpio_ext_mic_en = -1,
136};
137
138static struct platform_device seaboard_audio_device = {
139 .name = "tegra-snd-wm8903",
140 .id = 0,
141 .dev = {
142 .platform_data = &seaboard_audio_pdata,
143 },
144};
145
120static struct platform_device *seaboard_devices[] __initdata = { 146static struct platform_device *seaboard_devices[] __initdata = {
121 &debug_uart, 147 &debug_uart,
122 &tegra_pmu_device, 148 &tegra_pmu_device,
@@ -124,6 +150,10 @@ static struct platform_device *seaboard_devices[] __initdata = {
124 &tegra_sdhci_device3, 150 &tegra_sdhci_device3,
125 &tegra_sdhci_device1, 151 &tegra_sdhci_device1,
126 &seaboard_gpio_keys_device, 152 &seaboard_gpio_keys_device,
153 &tegra_i2s_device1,
154 &tegra_das_device,
155 &tegra_pcm_device,
156 &seaboard_audio_device,
127}; 157};
128 158
129static struct i2c_board_info __initdata isl29018_device = { 159static struct i2c_board_info __initdata isl29018_device = {
@@ -135,12 +165,56 @@ static struct i2c_board_info __initdata adt7461_device = {
135 I2C_BOARD_INFO("adt7461", 0x4c), 165 I2C_BOARD_INFO("adt7461", 0x4c),
136}; 166};
137 167
168static struct wm8903_platform_data wm8903_pdata = {
169 .irq_active_low = 0,
170 .micdet_cfg = 0,
171 .micdet_delay = 100,
172 .gpio_base = SEABOARD_GPIO_WM8903(0),
173 .gpio_cfg = {
174 WM8903_GPIO_NO_CONFIG,
175 WM8903_GPIO_NO_CONFIG,
176 0,
177 WM8903_GPIO_NO_CONFIG,
178 WM8903_GPIO_NO_CONFIG,
179 },
180};
181
182static struct i2c_board_info __initdata wm8903_device = {
183 I2C_BOARD_INFO("wm8903", 0x1a),
184 .platform_data = &wm8903_pdata,
185 .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_CDC_IRQ),
186};
187
188static int seaboard_ehci_init(void)
189{
190 int gpio_status;
191
192 gpio_status = gpio_request(TEGRA_GPIO_USB1, "VBUS_USB1");
193 if (gpio_status < 0) {
194 pr_err("VBUS_USB1 request GPIO FAILED\n");
195 WARN_ON(1);
196 }
197
198 gpio_status = gpio_direction_output(TEGRA_GPIO_USB1, 1);
199 if (gpio_status < 0) {
200 pr_err("VBUS_USB1 request GPIO DIRECTION FAILED\n");
201 WARN_ON(1);
202 }
203 gpio_set_value(TEGRA_GPIO_USB1, 1);
204
205 platform_device_register(&tegra_ehci1_device);
206 platform_device_register(&tegra_ehci3_device);
207
208 return 0;
209}
210
138static void __init seaboard_i2c_init(void) 211static void __init seaboard_i2c_init(void)
139{ 212{
140 gpio_request(TEGRA_GPIO_ISL29018_IRQ, "isl29018"); 213 gpio_request(TEGRA_GPIO_ISL29018_IRQ, "isl29018");
141 gpio_direction_input(TEGRA_GPIO_ISL29018_IRQ); 214 gpio_direction_input(TEGRA_GPIO_ISL29018_IRQ);
142 215
143 i2c_register_board_info(0, &isl29018_device, 1); 216 i2c_register_board_info(0, &isl29018_device, 1);
217 i2c_register_board_info(0, &wm8903_device, 1);
144 218
145 i2c_register_board_info(3, &adt7461_device, 1); 219 i2c_register_board_info(3, &adt7461_device, 1);
146 220
@@ -161,6 +235,8 @@ static void __init seaboard_common_init(void)
161 tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4; 235 tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4;
162 236
163 platform_add_devices(seaboard_devices, ARRAY_SIZE(seaboard_devices)); 237 platform_add_devices(seaboard_devices, ARRAY_SIZE(seaboard_devices));
238
239 seaboard_ehci_init();
164} 240}
165 241
166static void __init tegra_seaboard_init(void) 242static void __init tegra_seaboard_init(void)
@@ -182,6 +258,9 @@ static void __init tegra_kaen_init(void)
182 debug_uart_platform_data[0].mapbase = TEGRA_UARTB_BASE; 258 debug_uart_platform_data[0].mapbase = TEGRA_UARTB_BASE;
183 debug_uart_platform_data[0].irq = INT_UARTB; 259 debug_uart_platform_data[0].irq = INT_UARTB;
184 260
261 seaboard_audio_pdata.gpio_hp_mute = TEGRA_GPIO_KAEN_HP_MUTE;
262 tegra_gpio_enable(TEGRA_GPIO_KAEN_HP_MUTE);
263
185 seaboard_common_init(); 264 seaboard_common_init();
186 265
187 seaboard_i2c_init(); 266 seaboard_i2c_init();
diff --git a/arch/arm/mach-tegra/board-seaboard.h b/arch/arm/mach-tegra/board-seaboard.h
index 15b6c57361b..4c45d4ca3c4 100644
--- a/arch/arm/mach-tegra/board-seaboard.h
+++ b/arch/arm/mach-tegra/board-seaboard.h
@@ -19,6 +19,9 @@
19 19
20#include <mach/gpio-tegra.h> 20#include <mach/gpio-tegra.h>
21 21
22#define SEABOARD_GPIO_TPS6586X(_x_) (TEGRA_NR_GPIOS + (_x_))
23#define SEABOARD_GPIO_WM8903(_x_) (SEABOARD_GPIO_TPS6586X(4) + (_x_))
24
22#define TEGRA_GPIO_SD2_CD TEGRA_GPIO_PI5 25#define TEGRA_GPIO_SD2_CD TEGRA_GPIO_PI5
23#define TEGRA_GPIO_SD2_WP TEGRA_GPIO_PH1 26#define TEGRA_GPIO_SD2_WP TEGRA_GPIO_PH1
24#define TEGRA_GPIO_SD2_POWER TEGRA_GPIO_PI6 27#define TEGRA_GPIO_SD2_POWER TEGRA_GPIO_PI6
@@ -33,10 +36,11 @@
33#define TEGRA_GPIO_MAGNETOMETER TEGRA_GPIO_PN5 36#define TEGRA_GPIO_MAGNETOMETER TEGRA_GPIO_PN5
34#define TEGRA_GPIO_ISL29018_IRQ TEGRA_GPIO_PZ2 37#define TEGRA_GPIO_ISL29018_IRQ TEGRA_GPIO_PZ2
35#define TEGRA_GPIO_AC_ONLINE TEGRA_GPIO_PV3 38#define TEGRA_GPIO_AC_ONLINE TEGRA_GPIO_PV3
36 39#define TEGRA_GPIO_WWAN_PWR SEABOARD_GPIO_TPS6586X(2)
37#define TPS_GPIO_BASE TEGRA_NR_GPIOS 40#define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PX3
38 41#define TEGRA_GPIO_SPKR_EN SEABOARD_GPIO_WM8903(2)
39#define TPS_GPIO_WWAN_PWR (TPS_GPIO_BASE + 2) 42#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PX1
43#define TEGRA_GPIO_KAEN_HP_MUTE TEGRA_GPIO_PA5
40 44
41void seaboard_pinmux_init(void); 45void seaboard_pinmux_init(void);
42 46
diff --git a/arch/arm/mach-tegra/board-trimslice.c b/arch/arm/mach-tegra/board-trimslice.c
index e3d9ec2f0fe..1a6617b7806 100644
--- a/arch/arm/mach-tegra/board-trimslice.c
+++ b/arch/arm/mach-tegra/board-trimslice.c
@@ -32,7 +32,6 @@
32 32
33#include <mach/iomap.h> 33#include <mach/iomap.h>
34#include <mach/sdhci.h> 34#include <mach/sdhci.h>
35#include <mach/gpio.h>
36 35
37#include "board.h" 36#include "board.h"
38#include "clock.h" 37#include "clock.h"
@@ -46,7 +45,8 @@ static struct plat_serial8250_port debug_uart_platform_data[] = {
46 .membase = IO_ADDRESS(TEGRA_UARTA_BASE), 45 .membase = IO_ADDRESS(TEGRA_UARTA_BASE),
47 .mapbase = TEGRA_UARTA_BASE, 46 .mapbase = TEGRA_UARTA_BASE,
48 .irq = INT_UARTA, 47 .irq = INT_UARTA,
49 .flags = UPF_BOOT_AUTOCONF, 48 .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,
49 .type = PORT_TEGRA,
50 .iotype = UPIO_MEM, 50 .iotype = UPIO_MEM,
51 .regshift = 2, 51 .regshift = 2,
52 .uartclk = 216000000, 52 .uartclk = 216000000,