Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.3-rc7 119 lines 2.8 kB view raw
1/* 2 * Ubiquiti Networks XM (rev 1.0) board support 3 * 4 * Copyright (C) 2011 René Bolldorf <xsecute@googlemail.com> 5 * 6 * Derived from: mach-pb44.c 7 * 8 * This program is free software; you can redistribute it and/or modify it 9 * under the terms of the GNU General Public License version 2 as published 10 * by the Free Software Foundation. 11 */ 12 13#include <linux/init.h> 14#include <linux/pci.h> 15 16#ifdef CONFIG_PCI 17#include <linux/ath9k_platform.h> 18#include <asm/mach-ath79/pci-ath724x.h> 19#endif /* CONFIG_PCI */ 20 21#include "machtypes.h" 22#include "dev-gpio-buttons.h" 23#include "dev-leds-gpio.h" 24#include "dev-spi.h" 25 26#define UBNT_XM_GPIO_LED_L1 0 27#define UBNT_XM_GPIO_LED_L2 1 28#define UBNT_XM_GPIO_LED_L3 11 29#define UBNT_XM_GPIO_LED_L4 7 30 31#define UBNT_XM_GPIO_BTN_RESET 12 32 33#define UBNT_XM_KEYS_POLL_INTERVAL 20 34#define UBNT_XM_KEYS_DEBOUNCE_INTERVAL (3 * UBNT_XM_KEYS_POLL_INTERVAL) 35 36#define UBNT_XM_PCI_IRQ 48 37#define UBNT_XM_EEPROM_ADDR (u8 *) KSEG1ADDR(0x1fff1000) 38 39static struct gpio_led ubnt_xm_leds_gpio[] __initdata = { 40 { 41 .name = "ubnt-xm:red:link1", 42 .gpio = UBNT_XM_GPIO_LED_L1, 43 .active_low = 0, 44 }, { 45 .name = "ubnt-xm:orange:link2", 46 .gpio = UBNT_XM_GPIO_LED_L2, 47 .active_low = 0, 48 }, { 49 .name = "ubnt-xm:green:link3", 50 .gpio = UBNT_XM_GPIO_LED_L3, 51 .active_low = 0, 52 }, { 53 .name = "ubnt-xm:green:link4", 54 .gpio = UBNT_XM_GPIO_LED_L4, 55 .active_low = 0, 56 }, 57}; 58 59static struct gpio_keys_button ubnt_xm_gpio_keys[] __initdata = { 60 { 61 .desc = "reset", 62 .type = EV_KEY, 63 .code = KEY_RESTART, 64 .debounce_interval = UBNT_XM_KEYS_DEBOUNCE_INTERVAL, 65 .gpio = UBNT_XM_GPIO_BTN_RESET, 66 .active_low = 1, 67 } 68}; 69 70static struct spi_board_info ubnt_xm_spi_info[] = { 71 { 72 .bus_num = 0, 73 .chip_select = 0, 74 .max_speed_hz = 25000000, 75 .modalias = "mx25l6405d", 76 } 77}; 78 79static struct ath79_spi_platform_data ubnt_xm_spi_data = { 80 .bus_num = 0, 81 .num_chipselect = 1, 82}; 83 84#ifdef CONFIG_PCI 85static struct ath9k_platform_data ubnt_xm_eeprom_data; 86 87static struct ath724x_pci_data ubnt_xm_pci_data[] = { 88 { 89 .irq = UBNT_XM_PCI_IRQ, 90 .pdata = &ubnt_xm_eeprom_data, 91 }, 92}; 93#endif /* CONFIG_PCI */ 94 95static void __init ubnt_xm_init(void) 96{ 97 ath79_register_leds_gpio(-1, ARRAY_SIZE(ubnt_xm_leds_gpio), 98 ubnt_xm_leds_gpio); 99 100 ath79_register_gpio_keys_polled(-1, UBNT_XM_KEYS_POLL_INTERVAL, 101 ARRAY_SIZE(ubnt_xm_gpio_keys), 102 ubnt_xm_gpio_keys); 103 104 ath79_register_spi(&ubnt_xm_spi_data, ubnt_xm_spi_info, 105 ARRAY_SIZE(ubnt_xm_spi_info)); 106 107#ifdef CONFIG_PCI 108 memcpy(ubnt_xm_eeprom_data.eeprom_data, UBNT_XM_EEPROM_ADDR, 109 sizeof(ubnt_xm_eeprom_data.eeprom_data)); 110 111 ath724x_pci_add_data(ubnt_xm_pci_data, ARRAY_SIZE(ubnt_xm_pci_data)); 112#endif /* CONFIG_PCI */ 113 114} 115 116MIPS_MACHINE(ATH79_MACH_UBNT_XM, 117 "UBNT-XM", 118 "Ubiquiti Networks XM (rev 1.0) board", 119 ubnt_xm_init);