MIPS: ath79: Add initial support for the Atheros AP81 reference board

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
Cc: linux-mips@linux-mips.org
Cc: Luis R. Rodriguez <lrodriguez@atheros.com>
Cc: Cliff Holden <Cliff.Holden@Atheros.com>
Cc: Kathy Giori <Kathy.Giori@Atheros.com>
Patchwork: https://patchwork.linux-mips.org/patch/1952/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

authored by Gabor Juhos and committed by Ralf Baechle aa6695ec 68a1d316

+104
+10
arch/mips/ath79/Kconfig
··· 2 2 3 3 menu "Atheros AR71XX/AR724X/AR913X machine selection" 4 4 5 + config ATH79_MACH_AP81 6 + bool "Atheros AP81 reference board" 7 + select SOC_AR913X 8 + select ATH79_DEV_GPIO_BUTTONS 9 + select ATH79_DEV_LEDS_GPIO 10 + select ATH79_DEV_SPI 11 + help 12 + Say 'Y' here if you want your kernel to support the 13 + Atheros AP81 reference board. 14 + 5 15 config ATH79_MACH_PB44 6 16 bool "Atheros PB44 reference board" 7 17 select SOC_AR71XX
+1
arch/mips/ath79/Makefile
··· 23 23 # 24 24 # Machines 25 25 # 26 + obj-$(CONFIG_ATH79_MACH_AP81) += mach-ap81.o 26 27 obj-$(CONFIG_ATH79_MACH_PB44) += mach-pb44.o
+92
arch/mips/ath79/mach-ap81.c
··· 1 + /* 2 + * Atheros AP81 board support 3 + * 4 + * Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org> 5 + * Copyright (C) 2009 Imre Kaloz <kaloz@openwrt.org> 6 + * 7 + * This program is free software; you can redistribute it and/or modify it 8 + * under the terms of the GNU General Public License version 2 as published 9 + * by the Free Software Foundation. 10 + */ 11 + 12 + #include "machtypes.h" 13 + #include "dev-gpio-buttons.h" 14 + #include "dev-leds-gpio.h" 15 + #include "dev-spi.h" 16 + 17 + #define AP81_GPIO_LED_STATUS 1 18 + #define AP81_GPIO_LED_AOSS 3 19 + #define AP81_GPIO_LED_WLAN 6 20 + #define AP81_GPIO_LED_POWER 14 21 + 22 + #define AP81_GPIO_BTN_SW4 12 23 + #define AP81_GPIO_BTN_SW1 21 24 + 25 + #define AP81_KEYS_POLL_INTERVAL 20 /* msecs */ 26 + #define AP81_KEYS_DEBOUNCE_INTERVAL (3 * AP81_KEYS_POLL_INTERVAL) 27 + 28 + static struct gpio_led ap81_leds_gpio[] __initdata = { 29 + { 30 + .name = "ap81:green:status", 31 + .gpio = AP81_GPIO_LED_STATUS, 32 + .active_low = 1, 33 + }, { 34 + .name = "ap81:amber:aoss", 35 + .gpio = AP81_GPIO_LED_AOSS, 36 + .active_low = 1, 37 + }, { 38 + .name = "ap81:green:wlan", 39 + .gpio = AP81_GPIO_LED_WLAN, 40 + .active_low = 1, 41 + }, { 42 + .name = "ap81:green:power", 43 + .gpio = AP81_GPIO_LED_POWER, 44 + .active_low = 1, 45 + } 46 + }; 47 + 48 + static struct gpio_keys_button ap81_gpio_keys[] __initdata = { 49 + { 50 + .desc = "sw1", 51 + .type = EV_KEY, 52 + .code = BTN_0, 53 + .debounce_interval = AP81_KEYS_DEBOUNCE_INTERVAL, 54 + .gpio = AP81_GPIO_BTN_SW1, 55 + .active_low = 1, 56 + } , { 57 + .desc = "sw4", 58 + .type = EV_KEY, 59 + .code = BTN_1, 60 + .debounce_interval = AP81_KEYS_DEBOUNCE_INTERVAL, 61 + .gpio = AP81_GPIO_BTN_SW4, 62 + .active_low = 1, 63 + } 64 + }; 65 + 66 + static struct spi_board_info ap81_spi_info[] = { 67 + { 68 + .bus_num = 0, 69 + .chip_select = 0, 70 + .max_speed_hz = 25000000, 71 + .modalias = "m25p64", 72 + } 73 + }; 74 + 75 + static struct ath79_spi_platform_data ap81_spi_data = { 76 + .bus_num = 0, 77 + .num_chipselect = 1, 78 + }; 79 + 80 + static void __init ap81_setup(void) 81 + { 82 + ath79_register_leds_gpio(-1, ARRAY_SIZE(ap81_leds_gpio), 83 + ap81_leds_gpio); 84 + ath79_register_gpio_keys_polled(-1, AP81_KEYS_POLL_INTERVAL, 85 + ARRAY_SIZE(ap81_gpio_keys), 86 + ap81_gpio_keys); 87 + ath79_register_spi(&ap81_spi_data, ap81_spi_info, 88 + ARRAY_SIZE(ap81_spi_info)); 89 + } 90 + 91 + MIPS_MACHINE(ATH79_MACH_AP81, "AP81", "Atheros AP81 reference board", 92 + ap81_setup);
+1
arch/mips/ath79/machtypes.h
··· 16 16 17 17 enum ath79_mach_type { 18 18 ATH79_MACH_GENERIC = 0, 19 + ATH79_MACH_AP81, /* Atheros AP81 reference board */ 19 20 ATH79_MACH_PB44, /* Atheros PB44 reference board */ 20 21 }; 21 22