diff mbox

[OpenWrt-Devel,SIGNED-OFF] Add initial support for WeIO board

Message ID 1441738822-30870-1-git-send-email-drasko.draskovic@gmail.com
State Changes Requested
Headers show

Commit Message

Drasko DRASKOVIC Sept. 8, 2015, 7 p.m. UTC
Add support for WeIO board (http://we-io.net), which is based on
Carambola2 board from 8Devices.

Signed-off-by: Drasko DRASKOVIC <drasko.draskovic@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

Comments

Drasko DRASKOVIC Sept. 11, 2015, 11:05 a.m. UTC | #1
Hi all,
any news on this?

Who is in charge of integrating these patches and should a particular
maintainer be contacted?

BR,
Drasko


On Tue, Sep 8, 2015 at 9:00 PM, Drasko DRASKOVIC
<drasko.draskovic@gmail.com> wrote:
> Add support for WeIO board (http://we-io.net), which is based on
> Carambola2 board from 8Devices.
>
> Signed-off-by: Drasko DRASKOVIC <drasko.draskovic@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 e1f345e..e30cac2 100755
> --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
> +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
> @@ -832,6 +832,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 c1962e4..b681fb8 100755
> --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> @@ -250,7 +250,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 21c4601..7d836d9 100644
> --- a/target/linux/ar71xx/config-4.1
> +++ b/target/linux/ar71xx/config-4.1
> @@ -139,6 +139,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..791991c
> --- /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@gmail.com>
> + * Uros PETREVSKI <uros@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 e6fe36a..0a37fd1 100644
> --- a/target/linux/ar71xx/image/Makefile
> +++ b/target/linux/ar71xx/image/Makefile
> @@ -179,6 +179,14 @@ define Device/carambola2
>  endef
>  TARGET_DEVICES += carambola2
>
> +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 02ebd1b..fa9fd0ad 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,207 @@
> +@@ -16,24 +16,208 @@
>
>   enum ath79_mach_type {
>         ATH79_MACH_GENERIC = 0,
> @@ -176,6 +176,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 */
> @@ -1437,7 +1438,7 @@
>
>   config ATH79_MACH_UBNT_XM
>         bool "Ubiquiti Networks XM/UniFi boards"
> -@@ -83,6 +1212,97 @@ config ATH79_MACH_UBNT_XM
> +@@ -83,6 +1212,106 @@ config ATH79_MACH_UBNT_XM
>           Say 'Y' here if you want your kernel to support the
>           Ubiquiti Networks XM (rev 1.0) board.
>
> @@ -1511,6 +1512,15 @@
>  +      select ATH79_DEV_USB
>  +      select ATH79_DEV_WMAC
>  +
> ++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_BHU_BXU2000N2_A
>  +      bool "BHU BXU2000n-2 rev. A support"
>  +      select SOC_AR934X
> @@ -1535,7 +1545,7 @@
>   endmenu
>
>   config SOC_AR71XX
> -@@ -134,7 +1354,10 @@ config ATH79_DEV_DSA
> +@@ -134,7 +1363,10 @@ config ATH79_DEV_DSA
>   config ATH79_DEV_ETH
>         def_bool n
>
> @@ -1547,7 +1557,7 @@
>         def_bool n
>
>   config ATH79_DEV_GPIO_BUTTONS
> -@@ -164,6 +1387,11 @@ config ATH79_PCI_ATH9K_FIXUP
> +@@ -164,6 +1396,11 @@ config ATH79_PCI_ATH9K_FIXUP
>         def_bool n
>
>   config ATH79_ROUTERBOOT
> @@ -1561,7 +1571,7 @@
>   endif
>  --- a/arch/mips/ath79/Makefile
>  +++ b/arch/mips/ath79/Makefile
> -@@ -38,9 +38,133 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
> +@@ -38,9 +38,134 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
>   #
>   # Machines
>   #
> @@ -1670,6 +1680,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
>
Javier Domingo Cansino Sept. 11, 2015, 11:07 a.m. UTC | #2
They will eventually do it, I suppose they where mainly focused on the
release until now =)
Jonas Gorski Sept. 11, 2015, 12:51 p.m. UTC | #3
Hi,

On Tue, Sep 8, 2015 at 9:00 PM, Drasko DRASKOVIC
<drasko.draskovic@gmail.com> wrote:
> Subject: [PATCH] [SIGNED-OFF] Add initial support for WeIO board

Please version your patches if you change them ([PATCH V2] etc)
> Add support for WeIO board (http://we-io.net), which is based on
> Carambola2 board from 8Devices.
>
> Signed-off-by: Drasko DRASKOVIC <drasko.draskovic@gmail.com>
> ---

Please keep a changelog here about the changes between submitssions
>  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 ++-

I don't see you updating etc/uci-defaults/02_network or any of the
uci-defaults files, so this won't have any proper config.


>  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 e1f345e..e30cac2 100755
> --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
> +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
> @@ -832,6 +832,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 c1962e4..b681fb8 100755
> --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> @@ -250,7 +250,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 21c4601..7d836d9 100644
> --- a/target/linux/ar71xx/config-4.1
> +++ b/target/linux/ar71xx/config-4.1
> @@ -139,6 +139,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..791991c
> --- /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@gmail.com>
> + * Uros PETREVSKI <uros@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

Please use tabs for indentation and align the values.

> +
> +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,
> +    }
> +};

Please use tabs for indentation. The correct braces placement is
  {
  },
  {
  }

> +
> +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,
> +    }
> +};

Please use tabs for indentation.

> +
> +static struct i2c_gpio_platform_data weio_i2c_gpio_data = {
> +    .sda_pin        = 18,
> +    .scl_pin        = 19,
> +};

Please use tabs for indentation.

> +
> +static struct platform_device weio_i2c_gpio = {
> +    .name           = "i2c-gpio",
> +    .id             = 0,
> +    .dev            = {
> +        .platform_data  = &weio_i2c_gpio_data,
> +       },
> +};

Please use tabs for indentation.

> +
> +static struct platform_device *weio_devices[] __initdata = {
> +    &weio_i2c_gpio
> +};

Please use tabs for indentation.

> +
> +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);

Plase align the arguments with the opening ( (use spaces for the last < 8 steps)

> +}

Please use tabs for indentation.

> +
> +static void __init weio_setup(void)
> +{
> +    weio_common_setup();
> +
> +

Only one empty line please.

> +    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);

Plase align the arguments with the opening (

> +
> +    platform_add_devices(weio_devices, ARRAY_SIZE(weio_devices));
> +
> +    ath79_register_leds_gpio(-1, ARRAY_SIZE(weio_leds_gpio),
> +                   weio_leds_gpio);

Plase align the arguments with the opening (

> +
> +    ath79_register_gpio_keys_polled(-1, WEIO_KEYS_POLL_INTERVAL,
> +                ARRAY_SIZE(weio_gpio_keys),
> +                weio_gpio_keys);

Plase align the arguments with the opening (

> +    ath79_register_usb();

Please use tabs for indentation.
> +}
> +
> +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

No wifi drivers?

> +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 e6fe36a..0a37fd1 100644
> --- a/target/linux/ar71xx/image/Makefile
> +++ b/target/linux/ar71xx/image/Makefile
> @@ -179,6 +179,14 @@ define Device/carambola2
>  endef
>  TARGET_DEVICES += carambola2
>
> +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 02ebd1b..fa9fd0ad 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,207 @@
> +@@ -16,24 +16,208 @@
>
>   enum ath79_mach_type {
>         ATH79_MACH_GENERIC = 0,
> @@ -176,6 +176,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 */
> @@ -1437,7 +1438,7 @@
>
>   config ATH79_MACH_UBNT_XM
>         bool "Ubiquiti Networks XM/UniFi boards"
> -@@ -83,6 +1212,97 @@ config ATH79_MACH_UBNT_XM
> +@@ -83,6 +1212,106 @@ config ATH79_MACH_UBNT_XM
>           Say 'Y' here if you want your kernel to support the
>           Ubiquiti Networks XM (rev 1.0) board.
>
> @@ -1511,6 +1512,15 @@
>  +      select ATH79_DEV_USB
>  +      select ATH79_DEV_WMAC
>  +
> ++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_BHU_BXU2000N2_A
>  +      bool "BHU BXU2000n-2 rev. A support"
>  +      select SOC_AR934X
> @@ -1535,7 +1545,7 @@
>   endmenu
>
>   config SOC_AR71XX
> -@@ -134,7 +1354,10 @@ config ATH79_DEV_DSA
> +@@ -134,7 +1363,10 @@ config ATH79_DEV_DSA
>   config ATH79_DEV_ETH
>         def_bool n
>
> @@ -1547,7 +1557,7 @@
>         def_bool n
>
>   config ATH79_DEV_GPIO_BUTTONS
> -@@ -164,6 +1387,11 @@ config ATH79_PCI_ATH9K_FIXUP
> +@@ -164,6 +1396,11 @@ config ATH79_PCI_ATH9K_FIXUP
>         def_bool n
>
>   config ATH79_ROUTERBOOT
> @@ -1561,7 +1571,7 @@
>   endif
>  --- a/arch/mips/ath79/Makefile
>  +++ b/arch/mips/ath79/Makefile
> -@@ -38,9 +38,133 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
> +@@ -38,9 +38,134 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
>   #
>   # Machines
>   #
> @@ -1670,6 +1680,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


Jonas
Drasko DRASKOVIC Sept. 20, 2015, 5:30 p.m. UTC | #4
Hi Jonas,
I have re-sent (in a spearate e-mail) patch with corrections based on
your comments.

Best reagrds,
Drasko

On Fri, Sep 11, 2015 at 2:51 PM, Jonas Gorski <jogo@openwrt.org> wrote:
> Hi,
>
> On Tue, Sep 8, 2015 at 9:00 PM, Drasko DRASKOVIC
> <drasko.draskovic@gmail.com> wrote:
>> Subject: [PATCH] [SIGNED-OFF] Add initial support for WeIO board
>
> Please version your patches if you change them ([PATCH V2] etc)
>> Add support for WeIO board (http://we-io.net), which is based on
>> Carambola2 board from 8Devices.
>>
>> Signed-off-by: Drasko DRASKOVIC <drasko.draskovic@gmail.com>
>> ---
>
> Please keep a changelog here about the changes between submitssions
>>  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 ++-
>
> I don't see you updating etc/uci-defaults/02_network or any of the
> uci-defaults files, so this won't have any proper config.
>
>
>>  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 e1f345e..e30cac2 100755
>> --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
>> +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
>> @@ -832,6 +832,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 c1962e4..b681fb8 100755
>> --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
>> +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
>> @@ -250,7 +250,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 21c4601..7d836d9 100644
>> --- a/target/linux/ar71xx/config-4.1
>> +++ b/target/linux/ar71xx/config-4.1
>> @@ -139,6 +139,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..791991c
>> --- /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@gmail.com>
>> + * Uros PETREVSKI <uros@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
>
> Please use tabs for indentation and align the values.
>
>> +
>> +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,
>> +    }
>> +};
>
> Please use tabs for indentation. The correct braces placement is
>   {
>   },
>   {
>   }
>
>> +
>> +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,
>> +    }
>> +};
>
> Please use tabs for indentation.
>
>> +
>> +static struct i2c_gpio_platform_data weio_i2c_gpio_data = {
>> +    .sda_pin        = 18,
>> +    .scl_pin        = 19,
>> +};
>
> Please use tabs for indentation.
>
>> +
>> +static struct platform_device weio_i2c_gpio = {
>> +    .name           = "i2c-gpio",
>> +    .id             = 0,
>> +    .dev            = {
>> +        .platform_data  = &weio_i2c_gpio_data,
>> +       },
>> +};
>
> Please use tabs for indentation.
>
>> +
>> +static struct platform_device *weio_devices[] __initdata = {
>> +    &weio_i2c_gpio
>> +};
>
> Please use tabs for indentation.
>
>> +
>> +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);
>
> Plase align the arguments with the opening ( (use spaces for the last < 8 steps)
>
>> +}
>
> Please use tabs for indentation.
>
>> +
>> +static void __init weio_setup(void)
>> +{
>> +    weio_common_setup();
>> +
>> +
>
> Only one empty line please.
>
>> +    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);
>
> Plase align the arguments with the opening (
>
>> +
>> +    platform_add_devices(weio_devices, ARRAY_SIZE(weio_devices));
>> +
>> +    ath79_register_leds_gpio(-1, ARRAY_SIZE(weio_leds_gpio),
>> +                   weio_leds_gpio);
>
> Plase align the arguments with the opening (
>
>> +
>> +    ath79_register_gpio_keys_polled(-1, WEIO_KEYS_POLL_INTERVAL,
>> +                ARRAY_SIZE(weio_gpio_keys),
>> +                weio_gpio_keys);
>
> Plase align the arguments with the opening (
>
>> +    ath79_register_usb();
>
> Please use tabs for indentation.
>> +}
>> +
>> +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
>
> No wifi drivers?
>
>> +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 e6fe36a..0a37fd1 100644
>> --- a/target/linux/ar71xx/image/Makefile
>> +++ b/target/linux/ar71xx/image/Makefile
>> @@ -179,6 +179,14 @@ define Device/carambola2
>>  endef
>>  TARGET_DEVICES += carambola2
>>
>> +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 02ebd1b..fa9fd0ad 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,207 @@
>> +@@ -16,24 +16,208 @@
>>
>>   enum ath79_mach_type {
>>         ATH79_MACH_GENERIC = 0,
>> @@ -176,6 +176,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 */
>> @@ -1437,7 +1438,7 @@
>>
>>   config ATH79_MACH_UBNT_XM
>>         bool "Ubiquiti Networks XM/UniFi boards"
>> -@@ -83,6 +1212,97 @@ config ATH79_MACH_UBNT_XM
>> +@@ -83,6 +1212,106 @@ config ATH79_MACH_UBNT_XM
>>           Say 'Y' here if you want your kernel to support the
>>           Ubiquiti Networks XM (rev 1.0) board.
>>
>> @@ -1511,6 +1512,15 @@
>>  +      select ATH79_DEV_USB
>>  +      select ATH79_DEV_WMAC
>>  +
>> ++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_BHU_BXU2000N2_A
>>  +      bool "BHU BXU2000n-2 rev. A support"
>>  +      select SOC_AR934X
>> @@ -1535,7 +1545,7 @@
>>   endmenu
>>
>>   config SOC_AR71XX
>> -@@ -134,7 +1354,10 @@ config ATH79_DEV_DSA
>> +@@ -134,7 +1363,10 @@ config ATH79_DEV_DSA
>>   config ATH79_DEV_ETH
>>         def_bool n
>>
>> @@ -1547,7 +1557,7 @@
>>         def_bool n
>>
>>   config ATH79_DEV_GPIO_BUTTONS
>> -@@ -164,6 +1387,11 @@ config ATH79_PCI_ATH9K_FIXUP
>> +@@ -164,6 +1396,11 @@ config ATH79_PCI_ATH9K_FIXUP
>>         def_bool n
>>
>>   config ATH79_ROUTERBOOT
>> @@ -1561,7 +1571,7 @@
>>   endif
>>  --- a/arch/mips/ath79/Makefile
>>  +++ b/arch/mips/ath79/Makefile
>> -@@ -38,9 +38,133 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
>> +@@ -38,9 +38,134 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
>>   #
>>   # Machines
>>   #
>> @@ -1670,6 +1680,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
>
>
> Jonas
Drasko DRASKOVIC Sept. 22, 2015, 7:07 p.m. UTC | #5
A kind reminder for a patch.

BR,
Drasko

On Sun, Sep 20, 2015 at 7:30 PM, Drasko DRASKOVIC <
drasko.draskovic@gmail.com> wrote:

> Hi Jonas,
> I have re-sent (in a spearate e-mail) patch with corrections based on
> your comments.
>
> Best reagrds,
> Drasko
>
> On Fri, Sep 11, 2015 at 2:51 PM, Jonas Gorski <jogo@openwrt.org> wrote:
> > Hi,
> >
> > On Tue, Sep 8, 2015 at 9:00 PM, Drasko DRASKOVIC
> > <drasko.draskovic@gmail.com> wrote:
> >> Subject: [PATCH] [SIGNED-OFF] Add initial support for WeIO board
> >
> > Please version your patches if you change them ([PATCH V2] etc)
> >> Add support for WeIO board (http://we-io.net), which is based on
> >> Carambola2 board from 8Devices.
> >>
> >> Signed-off-by: Drasko DRASKOVIC <drasko.draskovic@gmail.com>
> >> ---
> >
> > Please keep a changelog here about the changes between submitssions
> >>  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 ++-
> >
> > I don't see you updating etc/uci-defaults/02_network or any of the
> > uci-defaults files, so this won't have any proper config.
> >
> >
> >>  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 e1f345e..e30cac2 100755
> >> --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
> >> +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
> >> @@ -832,6 +832,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 c1962e4..b681fb8 100755
> >> --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> >> +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
> >> @@ -250,7 +250,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 21c4601..7d836d9 100644
> >> --- a/target/linux/ar71xx/config-4.1
> >> +++ b/target/linux/ar71xx/config-4.1
> >> @@ -139,6 +139,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..791991c
> >> --- /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@gmail.com>
> >> + * Uros PETREVSKI <uros@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
> >
> > Please use tabs for indentation and align the values.
> >
> >> +
> >> +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,
> >> +    }
> >> +};
> >
> > Please use tabs for indentation. The correct braces placement is
> >   {
> >   },
> >   {
> >   }
> >
> >> +
> >> +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,
> >> +    }
> >> +};
> >
> > Please use tabs for indentation.
> >
> >> +
> >> +static struct i2c_gpio_platform_data weio_i2c_gpio_data = {
> >> +    .sda_pin        = 18,
> >> +    .scl_pin        = 19,
> >> +};
> >
> > Please use tabs for indentation.
> >
> >> +
> >> +static struct platform_device weio_i2c_gpio = {
> >> +    .name           = "i2c-gpio",
> >> +    .id             = 0,
> >> +    .dev            = {
> >> +        .platform_data  = &weio_i2c_gpio_data,
> >> +       },
> >> +};
> >
> > Please use tabs for indentation.
> >
> >> +
> >> +static struct platform_device *weio_devices[] __initdata = {
> >> +    &weio_i2c_gpio
> >> +};
> >
> > Please use tabs for indentation.
> >
> >> +
> >> +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);
> >
> > Plase align the arguments with the opening ( (use spaces for the last <
> 8 steps)
> >
> >> +}
> >
> > Please use tabs for indentation.
> >
> >> +
> >> +static void __init weio_setup(void)
> >> +{
> >> +    weio_common_setup();
> >> +
> >> +
> >
> > Only one empty line please.
> >
> >> +    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);
> >
> > Plase align the arguments with the opening (
> >
> >> +
> >> +    platform_add_devices(weio_devices, ARRAY_SIZE(weio_devices));
> >> +
> >> +    ath79_register_leds_gpio(-1, ARRAY_SIZE(weio_leds_gpio),
> >> +                   weio_leds_gpio);
> >
> > Plase align the arguments with the opening (
> >
> >> +
> >> +    ath79_register_gpio_keys_polled(-1, WEIO_KEYS_POLL_INTERVAL,
> >> +                ARRAY_SIZE(weio_gpio_keys),
> >> +                weio_gpio_keys);
> >
> > Plase align the arguments with the opening (
> >
> >> +    ath79_register_usb();
> >
> > Please use tabs for indentation.
> >> +}
> >> +
> >> +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
> >
> > No wifi drivers?
> >
> >> +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 e6fe36a..0a37fd1 100644
> >> --- a/target/linux/ar71xx/image/Makefile
> >> +++ b/target/linux/ar71xx/image/Makefile
> >> @@ -179,6 +179,14 @@ define Device/carambola2
> >>  endef
> >>  TARGET_DEVICES += carambola2
> >>
> >> +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 02ebd1b..fa9fd0ad 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,207 @@
> >> +@@ -16,24 +16,208 @@
> >>
> >>   enum ath79_mach_type {
> >>         ATH79_MACH_GENERIC = 0,
> >> @@ -176,6 +176,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 */
> >> @@ -1437,7 +1438,7 @@
> >>
> >>   config ATH79_MACH_UBNT_XM
> >>         bool "Ubiquiti Networks XM/UniFi boards"
> >> -@@ -83,6 +1212,97 @@ config ATH79_MACH_UBNT_XM
> >> +@@ -83,6 +1212,106 @@ config ATH79_MACH_UBNT_XM
> >>           Say 'Y' here if you want your kernel to support the
> >>           Ubiquiti Networks XM (rev 1.0) board.
> >>
> >> @@ -1511,6 +1512,15 @@
> >>  +      select ATH79_DEV_USB
> >>  +      select ATH79_DEV_WMAC
> >>  +
> >> ++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_BHU_BXU2000N2_A
> >>  +      bool "BHU BXU2000n-2 rev. A support"
> >>  +      select SOC_AR934X
> >> @@ -1535,7 +1545,7 @@
> >>   endmenu
> >>
> >>   config SOC_AR71XX
> >> -@@ -134,7 +1354,10 @@ config ATH79_DEV_DSA
> >> +@@ -134,7 +1363,10 @@ config ATH79_DEV_DSA
> >>   config ATH79_DEV_ETH
> >>         def_bool n
> >>
> >> @@ -1547,7 +1557,7 @@
> >>         def_bool n
> >>
> >>   config ATH79_DEV_GPIO_BUTTONS
> >> -@@ -164,6 +1387,11 @@ config ATH79_PCI_ATH9K_FIXUP
> >> +@@ -164,6 +1396,11 @@ config ATH79_PCI_ATH9K_FIXUP
> >>         def_bool n
> >>
> >>   config ATH79_ROUTERBOOT
> >> @@ -1561,7 +1571,7 @@
> >>   endif
> >>  --- a/arch/mips/ath79/Makefile
> >>  +++ b/arch/mips/ath79/Makefile
> >> -@@ -38,9 +38,133 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
> >> +@@ -38,9 +38,134 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)             += route
> >>   #
> >>   # Machines
> >>   #
> >> @@ -1670,6 +1680,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
> >
> >
> > Jonas
>
diff mbox

Patch

diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index e1f345e..e30cac2 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -832,6 +832,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 c1962e4..b681fb8 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -250,7 +250,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 21c4601..7d836d9 100644
--- a/target/linux/ar71xx/config-4.1
+++ b/target/linux/ar71xx/config-4.1
@@ -139,6 +139,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..791991c
--- /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@gmail.com>
+ * Uros PETREVSKI <uros@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 e6fe36a..0a37fd1 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -179,6 +179,14 @@  define Device/carambola2
 endef
 TARGET_DEVICES += carambola2
 
+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 02ebd1b..fa9fd0ad 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,207 @@
+@@ -16,24 +16,208 @@
  
  enum ath79_mach_type {
  	ATH79_MACH_GENERIC = 0,
@@ -176,6 +176,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 */
@@ -1437,7 +1438,7 @@ 
  
  config ATH79_MACH_UBNT_XM
  	bool "Ubiquiti Networks XM/UniFi boards"
-@@ -83,6 +1212,97 @@ config ATH79_MACH_UBNT_XM
+@@ -83,6 +1212,106 @@ config ATH79_MACH_UBNT_XM
  	  Say 'Y' here if you want your kernel to support the
  	  Ubiquiti Networks XM (rev 1.0) board.
  
@@ -1511,6 +1512,15 @@ 
 +	select ATH79_DEV_USB
 +	select ATH79_DEV_WMAC
 +
++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_BHU_BXU2000N2_A
 +	bool "BHU BXU2000n-2 rev. A support"
 +	select SOC_AR934X
@@ -1535,7 +1545,7 @@ 
  endmenu
  
  config SOC_AR71XX
-@@ -134,7 +1354,10 @@ config ATH79_DEV_DSA
+@@ -134,7 +1363,10 @@ config ATH79_DEV_DSA
  config ATH79_DEV_ETH
  	def_bool n
  
@@ -1547,7 +1557,7 @@ 
  	def_bool n
  
  config ATH79_DEV_GPIO_BUTTONS
-@@ -164,6 +1387,11 @@ config ATH79_PCI_ATH9K_FIXUP
+@@ -164,6 +1396,11 @@ config ATH79_PCI_ATH9K_FIXUP
  	def_bool n
  
  config ATH79_ROUTERBOOT
@@ -1561,7 +1571,7 @@ 
  endif
 --- a/arch/mips/ath79/Makefile
 +++ b/arch/mips/ath79/Makefile
-@@ -38,9 +38,133 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)		+= route
+@@ -38,9 +38,134 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)		+= route
  #
  # Machines
  #
@@ -1670,6 +1680,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