[OpenWrt-Devel] [PATCH] [SIGNED-OFF] Add WeIO Board Support
Drasko DRASKOVIC
drasko.draskovic at gmail.com
Wed Sep 23 14:23:14 EDT 2015
A kind reminder,
please someone take a look at this patch and integrate it if it is OK.
BR,
Drasko
On Sun, Sep 20, 2015 at 7:27 PM, Drasko DRASKOVIC
<drasko.draskovic at gmail.com> wrote:
> Add support for WeIO board (http://we-io.net).
> This board is based on Carambola2 board form 8Devices.
>
> Signed-off-by: Drasko DRASKOVIC <drasko.draskovic at gmail.com>
> ---
> target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 +
> .../ar71xx/base-files/lib/upgrade/platform.sh | 3 +-
> target/linux/ar71xx/config-4.1 | 1 +
> .../linux/ar71xx/files/arch/mips/ath79/mach-weio.c | 145 +++++++++++++++++++++
> target/linux/ar71xx/generic/profiles/weio.mk | 17 +++
> target/linux/ar71xx/image/Makefile | 8 ++
> .../700-MIPS-ath79-openwrt-machines.patch | 21 ++-
> 7 files changed, 192 insertions(+), 6 deletions(-)
> create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-weio.c
> create mode 100644 target/linux/ar71xx/generic/profiles/weio.mk
>
> diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
> index efb3d16..ad98cfb 100755
> --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
> +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
> @@ -850,6 +850,9 @@ ar71xx_board_detect() {
> *"UniFi AP Pro")
> name="uap-pro"
> ;;
> + *"WeIO")
> + name="weio"
> + ;;
> *WHR-G301N)
> name="whr-g301n"
> ;;
> diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> index cad8b43..c947b78 100755
> --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> @@ -252,7 +252,8 @@ platform_check_image() {
> nbg460n_550n_550nh | \
> unifi | \
> unifi-outdoor | \
> - carambola2 )
> + carambola2 | \
> + weio )
> [ "$magic" != "2705" ] && {
> echo "Invalid image type."
> return 1
> diff --git a/target/linux/ar71xx/config-4.1 b/target/linux/ar71xx/config-4.1
> index 51f2f2f..50dc7b2 100644
> --- a/target/linux/ar71xx/config-4.1
> +++ b/target/linux/ar71xx/config-4.1
> @@ -143,6 +143,7 @@ CONFIG_ATH79_MACH_TL_WR941ND=y
> CONFIG_ATH79_MACH_TUBE2H=y
> CONFIG_ATH79_MACH_UBNT=y
> CONFIG_ATH79_MACH_UBNT_XM=y
> +CONFIG_ATH79_MACH_WEIO=y
> CONFIG_ATH79_MACH_WHR_HP_G300N=y
> CONFIG_ATH79_MACH_WLAE_AG300N=y
> CONFIG_ATH79_MACH_WLR8100=y
> diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-weio.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-weio.c
> new file mode 100644
> index 0000000..44a831b
> --- /dev/null
> +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-weio.c
> @@ -0,0 +1,145 @@
> +/**
> + * WEIO Web Of Things Platform
> + *
> + * Copyright (C) 2013 Drasko DRASKOVIC and Uros PETREVSKI
> + *
> + * ## ## ######## #### #######
> + * ## ## ## ## ## ## ##
> + * ## ## ## ## ## ## ##
> + * ## ## ## ###### ## ## ##
> + * ## ## ## ## ## ## ##
> + * ## ## ## ## ## ## ##
> + * ### ### ######## #### #######
> + *
> + * Web Of Things Platform
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
> + *
> + * Authors :
> + * Drasko DRASKOVIC <drasko.draskovic at gmail.com>
> + * Uros PETREVSKI <uros at nodesign.net>
> + */
> +
> +#include <asm/mach-ath79/ath79.h>
> +#include <asm/mach-ath79/ar71xx_regs.h>
> +#include "common.h"
> +#include "dev-eth.h"
> +#include "dev-gpio-buttons.h"
> +#include "dev-leds-gpio.h"
> +#include "dev-m25p80.h"
> +#include "dev-spi.h"
> +#include "dev-usb.h"
> +#include "dev-wmac.h"
> +#include "machtypes.h"
> +#include "linux/i2c-gpio.h"
> +#include "linux/platform_device.h"
> +
> +#define WEIO_GPIO_LED_STA 1
> +#define WEIO_GPIO_LED_AP 16
> +
> +#define WEIO_GPIO_BTN_AP 20
> +#define WEIO_GPIO_BTN_RESET 23
> +
> +#define WEIO_KEYS_POLL_INTERVAL 20 /* msecs */
> +#define WEIO_KEYS_DEBOUNCE_INTERVAL (3 * WEIO_KEYS_POLL_INTERVAL)
> +
> +#define WEIO_MAC0_OFFSET 0x0000
> +#define WEIO_MAC1_OFFSET 0x0006
> +#define WEIO_CALDATA_OFFSET 0x1000
> +#define WEIO_WMAC_MAC_OFFSET 0x1002
> +
> +static struct gpio_led weio_leds_gpio[] __initdata = {
> + {
> + .name = "weio:green:sta",
> + .gpio = WEIO_GPIO_LED_STA,
> + .active_low = 1,
> + .default_state = LEDS_GPIO_DEFSTATE_ON,
> + },
> + {
> + .name = "weio:green:ap",
> + .gpio = WEIO_GPIO_LED_AP,
> + .active_low = 1,
> + .default_state = LEDS_GPIO_DEFSTATE_ON,
> + }
> +};
> +
> +static struct gpio_keys_button weio_gpio_keys[] __initdata = {
> + {
> + .desc = "ap button",
> + .type = EV_KEY,
> + .code = BTN_0,
> + .debounce_interval = WEIO_KEYS_DEBOUNCE_INTERVAL,
> + .gpio = WEIO_GPIO_BTN_AP,
> + .active_low = 1,
> + },
> + {
> + .desc = "soft-reset button",
> + .type = EV_KEY,
> + .code = BTN_1,
> + .debounce_interval = WEIO_KEYS_DEBOUNCE_INTERVAL,
> + .gpio = WEIO_GPIO_BTN_RESET,
> + .active_low = 1,
> + }
> +};
> +
> +static struct i2c_gpio_platform_data weio_i2c_gpio_data = {
> + .sda_pin = 18,
> + .scl_pin = 19,
> +};
> +
> +static struct platform_device weio_i2c_gpio = {
> + .name = "i2c-gpio",
> + .id = 0,
> + .dev = {
> + .platform_data = &weio_i2c_gpio_data,
> + },
> +};
> +
> +static struct platform_device *weio_devices[] __initdata = {
> + &weio_i2c_gpio
> +};
> +
> +static void __init weio_common_setup(void)
> +{
> + u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
> +
> + ath79_register_m25p80(NULL);
> + ath79_register_wmac(art + WEIO_CALDATA_OFFSET, art + WEIO_WMAC_MAC_OFFSET);
> +}
> +
> +static void __init weio_setup(void)
> +{
> + weio_common_setup();
> +
> + ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
> + AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
> + AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
> + AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
> + AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
> +
> + platform_add_devices(weio_devices, ARRAY_SIZE(weio_devices));
> +
> + ath79_register_leds_gpio(-1, ARRAY_SIZE(weio_leds_gpio),
> + weio_leds_gpio);
> +
> + ath79_register_gpio_keys_polled(-1, WEIO_KEYS_POLL_INTERVAL,
> + ARRAY_SIZE(weio_gpio_keys),
> + weio_gpio_keys);
> +
> + ath79_register_usb();
> +}
> +
> +MIPS_MACHINE(ATH79_MACH_WEIO, "WEIO", "WeIO board from Drasko DRASKOVIC and Uros PETREVSKI",
> + weio_setup);
> diff --git a/target/linux/ar71xx/generic/profiles/weio.mk b/target/linux/ar71xx/generic/profiles/weio.mk
> new file mode 100644
> index 0000000..227cec9
> --- /dev/null
> +++ b/target/linux/ar71xx/generic/profiles/weio.mk
> @@ -0,0 +1,17 @@
> +#
> +# Copyright (C) 2013 OpenWrt.org
> +#
> +# This is free software, licensed under the GNU General Public License v2.
> +# See /LICENSE for more information.
> +#
> +
> +define Profile/WEIO
> + NAME:=WeIO
> + PACKAGES:=kmod-usb-core kmod-usb2
> +endef
> +
> +define Profile/WEIO/Description
> + Package set optimized for the WeIO board.
> +endef
> +
> +$(eval $(call Profile,WEIO))
> diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
> index b00846f..f730640 100644
> --- a/target/linux/ar71xx/image/Makefile
> +++ b/target/linux/ar71xx/image/Makefile
> @@ -208,6 +208,14 @@ define Device/cf-e316n-v2
> endef
> TARGET_DEVICES += cf-e316n-v2
>
> +define Device/weio
> + BOARDNAME = WEIO
> + IMAGE_SIZE = 16000k
> + CONSOLE = ttyATH0,115200
> + MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
> +endef
> +TARGET_DEVICES += weio
> +
> define Device/wndr3700
> BOARDNAME = WNDR3700
> NETGEAR_KERNEL_MAGIC = 0x33373030
> diff --git a/target/linux/ar71xx/patches-4.1/700-MIPS-ath79-openwrt-machines.patch b/target/linux/ar71xx/patches-4.1/700-MIPS-ath79-openwrt-machines.patch
> index 020bdfe..8ee0d3f 100644
> --- a/target/linux/ar71xx/patches-4.1/700-MIPS-ath79-openwrt-machines.patch
> +++ b/target/linux/ar71xx/patches-4.1/700-MIPS-ath79-openwrt-machines.patch
> @@ -1,6 +1,6 @@
> --- a/arch/mips/ath79/machtypes.h
> +++ b/arch/mips/ath79/machtypes.h
> -@@ -16,24 +16,209 @@
> +@@ -16,24 +16,210 @@
>
> enum ath79_mach_type {
> ATH79_MACH_GENERIC = 0,
> @@ -178,6 +178,7 @@
> ATH79_MACH_UBNT_UNIFI_OUTDOOR, /* Ubiquiti UnifiAP Outdoor */
> + ATH79_MACH_UBNT_UNIFI_OUTDOOR_PLUS, /* Ubiquiti UnifiAP Outdoor+ */
> ATH79_MACH_UBNT_XM, /* Ubiquiti Networks XM board rev 1.0 */
> ++ ATH79_MACH_WEIO, /* WeIO board */
> + ATH79_MACH_WHR_G301N, /* Buffalo WHR-G301N */
> + ATH79_MACH_WHR_HP_G300N, /* Buffalo WHR-HP-G300N */
> + ATH79_MACH_WHR_HP_GN, /* Buffalo WHR-HP-GN */
> @@ -1439,10 +1440,19 @@
>
> config ATH79_MACH_UBNT_XM
> bool "Ubiquiti Networks XM/UniFi boards"
> -@@ -83,6 +1212,107 @@ config ATH79_MACH_UBNT_XM
> +@@ -83,6 +1212,116 @@ config ATH79_MACH_UBNT_XM
> Say 'Y' here if you want your kernel to support the
> Ubiquiti Networks XM (rev 1.0) board.
>
> ++config ATH79_MACH_WEIO
> ++ bool "WeIO board"
> ++ select SOC_AR933X
> ++ select ATH79_DEV_GPIO_BUTTONS
> ++ select ATH79_DEV_LEDS_GPIO
> ++ select ATH79_DEV_M25P80
> ++ select ATH79_DEV_USB
> ++ select ATH79_DEV_WMAC
> ++
> +config ATH79_MACH_MYNET_N600
> + bool "WD My Net N600 board support"
> + select SOC_AR934X
> @@ -1547,7 +1557,7 @@
> endmenu
>
> config SOC_AR71XX
> -@@ -134,7 +1364,10 @@ config ATH79_DEV_DSA
> +@@ -134,7 +1373,10 @@ config ATH79_DEV_DSA
> config ATH79_DEV_ETH
> def_bool n
>
> @@ -1559,7 +1569,7 @@
> def_bool n
>
> config ATH79_DEV_GPIO_BUTTONS
> -@@ -164,6 +1397,11 @@ config ATH79_PCI_ATH9K_FIXUP
> +@@ -164,6 +1406,11 @@ config ATH79_PCI_ATH9K_FIXUP
> def_bool n
>
> config ATH79_ROUTERBOOT
> @@ -1573,7 +1583,7 @@
> endif
> --- a/arch/mips/ath79/Makefile
> +++ b/arch/mips/ath79/Makefile
> -@@ -38,9 +38,134 @@ obj-$(CONFIG_ATH79_ROUTERBOOT) += route
> +@@ -38,9 +38,135 @@ obj-$(CONFIG_ATH79_ROUTERBOOT) += route
> #
> # Machines
> #
> @@ -1683,6 +1693,7 @@
> +obj-$(CONFIG_ATH79_MACH_TUBE2H) += mach-tube2h.o
> +obj-$(CONFIG_ATH79_MACH_UBNT) += mach-ubnt.o
> obj-$(CONFIG_ATH79_MACH_UBNT_XM) += mach-ubnt-xm.o
> ++obj-$(CONFIG_ATH79_MACH_WEIO) += mach-weio.o
> +obj-$(CONFIG_ATH79_MACH_WHR_HP_G300N) += mach-whr-hp-g300n.o
> +obj-$(CONFIG_ATH79_MACH_WLAE_AG300N) += mach-wlae-ag300n.o
> +obj-$(CONFIG_ATH79_MACH_WLR8100) += mach-wlr8100.o
> --
> 2.1.4
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list