Skip to content
Snippets Groups Projects
Unverified Commit a22c1d56 authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

Update OpenWrt base

parent a54e7654
No related branches found
No related tags found
No related merge requests found
Showing
with 0 additions and 911 deletions
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:25:42 +0000
Subject: scripts/om-fwupgradecfg-gen.sh: Generate sha256sum for uboot verification
Future Open Mesh u-boot versions are changing the check of the image files
(vmlinux, rootfs) from md5 to sha256. Having both in them should be enough
to ensure backward and forward compatibility.
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49140
Forwarded: https://patchwork.ozlabs.org/patch/624190/
diff --git a/scripts/om-fwupgradecfg-gen.sh b/scripts/om-fwupgradecfg-gen.sh
index fab1582..e208e6d 100644
--- a/scripts/om-fwupgradecfg-gen.sh
+++ b/scripts/om-fwupgradecfg-gen.sh
@@ -42,6 +42,7 @@ CHECK_BS=65536
KERNEL_SIZE=$(stat -c%s "$KERNEL_PATH")
KERNEL_MD5=$(md5=$(md5sum $KERNEL_PATH); echo ${md5%% *})
+KERNEL_SHA256=$(openssl dgst -sha256 $KERNEL_PATH | awk '{print $2}')
KERNEL_PART_SIZE=$(size=$(($KERNEL_SIZE / $FLASH_BS)); [ $(($size * $FLASH_BS)) -lt $KERNEL_SIZE ] && size=$(($size + 1)); echo $(($size * $FLASH_BS / 1024)))
ROOTFS_FLASH_ADDR=$(addr=$(($KERNEL_FLASH_ADDR + ($KERNEL_PART_SIZE * 1024))); printf "0x%x" $addr)
@@ -49,6 +50,7 @@ ROOTFS_SIZE=$(stat -c%s "$ROOTFS_PATH")
ROOTFS_CHECK_BLOCKS=$((($ROOTFS_SIZE / $CHECK_BS) - $MD5_SKIP_BLOCKS))
ROOTFS_MD5=$(md5=$(dd if=$ROOTFS_PATH bs=$CHECK_BS count=$ROOTFS_CHECK_BLOCKS 2>&- | md5sum); echo ${md5%% *})
ROOTFS_MD5_FULL=$(md5=$(md5sum $ROOTFS_PATH); echo ${md5%% *})
+ROOTFS_SHA256_FULL=$(openssl dgst -sha256 $ROOTFS_PATH | awk '{print $2}')
ROOTFS_CHECK_SIZE=$(printf '0x%x' $(($ROOTFS_CHECK_BLOCKS * $CHECK_BS)))
ROOTFS_PART_SIZE=$(($MAX_PART_SIZE - $KERNEL_PART_SIZE))
@@ -57,6 +59,7 @@ cat << EOF > $CFG_OUT
filename=kernel
md5sum=$KERNEL_MD5
filemd5sum=$KERNEL_MD5
+filesha256sum=$KERNEL_SHA256
flashaddr=$KERNEL_FLASH_ADDR
checksize=0x0
cmd_success=setenv bootseq 1,2; setenv kernel_size_1 $KERNEL_PART_SIZE; saveenv
@@ -66,6 +69,7 @@ cmd_fail=reset
filename=rootfs
md5sum=$ROOTFS_MD5
filemd5sum=$ROOTFS_MD5_FULL
+filesha256sum=$ROOTFS_SHA256_FULL
flashaddr=$ROOTFS_FLASH_ADDR
checksize=$ROOTFS_CHECK_SIZE
cmd_success=setenv bootseq 1,2; setenv kernel_size_1 $KERNEL_PART_SIZE; setenv rootfs_size_1 $ROOTFS_PART_SIZE; saveenv
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:25:47 +0000
Subject: ar71xx: add kernel support for the OpenMesh OM5P-AC board
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49141
Forwarded: https://patchwork.ozlabs.org/patch/624191/
diff --git a/target/linux/ar71xx/config-3.18 b/target/linux/ar71xx/config-3.18
index c5a3c9a..dd89357 100644
--- a/target/linux/ar71xx/config-3.18
+++ b/target/linux/ar71xx/config-3.18
@@ -91,6 +91,7 @@ CONFIG_ATH79_MACH_NBG460N=y
CONFIG_ATH79_MACH_NBG6716=y
CONFIG_ATH79_MACH_OM2P=y
CONFIG_ATH79_MACH_OM5P=y
+CONFIG_ATH79_MACH_OM5P_AC=y
CONFIG_ATH79_MACH_ONION_OMEGA=y
CONFIG_ATH79_MACH_PB42=y
CONFIG_ATH79_MACH_PB44=y
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-om5pac.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-om5pac.c
new file mode 100644
index 0000000..f6974af
--- /dev/null
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-om5pac.c
@@ -0,0 +1,193 @@
+/*
+ * OpenMesh OM5P-AC support
+ *
+ * Copyright (C) 2013 Marek Lindner <marek@open-mesh.com>
+ * Copyright (C) 2014 Sven Eckelmann <sven@open-mesh.com>
+ *
+ * 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/gpio.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+#include <linux/i2c-algo-bit.h>
+#include <linux/i2c-gpio.h>
+#include <linux/platform_data/phy-at803x.h>
+
+#include <asm/mach-ath79/ar71xx_regs.h>
+#include <asm/mach-ath79/ath79.h>
+
+#include "common.h"
+#include "dev-ap9x-pci.h"
+#include "dev-eth.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+#include "pci.h"
+
+#define OM5PAC_GPIO_LED_POWER 18
+#define OM5PAC_GPIO_LED_GREEN 21
+#define OM5PAC_GPIO_LED_RED 23
+#define OM5PAC_GPIO_LED_YELLOW 22
+#define OM5PAC_GPIO_LED_LAN 20
+#define OM5PAC_GPIO_LED_WAN 19
+#define OM5PAC_GPIO_I2C_SCL 12
+#define OM5PAC_GPIO_I2C_SDA 11
+
+#define OM5PAC_KEYS_POLL_INTERVAL 20 /* msecs */
+#define OM5PAC_KEYS_DEBOUNCE_INTERVAL (3 * OM5PAC_KEYS_POLL_INTERVAL)
+
+#define OM5PAC_WMAC_CALDATA_OFFSET 0x1000
+
+static struct gpio_led om5pac_leds_gpio[] __initdata = {
+ {
+ .name = "om5pac:blue:power",
+ .gpio = OM5PAC_GPIO_LED_POWER,
+ .active_low = 1,
+ }, {
+ .name = "om5pac:red:wifi",
+ .gpio = OM5PAC_GPIO_LED_RED,
+ .active_low = 1,
+ }, {
+ .name = "om5pac:yellow:wifi",
+ .gpio = OM5PAC_GPIO_LED_YELLOW,
+ .active_low = 1,
+ }, {
+ .name = "om5pac:green:wifi",
+ .gpio = OM5PAC_GPIO_LED_GREEN,
+ .active_low = 1,
+ }, {
+ .name = "om5pac:blue:lan",
+ .gpio = OM5PAC_GPIO_LED_LAN,
+ .active_low = 1,
+ }, {
+ .name = "om5pac:blue:wan",
+ .gpio = OM5PAC_GPIO_LED_WAN,
+ .active_low = 1,
+ }
+};
+
+static struct flash_platform_data om5pac_flash_data = {
+ .type = "mx25l12805d",
+};
+
+static struct i2c_gpio_platform_data om5pac_i2c_device_platdata = {
+ .sda_pin = OM5PAC_GPIO_I2C_SDA,
+ .scl_pin = OM5PAC_GPIO_I2C_SCL,
+ .udelay = 10,
+ .sda_is_open_drain = 1,
+ .scl_is_open_drain = 1,
+};
+
+static struct platform_device om5pac_i2c_device = {
+ .name = "i2c-gpio",
+ .id = 0,
+ .dev = {
+ .platform_data = &om5pac_i2c_device_platdata,
+ },
+};
+
+static struct i2c_board_info om5pac_i2c_devs[] __initdata = {
+ {
+ I2C_BOARD_INFO("tmp423", 0x4c),
+ },
+};
+
+static struct at803x_platform_data om5pac_at803x_data = {
+ .disable_smarteee = 1,
+ .enable_rgmii_rx_delay = 1,
+ .enable_rgmii_tx_delay = 1,
+};
+
+static struct mdio_board_info om5pac_mdio0_info[] = {
+ {
+ .bus_id = "ag71xx-mdio.0",
+ .phy_addr = 1,
+ .platform_data = &om5pac_at803x_data,
+ },
+ {
+ .bus_id = "ag71xx-mdio.0",
+ .phy_addr = 2,
+ .platform_data = &om5pac_at803x_data,
+ },
+};
+
+static void __init om5p_ac_setup_qca955x_eth_cfg(u32 mask,
+ unsigned int rxd,
+ unsigned int rxdv,
+ unsigned int txd,
+ unsigned int txe)
+{
+ void __iomem *base;
+ u32 t;
+
+ base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
+
+ t = mask;
+ t |= rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT;
+ t |= rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT;
+ t |= txd << QCA955X_ETH_CFG_TXD_DELAY_SHIFT;
+ t |= txe << QCA955X_ETH_CFG_TXE_DELAY_SHIFT;
+
+ __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
+
+ iounmap(base);
+}
+
+static void __init om5p_ac_setup(void)
+{
+ u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
+ u8 mac[6];
+
+ /* temperature sensor */
+ platform_device_register(&om5pac_i2c_device);
+ i2c_register_board_info(0, om5pac_i2c_devs,
+ ARRAY_SIZE(om5pac_i2c_devs));
+
+ ath79_gpio_output_select(OM5PAC_GPIO_LED_WAN, QCA955X_GPIO_OUT_GPIO);
+
+ ath79_register_m25p80(&om5pac_flash_data);
+ ath79_register_leds_gpio(-1, ARRAY_SIZE(om5pac_leds_gpio),
+ om5pac_leds_gpio);
+
+ ath79_init_mac(mac, art, 0x02);
+ ath79_register_wmac(art + OM5PAC_WMAC_CALDATA_OFFSET, mac);
+
+ om5p_ac_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0);
+ ath79_register_mdio(0, 0x0);
+
+ mdiobus_register_board_info(om5pac_mdio0_info,
+ ARRAY_SIZE(om5pac_mdio0_info));
+
+ ath79_init_mac(ath79_eth0_data.mac_addr, art, 0x00);
+ ath79_init_mac(ath79_eth1_data.mac_addr, art, 0x01);
+
+ /* GMAC0 is connected to the PHY1 */
+ ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
+ ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
+ ath79_eth0_data.phy_mask = BIT(1);
+ ath79_eth0_pll_data.pll_1000 = 0x82000101;
+ ath79_eth0_pll_data.pll_100 = 0x80000101;
+ ath79_eth0_pll_data.pll_10 = 0x80001313;
+ ath79_register_eth(0);
+
+ /* GMAC1 is connected to MDIO1 in SGMII mode */
+ ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
+ ath79_eth1_data.mii_bus_dev = &ath79_mdio0_device.dev;
+ ath79_eth1_data.phy_mask = BIT(2);
+ ath79_eth1_pll_data.pll_1000 = 0x03000101;
+ ath79_eth1_pll_data.pll_100 = 0x80000101;
+ ath79_eth1_pll_data.pll_10 = 0x80001313;
+ ath79_eth1_data.speed = SPEED_1000;
+ ath79_eth1_data.duplex = DUPLEX_FULL;
+ ath79_register_eth(1);
+
+ ath79_register_pci();
+}
+
+MIPS_MACHINE(ATH79_MACH_OM5P_AC, "OM5P-AC", "OpenMesh OM5P AC", om5p_ac_setup);
diff --git a/target/linux/ar71xx/patches-3.18/815-MIPS-ath79-add-om5pac-support.patch b/target/linux/ar71xx/patches-3.18/815-MIPS-ath79-add-om5pac-support.patch
new file mode 100644
index 0000000..4accd03
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.18/815-MIPS-ath79-add-om5pac-support.patch
@@ -0,0 +1,38 @@
+--- a/arch/mips/ath79/Kconfig
++++ b/arch/mips/ath79/Kconfig
+@@ -799,6 +799,15 @@ config ATH79_MACH_OM5P
+ select ATH79_DEV_M25P80
+ select ATH79_DEV_WMAC
+
++config ATH79_MACH_OM5P_AC
++ bool "OpenMesh OM5P-AC board support"
++ select SOC_QCA955X
++ select ATH79_DEV_AP9X_PCI if PCI
++ select ATH79_DEV_ETH
++ select ATH79_DEV_LEDS_GPIO
++ select ATH79_DEV_M25P80
++ select ATH79_DEV_WMAC
++
+ config ATH79_MACH_ONION_OMEGA
+ bool "ONION OMEGA support"
+ select SOC_AR933X
+--- a/arch/mips/ath79/Makefile
++++ b/arch/mips/ath79/Makefile
+@@ -100,6 +100,7 @@ obj-$(CONFIG_ATH79_MACH_MZK_W300NH) += m
+ obj-$(CONFIG_ATH79_MACH_NBG460N) += mach-nbg460n.o
+ obj-$(CONFIG_ATH79_MACH_OM2P) += mach-om2p.o
+ obj-$(CONFIG_ATH79_MACH_OM5P) += mach-om5p.o
++obj-$(CONFIG_ATH79_MACH_OM5P_AC) += mach-om5pac.o
+ obj-$(CONFIG_ATH79_MACH_ONION_OMEGA) += mach-onion-omega.o
+ obj-$(CONFIG_ATH79_MACH_PB42) += mach-pb42.o
+ obj-$(CONFIG_ATH79_MACH_PB44) += mach-pb44.o
+--- a/arch/mips/ath79/machtypes.h
++++ b/arch/mips/ath79/machtypes.h
+@@ -95,6 +95,7 @@ enum ath79_mach_type {
+ ATH79_MACH_OM2P_LC, /* OpenMesh OM2P-LC */
+ ATH79_MACH_OM2Pv2, /* OpenMesh OM2Pv2 */
+ ATH79_MACH_OM2P, /* OpenMesh OM2P */
++ ATH79_MACH_OM5P_AC, /* OpenMesh OM5P-AC */
+ ATH79_MACH_OM5P_AN, /* OpenMesh OM5P-AN */
+ ATH79_MACH_OM5P, /* OpenMesh OM5P */
+ ATH79_MACH_ONION_OMEGA, /* ONION OMEGA */
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:25:51 +0000
Subject: ar71xx: add user-space support for the OpenMesh OM5P-AC
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49142
Forwarded: https://patchwork.ozlabs.org/patch/624192/
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index 44d2ddf..a4051f2 100644
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -178,6 +178,9 @@ get_status_led() {
om5p-an)
status_led="om5p:blue:power"
;;
+ om5p-ac)
+ status_led="om5pac:blue:power"
+ ;;
onion-omega)
status_led="onion:amber:system"
;;
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
index c451124..9a768cd 100644
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
@@ -304,6 +304,11 @@ om5p-an)
ucidef_set_led_netdev "port2" "port2" "om5p:blue:lan" "eth1"
;;
+om5p-ac)
+ ucidef_set_led_netdev "port1" "port1" "om5pac:blue:lan" "eth0"
+ ucidef_set_led_netdev "port2" "port2" "om5pac:blue:wan" "eth1"
+ ;;
+
qihoo-c301)
ucidef_set_led_wlan "wlan2g" "WLAN2G" "qihoo:red:status" "phy1tpt"
;;
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 587d029..10b8048 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -616,6 +616,9 @@ ar71xx_board_detect() {
*"OM5P AN")
name="om5p-an"
;;
+ *"OM5P AC")
+ name="om5p-ac"
+ ;;
*"Onion Omega")
name="onion-omega"
;;
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:25:54 +0000
Subject: scripts/om-fwupgradecfg-gen.sh: add support for the OM5P-AC
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49143
Forwarded: https://patchwork.ozlabs.org/patch/624193/
diff --git a/scripts/om-fwupgradecfg-gen.sh b/scripts/om-fwupgradecfg-gen.sh
index e208e6d..6c3b74c 100644
--- a/scripts/om-fwupgradecfg-gen.sh
+++ b/scripts/om-fwupgradecfg-gen.sh
@@ -7,7 +7,7 @@
#
usage() {
- echo "Usage: $0 <OM2P|OM5P|MR600|MR900|MR1750> <out file path> <kernel path> <rootfs path>"
+ echo "Usage: $0 <OM2P|OM5P|OM5PAC|MR600|MR900|MR1750> <out file path> <kernel path> <rootfs path>"
rm -f $CFG_OUT
exit 1
}
@@ -26,7 +26,7 @@ case $CE_TYPE in
FLASH_BS=262144
MD5_SKIP_BLOCKS=1
;;
- OM5P|MR600|MR900|MR1750)
+ OM5P|OM5PAC|MR600|MR900|MR1750)
MAX_PART_SIZE=7808
KERNEL_FLASH_ADDR=0xb0000
FLASH_BS=65536
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:25:57 +0000
Subject: ar71xx: enable sysupgrade for the OpenMesh OM5P-AC
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49144
Forwarded: https://patchwork.ozlabs.org/patch/624194/
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh b/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh
index 9ca0f5b..1cfead9 100644
--- a/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh
@@ -72,6 +72,11 @@ platform_check_image_openmesh()
echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
return 1
;;
+ OM5PAC)
+ [ "$board" = "om5p-ac" ] && break
+ echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
+ return 1
+ ;;
MR1750)
[ "$board" = "mr1750" ] && break
echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
@@ -162,7 +167,7 @@ platform_do_upgrade_openmesh()
kernel_start_addr1=0x9f1c0000
kernel_start_addr2=0x9f8c0000
;;
- OM5P|MR600|MR900|MR1750)
+ OM5P|OM5PAC|MR600|MR900|MR1750)
block_size=$((64 * 1024))
total_size=7995392
kernel_start_addr1=0x9f0b0000
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index ac060ea..67c0661 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -307,7 +307,8 @@ platform_check_image() {
om2p-hsv2 | \
om2p-lc | \
om5p | \
- om5p-an)
+ om5p-an | \
+ om5p-ac)
platform_check_image_openmesh "$magic_long" "$1" && return 0
return 1
;;
@@ -540,7 +541,8 @@ platform_do_upgrade() {
om2p-hsv2 | \
om2p-lc | \
om5p | \
- om5p-an)
+ om5p-an | \
+ om5p-ac)
platform_do_upgrade_openmesh "$ARGV"
;;
unifi-outdoor-plus | \
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:26:01 +0000
Subject: om-watchdog: add OpenMesh OM5P-AC support
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49145
Forwarded: https://patchwork.ozlabs.org/patch/624195/
diff --git a/package/kernel/om-watchdog/files/om-watchdog.init b/package/kernel/om-watchdog/files/om-watchdog.init
index c792968..8cec13b 100644
--- a/package/kernel/om-watchdog/files/om-watchdog.init
+++ b/package/kernel/om-watchdog/files/om-watchdog.init
@@ -22,6 +22,9 @@ boot() {
"om5p"|"om5p-an")
service_start /sbin/om-watchdog 11
;;
+ "om5p-ac")
+ service_start /sbin/om-watchdog 17
+ ;;
"mr600v2")
service_start /sbin/om-watchdog 15
;;
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:26:04 +0000
Subject: uboot-envtools: add OpenMesh OM5P-AC support
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49146
Forwarded: https://patchwork.ozlabs.org/patch/624196/
diff --git a/package/boot/uboot-envtools/files/ar71xx b/package/boot/uboot-envtools/files/ar71xx
index ef00f17..657b25f 100644
--- a/package/boot/uboot-envtools/files/ar71xx
+++ b/package/boot/uboot-envtools/files/ar71xx
@@ -28,6 +28,7 @@ mr900 | \
mr900v2 | \
nbg6716 | \
om5p-an | \
+om5p-ac | \
om5p | \
tube2h | \
wndr3700)
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:26:08 +0000
Subject: ar71xx: extract ath10k wifi board.bin for the OpenMesh OM5P-AC board
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49147
Forwarded: https://patchwork.ozlabs.org/patch/624197/
diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index cde7aaf..c1f4b85 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -96,6 +96,10 @@ case "$FIRMWARE" in
rb-911g-5hpacd)
ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116
;;
+ om5p-ac)
+ ath10kcal_extract "ART" 20480 2116
+ ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
+ ;;
esac
;;
*)
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:26:11 +0000
Subject: ar71xx: create profile and build image for the OpenMesh OM5P-AC board
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49148
Forwarded: https://patchwork.ozlabs.org/patch/624198/
diff --git a/target/linux/ar71xx/generic/profiles/openmesh.mk b/target/linux/ar71xx/generic/profiles/openmesh.mk
index 06cf135..64aaa24 100644
--- a/target/linux/ar71xx/generic/profiles/openmesh.mk
+++ b/target/linux/ar71xx/generic/profiles/openmesh.mk
@@ -27,6 +27,17 @@ endef
$(eval $(call Profile,OM5P))
+define Profile/OM5PAC
+ NAME:=OpenMesh OM5P-AC
+ PACKAGES:=kmod-ath9k kmod-ath10k om-watchdog ath10k-firmware-qca988x
+endef
+
+define Profile/OM5PAC/Description
+ Package set optimized for the OpenMesh OM5P-AC.
+endef
+
+$(eval $(call Profile,OM5PAC))
+
define Profile/MR600
NAME:=OpenMesh MR600
PACKAGES:=kmod-ath9k om-watchdog
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index 0ebb7dc..0cf1df1 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -2043,6 +2043,7 @@ $(eval $(call SingleProfile,Netgear,64kraw,WPN824N,wpn824n,WPN824N,ttyS0,115200,
$(eval $(call SingleProfile,OpenMesh,squashfs-only,OM2P,om2p,,,,OM2P))
$(eval $(call SingleProfile,OpenMesh,squashfs-only,OM5P,om5p,,,,OM5P))
+$(eval $(call SingleProfile,OpenMesh,squashfs-only,OM5PAC,om5pac,,,,OM5PAC))
$(eval $(call SingleProfile,OpenMesh,squashfs-only,MR600,mr600,,,,MR600))
$(eval $(call SingleProfile,OpenMesh,squashfs-only,MR900,mr900,,,,MR900))
$(eval $(call SingleProfile,OpenMesh,squashfs-only,MR1750,mr1750,,,,MR1750))
@@ -2139,7 +2140,7 @@ $(eval $(call MultiProfile,AP121,AP121_2M AP121_4M))
$(eval $(call MultiProfile,DIR615IX,DIR615I1 DIR615I3))
$(eval $(call MultiProfile,AP136,AP136_010 AP136_020))
$(eval $(call MultiProfile,EWDORIN, EWDORINAP EWDORINRT EWDORIN16M))
-$(eval $(call MultiProfile,OPENMESH,OM2P OM5P MR600 MR900 MR1750))
+$(eval $(call MultiProfile,OPENMESH,OM2P OM5P OM5PAC MR600 MR900 MR1750))
$(eval $(call MultiProfile,TEW652BRP,TEW652BRP_FW TEW652BRP_RECOVERY))
$(eval $(call MultiProfile,TLMR3220,TLMR3220V1))
$(eval $(call MultiProfile,TLMR3420,TLMR3420V1))
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:26:15 +0000
Subject: ar71xx: add kernel support for the OpenMesh OM5P-ACv2 board
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49149
Forwarded: https://patchwork.ozlabs.org/patch/624199/
diff --git a/target/linux/ar71xx/config-3.18 b/target/linux/ar71xx/config-3.18
index dd89357..514f7d5 100644
--- a/target/linux/ar71xx/config-3.18
+++ b/target/linux/ar71xx/config-3.18
@@ -92,6 +92,7 @@ CONFIG_ATH79_MACH_NBG6716=y
CONFIG_ATH79_MACH_OM2P=y
CONFIG_ATH79_MACH_OM5P=y
CONFIG_ATH79_MACH_OM5P_AC=y
+CONFIG_ATH79_MACH_OM5P_ACv2=y
CONFIG_ATH79_MACH_ONION_OMEGA=y
CONFIG_ATH79_MACH_PB42=y
CONFIG_ATH79_MACH_PB44=y
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-om5pacv2.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-om5pacv2.c
new file mode 100644
index 0000000..587ca32
--- /dev/null
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-om5pacv2.c
@@ -0,0 +1,216 @@
+/*
+ * OpenMesh OM5P-ACv2 support
+ *
+ * Copyright (C) 2013 Marek Lindner <marek@open-mesh.com>
+ * Copyright (C) 2014-2016 Sven Eckelmann <sven@open-mesh.com>
+ * Copyright (C) 2015 Open-Mesh - Jim Collar <jim.collar@eqware.net>
+ *
+ * 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/gpio.h>
+#include <linux/mdio-gpio.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+#include <linux/i2c-algo-bit.h>
+#include <linux/i2c-gpio.h>
+#include <linux/platform_data/phy-at803x.h>
+
+#include <asm/mach-ath79/ar71xx_regs.h>
+#include <asm/mach-ath79/ath79.h>
+
+#include "common.h"
+#include "dev-ap9x-pci.h"
+#include "dev-eth.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+#include "pci.h"
+
+#define OM5PACV2_GPIO_LED_POWER 14
+#define OM5PACV2_GPIO_LED_GREEN 13
+#define OM5PACV2_GPIO_LED_RED 23
+#define OM5PACV2_GPIO_LED_YELLOW 15
+#define OM5PACV2_GPIO_BTN_RESET 1
+#define OM5PACV2_GPIO_I2C_SCL 18
+#define OM5PACV2_GPIO_I2C_SDA 19
+#define OM5PACV2_GPIO_PA_DCDC 2
+#define OM5PACV2_GPIO_PA_HIGH 16
+
+#define OM5PACV2_KEYS_POLL_INTERVAL 20 /* msecs */
+#define OM5PACV2_KEYS_DEBOUNCE_INTERVAL (3 * OM5PACV2_KEYS_POLL_INTERVAL)
+
+#define OM5PACV2_WMAC_CALDATA_OFFSET 0x1000
+
+static struct gpio_led om5pacv2_leds_gpio[] __initdata = {
+ {
+ .name = "om5pac:blue:power",
+ .gpio = OM5PACV2_GPIO_LED_POWER,
+ .active_low = 1,
+ }, {
+ .name = "om5pac:red:wifi",
+ .gpio = OM5PACV2_GPIO_LED_RED,
+ .active_low = 1,
+ }, {
+ .name = "om5pac:yellow:wifi",
+ .gpio = OM5PACV2_GPIO_LED_YELLOW,
+ .active_low = 1,
+ }, {
+ .name = "om5pac:green:wifi",
+ .gpio = OM5PACV2_GPIO_LED_GREEN,
+ .active_low = 1,
+ }
+};
+
+static struct gpio_keys_button om5pacv2_gpio_keys[] __initdata = {
+ {
+ .desc = "reset",
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .debounce_interval = OM5PACV2_KEYS_DEBOUNCE_INTERVAL,
+ .gpio = OM5PACV2_GPIO_BTN_RESET,
+ .active_low = 1,
+ }
+};
+
+static struct i2c_gpio_platform_data om5pacv2_i2c_device_platdata = {
+ .sda_pin = OM5PACV2_GPIO_I2C_SDA,
+ .scl_pin = OM5PACV2_GPIO_I2C_SCL,
+ .udelay = 10,
+ .sda_is_open_drain = 1,
+ .scl_is_open_drain = 1,
+};
+
+static struct platform_device om5pacv2_i2c_device = {
+ .name = "i2c-gpio",
+ .id = 0,
+ .dev = {
+ .platform_data = &om5pacv2_i2c_device_platdata,
+ },
+};
+
+static struct i2c_board_info om5pacv2_i2c_devs[] __initdata = {
+ {
+ I2C_BOARD_INFO("tmp423", 0x4e),
+ },
+};
+
+static struct flash_platform_data om5pacv2_flash_data = {
+ .type = "mx25l12805d",
+};
+
+static struct at803x_platform_data om5pacv2_an_at803x_data = {
+ .disable_smarteee = 1,
+ .enable_rgmii_rx_delay = 1,
+ .enable_rgmii_tx_delay = 1,
+};
+
+static struct at803x_platform_data om5pacv2_an_at8031_data = {
+ .disable_smarteee = 1,
+ .enable_rgmii_rx_delay = 1,
+ .enable_rgmii_tx_delay = 1,
+};
+
+static struct mdio_board_info om5pacv2_an_mdio0_info[] = {
+ {
+ .bus_id = "ag71xx-mdio.0",
+ .phy_addr = 4,
+ .platform_data = &om5pacv2_an_at803x_data,
+ },
+ {
+ .bus_id = "ag71xx-mdio.1",
+ .phy_addr = 1,
+ .platform_data = &om5pacv2_an_at8031_data,
+ },
+};
+
+static void __init om5p_acv2_setup_qca955x_eth_cfg(u32 mask,
+ unsigned int rxd,
+ unsigned int rxdv,
+ unsigned int txd,
+ unsigned int txe)
+{
+ void __iomem *base;
+ u32 t;
+
+ base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
+
+ t = mask;
+ t |= rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT;
+ t |= rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT;
+ t |= txd << QCA955X_ETH_CFG_TXD_DELAY_SHIFT;
+ t |= txe << QCA955X_ETH_CFG_TXE_DELAY_SHIFT;
+
+ __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
+
+ iounmap(base);
+}
+
+static void __init om5p_acv2_setup(void)
+{
+ u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
+ u8 mac[6];
+
+ /* power amplifier high power, 4.2V at RFFM4203/4503 instead of 3.3 */
+ ath79_gpio_function_enable(QCA955X_GPIO_FUNC_JTAG_DISABLE);
+ ath79_gpio_output_select(OM5PACV2_GPIO_PA_DCDC, QCA955X_GPIO_OUT_GPIO);
+ ath79_gpio_output_select(OM5PACV2_GPIO_PA_HIGH, QCA955X_GPIO_OUT_GPIO);
+ gpio_request_one(OM5PACV2_GPIO_PA_DCDC, GPIOF_OUT_INIT_HIGH,
+ "PA DC/DC");
+ gpio_request_one(OM5PACV2_GPIO_PA_HIGH, GPIOF_OUT_INIT_HIGH, "PA HIGH");
+
+ /* temperature sensor */
+ platform_device_register(&om5pacv2_i2c_device);
+ i2c_register_board_info(0, om5pacv2_i2c_devs,
+ ARRAY_SIZE(om5pacv2_i2c_devs));
+
+ ath79_register_m25p80(&om5pacv2_flash_data);
+ ath79_register_leds_gpio(-1, ARRAY_SIZE(om5pacv2_leds_gpio),
+ om5pacv2_leds_gpio);
+ ath79_register_gpio_keys_polled(-1, OM5PACV2_KEYS_POLL_INTERVAL,
+ ARRAY_SIZE(om5pacv2_gpio_keys),
+ om5pacv2_gpio_keys);
+
+ ath79_init_mac(mac, art, 0x02);
+ ath79_register_wmac(art + OM5PACV2_WMAC_CALDATA_OFFSET, mac);
+
+ om5p_acv2_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 2, 2, 0, 0);
+ ath79_register_mdio(0, 0x0);
+ ath79_register_mdio(1, 0x0);
+
+ mdiobus_register_board_info(om5pacv2_an_mdio0_info,
+ ARRAY_SIZE(om5pacv2_an_mdio0_info));
+
+ ath79_init_mac(ath79_eth0_data.mac_addr, art, 0x00);
+ ath79_init_mac(ath79_eth1_data.mac_addr, art, 0x01);
+
+ /* GMAC0 is connected to the PHY4 */
+ ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
+ ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
+ ath79_eth0_data.phy_mask = BIT(4);
+ ath79_eth0_pll_data.pll_1000 = 0x82000101;
+ ath79_eth0_pll_data.pll_100 = 0x80000101;
+ ath79_eth0_pll_data.pll_10 = 0x80001313;
+ ath79_register_eth(0);
+
+ /* GMAC1 is connected to MDIO1 in SGMII mode */
+ ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
+ ath79_eth1_data.mii_bus_dev = &ath79_mdio1_device.dev;
+ ath79_eth1_data.phy_mask = BIT(1);
+ ath79_eth1_pll_data.pll_1000 = 0x03000101;
+ ath79_eth1_pll_data.pll_100 = 0x80000101;
+ ath79_eth1_pll_data.pll_10 = 0x80001313;
+ ath79_eth1_data.speed = SPEED_1000;
+ ath79_eth1_data.duplex = DUPLEX_FULL;
+ ath79_register_eth(1);
+
+ ath79_register_pci();
+}
+
+MIPS_MACHINE(ATH79_MACH_OM5P_ACv2, "OM5P-ACv2", "OpenMesh OM5P ACv2", om5p_acv2_setup);
diff --git a/target/linux/ar71xx/patches-3.18/816-MIPS-ath79-add-om5pacv-support.patch b/target/linux/ar71xx/patches-3.18/816-MIPS-ath79-add-om5pacv-support.patch
new file mode 100644
index 0000000..fbbf171
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.18/816-MIPS-ath79-add-om5pacv-support.patch
@@ -0,0 +1,39 @@
+--- a/arch/mips/ath79/Kconfig
++++ b/arch/mips/ath79/Kconfig
+@@ -808,6 +808,16 @@ config ATH79_MACH_OM5P_AC
+ select ATH79_DEV_M25P80
+ select ATH79_DEV_WMAC
+
++config ATH79_MACH_OM5P_ACv2
++ bool "OpenMesh OM5P-ACv2 board support"
++ select SOC_QCA955X
++ select ATH79_DEV_AP9X_PCI if PCI
++ select ATH79_DEV_ETH
++ select ATH79_DEV_GPIO_BUTTONS
++ select ATH79_DEV_LEDS_GPIO
++ select ATH79_DEV_M25P80
++ select ATH79_DEV_WMAC
++
+ config ATH79_MACH_ONION_OMEGA
+ bool "ONION OMEGA support"
+ select SOC_AR933X
+--- a/arch/mips/ath79/Makefile
++++ b/arch/mips/ath79/Makefile
+@@ -101,6 +101,7 @@ obj-$(CONFIG_ATH79_MACH_NBG460N) += mach
+ obj-$(CONFIG_ATH79_MACH_OM2P) += mach-om2p.o
+ obj-$(CONFIG_ATH79_MACH_OM5P) += mach-om5p.o
+ obj-$(CONFIG_ATH79_MACH_OM5P_AC) += mach-om5pac.o
++obj-$(CONFIG_ATH79_MACH_OM5P_ACv2) += mach-om5pacv2.o
+ obj-$(CONFIG_ATH79_MACH_ONION_OMEGA) += mach-onion-omega.o
+ obj-$(CONFIG_ATH79_MACH_PB42) += mach-pb42.o
+ obj-$(CONFIG_ATH79_MACH_PB44) += mach-pb44.o
+--- a/arch/mips/ath79/machtypes.h
++++ b/arch/mips/ath79/machtypes.h
+@@ -96,6 +96,7 @@ enum ath79_mach_type {
+ ATH79_MACH_OM2Pv2, /* OpenMesh OM2Pv2 */
+ ATH79_MACH_OM2P, /* OpenMesh OM2P */
+ ATH79_MACH_OM5P_AC, /* OpenMesh OM5P-AC */
++ ATH79_MACH_OM5P_ACv2, /* OpenMesh OM5P-ACv2 */
+ ATH79_MACH_OM5P_AN, /* OpenMesh OM5P-AN */
+ ATH79_MACH_OM5P, /* OpenMesh OM5P */
+ ATH79_MACH_ONION_OMEGA, /* ONION OMEGA */
From: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Date: Sat, 9 Apr 2016 10:26:18 +0000
Subject: ar71xx: add user-space support for the OpenMesh OM5P-ACv2
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Backport of r49150
Forwarded: https://patchwork.ozlabs.org/patch/624200/
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index a4051f2..d4d8b4e 100644
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -178,7 +178,8 @@ get_status_led() {
om5p-an)
status_led="om5p:blue:power"
;;
- om5p-ac)
+ om5p-ac | \
+ om5p-acv2)
status_led="om5pac:blue:power"
;;
onion-omega)
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 10b8048..fbf76c8 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -619,6 +619,9 @@ ar71xx_board_detect() {
*"OM5P AC")
name="om5p-ac"
;;
+ *"OM5P ACv2")
+ name="om5p-acv2"
+ ;;
*"Onion Omega")
name="onion-omega"
;;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment