1/* 2 * Atheros AP121 board support 3 * 4 * Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org> 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License version 2 as published 8 * by the Free Software Foundation. 9 */ 10 11#include "machtypes.h" 12#include "dev-gpio-buttons.h" 13#include "dev-leds-gpio.h" 14#include "dev-spi.h" 15#include "dev-usb.h" 16#include "dev-wmac.h" 17 18#define AP121_GPIO_LED_WLAN 0 19#define AP121_GPIO_LED_USB 1 20 21#define AP121_GPIO_BTN_JUMPSTART 11 22#define AP121_GPIO_BTN_RESET 12 23 24#define AP121_KEYS_POLL_INTERVAL 20 /* msecs */ 25#define AP121_KEYS_DEBOUNCE_INTERVAL (3 * AP121_KEYS_POLL_INTERVAL) 26 27#define AP121_CAL_DATA_ADDR 0x1fff1000 28 29static struct gpio_led ap121_leds_gpio[] __initdata = { 30 { 31 .name = "ap121:green:usb", 32 .gpio = AP121_GPIO_LED_USB, 33 .active_low = 0, 34 }, 35 { 36 .name = "ap121:green:wlan", 37 .gpio = AP121_GPIO_LED_WLAN, 38 .active_low = 0, 39 }, 40}; 41 42static struct gpio_keys_button ap121_gpio_keys[] __initdata = { 43 { 44 .desc = "jumpstart button", 45 .type = EV_KEY, 46 .code = KEY_WPS_BUTTON, 47 .debounce_interval = AP121_KEYS_DEBOUNCE_INTERVAL, 48 .gpio = AP121_GPIO_BTN_JUMPSTART, 49 .active_low = 1, 50 }, 51 { 52 .desc = "reset button", 53 .type = EV_KEY, 54 .code = KEY_RESTART, 55 .debounce_interval = AP121_KEYS_DEBOUNCE_INTERVAL, 56 .gpio = AP121_GPIO_BTN_RESET, 57 .active_low = 1, 58 } 59}; 60 61static struct spi_board_info ap121_spi_info[] = { 62 { 63 .bus_num = 0, 64 .chip_select = 0, 65 .max_speed_hz = 25000000, 66 .modalias = "mx25l1606e", 67 } 68}; 69 70static struct ath79_spi_platform_data ap121_spi_data = { 71 .bus_num = 0, 72 .num_chipselect = 1, 73}; 74 75static void __init ap121_setup(void) 76{ 77 u8 *cal_data = (u8 *) KSEG1ADDR(AP121_CAL_DATA_ADDR); 78 79 ath79_register_leds_gpio(-1, ARRAY_SIZE(ap121_leds_gpio), 80 ap121_leds_gpio); 81 ath79_register_gpio_keys_polled(-1, AP121_KEYS_POLL_INTERVAL, 82 ARRAY_SIZE(ap121_gpio_keys), 83 ap121_gpio_keys); 84 85 ath79_register_spi(&ap121_spi_data, ap121_spi_info, 86 ARRAY_SIZE(ap121_spi_info)); 87 ath79_register_usb(); 88 ath79_register_wmac(cal_data); 89} 90 91MIPS_MACHINE(ATH79_MACH_AP121, "AP121", "Atheros AP121 reference board", 92 ap121_setup); 93