--- a/arch/mips/ath79/Kconfig +++ b/arch/mips/ath79/Kconfig @@ -70,9 +70,10 @@ config ATH79_MACH_PB44 config ATH79_MACH_UBNT_XM bool "Ubiquiti Networks XM (rev 1.0) board" select SOC_AR724X + select ATH79_DEV_AP9X_PCI if PCI select ATH79_DEV_GPIO_BUTTONS select ATH79_DEV_LEDS_GPIO - select ATH79_DEV_SPI + select ATH79_DEV_M25P80 help Say 'Y' here if you want your kernel to support the Ubiquiti Networks XM (rev 1.0) board. --- a/arch/mips/ath79/mach-ubnt-xm.c +++ b/arch/mips/ath79/mach-ubnt-xm.c @@ -16,10 +16,11 @@ #include -#include "machtypes.h" +#include "dev-ap9x-pci.h" #include "dev-gpio-buttons.h" #include "dev-leds-gpio.h" -#include "dev-spi.h" +#include "dev-m25p80.h" +#include "machtypes.h" #include "pci.h" #define UBNT_XM_GPIO_LED_L1 0 @@ -32,7 +33,7 @@ #define UBNT_XM_KEYS_POLL_INTERVAL 20 #define UBNT_XM_KEYS_DEBOUNCE_INTERVAL (3 * UBNT_XM_KEYS_POLL_INTERVAL) -#define UBNT_XM_EEPROM_ADDR (u8 *) KSEG1ADDR(0x1fff1000) +#define UBNT_XM_EEPROM_ADDR 0x1fff1000 static struct gpio_led ubnt_xm_leds_gpio[] __initdata = { { @@ -65,54 +66,10 @@ static struct gpio_keys_button ubnt_xm_g } }; -static struct ath79_spi_controller_data ubnt_xm_spi0_data = { - .cs_type = ATH79_SPI_CS_TYPE_INTERNAL, - .cs_line = 0, -}; - -static struct spi_board_info ubnt_xm_spi_info[] = { - { - .bus_num = 0, - .chip_select = 0, - .max_speed_hz = 25000000, - .modalias = "mx25l6405d", - .controller_data = &ubnt_xm_spi0_data, - } -}; - -static struct ath79_spi_platform_data ubnt_xm_spi_data = { - .bus_num = 0, - .num_chipselect = 1, -}; - -#ifdef CONFIG_PCI -static struct ath9k_platform_data ubnt_xm_eeprom_data; - -static int ubnt_xm_pci_plat_dev_init(struct pci_dev *dev) -{ - switch (PCI_SLOT(dev->devfn)) { - case 0: - dev->dev.platform_data = &ubnt_xm_eeprom_data; - break; - } - - return 0; -} - -static void __init ubnt_xm_pci_init(void) -{ - memcpy(ubnt_xm_eeprom_data.eeprom_data, UBNT_XM_EEPROM_ADDR, - sizeof(ubnt_xm_eeprom_data.eeprom_data)); - - ath79_pci_set_plat_dev_init(ubnt_xm_pci_plat_dev_init); - ath79_register_pci(); -} -#else -static inline void ubnt_xm_pci_init(void) {} -#endif /* CONFIG_PCI */ - static void __init ubnt_xm_init(void) { + u8 *eeprom = (u8 *) KSEG1ADDR(UBNT_XM_EEPROM_ADDR); + ath79_register_leds_gpio(-1, ARRAY_SIZE(ubnt_xm_leds_gpio), ubnt_xm_leds_gpio); @@ -120,10 +77,8 @@ static void __init ubnt_xm_init(void) ARRAY_SIZE(ubnt_xm_gpio_keys), ubnt_xm_gpio_keys); - ath79_register_spi(&ubnt_xm_spi_data, ubnt_xm_spi_info, - ARRAY_SIZE(ubnt_xm_spi_info)); - - ubnt_xm_pci_init(); + ath79_register_m25p80(NULL); + ap91_pci_init(eeprom, NULL); } MIPS_MACHINE(ATH79_MACH_UBNT_XM,