找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 5026|回复: 6

wnr2200刷openwrt,已有patch

[复制链接]
发表于 2013-8-31 12:35 | 显示全部楼层 |阅读模式
This patch adds OpenWRT support for the Netgear WNR2200 (N300)
wireless router with USB.

Technical details of this router can be found at
http://www.netgear.com/home/prod ... d-play/WNR2200.aspx
and http://wikidevi.com/wiki/Netgear_WNR2200

The patch includes a new ar71xx/files/arch/mips/ath79/mach-wnr2200.c
file and corresponding updates to the base-files/etc/diag.sh,
base-files/etc/uci-defaults/02_network,
ar71xx/base-files/lib/ar71xx.sh, ar71xx/config-3.10,
ar71xx/generic/profiles/netgear.mk and ar71xx/image/Makefile files.
  1. diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-wnr2200.c
  2. b/target/linux/ar71xx/files/arch/mips/ath79/mach-wnr2200.c
  3. new file mode 100644
  4. index 0000000..5126d3f
  5. --- /dev/null
  6. +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-wnr2200.c
  7. @@ -0,0 +1,170 @@
  8. +/*
  9. + *  NETGEAR WNR2200 board support
  10. + *
  11. + *  Copyright (C) 2013 Aidan Kissane <aidankissane@googlemail.com>
  12. + *
  13. + *  This program is free software; you can redistribute it and/or modify it
  14. + *  under the terms of the GNU General Public License version 2 as published
  15. + *  by the Free Software Foundation.
  16. + */
  17. +
  18. +#include <linux/mtd/mtd.h>
  19. +#include <linux/mtd/partitions.h>
  20. +
  21. +#include <asm/mach-ath79/ath79.h>
  22. +
  23. +#include "dev-ap9x-pci.h"
  24. +#include "dev-eth.h"
  25. +#include "dev-gpio-buttons.h"
  26. +#include "dev-leds-gpio.h"
  27. +#include "dev-m25p80.h"
  28. +#include "dev-usb.h"
  29. +##include "machtypes.h"
  30. +
  31. +//#define WNR2200_GPIO_LED_LAN1_AMBER     ??
  32. +#define WNR2200_GPIO_LED_LAN2_AMBER     0
  33. +#define WNR2200_GPIO_LED_LAN4_AMBER     1
  34. +#define WNR2200_GPIO_LED_WPS            5
  35. +#define WNR2200_GPIO_LED_WAN_GREEN      7
  36. +#define WNR2200_GPIO_LED_USB            8
  37. +#define WNR2200_GPIO_LED_LAN3_AMBER     11
  38. +#define WNR2200_GPIO_LED_WAN_AMBER      12
  39. +#define WNR2200_GPIO_LED_LAN1_GREEN     13
  40. +#define WNR2200_GPIO_LED_LAN2_GREEN     14
  41. +#define WNR2200_GPIO_LED_LAN3_GREEN     15
  42. +#define WNR2200_GPIO_LED_LAN4_GREEN     16
  43. +#define WNR2200_GPIO_LED_PWR_AMBER      21
  44. +#define WNR2200_GPIO_LED_PWR_GREEN      22
  45. +
  46. +#define WNR220_GPIO_USB_POWER           24
  47. +
  48. +//#define WNR2200_GPIO_BTN_RESET         ??
  49. +//#define WNR2200_GPIO_BTN_WIRELESS      ??
  50. +//#define WNR2200_GPIO_BTN_WPS           ??
  51. +
  52. +#define WNR2200_KEYS_POLL_INTERVAL     20      /* msecs */
  53. +#define WNR2200_KEYS_DEBOUNCE_INTERVAL (3 * WNR2200_KEYS_POLL_INTERVAL)
  54. +
  55. +#define WNR2200_MAC0_OFFSET            0
  56. +#define WNR2200_MAC1_OFFSET            6
  57. +#define WNR2200_PCIE_CALDATA_OFFSET    0x1000
  58. +
  59. +static struct gpio_led wnr2200_leds_gpio[] __initdata = {
  60. +        {
  61. +                .name           = "wnr2200:amber:lan2",
  62. +                .gpio           = WNR2200_GPIO_LED_LAN2_AMBER,
  63. +                .active_low     = 1,
  64. +        }, {
  65. +                .name           = "wnr2200:amber:lan4",
  66. +                .gpio           = WNR2200_GPIO_LED_LAN4_AMBER,
  67. +                .active_low     = 1,
  68. +        }, {
  69. +                .name           = "wnr2200:green:wps",
  70. +                .gpio           = WNR2200_GPIO_LED_WPS,
  71. +                .active_low     = 1,
  72. +        }, {
  73. +                .name           = "wnr2200:green:wan",
  74. +                .gpio           = WNR2200_GPIO_LED_WAN_GREEN,
  75. +                .active_low     = 1,
  76. +        }, {
  77. +                .name           = "wnr2200:green:usb",
  78. +                .gpio           = WNR2200_GPIO_LED_USB,
  79. +                .active_low     = 1,
  80. +        }, {
  81. +                .name           = "wnr2200:amber:lan3",
  82. +                .gpio           = WNR2200_GPIO_LED_LAN3_AMBER,
  83. +                .active_low     = 1,
  84. +        }, {
  85. +                .name           = "wnr2200:amber:wan",
  86. +                .gpio           = WNR2200_GPIO_LED_WAN_AMBER,
  87. +                .active_low     = 1,
  88. +        }, {
  89. +                .name           = "wnr2200:green:lan1",
  90. +                .gpio           = WNR2200_GPIO_LED_LAN1_GREEN,
  91. +                .active_low     = 1,
  92. +        }, {
  93. +                .name           = "wnr2200:green:lan2",
  94. +                .gpio           = WNR2200_GPIO_LED_LAN2_GREEN,
  95. +                .active_low     = 1,
  96. +        }, {
  97. +                .name           = "wnr2200:green:lan3",
  98. +                .gpio           = WNR2200_GPIO_LED_LAN3_GREEN,
  99. +                .active_low     = 1,
  100. +        }, {
  101. +                .name           = "wnr2200:green:lan4",
  102. +                .gpio           = WNR2200_GPIO_LED_LAN4_GREEN,
  103. +                .active_low     = 1,
  104. +        }, {
  105. +                .name           = "wnr2200:anber:power",
  106. +                .gpio           = WNR2200_GPIO_LED_PWR_AMBER,
  107. +                .active_low     = 1,
  108. +        }, {
  109. +                .name           = "wnr2200:green:power",
  110. +                .gpio           = WNR2200_GPIO_LED_PWR_GREEN,
  111. +                .active_low     = 1,
  112. +        }
  113. +};
  114. +
  115. +/*
  116. +static struct gpio_keys_button wnr2200_gpio_keys[] __initdata = {
  117. +        {
  118. +                .desc           = "Reset button",
  119. +                .type           = EV_KEY,
  120. +                .code           = KEY_RESTART,
  121. +                .debounce_interval = WNR2200_KEYS_DEBOUNCE_INTERVAL,
  122. +                .gpio           = WNR2200_GPIO_BTN_RESET,
  123. +        }, {
  124. +                .desc           = "WPS button",
  125. +                .type           = EV_KEY,
  126. +                .code           = KEY_WPS_BUTTON,
  127. +                .debounce_interval = WNR2200_KEYS_DEBOUNCE_INTERVAL,
  128. +                .gpio           = WNR2200_GPIO_BTN_WPS,
  129. +        }, {
  130. +                .desc           = "Wireless button",
  131. +                .type           = EV_KEY,
  132. +                .code           = BTN_0,
  133. +                .debounce_interval = WNR2200_KEYS_DEBOUNCE_INTERVAL,
  134. +                .gpio           = WNR2200_GPIO_BTN_WIRELESS,
  135. +        }
  136. +};
  137. +*/
  138. +
  139. +static void __init wnr2200_setup(void)
  140. +{
  141. +        u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
  142. +
  143. +        ath79_register_mdio(0, 0x0);
  144. +
  145. +        ath79_init_mac(ath79_eth0_data.mac_addr, art+WNR2200_MAC0_OFFSET, 0);
  146. +        ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
  147. +        ath79_eth0_data.speed = SPEED_100;
  148. +        ath79_eth0_data.duplex = DUPLEX_FULL;
  149. +
  150. +        ath79_init_mac(ath79_eth1_data.mac_addr, art+WNR2200_MAC1_OFFSET, 0);
  151. +        ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
  152. +        ath79_eth1_data.phy_mask = 0x10;
  153. +
  154. +        ath79_register_eth(0);
  155. +        ath79_register_eth(1);
  156. +
  157. +       ath79_register_m25p80(NULL);
  158. +        ap91_pci_init(art + WNR2200_PCIE_CALDATA_OFFSET, NULL);
  159. +
  160. +       ath79_register_leds_gpio(-1, ARRAY_SIZE(wnr2200_leds_gpio),
  161. +                                wnr2200_leds_gpio);
  162. +
  163. +/*     ath79_register_gpio_keys_polled(-1, WNR2200_KEYS_POLL_INTERVAL,
  164. +                                       ARRAY_SIZE(wnr2200_gpio_keys),
  165. +                                       wnr2200_gpio_keys);
  166. +*/
  167. +
  168. +        /* enable power for the USB port */
  169. +        gpio_request_one(WNR220_GPIO_USB_POWER,
  170. +                         GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
  171. +                         "USB power");
  172. +
  173. +        ath79_register_usb();
  174. +
  175. +}
  176. +
  177. +MIPS_MACHINE(ATH79_MACH_WNR2200, "WNR2200", "NETGEAR WNR2200", wnr2200_setup);
  178. diff --git a/target/linux/ar71xx/base-files/etc/diag.sh
  179. b/target/linux/ar71xx/base-files/etc/diag.sh
  180. index 7b790e2..49803ca 100755
  181. --- a/target/linux/ar71xx/base-files/etc/diag.sh
  182. +++ b/target/linux/ar71xx/base-files/etc/diag.sh
  183. @@ -175,7 +175,10 @@  get_status_led() {
  184.         wnr2000)
  185.                 status_led="wnr2000:green:power"
  186.                 ;;
  187. -       wnr612-v2)
  188. +       wnr2200)
  189. +                status_led="wnr2200:amber:power"
  190. +                ;;
  191. +        wnr612-v2)
  192.                 status_led="wnr612v2:green:power"
  193.                 ;;
  194.         wp543)
  195. diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
  196. b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
  197. index 176c485..cf56e46 100755
  198. --- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
  199. +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
  200. @@ -169,6 +169,7 @@  tl-wr941nd)
  201. tl-mr3420-v2 |\
  202. tl-wr841n-v8 |\
  203. wnr2000-v3 |\
  204. +wnr2200 |\
  205. wnr612-v2)
  206.         ucidef_set_interfaces_lan_wan "eth1" "eth0"
  207.         ucidef_add_switch "switch0" "1" "1"
  208. diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh
  209. b/target/linux/ar71xx/base-files/lib/ar71xx.sh
  210. index e7fbfbe..352582f 100755
  211. --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
  212. +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
  213. @@ -516,7 +516,10 @@  ar71xx_board_detect() {
  214.         *WNR2000)
  215.                 name="wnr2000"
  216.                 ;;
  217. -       *"WNR612 V2")
  218. +       *WNR2200)
  219. +                name="wnr2200"
  220. +                ;;
  221. +        *"WNR612 V2")
  222.                 name="wnr612-v2"
  223.                 ;;
  224.         *WRT160NL)
  225. diff --git a/target/linux/ar71xx/config-3.10 b/target/linux/ar71xx/config-3.10
  226. index 6c75f14..ae1a481 100644
  227. --- a/target/linux/ar71xx/config-3.10
  228. +++ b/target/linux/ar71xx/config-3.10
  229. @@ -90,6 +90,7 @@  CONFIG_ATH79_MACH_WNDR3700=y
  230. CONFIG_ATH79_MACH_WNDR4300=y
  231. CONFIG_ATH79_MACH_WNR2000=y
  232. CONFIG_ATH79_MACH_WNR2000_V3=y
  233. +CONFIG_ATH79_MACH_WNR2200=y
  234. CONFIG_ATH79_MACH_WP543=y
  235. CONFIG_ATH79_MACH_WPE72=y
  236. CONFIG_ATH79_MACH_WRT160NL=y
  237. diff --git a/target/linux/ar71xx/generic/profiles/netgear.mk
  238. b/target/linux/ar71xx/generic/profiles/netgear.mk
  239. index 99425ec..7e32977 100644
  240. --- a/target/linux/ar71xx/generic/profiles/netgear.mk
  241. +++ b/target/linux/ar71xx/generic/profiles/netgear.mk
  242. @@ -60,3 +60,14 @@  define Profile/WNR612V2/Description
  243. endef

  244. $(eval $(call Profile,WNR612V2))
  245. +
  246. +
  247. +define Profile/WNR2200
  248. +        NAME:=NETGEAR WNR2200
  249. +endef
  250. +
  251. +define Profile/WNR2200/Description
  252. +        Package set optimized for the NETGEAR WNR2200
  253. +endef
  254. +
  255. +$(eval $(call Profile,WNR2200))
  256. diff --git a/target/linux/ar71xx/image/Makefile
  257. b/target/linux/ar71xx/image/Makefile
  258. index b755a9d..842af55 100644
  259. --- a/target/linux/ar71xx/image/Makefile
  260. +++ b/target/linux/ar71xx/image/Makefile
  261. @@ -182,6 +182,7 @@
  262. ubdev_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7488k(firmware)
  263. whrhpg300n_mtdlayout=mtdparts=spi0.0:248k(u-boot)ro,8k(u-boot-env)ro,3712k(firmware),64k(art)ro
  264. wndap360_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1728k(kernel),6016k(rootfs),64k(nvram)ro,64k(art)ro,7744k@0x50000(firmware)
  265. wnr2000v3_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1024k(kernel),2688k(rootfs),64k(art)ro,3712k@0x50000(firmware)
  266. +wnr2200_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1152k(kernel),6528k(rootfs),64k(art)ro,7680k@0x70000(firmware)
  267. wndr3700_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1152k(kernel),6528k(rootfs),64k(art)ro,7680k@0x70000(firmware)
  268. wndr3700v2_mtdlayout=mtdparts=spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,1152k(kernel),14720k(rootfs),64k(art)ro,15872k@0x70000(firmware)
复制代码
自己试了下,多出了wnr2200的选项

不过貌似是针对8Mflash写的补丁,网件官网注明是16M(中国版?),估计倒数第三行mtdlayout要修改。
http://patchwork.openwrt.org/patch/4011/
http://patchwork.openwrt.org/patch/3972/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2013-8-31 12:36 来自手机 | 显示全部楼层
不错,我可以动手了。
 楼主| 发表于 2013-8-31 12:39 | 显示全部楼层
准备编译试试
发表于 2013-9-24 12:24 | 显示全部楼层
https://www.right.com.cn/forum/f ... read&tid=129486 我刷了官方dd频繁掉线,根本无法使用,又刷回来了,希望楼主搞一个固件,造福广大wnr2200
发表于 2013-10-26 11:38 | 显示全部楼层
能不能给个 能从官方刷入OPENWRT的包呢?
发表于 2013-10-26 11:39 | 显示全部楼层
OPENWRT官方的包,从DD哪里 TFTP进路由器能刷么?
发表于 2013-11-2 21:23 | 显示全部楼层
关注下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-27 18:27

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表