On 20/09/2016 06:51, John Crispin wrote:
> Hi,
> 
> this patch does not apply cleanly, please rebase/resend
> 
>       John

as patch 1 and 2 of the series apply, i have already picked them up,
only resend patch 3 please


> 
> On 18/09/2016 17:12, Chris Blake wrote:
>> This patch adds support for Cisco's Z1.
>> Detailed instructions for the flashing the device can
>> be found in the OpenWrt wiki:
>> <https://wiki.openwrt.org/toh/meraki/z1>
>>
>> Signed-off-by: Chris Blake <chrisrblak...@gmail.com>
>> ---
>>  target/linux/ar71xx/base-files/etc/board.d/01_leds |   4 +
>>  .../linux/ar71xx/base-files/etc/board.d/02_network |   6 +
>>  target/linux/ar71xx/base-files/etc/diag.sh         |   3 +
>>  .../etc/hotplug.d/firmware/10-ath9k-eeprom         |  20 +++
>>  .../etc/uci-defaults/03_network-switchX-migration  |   1 +
>>  target/linux/ar71xx/base-files/lib/ar71xx.sh       |   3 +
>>  .../base-files/lib/preinit/05_set_iface_mac_ar71xx |   4 +
>>  .../ar71xx/base-files/lib/upgrade/merakinand.sh    |  61 ++++++--
>>  .../ar71xx/base-files/lib/upgrade/platform.sh      |   6 +-
>>  target/linux/ar71xx/config-4.4                     |   1 +
>>  .../ar71xx/files/arch/mips/ath79/Kconfig.openwrt   |  12 ++
>>  target/linux/ar71xx/files/arch/mips/ath79/Makefile |   1 +
>>  .../linux/ar71xx/files/arch/mips/ath79/mach-z1.c   | 164 
>> +++++++++++++++++++++
>>  .../linux/ar71xx/files/arch/mips/ath79/machtypes.h |   1 +
>>  target/linux/ar71xx/image/nand.mk                  |  23 +++
>>  .../818-MIPS-ath79-add-nu801-led-driver.patch      |   2 +-
>>  16 files changed, 293 insertions(+), 19 deletions(-)
>>  create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-z1.c
>>
>> diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds 
>> b/target/linux/ar71xx/base-files/etc/board.d/01_leds
>> index cf05859..7551455 100755
>> --- a/target/linux/ar71xx/base-files/etc/board.d/01_leds
>> +++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds
>> @@ -813,6 +813,10 @@ wzr-hp-g300nh)
>>      ucidef_set_led_usbdev "usb" "USB" "buffalo:blue:usb" "1-1"
>>      ;;
>>
>> +z1)
>> +    ucidef_set_led_netdev "wlan1" "WLAN1" "z1:blue:tricolor0" "wlan1"
>> +    ;;
>> +
>>  zbt-we1526)
>>      ucidef_set_led_netdev "wan" "WAN" "zbt-we1526:green:wan" "eth1"
>>      ucidef_set_led_switch "lan1" "LAN1" "zbt-we1526:green:lan1" "switch0" 
>> "0x10"
>> diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network 
>> b/target/linux/ar71xx/base-files/etc/board.d/02_network
>> index b637113..2a50c9d 100755
>> --- a/target/linux/ar71xx/base-files/etc/board.d/02_network
>> +++ b/target/linux/ar71xx/base-files/etc/board.d/02_network
>> @@ -538,6 +538,12 @@ wndr3700)
>>      ucidef_add_switch_port_attr "switch0" 5 led 2
>>      ;;
>>
>> +z1)
>> +    ucidef_set_interfaces_lan_wan "eth0" "eth1"
>> +    ucidef_add_switch "switch0" \
>> +            "0@eth0" "1:lan:1" "2:lan:2" "3:lan:3" "4:lan:4" "5:wan"
>> +    ;;
>> +
>>  *)
>>      ucidef_set_interfaces_lan_wan "eth0" "eth1"
>>      ;;
>> diff --git a/target/linux/ar71xx/base-files/etc/diag.sh 
>> b/target/linux/ar71xx/base-files/etc/diag.sh
>> index 69ef609..6ce49b0 100644
>> --- a/target/linux/ar71xx/base-files/etc/diag.sh
>> +++ b/target/linux/ar71xx/base-files/etc/diag.sh
>> @@ -426,6 +426,9 @@ get_status_led() {
>>      wrt160nl)
>>              status_led="wrt160nl:blue:wps"
>>              ;;
>> +    z1)
>> +            status_led="z1:green:tricolor0"
>> +            ;;
>>      zbt-we1526)
>>              status_led="zbt-we1526:green:status"
>>              ;;
>> diff --git 
>> a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom 
>> b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
>> index 3b0229d..3141625 100644
>> --- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
>> +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
>> @@ -73,6 +73,16 @@ case "$FIRMWARE" in
>>              ath9k_eeprom_extract "caldata" 4096 2048
>>              ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 0)
>>              ;;
>> +    z1)
>> +            . /lib/upgrade/nand.sh
>> +
>> +            if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
>> +                    ath9k_ubi_eeprom_extract "caldata" 4096 2048
>> +            else
>> +                    ath9k_eeprom_extract "origcaldata" 4096 2048
>> +            fi
>> +            ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi 
>> board-config 102) +2)
>> +            ;;
>>      *)
>>              ath9k_eeprom_die "board $board is not supported yet"
>>              ;;
>> @@ -100,6 +110,16 @@ case "$FIRMWARE" in
>>              ath9k_eeprom_extract "caldata" 20480 2048
>>              ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 12)
>>              ;;
>> +    z1)
>> +            . /lib/upgrade/nand.sh
>> +
>> +            if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
>> +                    ath9k_ubi_eeprom_extract "caldata" 86016 4096
>> +            else
>> +                    ath9k_eeprom_extract "origcaldata" 86016 4096
>> +            fi
>> +            ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi 
>> board-config 102) +3)
>> +            ;;
>>      *)
>>              ath9k_eeprom_die "board $board is not supported yet"
>>              ;;
>> diff --git 
>> a/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration
>>  
>> b/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration
>> index aa0e1b4..ee8f63b 100644
>> --- 
>> a/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration
>> +++ 
>> b/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration
>> @@ -78,6 +78,7 @@ whr-hp-g300n|\
>>  whr-hp-gn|\
>>  wzr-hp-ag300h|\
>>  wzr-hp-g450h|\
>> +z1|\
>>  ew-dorin|\
>>  ew-dorin-router)
>>      migrate_switch_name "eth0" "switch0"
>> diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh 
>> b/target/linux/ar71xx/base-files/lib/ar71xx.sh
>> index e57701a..6acbb06 100755
>> --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
>> +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
>> @@ -1098,6 +1098,9 @@ ar71xx_board_detect() {
>>      *WHR-HP-G300N)
>>              name="whr-hp-g300n"
>>              ;;
>> +    *Z1)
>> +            name="z1"
>> +            ;;
>>      *ZBT-WE1526)
>>              name="zbt-we1526"
>>              ;;
>> diff --git 
>> a/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx 
>> b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx
>> index 39da309..60e2787 100644
>> --- a/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx
>> +++ b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx
>> @@ -49,6 +49,10 @@ preinit_set_mac_address() {
>>              wrt160nl)
>>                      fetch_mac_from_mtd nvram lan_hwaddr wan_hwaddr
>>                      ;;
>> +            z1)
>> +                    mac_lan=$(mtd_get_mac_binary_ubi board-config 102)
>> +                    [ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan"
>> +                    ;;
>>      esac
>>  }
>>
>> diff --git a/target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh 
>> b/target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh
>> index cc7a86c..78cde20 100644
>> --- a/target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh
>> +++ b/target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh
>> @@ -1,6 +1,6 @@
>>  #!/bin/sh
>>  #
>> -# Copyright (C) 2015 Chris Blake <chrisrblak...@gmail.com>
>> +# Copyright (C) 2015-2016 Chris Blake <chrisrblak...@gmail.com>
>>  #
>>  # Custom upgrade script for Meraki NAND devices (ex. MR18)
>>  # Based on dir825.sh and stock nand functions
>> @@ -14,34 +14,52 @@ get_magic_at() {
>>      dd bs=1 count=2 skip=$pos if=$mtddev 2>/dev/null | hexdump -v -n 4 -e 
>> '1/1 "%02x"'
>>  }
>>
>> -mr18_is_caldata_valid() {
>> -    local mtddev=$1
>> +meraki_is_caldata_valid() {
>> +    local board=$1
>> +    local mtddev=$2
>>      local magic
>>
>> -    magic=$(get_magic_at $mtddev 4096)
>> -    [ "$magic" != "0202" ] && return 0
>> +    case "$board" in
>> +    "mr18")
>> +            magic=$(get_magic_at $mtddev 4096)
>> +            [ "$magic" != "0202" ] && return 0
>> +
>> +            magic=$(get_magic_at $mtddev 20480)
>> +            [ "$magic" != "0202" ] && return 0
>>
>> -    magic=$(get_magic_at $mtddev 20480)
>> -    [ "$magic" != "0202" ] && return 0
>> +            magic=$(get_magic_at $mtddev 36864)
>> +            [ "$magic" != "0202" ] && return 0
>> +
>> +            return 1
>> +            ;;
>> +    "z1")
>> +            magic=$(get_magic_at $mtddev 4096)
>> +            [ "$magic" != "0202" ] && return 0
>>
>> -    magic=$(get_magic_at $mtddev 36864)
>> -    [ "$magic" != "0202" ] && return 0
>> +            magic=$(get_magic_at $mtddev 86016)
>> +            [ "$magic" != "a55a" ] && return 0
>>
>> -    return 1
>> +            return 1
>> +            ;;
>> +    *)
>> +            return 1
>> +            ;;
>> +    esac
>>  }
>>
>>  merakinand_copy_caldata() {
>>      local cal_src=$1
>>      local cal_dst=$2
>> -    local ubidev=$( nand_find_ubi $CI_UBIPART )
>> +    local ubidev="$(nand_find_ubi $CI_UBIPART)"
>>      local board_name="$(cat /tmp/sysinfo/board_name)"
>>      local rootfs_size="$(ubinfo /dev/ubi0 -N rootfs_data | grep "Size" | 
>> awk '{ print $6 }')"
>>
>>      # Setup partitions using board name, in case of future platforms
>>      case "$board_name" in
>> -    "mr18")
>> +    "mr18"|\
>> +    "z1")
>>              # Src is MTD
>> -            mtd_src=$(find_mtd_chardev $cal_src)
>> +            mtd_src="$(find_mtd_chardev $cal_src)"
>>              [ -n "$mtd_src" ] || {
>>                      echo "no mtd device found for partition $cal_src"
>>                      exit 1
>> @@ -56,12 +74,12 @@ merakinand_copy_caldata() {
>>                      exit 1
>>              }
>>
>> -            mr18_is_caldata_valid "$mtd_src" && {
>> +            meraki_is_caldata_valid "$board_name" "$mtd_src" && {
>>                      echo "no valid calibration data found in $cal_src"
>>                      exit 1
>>              }
>>
>> -            mr18_is_caldata_valid "/dev/$mtd_dst" && {
>> +            meraki_is_caldata_valid "$board_name" "/dev/$mtd_dst" && {
>>                      echo "Copying calibration data from $cal_src to 
>> $cal_dst..."
>>                      dd if="$mtd_src" of=/tmp/caldata.tmp 2>/dev/null
>>                      ubiupdatevol "/dev/$mtd_dst" /tmp/caldata.tmp
>> @@ -89,6 +107,11 @@ merakinand_do_kernel_check() {
>>                      echo "pass" && return 0
>>              }
>>              ;;
>> +    "z1")
>> +            [ "$image_magic_word" == "4d495053" ] && {
>> +                    echo "pass" && return 0
>> +            }
>> +            ;;
>>      esac
>>
>>      exit 1
>> @@ -102,7 +125,8 @@ merakinand_do_platform_check() {
>>      local kernel_magic="$(merakinand_do_kernel_check $1 $2)"
>>
>>      case "$board_name" in
>> -    "mr18")
>> +    "mr18"|\
>> +    "z1")
>>              [ "$control_length" = 0 -o "$file_type" != "squashfs" -o 
>> "$kernel_magic" != "pass" ] && {
>>                      echo "Invalid sysupgrade file for $board_name"
>>                      return 1
>> @@ -128,6 +152,11 @@ merakinand_do_upgrade() {
>>              merakinand_copy_caldata "odm-caldata" "caldata"
>>              nand_do_upgrade $1
>>              ;;
>> +    "z1")
>> +            # Check and create UBI caldata if it's invalid
>> +            merakinand_copy_caldata "origcaldata" "caldata"
>> +            nand_do_upgrade $1
>> +            ;;
>>      *)
>>              echo "Unsupported device $board_name";
>>              exit 1
>> diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh 
>> b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
>> index 716fa52..c78d1fb 100755
>> --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
>> +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
>> @@ -472,7 +472,8 @@ platform_check_image() {
>>              }
>>              return 0
>>              ;;
>> -    mr18)
>> +    mr18 | \
>> +    z1 )
>>              merakinand_do_platform_check $board $1
>>              return $?;
>>              ;;
>> @@ -543,7 +544,8 @@ platform_pre_upgrade() {
>>      wndr4300 )
>>              nand_do_upgrade "$1"
>>              ;;
>> -    mr18)
>> +    mr18 | \
>> +    z1 )
>>              merakinand_do_upgrade "$1"
>>              ;;
>>      esac
>> diff --git a/target/linux/ar71xx/config-4.4 b/target/linux/ar71xx/config-4.4
>> index a984b1e..ab26ff4 100644
>> --- a/target/linux/ar71xx/config-4.4
>> +++ b/target/linux/ar71xx/config-4.4
>> @@ -201,6 +201,7 @@ CONFIG_ATH79_MACH_WZR_HP_AG300H=y
>>  CONFIG_ATH79_MACH_WZR_HP_G300NH=y
>>  CONFIG_ATH79_MACH_WZR_HP_G300NH2=y
>>  CONFIG_ATH79_MACH_WZR_HP_G450H=y
>> +CONFIG_ATH79_MACH_Z1=y
>>  CONFIG_ATH79_MACH_ZBT_WE1526=y
>>  CONFIG_ATH79_MACH_ZCN_1523H=y
>>  CONFIG_ATH79_NVRAM=y
>> diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt 
>> b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
>> index a6f19da..4cefde1 100644
>> --- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
>> +++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
>> @@ -1552,6 +1552,18 @@ config ATH79_MACH_MYNET_REXT
>>      select ATH79_DEV_WMAC
>>      select ATH79_NVRAM
>>
>> +config ATH79_MACH_Z1
>> +    bool "Meraki Z1 board support"
>> +    select SOC_AR934X
>> +    select ATH79_DEV_AP9X_PCI if PCI
>> +    select ATH79_DEV_ETH
>> +    select ATH79_DEV_GPIO_BUTTONS
>> +    select ATH79_DEV_LEDS_GPIO
>> +    select ATH79_DEV_NFC
>> +    select ATH79_DEV_USB
>> +    select ATH79_DEV_WMAC
>> +    select LEDS_NU801
>> +
>>  config ATH79_MACH_ZBT_WE1526
>>      bool "Zbtlink ZBT-WE1526 board support"
>>      select SOC_QCA953X
>> diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Makefile 
>> b/target/linux/ar71xx/files/arch/mips/ath79/Makefile
>> index 3222a76..a0f8d99 100644
>> --- a/target/linux/ar71xx/files/arch/mips/ath79/Makefile
>> +++ b/target/linux/ar71xx/files/arch/mips/ath79/Makefile
>> @@ -205,6 +205,7 @@ obj-$(CONFIG_ATH79_MACH_WZR_HP_G300NH2)  += 
>> mach-wzr-hp-g300nh2.o
>>  obj-$(CONFIG_ATH79_MACH_WZR_HP_AG300H)      += mach-wzr-hp-ag300h.o
>>  obj-$(CONFIG_ATH79_MACH_WZR_HP_G450H)       += mach-wzr-hp-g450h.o
>>  obj-$(CONFIG_ATH79_MACH_WZR_450HP2) += mach-wzr-450hp2.o
>> +obj-$(CONFIG_ATH79_MACH_Z1)         += mach-z1.o
>>  obj-$(CONFIG_ATH79_MACH_ZBT_WE1526) += mach-zbt-we1526.o
>>  obj-$(CONFIG_ATH79_MACH_ZCN_1523H)  += mach-zcn-1523h.o
>>  obj-$(CONFIG_ATH79_MACH_CARAMBOLA2) += mach-carambola2.o
>> diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-z1.c 
>> b/target/linux/ar71xx/files/arch/mips/ath79/mach-z1.c
>> new file mode 100644
>> index 0000000..552d646
>> --- /dev/null
>> +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-z1.c
>> @@ -0,0 +1,164 @@
>> +/*
>> + *  Cisco Meraki Z1 board support
>> + *
>> + *  Copyright (C) 2016 Chris Blake <chrisrblak...@gmail.com>
>> + *  Copyright (C) 2016 Christian Lamparter <chunk...@googlemail.com>
>> + *
>> + *  Based on Cisco Meraki GPL Release r23-20150601 Z1 Device Config
>> + *
>> + *  This program is free software; you can redistribute it and/or modify it
>> + *  under the terms of the GNU General Public License version 2 as published
>> + *  by the Free Software Foundation.
>> + */
>> +#include <linux/platform_device.h>
>> +#include <linux/ath9k_platform.h>
>> +#include <linux/ar8216_platform.h>
>> +#include <linux/platform/ar934x_nfc.h>
>> +
>> +#include <asm/mach-ath79/ath79.h>
>> +#include <asm/mach-ath79/ar71xx_regs.h>
>> +
>> +#include <linux/leds-nu801.h>
>> +#include <linux/firmware.h>
>> +#include <linux/pci.h>
>> +
>> +#include "common.h"
>> +#include "dev-eth.h"
>> +#include "dev-gpio-buttons.h"
>> +#include "dev-leds-gpio.h"
>> +#include "dev-nfc.h"
>> +#include "dev-usb.h"
>> +#include "dev-wmac.h"
>> +#include "dev-ap9x-pci.h"
>> +#include "machtypes.h"
>> +
>> +#define Z1_GPIO_LED_POWER_ORANGE    17
>> +
>> +#define Z1_GPIO_NU801_CKI           14
>> +#define Z1_GPIO_NU801_SDI           15
>> +
>> +#define Z1_GPIO_XLNA0                       18
>> +#define Z1_GPIO_XLNA1                       19
>> +
>> +#define Z1_GPIO_BTN_RESET           12
>> +#define Z1_KEYS_POLL_INTERVAL               20  /* msecs */
>> +#define Z1_KEYS_DEBOUNCE_INTERVAL   (3 * Z1_KEYS_POLL_INTERVAL)
>> +
>> +#define Z1_ETH_SWITCH_PHY           0
>> +
>> +static struct gpio_led Z1_leds_gpio[] __initdata = {
>> +    {
>> +            .name = "z1:orange:power",
>> +            .gpio = Z1_GPIO_LED_POWER_ORANGE,
>> +            .active_low  = 1,
>> +    },
>> +};
>> +
>> +static struct gpio_keys_button Z1_gpio_keys[] __initdata = {
>> +    {
>> +            .desc = "reset",
>> +            .type = EV_KEY,
>> +            .code = KEY_RESTART,
>> +            .debounce_interval = Z1_KEYS_DEBOUNCE_INTERVAL,
>> +            .gpio    = Z1_GPIO_BTN_RESET,
>> +            .active_low  = 1,
>> +    },
>> +};
>> +
>> +static struct led_nu801_template tricolor_led_template = {
>> +    .device_name = "z1",
>> +    .name = "tricolor",
>> +    .num_leds = 1,
>> +    .cki = Z1_GPIO_NU801_CKI,
>> +    .sdi = Z1_GPIO_NU801_SDI,
>> +    .lei = -1,
>> +    .ndelay = 500,
>> +    .init_brightness = {
>> +            LED_OFF,
>> +            LED_OFF,
>> +            LED_OFF,
>> +    },
>> +    .default_trigger = "none",
>> +};
>> +
>> +static struct led_nu801_platform_data tricolor_led_data = {
>> +    .num_controllers = 1,
>> +    .template = &tricolor_led_template,
>> +};
>> +
>> +static struct platform_device tricolor_leds = {
>> +    .name = "leds-nu801",
>> +    .id = -1,
>> +    .dev.platform_data = &tricolor_led_data,
>> +};
>> +
>> +static struct ar8327_pad_cfg z1_ar8327_pad0_cfg = {
>> +    .mode = AR8327_PAD_MAC_RGMII,
>> +    .txclk_delay_en = true,
>> +    .rxclk_delay_en = true,
>> +    .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
>> +    .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
>> +};
>> +
>> +static struct ar8327_platform_data z1_ar8327_data = {
>> +    .pad0_cfg = &z1_ar8327_pad0_cfg,
>> +    .port0_cfg = {
>> +            .force_link = 1,
>> +            .speed = AR8327_PORT_SPEED_1000,
>> +            .duplex = 1,
>> +            .txpause = 1,
>> +            .rxpause = 1,
>> +    },
>> +};
>> +
>> +static struct mdio_board_info z1_mdio0_info[] = {
>> +    {
>> +            .bus_id = "ag71xx-mdio.0",
>> +            .phy_addr = Z1_ETH_SWITCH_PHY,
>> +            .platform_data = &z1_ar8327_data,
>> +    },
>> +};
>> +
>> +static void __init z1_setup(void)
>> +{
>> +    /* NAND */
>> +    ath79_nfc_set_ecc_mode(AR934X_NFC_ECC_SOFT_BCH);
>> +    ath79_register_nfc();
>> +
>> +    /* Eth Config */
>> +    ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
>> +                               AR934X_ETH_CFG_SW_ONLY_MODE);
>> +
>> +    /* MDIO Interface */
>> +    ath79_register_mdio(1, 0x0);
>> +    ath79_register_mdio(0, 0x0);
>> +    mdiobus_register_board_info(z1_mdio0_info,
>> +                                ARRAY_SIZE(z1_mdio0_info));
>> +
>> +    /* GMAC0 is connected to an AR8327 switch */
>> +    ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
>> +    ath79_eth0_data.phy_mask = BIT(Z1_ETH_SWITCH_PHY);
>> +    ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
>> +    ath79_eth0_pll_data.pll_1000 = 0x06000000;
>> +    ath79_register_eth(0);
>> +
>> +    /* XLNA */
>> +    ath79_wmac_set_ext_lna_gpio(0, Z1_GPIO_XLNA0);
>> +    ath79_wmac_set_ext_lna_gpio(1, Z1_GPIO_XLNA1);
>> +
>> +    /* LEDs and Buttons */
>> +    platform_device_register(&tricolor_leds);
>> +    ath79_register_leds_gpio(-1, ARRAY_SIZE(Z1_leds_gpio),
>> +                             Z1_leds_gpio);
>> +    ath79_register_gpio_keys_polled(-1, Z1_KEYS_POLL_INTERVAL,
>> +                                    ARRAY_SIZE(Z1_gpio_keys),
>> +                                    Z1_gpio_keys);
>> +
>> +    /* USB */
>> +    ath79_register_usb();
>> +
>> +    /* Wireless */
>> +    ath79_register_wmac_simple();
>> +    ap91_pci_init_simple();
>> +}
>> +MIPS_MACHINE(ATH79_MACH_Z1, "Z1", "Meraki Z1", z1_setup);
>> diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h 
>> b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
>> index a3b8c87..87acc4a 100644
>> --- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
>> +++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
>> @@ -266,6 +266,7 @@ enum ath79_mach_type {
>>      ATH79_MACH_WZR_HP_G300NH2,      /* Buffalo WZR-HP-G300NH2 */
>>      ATH79_MACH_WZR_HP_G450H,        /* Buffalo WZR-HP-G450H */
>>      ATH79_MACH_WZR_450HP2,          /* Buffalo WZR-450HP2 */
>> +    ATH79_MACH_Z1,                  /* Cisco Meraki Z1 */
>>      ATH79_MACH_ZBT_WE1526,          /* Zbtlink ZBT-WE1526 */
>>      ATH79_MACH_ZCN_1523H_2,         /* Zcomax ZCN-1523H-2-xx */
>>      ATH79_MACH_ZCN_1523H_5,         /* Zcomax ZCN-1523H-5-xx */
>> diff --git a/target/linux/ar71xx/image/nand.mk 
>> b/target/linux/ar71xx/image/nand.mk
>> index c6a8d7e..aa431ac 100644
>> --- a/target/linux/ar71xx/image/nand.mk
>> +++ b/target/linux/ar71xx/image/nand.mk
>> @@ -20,6 +20,29 @@ define Device/mr18
>>  endef
>>  TARGET_DEVICES += mr18
>>
>> +define Build/MerakiNAND-old
>> +    -$(STAGING_DIR_HOST)/bin/mkmerakifw-old \
>> +            -B $(BOARDNAME) -s \
>> +            -i $@ \
>> +            -o $@.new
>> +    @mv $@.new $@
>> +endef
>> +
>> +define Device/z1
>> +  DEVICE_TITLE := Meraki Z1
>> +  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev 
>> kmod-spi-gpio kmod-ath9k kmod-owl-loader
>> +  BOARDNAME = Z1
>> +  BLOCKSIZE := 64k
>> +  CONSOLE = ttyS0,115200
>> +  MTDPARTS = 
>> ar934x-nfc:128K(loader1)ro,8064K(kernel),128K(loader2)ro,8064K(recovery),114560K(ubi),128K(origcaldata)ro
>> +  IMAGES := sysupgrade.tar
>> +  KERNEL := kernel-bin | patch-cmdline | MerakiNAND-old
>> +  KERNEL_INITRAMFS := kernel-bin | patch-cmdline | MerakiNAND-old
>> +  IMAGE/sysupgrade.tar := sysupgrade-tar
>> +endef
>> +
>> +TARGET_DEVICES += z1
>> +
>>  define LegacyDevice/R6100
>>    DEVICE_TITLE := NETGEAR R6100
>>    DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 
>> kmod-ledtrig-usbdev
>> diff --git 
>> a/target/linux/ar71xx/patches-4.4/818-MIPS-ath79-add-nu801-led-driver.patch 
>> b/target/linux/ar71xx/patches-4.4/818-MIPS-ath79-add-nu801-led-driver.patch
>> index ec9f59e..420bbff 100644
>> --- 
>> a/target/linux/ar71xx/patches-4.4/818-MIPS-ath79-add-nu801-led-driver.patch
>> +++ 
>> b/target/linux/ar71xx/patches-4.4/818-MIPS-ath79-add-nu801-led-driver.patch
>> @@ -6,7 +6,7 @@
>>
>>  +config LEDS_NU801
>>  +   tristate "LED driver for NU801 RGB LED"
>> -+   depends on LEDS_CLASS && ATH79_MACH_MR18
>> ++   depends on LEDS_CLASS && (ATH79_MACH_MR18 || ATH79_MACH_Z1)
>>  +   help
>>  +     This option enables support for NU801 RGB LED driver chips
>>  +     accessed via GPIO.
>> --
>> 2.7.4
>>
>> _______________________________________________
>> Lede-dev mailing list
>> Lede-dev@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/lede-dev
>>
> 
> _______________________________________________
> Lede-dev mailing list
> Lede-dev@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-dev
> 

_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to