603-MIPS-ath79-ap121-fixes.patch 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. --- a/arch/mips/ath79/mach-ap121.c
  2. +++ b/arch/mips/ath79/mach-ap121.c
  3. @@ -1,19 +1,21 @@
  4. /*
  5. * Atheros AP121 board support
  6. *
  7. - * Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
  8. + * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
  9. *
  10. * This program is free software; you can redistribute it and/or modify it
  11. * under the terms of the GNU General Public License version 2 as published
  12. * by the Free Software Foundation.
  13. */
  14. -#include "machtypes.h"
  15. +#include "dev-eth.h"
  16. #include "dev-gpio-buttons.h"
  17. #include "dev-leds-gpio.h"
  18. +#include "dev-m25p80.h"
  19. #include "dev-spi.h"
  20. #include "dev-usb.h"
  21. #include "dev-wmac.h"
  22. +#include "machtypes.h"
  23. #define AP121_GPIO_LED_WLAN 0
  24. #define AP121_GPIO_LED_USB 1
  25. @@ -24,7 +26,14 @@
  26. #define AP121_KEYS_POLL_INTERVAL 20 /* msecs */
  27. #define AP121_KEYS_DEBOUNCE_INTERVAL (3 * AP121_KEYS_POLL_INTERVAL)
  28. -#define AP121_CAL_DATA_ADDR 0x1fff1000
  29. +#define AP121_MAC0_OFFSET 0x0000
  30. +#define AP121_MAC1_OFFSET 0x0006
  31. +#define AP121_CALDATA_OFFSET 0x1000
  32. +#define AP121_WMAC_MAC_OFFSET 0x1002
  33. +
  34. +#define AP121_MINI_GPIO_LED_WLAN 0
  35. +#define AP121_MINI_GPIO_BTN_JUMPSTART 12
  36. +#define AP121_MINI_GPIO_BTN_RESET 11
  37. static struct gpio_led ap121_leds_gpio[] __initdata = {
  38. {
  39. @@ -58,35 +67,78 @@ static struct gpio_keys_button ap121_gpi
  40. }
  41. };
  42. -static struct spi_board_info ap121_spi_info[] = {
  43. +static struct gpio_led ap121_mini_leds_gpio[] __initdata = {
  44. {
  45. - .bus_num = 0,
  46. - .chip_select = 0,
  47. - .max_speed_hz = 25000000,
  48. - .modalias = "mx25l1606e",
  49. - }
  50. + .name = "ap121:green:wlan",
  51. + .gpio = AP121_MINI_GPIO_LED_WLAN,
  52. + .active_low = 0,
  53. + },
  54. };
  55. -static struct ath79_spi_platform_data ap121_spi_data = {
  56. - .bus_num = 0,
  57. - .num_chipselect = 1,
  58. +static struct gpio_keys_button ap121_mini_gpio_keys[] __initdata = {
  59. + {
  60. + .desc = "jumpstart button",
  61. + .type = EV_KEY,
  62. + .code = KEY_WPS_BUTTON,
  63. + .debounce_interval = AP121_KEYS_DEBOUNCE_INTERVAL,
  64. + .gpio = AP121_MINI_GPIO_BTN_JUMPSTART,
  65. + .active_low = 1,
  66. + },
  67. + {
  68. + .desc = "reset button",
  69. + .type = EV_KEY,
  70. + .code = KEY_RESTART,
  71. + .debounce_interval = AP121_KEYS_DEBOUNCE_INTERVAL,
  72. + .gpio = AP121_MINI_GPIO_BTN_RESET,
  73. + .active_low = 1,
  74. + }
  75. };
  76. +static void __init ap121_common_setup(void)
  77. +{
  78. + u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
  79. +
  80. + ath79_register_m25p80(NULL);
  81. + ath79_register_wmac(art + AP121_CALDATA_OFFSET,
  82. + art + AP121_WMAC_MAC_OFFSET);
  83. +
  84. + ath79_init_mac(ath79_eth0_data.mac_addr, art + AP121_MAC0_OFFSET, 0);
  85. + ath79_init_mac(ath79_eth1_data.mac_addr, art + AP121_MAC1_OFFSET, 0);
  86. +
  87. + ath79_register_mdio(0, 0x0);
  88. +
  89. + /* LAN ports */
  90. + ath79_register_eth(1);
  91. +
  92. + /* WAN port */
  93. + ath79_register_eth(0);
  94. +}
  95. +
  96. static void __init ap121_setup(void)
  97. {
  98. - u8 *cal_data = (u8 *) KSEG1ADDR(AP121_CAL_DATA_ADDR);
  99. + ap121_common_setup();
  100. ath79_register_leds_gpio(-1, ARRAY_SIZE(ap121_leds_gpio),
  101. ap121_leds_gpio);
  102. ath79_register_gpio_keys_polled(-1, AP121_KEYS_POLL_INTERVAL,
  103. ARRAY_SIZE(ap121_gpio_keys),
  104. ap121_gpio_keys);
  105. -
  106. - ath79_register_spi(&ap121_spi_data, ap121_spi_info,
  107. - ARRAY_SIZE(ap121_spi_info));
  108. ath79_register_usb();
  109. - ath79_register_wmac(cal_data, NULL);
  110. }
  111. MIPS_MACHINE(ATH79_MACH_AP121, "AP121", "Atheros AP121 reference board",
  112. ap121_setup);
  113. +
  114. +static void __init ap121_mini_setup(void)
  115. +{
  116. + ap121_common_setup();
  117. +
  118. + ath79_register_leds_gpio(-1, ARRAY_SIZE(ap121_mini_leds_gpio),
  119. + ap121_mini_leds_gpio);
  120. + ath79_register_gpio_keys_polled(-1, AP121_KEYS_POLL_INTERVAL,
  121. + ARRAY_SIZE(ap121_mini_gpio_keys),
  122. + ap121_mini_gpio_keys);
  123. +}
  124. +
  125. +MIPS_MACHINE(ATH79_MACH_AP121_MINI, "AP121-MINI", "Atheros AP121-MINI",
  126. + ap121_mini_setup);
  127. --- a/arch/mips/ath79/Kconfig
  128. +++ b/arch/mips/ath79/Kconfig
  129. @@ -5,9 +5,10 @@ menu "Atheros AR71XX/AR724X/AR913X machi
  130. config ATH79_MACH_AP121
  131. bool "Atheros AP121 reference board"
  132. select SOC_AR933X
  133. + select ATH79_DEV_ETH
  134. select ATH79_DEV_GPIO_BUTTONS
  135. select ATH79_DEV_LEDS_GPIO
  136. - select ATH79_DEV_SPI
  137. + select ATH79_DEV_M25P80
  138. select ATH79_DEV_USB
  139. select ATH79_DEV_WMAC
  140. help
  141. --- a/arch/mips/ath79/machtypes.h
  142. +++ b/arch/mips/ath79/machtypes.h
  143. @@ -17,6 +17,7 @@
  144. enum ath79_mach_type {
  145. ATH79_MACH_GENERIC = 0,
  146. ATH79_MACH_AP121, /* Atheros AP121 reference board */
  147. + ATH79_MACH_AP121_MINI, /* Atheros AP121-MINI reference board */
  148. ATH79_MACH_AP136_010, /* Atheros AP136-010 reference board */
  149. ATH79_MACH_AP81, /* Atheros AP81 reference board */
  150. ATH79_MACH_DB120, /* Atheros DB120 reference board */