aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2013-05-17 13:45:10 -0400
committerTony Lindgren <tony@atomide.com>2013-05-30 15:53:58 -0400
commit26f45c29e3c18c6f41a6bf64c791a5dcbd239683 (patch)
tree3312f6be12b45c73aca37db40920b23b442e5b5f /arch/arm
parente4aa937ec75df0eea0bee03bffa3303ad36c986b (diff)
ARM: OMAP2+: Legacy support for wl12xx when booted with devicetree
Without WLAN we cannot switch omap4 to use device tree only booting. This patch can be reverted when the binding for wl12xx is added. Cc: Benoit Cousson <b-cousson@ti.com> Cc: Rajendra Nayak <rnayak@ti.com> Cc: devicetree-discuss@lists.ozlabs.org Tested-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-omap2/devices.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 4269fc145698..d428b95bd137 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -15,12 +15,14 @@
15#include <linux/io.h> 15#include <linux/io.h>
16#include <linux/clk.h> 16#include <linux/clk.h>
17#include <linux/err.h> 17#include <linux/err.h>
18#include <linux/gpio.h>
18#include <linux/slab.h> 19#include <linux/slab.h>
19#include <linux/of.h> 20#include <linux/of.h>
20#include <linux/pinctrl/machine.h> 21#include <linux/pinctrl/machine.h>
21#include <linux/platform_data/omap4-keypad.h> 22#include <linux/platform_data/omap4-keypad.h>
22#include <linux/platform_data/omap_ocp2scp.h> 23#include <linux/platform_data/omap_ocp2scp.h>
23#include <linux/usb/omap_control_usb.h> 24#include <linux/usb/omap_control_usb.h>
25#include <linux/wl12xx.h>
24 26
25#include <asm/mach-types.h> 27#include <asm/mach-types.h>
26#include <asm/mach/map.h> 28#include <asm/mach/map.h>
@@ -633,6 +635,40 @@ static void __init omap_init_ocp2scp(void)
633static inline void omap_init_ocp2scp(void) { } 635static inline void omap_init_ocp2scp(void) { }
634#endif 636#endif
635 637
638#if IS_ENABLED(CONFIG_WL12XX)
639
640static struct wl12xx_platform_data wl12xx __initdata;
641
642void __init omap_init_wl12xx_of(void)
643{
644 int ret;
645
646 if (!of_have_populated_dt())
647 return;
648
649 if (of_machine_is_compatible("ti,omap4-sdp")) {
650 wl12xx.board_ref_clock = WL12XX_REFCLOCK_26;
651 wl12xx.board_tcxo_clock = WL12XX_TCXOCLOCK_26;
652 wl12xx.irq = gpio_to_irq(53);
653 } else if (of_machine_is_compatible("ti,omap4-panda")) {
654 wl12xx.board_ref_clock = WL12XX_REFCLOCK_38;
655 wl12xx.irq = gpio_to_irq(53);
656 } else {
657 return;
658 }
659
660 ret = wl12xx_set_platform_data(&wl12xx);
661 if (ret) {
662 pr_err("error setting wl12xx data: %d\n", ret);
663 return;
664 }
665}
666#else
667static inline void omap_init_wl12xx_of(void)
668{
669}
670#endif
671
636/*-------------------------------------------------------------------------*/ 672/*-------------------------------------------------------------------------*/
637 673
638static int __init omap2_init_devices(void) 674static int __init omap2_init_devices(void)
@@ -657,6 +693,9 @@ static int __init omap2_init_devices(void)
657 omap_init_mcspi(); 693 omap_init_mcspi();
658 omap_init_sham(); 694 omap_init_sham();
659 omap_init_aes(); 695 omap_init_aes();
696 } else {
697 /* These can be removed when bindings are done */
698 omap_init_wl12xx_of();
660 } 699 }
661 omap_init_sti(); 700 omap_init_sti();
662 omap_init_rng(); 701 omap_init_rng();