aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-05-02 18:05:44 -0400
committerStephen Warren <swarren@nvidia.com>2012-06-20 14:37:42 -0400
commitb64a02c6fa184405ac2de0ea048be2f342144a08 (patch)
tree710f1c477a67b63eac0399d4667b1d5fe9bdf82d /arch/arm
parenta12c0efc7a3f433377add0fa1fd0ed4836cc595e (diff)
ARM: tegra: paz00: enable WiFi rfkill when booting from device tree
There currently aren't bindings for a WiFi rfkill button, and defining a good binding is non-trivial. Manually register this "device" when booting from device tree, in order to bring DT support to the same feature level as board files, which will in turn allow board files to be deprecated. Signed-off-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-tegra/board-dt-tegra20.c10
-rw-r--r--arch/arm/mach-tegra/board-paz00.c7
-rw-r--r--arch/arm/mach-tegra/board.h2
3 files changed, 18 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/board-dt-tegra20.c b/arch/arm/mach-tegra/board-dt-tegra20.c
index 777138611c77..8b4e6e1f0f7b 100644
--- a/arch/arm/mach-tegra/board-dt-tegra20.c
+++ b/arch/arm/mach-tegra/board-dt-tegra20.c
@@ -126,6 +126,13 @@ static void __init harmony_init(void)
126} 126}
127#endif 127#endif
128 128
129#ifdef CONFIG_MACH_PAZ00
130static void __init paz00_init(void)
131{
132 tegra_paz00_wifikill_init();
133}
134#endif
135
129static struct { 136static struct {
130 char *machine; 137 char *machine;
131 void (*init)(void); 138 void (*init)(void);
@@ -136,6 +143,9 @@ static struct {
136#ifdef CONFIG_MACH_HARMONY 143#ifdef CONFIG_MACH_HARMONY
137 { "nvidia,harmony", harmony_init }, 144 { "nvidia,harmony", harmony_init },
138#endif 145#endif
146#ifdef CONFIG_MACH_PAZ00
147 { "compal,paz00", paz00_init },
148#endif
139}; 149};
140 150
141static void __init tegra_dt_init_late(void) 151static void __init tegra_dt_init_late(void)
diff --git a/arch/arm/mach-tegra/board-paz00.c b/arch/arm/mach-tegra/board-paz00.c
index bbc1907e98a6..4b64af5cab27 100644
--- a/arch/arm/mach-tegra/board-paz00.c
+++ b/arch/arm/mach-tegra/board-paz00.c
@@ -148,7 +148,6 @@ static struct platform_device *paz00_devices[] __initdata = {
148 &debug_uart, 148 &debug_uart,
149 &tegra_sdhci_device4, 149 &tegra_sdhci_device4,
150 &tegra_sdhci_device1, 150 &tegra_sdhci_device1,
151 &wifi_rfkill_device,
152 &leds_gpio, 151 &leds_gpio,
153 &gpio_keys_device, 152 &gpio_keys_device,
154}; 153};
@@ -201,6 +200,11 @@ static struct tegra_sdhci_platform_data sdhci_pdata4 = {
201 .is_8bit = 1, 200 .is_8bit = 1,
202}; 201};
203 202
203void __init tegra_paz00_wifikill_init(void)
204{
205 platform_device_register(&wifi_rfkill_device);
206}
207
204static void __init tegra_paz00_init(void) 208static void __init tegra_paz00_init(void)
205{ 209{
206 tegra_clk_init_from_table(paz00_clk_init_table); 210 tegra_clk_init_from_table(paz00_clk_init_table);
@@ -211,6 +215,7 @@ static void __init tegra_paz00_init(void)
211 tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4; 215 tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4;
212 216
213 platform_add_devices(paz00_devices, ARRAY_SIZE(paz00_devices)); 217 platform_add_devices(paz00_devices, ARRAY_SIZE(paz00_devices));
218 tegra_paz00_wifikill_init();
214 219
215 paz00_i2c_init(); 220 paz00_i2c_init();
216 paz00_usb_init(); 221 paz00_usb_init();
diff --git a/arch/arm/mach-tegra/board.h b/arch/arm/mach-tegra/board.h
index 097e0e16eacd..f88e5143c767 100644
--- a/arch/arm/mach-tegra/board.h
+++ b/arch/arm/mach-tegra/board.h
@@ -53,5 +53,7 @@ int __init harmony_pcie_init(void);
53static inline int harmony_pcie_init(void) { return 0; } 53static inline int harmony_pcie_init(void) { return 0; }
54#endif 54#endif
55 55
56void __init tegra_paz00_wifikill_init(void);
57
56extern struct sys_timer tegra_timer; 58extern struct sys_timer tegra_timer;
57#endif 59#endif