From 70640a947e60bd6f98ad6fa585c7a89a6dff8d7c Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Fri, 1 Oct 2010 07:09:29 +0000 Subject: [PATCH] ar71xx: initial support for jjPlus JWAP003 Patch-by: Cezary Jackiewicz (the GPIODEV code has been removed, the sysfs interface can be used to control the GPIO lines instead - juhosg) SVN-Revision: 23165 --- .../base-files/etc/defconfig/jwap003/network | 16 ++++ target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 + target/linux/ar71xx/config-2.6.32 | 1 + target/linux/ar71xx/config-2.6.33 | 1 + target/linux/ar71xx/config-2.6.34 | 1 + target/linux/ar71xx/config-2.6.35 | 1 + .../ar71xx/files/arch/mips/ar71xx/Kconfig | 8 ++ .../ar71xx/files/arch/mips/ar71xx/Makefile | 1 + .../files/arch/mips/ar71xx/mach-jwap003.c | 81 +++++++++++++++++++ .../ar71xx/files/arch/mips/ar71xx/machtype.h | 1 + .../linux/ar71xx/generic/profiles/jjplus.mk | 17 ++++ target/linux/ar71xx/image/Makefile | 5 ++ 12 files changed, 136 insertions(+) create mode 100644 target/linux/ar71xx/base-files/etc/defconfig/jwap003/network create mode 100644 target/linux/ar71xx/files/arch/mips/ar71xx/mach-jwap003.c create mode 100644 target/linux/ar71xx/generic/profiles/jjplus.mk diff --git a/target/linux/ar71xx/base-files/etc/defconfig/jwap003/network b/target/linux/ar71xx/base-files/etc/defconfig/jwap003/network new file mode 100644 index 0000000000..3ecec8fdd9 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/defconfig/jwap003/network @@ -0,0 +1,16 @@ +config 'interface' 'loopback' + option 'ifname' 'lo' + option 'proto' 'static' + option 'ipaddr' '127.0.0.1' + option 'netmask' '255.0.0.0' + +config 'interface' 'lan' + option 'ifname' 'eth1' + option 'type' 'bridge' + option 'proto' 'static' + option 'ipaddr' '192.168.1.1' + option 'netmask' '255.255.255.0' + +config 'interface' 'wan' + option 'ifname' 'eth0' + option 'proto' 'dhcp' diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index ff2e8bd777..fa00516c2e 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -37,6 +37,9 @@ ar71xx_board_name() { *"Nanostation M") name="nanostation-m" ;; + *JWAP003) + name="jwap003" + ;; *LS-SR71) name="ls-sr71" ;; diff --git a/target/linux/ar71xx/config-2.6.32 b/target/linux/ar71xx/config-2.6.32 index 9770719af8..0a5410b969 100644 --- a/target/linux/ar71xx/config-2.6.32 +++ b/target/linux/ar71xx/config-2.6.32 @@ -25,6 +25,7 @@ CONFIG_AR71XX_MACH_DIR_600_A1=y CONFIG_AR71XX_MACH_DIR_615_C1=y CONFIG_AR71XX_MACH_DIR_825_B1=y CONFIG_AR71XX_MACH_EAP7660D=y +CONFIG_AR71XX_MACH_JWAP003=y CONFIG_AR71XX_MACH_MZK_W04NU=y CONFIG_AR71XX_MACH_MZK_W300NH=y CONFIG_AR71XX_MACH_NBG460N=y diff --git a/target/linux/ar71xx/config-2.6.33 b/target/linux/ar71xx/config-2.6.33 index 87abc8d246..69ec6679a2 100644 --- a/target/linux/ar71xx/config-2.6.33 +++ b/target/linux/ar71xx/config-2.6.33 @@ -25,6 +25,7 @@ CONFIG_AR71XX_MACH_DIR_600_A1=y CONFIG_AR71XX_MACH_DIR_615_C1=y CONFIG_AR71XX_MACH_DIR_825_B1=y CONFIG_AR71XX_MACH_EAP7660D=y +CONFIG_AR71XX_MACH_JWAP003=y CONFIG_AR71XX_MACH_MZK_W04NU=y CONFIG_AR71XX_MACH_MZK_W300NH=y CONFIG_AR71XX_MACH_NBG460N=y diff --git a/target/linux/ar71xx/config-2.6.34 b/target/linux/ar71xx/config-2.6.34 index 30c0aff258..598dd3578c 100644 --- a/target/linux/ar71xx/config-2.6.34 +++ b/target/linux/ar71xx/config-2.6.34 @@ -25,6 +25,7 @@ CONFIG_AR71XX_MACH_DIR_600_A1=y CONFIG_AR71XX_MACH_DIR_615_C1=y CONFIG_AR71XX_MACH_DIR_825_B1=y CONFIG_AR71XX_MACH_EAP7660D=y +CONFIG_AR71XX_MACH_JWAP003=y CONFIG_AR71XX_MACH_MZK_W04NU=y CONFIG_AR71XX_MACH_MZK_W300NH=y CONFIG_AR71XX_MACH_NBG460N=y diff --git a/target/linux/ar71xx/config-2.6.35 b/target/linux/ar71xx/config-2.6.35 index 30c0aff258..598dd3578c 100644 --- a/target/linux/ar71xx/config-2.6.35 +++ b/target/linux/ar71xx/config-2.6.35 @@ -25,6 +25,7 @@ CONFIG_AR71XX_MACH_DIR_600_A1=y CONFIG_AR71XX_MACH_DIR_615_C1=y CONFIG_AR71XX_MACH_DIR_825_B1=y CONFIG_AR71XX_MACH_EAP7660D=y +CONFIG_AR71XX_MACH_JWAP003=y CONFIG_AR71XX_MACH_MZK_W04NU=y CONFIG_AR71XX_MACH_MZK_W300NH=y CONFIG_AR71XX_MACH_NBG460N=y diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig index f5d83b676f..6d52eba862 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig @@ -56,6 +56,14 @@ config AR71XX_MACH_DIR_825_B1 select AR71XX_DEV_USB default n +config AR71XX_MACH_JWAP003 + bool "jjPlus JWAP003 board support" + select AR71XX_DEV_M25P80 + select AR71XX_DEV_GPIO_BUTTONS + select AR71XX_DEV_PB42_PCI if PCI + select AR71XX_DEV_USB + default n + config AR71XX_MACH_PB42 bool "Atheros PB42 board support" select AR71XX_DEV_M25P80 diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile index e1fe959c38..991ae92023 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile @@ -36,6 +36,7 @@ obj-$(CONFIG_AR71XX_MACH_DIR_600_A1) += mach-dir-600-a1.o obj-$(CONFIG_AR71XX_MACH_DIR_615_C1) += mach-dir-615-c1.o obj-$(CONFIG_AR71XX_MACH_DIR_825_B1) += mach-dir-825-b1.o obj-$(CONFIG_AR71XX_MACH_EAP7660D) += mach-eap7660d.o +obj-$(CONFIG_AR71XX_MACH_JWAP003) += mach-jwap003.o obj-$(CONFIG_AR71XX_MACH_MZK_W04NU) += mach-mzk-w04nu.o obj-$(CONFIG_AR71XX_MACH_MZK_W300NH) += mach-mzk-w300nh.o obj-$(CONFIG_AR71XX_MACH_NBG460N) += mach-nbg460n.o diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-jwap003.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-jwap003.c new file mode 100644 index 0000000000..7d64fe96c6 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-jwap003.c @@ -0,0 +1,81 @@ +/* + * jjPlus JWAP003 board support + * + */ + +#include +#include +#include +#include + +#include "machtype.h" +#include "devices.h" +#include "dev-m25p80.h" +#include "dev-gpio-buttons.h" +#include "dev-pb42-pci.h" +#include "dev-usb.h" + +#define JWAP003_BUTTONS_POLL_INTERVAL 20 +#define JWAP003_GPIO_WPS 11 +#define JWAP003_GPIO_I2C_SCL 0 +#define JWAP003_GPIO_I2C_SDA 1 + +static struct gpio_button jwap003_gpio_buttons[] __initdata = { + { + .desc = "wps", + .type = EV_KEY, + .code = KEY_WPS_BUTTON, + .threshold = 3, + .gpio = JWAP003_GPIO_WPS, + .active_low = 1, + } +}; + +static struct i2c_gpio_platform_data jwap003_i2c_gpio_data = { + .sda_pin = JWAP003_GPIO_I2C_SDA, + .scl_pin = JWAP003_GPIO_I2C_SCL, +}; + +static struct platform_device jwap003_i2c_gpio_device = { + .name = "i2c-gpio", + .id = 0, + .dev = { + .platform_data = &jwap003_i2c_gpio_data, + } +}; + +#define JWAP003_WAN_PHYMASK BIT(0) +#define JWAP003_LAN_PHYMASK BIT(4) + +static void __init jwap003_init(void) +{ + ar71xx_add_device_m25p80(NULL); + + ar71xx_add_device_mdio(0x0); + + ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; + ar71xx_eth0_data.phy_mask = JWAP003_WAN_PHYMASK; + ar71xx_eth0_data.speed = SPEED_100; + ar71xx_eth0_data.duplex = DUPLEX_FULL; + ar71xx_eth0_data.has_ar8216 = 1; + + ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; + ar71xx_eth1_data.phy_mask = JWAP003_LAN_PHYMASK; + ar71xx_eth1_data.speed = SPEED_100; + ar71xx_eth1_data.duplex = DUPLEX_FULL; + + ar71xx_add_device_eth(0); + ar71xx_add_device_eth(1); + + platform_device_register(&jwap003_i2c_gpio_device); + + ar71xx_add_device_usb(); + + ar71xx_add_device_gpio_buttons(-1, JWAP003_BUTTONS_POLL_INTERVAL, + ARRAY_SIZE(jwap003_gpio_buttons), + jwap003_gpio_buttons); + + pb42_pci_init(); +} + +MIPS_MACHINE(AR71XX_MACH_JWAP003, "JWAP003", "jjPlus JWAP003", jwap003_init); diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h b/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h index b0c3c99ae0..4e2bc90231 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h @@ -22,6 +22,7 @@ enum ar71xx_mach_type { AR71XX_MACH_DIR_600_A1, /* D-Link DIR-600 rev. A1 */ AR71XX_MACH_DIR_615_C1, /* D-Link DIR-615 rev. C1 */ AR71XX_MACH_DIR_825_B1, /* D-Link DIR-825 rev. B1 */ + AR71XX_MACH_JWAP003, /* jjPlus JWAP003 */ AR71XX_MACH_RB_411, /* MikroTik RouterBOARD 411/411A/411AH */ AR71XX_MACH_RB_411U, /* MikroTik RouterBOARD 411U */ AR71XX_MACH_RB_433, /* MikroTik RouterBOARD 433/433AH */ diff --git a/target/linux/ar71xx/generic/profiles/jjplus.mk b/target/linux/ar71xx/generic/profiles/jjplus.mk new file mode 100644 index 0000000000..b74d7a5fbb --- /dev/null +++ b/target/linux/ar71xx/generic/profiles/jjplus.mk @@ -0,0 +1,17 @@ +# +# Copyright (C) 2010 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/JWAP003 + NAME:=jjPlus JWAP0003 + PACKAGES:=kmod-usb-core kmod-usb-ohci kmod-usb2 +endef + +define Profile/JWAP003/Description + Package set optimized for the jjPlus JWAP003 board. +endef + +$(eval $(call Profile,JWAP003)) diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index 42db6e4943..cb342a1962 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -470,6 +470,10 @@ define Image/Build/Profile/EAP7660D $(call Image/Build/Template/$(fs_128k)/$(1),PB4X,eap7660d,board=EAP7660D) endef +define Image/Build/Profile/JWAP003 + $(call Image/Build/Template/$(fs_64k)/$(1),PB4X,jwap003,board=JWAP003) +endef + define Image/Build/Profile/FR54RTR $(call Image/Build/Template/$(fs_64k)/$(1),Cameo7240,fr-54rtr,board=DIR-600-A1,"AP91-AR7240-RT-090223-01") endef @@ -616,6 +620,7 @@ define Image/Build/Profile/Default $(call Image/Build/Profile/DIR825B1,$(1)) $(call Image/Build/Profile/EAP7660D,$(1)) $(call Image/Build/Profile/FR54RTR,$(1)) + $(call Image/Build/Profile/JWAP003,$(1)) $(call Image/Build/Profile/MZKW04NU,$(1)) $(call Image/Build/Profile/MZKW300NH,$(1)) $(call Image/Build/Profile/PB42,$(1)) -- 2.30.2