Merge Official Source

This commit is contained in:
AmadeusGhost 2021-07-20 12:18:13 +08:00
commit 1bb251a7e9
698 changed files with 11915 additions and 1624 deletions

View File

@ -6,11 +6,11 @@ ifdef CONFIG_TESTING_KERNEL
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
LINUX_VERSION-5.4 = .128
LINUX_VERSION-5.10 = .46
LINUX_VERSION-5.4 = .132
LINUX_VERSION-5.10 = .51
LINUX_KERNEL_HASH-5.4.128 = 3b54aebb816b9e628cb9ba3055a6aca58ce0ddeec49366c0da86ced9a7be39ab
LINUX_KERNEL_HASH-5.10.46 = 569122a39c6b325befb9ac1c07da0c53e6363b3baacd82081d131b06c1dc1415
LINUX_KERNEL_HASH-5.4.132 = 8466adbfb3579e751ede683496df7bb20f258b5f882250f3dd82be63736d00ef
LINUX_KERNEL_HASH-5.10.51 = 95bae893c274ccc3a8a6271f377bcc7fd3badcb7990ecd41b05b2731f1d67ae2
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))

View File

@ -0,0 +1,25 @@
#
# Copyright (C) 2021 OpenWrt.org
#
[ -e /etc/config/ubootenv ] && exit 0
touch /etc/config/ubootenv
. /lib/uboot-envtools.sh
. /lib/functions.sh
board=$(board_name)
case "$board" in
bananapi,bpi-r2)
. /lib/upgrade/common.sh
export_bootdevice
export_partdevice ubootpart 1
ubootenv_add_uci_config "/dev/$ubootpart" "0xb0000" "0x10000" "0x10000" "1"
esac
config_load ubootenv
config_foreach ubootenv_add_app_config ubootenv
exit 0

View File

@ -39,3 +39,14 @@
env_relocate();
return 0;
}
--- a/board/mediatek/mt7622/Kconfig
+++ b/board/mediatek/mt7622/Kconfig
@@ -14,4 +14,8 @@ config MTK_BROM_HEADER_INFO
string
default "media=nor"
+config RESET_BUTTON_LABEL
+ string "Button to trigger factory reset"
+ default "reset"
+
endif

View File

@ -1,19 +1,296 @@
--- a/configs/mt7623n_bpir2_defconfig
+++ b/configs/mt7623n_bpir2_defconfig
@@ -51,6 +51,16 @@ CONFIG_SYSRESET=y
@@ -4,53 +4,137 @@ CONFIG_ARCH_MEDIATEK=y
CONFIG_SYS_TEXT_BASE=0x81e00000
CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_NR_DRAM_BANKS=1
-CONFIG_ENV_SIZE=0x1000
+CONFIG_ENV_SIZE=0x10000
CONFIG_ENV_OFFSET=0x100000
CONFIG_TARGET_MT7623=y
CONFIG_DEFAULT_DEVICE_TREE="mt7623n-bananapi-bpi-r2"
+CONFIG_USE_DEFAULT_ENV_FILE=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_FIT=y
-CONFIG_FIT_VERBOSE=y
+CONFIG_FIT_ENABLE_SHA256_SUPPORT=y
+CONFIG_LED=y
+CONFIG_LED_BLINK=y
+CONFIG_LED_GPIO=y
+CONFIG_LOGLEVEL=7
+CONFIG_LOG=y
+CONFIG_AUTOBOOT_KEYED=y
+CONFIG_AUTOBOOT_MENU_SHOW=y
+CONFIG_BOARD_LATE_INIT=y
CONFIG_BOOTDELAY=3
+CONFIG_BOOTP_SEND_HOSTNAME=y
CONFIG_DEFAULT_FDT_FILE="mt7623n-bananapi-bpi-r2.dtb"
CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+CONFIG_DEFAULT_ENV_FILE="bananapi_bpi-r2_env"
+CONFIG_BUTTON=y
+CONFIG_BUTTON_GPIO=y
+CONFIG_RESET_BUTTON_LABEL="factory"
+CONFIG_CFB_CONSOLE_ANSI=y
+CONFIG_CMD_ENV_FLAGS=y
# CONFIG_DISPLAY_BOARDINFO is not set
-CONFIG_SYS_PROMPT="U-Boot> "
+CONFIG_SYS_PROMPT="MT7623> "
CONFIG_CMD_BOOTMENU=y
+CONFIG_CMD_BOOTP=y
+CONFIG_CMD_BUTTON=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_CDP=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_DNS=y
+CONFIG_CMD_ECHO=y
+CONFIG_CMD_ENV_READMEM=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_FS_UUID=y
# CONFIG_CMD_ELF is not set
# CONFIG_CMD_XIMG is not set
CONFIG_CMD_GPIO=y
-CONFIG_CMD_GPT=y
+# CONFIG_CMD_GPT is not set
+CONFIG_CMD_HASH=y
+CONFIG_CMD_ITEST=y
+CONFIG_CMD_LED=y
+CONFIG_CMD_LICENSE=y
+CONFIG_CMD_LINK_LOCAL=y
+CONFIG_CMD_MBR=y
CONFIG_CMD_MMC=y
-CONFIG_CMD_READ=y
-# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_MTD=y
# CONFIG_CMD_NFS is not set
+CONFIG_CMD_PCI=y
+CONFIG_CMD_SF_TEST=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_PXE=y
+CONFIG_CMD_PWM=y
+CONFIG_CMD_SMC=y
+CONFIG_CMD_TFTPBOOT=y
+CONFIG_CMD_TFTPSRV=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_RARP=y
+CONFIG_CMD_SATA=y
+CONFIG_CMD_SETEXPR=y
+CONFIG_CMD_SLEEP=y
+CONFIG_CMD_SNTP=y
+CONFIG_CMD_SOURCE=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_UUID=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_READ=y
+CONFIG_CMD_SCSI=y
+CONFIG_DISPLAY_CPUINFO=y
+CONFIG_DM_ETH=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_SCSI=y
+CONFIG_DM_MMC=y
+CONFIG_DM_MTD=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_SERIAL=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_USB=y
+CONFIG_DM_PCI=y
+CONFIG_DM_PWM=y
+CONFIG_AHCI=y
+CONFIG_AHCI_PCI=y
+CONFIG_SCSI_AHCI=y
+CONFIG_SCSI=y
+CONFIG_PWM_MTK=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_NETCONSOLE=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CLK=y
-CONFIG_DM_MMC=y
+CONFIG_LZMA=y
+CONFIG_MEDIATEK_ETH=y
# CONFIG_MMC_QUIRKS is not set
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_MTK=y
+CONFIG_MTK_AHCI=y
+CONFIG_MTK_POWER_DOMAIN=y
+CONFIG_MTK_SERIAL=y
+CONFIG_MTK_TIMER=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_PARTITION_UUIDS=y
+CONFIG_PCI=y
+CONFIG_PCIE_MEDIATEK=y
+CONFIG_PHY=y
CONFIG_PHY_FIXED=y
-CONFIG_DM_ETH=y
-CONFIG_MEDIATEK_ETH=y
CONFIG_PINCTRL=y
CONFIG_PINCONF=y
CONFIG_PINCTRL_MT7623=y
CONFIG_POWER_DOMAIN=y
-CONFIG_MTK_POWER_DOMAIN=y
-CONFIG_DM_SERIAL=y
-CONFIG_MTK_SERIAL=y
+CONFIG_RANDOM_UUID=y
+CONFIG_REGEX=y
CONFIG_SYSRESET=y
CONFIG_SYSRESET_WATCHDOG=y
CONFIG_TIMER=y
CONFIG_MTK_TIMER=y
+CONFIG_CMD_BOOTZ=y
+CONFIG_OF_LIBFDT_OVERLAY=y
+#enables savenenv-command
+CONFIG_ENV_IS_IN_FAT=y
+CONFIG_ENV_FAT_INTERFACE="mmc"
+CONFIG_ENV_FAT_DEVICE_AND_PART=":2"
+CONFIG_ENV_FAT_FILE="uboot.env"
+CONFIG_CMD_ASKENV=y
+CONFIG_ENV_SIZE=0x2000
+CONFIG_CMD_SETEXPR=y
-CONFIG_MTK_TIMER=y
+CONFIG_VERSION_VARIABLE=y
CONFIG_WDT_MTK=y
CONFIG_LZMA=y
-CONFIG_LZMA=y
# CONFIG_EFI_GRUB_ARM32_WORKAROUND is not set
--- /dev/null
+++ b/bananapi_bpi-r2_env
@@ -0,0 +1,64 @@
+ipaddr=192.168.1.1
+serverip=192.168.1.254
+loadaddr=0x88000000
+dtaddr=0x83f00000
+console=earlycon=uart8250,mmio32,0x11004000 console=ttyS2,115200
+initrd_high=0xafffffff
+part_default=3
+part_recovery=2
+bootcmd=run boot_mmc
+bootdelay=0
+bootfile=openwrt-mediatek-mt7623-bananapi_bpi-r2-initramfs-recovery.itb
+bootfile_upg=openwrt-mediatek-mt7623-bananapi_bpi-r2-squashfs-sysupgrade.itb
+bootmenu_confirm_return=askenv - Press ENTER to return to menu ; bootmenu 60
+bootmenu_default=0
+bootmenu_delay=0
+bootmenu_title= ( ( ( OpenWrt ) ) )
+bootmenu_0=Initialize environment.=run _firstboot
+bootmenu_0d=Run default boot command.=run boot_default
+bootmenu_1=Boot system via TFTP.=run boot_tftp ; run bootmenu_confirm_return
+boot_default=if env exists flag_recover ; then else run bootcmd ; fi ; run boot_recovery ; setenv replacevol 1 ; run boot_tftp_forever
+boot_first=if button factory ; then led $bootled_rec on ; run boot_tftp_recovery ; setenv flag_recover 1 ; run boot_default ; fi ; bootmenu
+boot_tftp_forever=led bpi-r64:pio:blue on ; while true ; do run boot_tftp_recovery ; sleep 1 ; done
+boot_tftp_production=tftpboot $loadaddr $bootfile_upg && env exists replacevol && iminfo $loadaddr && run mmc_write_production ; if env exists noboot ; then else bootm $loadaddr ; fi
+boot_tftp_recovery=tftpboot $loadaddr $bootfile && env exists replacevol && iminfo $loadaddr && run mmc_write_recovery ; if env exists noboot ; then else bootm $loadaddr ; fi
+boot_tftp=tftpboot $loadaddr $bootfile && bootm $loadaddr
+boot_mmc=run boot_production ; run boot_recovery
+emmc_init=run emmc_init_bl && run emmc_init_openwrt ; env default bootcmd ; saveenv
+emmc_init_bl=run sdmmc_read_emmc_hdr && run emmc_write_hdr && run sdmmc_read_preloader && run emmc_write_preloader && run sdmmc_read_uboot && run emmc_write_uboot
+emmc_init_openwrt=run sdmmc_read_recovery && run emmc_write_recovery ; run sdmmc_read_production && run emmc_write_production
+emmc_write_hdr=mmc dev 0 0 ; mmc erase 0x0 0x2000 ; mmc write $loadaddr 0x0 0x4 ; mmc dev 0 1 ; mmc partconf 0 1 1 1 ; mmc erase 0x0 0x400 ; mmc write $loadaddr 0x0 0x4 ; mmc partconf 0 1 1 0
+emmc_write_preloader=mmc dev 0 1 ; mmc partconf 0 1 1 1 ; mmc write $loadaddr 0x4 0x100 ; mmc partconf 0 1 1 0
+emmc_write_uboot=mmc dev 0 0 ; part size mmc 0 1 part_size && part start mmc 0 1 part_addr && mmc write $loadaddr $part_addr 0x400
+emmc_write_production=mmc dev 0 0 ; iminfo $loadaddr && part start mmc 0 $part_default part_addr && part size mmc 0 $part_default part_size && run mmc_write_vol
+emmc_write_recovery=mmc dev 0 0 ; iminfo $loadaddr && part start mmc 0 $part_recovery part_addr && part size mmc 0 $part_recovery part_size && run mmc_write_vol
+emmc_read_production=mmc dev 0 0 ; part start mmc 0 $part_default part_addr && part size mmc 0 $part_default part_size && run mmc_read_vol
+emmc_read_recovery=mmc dev 0 0 ; part start mmc 0 $part_recovery part_addr && part size mmc 0 $part_recovery part_size && run mmc_read_vol
+mmc_write_production=if test "$bootedfrom" = "SD" ; then run sdmmc_write_production ; else run emmc_write_production ; fi
+mmc_write_recovery=if test "$bootedfrom" = "SD" ; run sdmmc_write_recovery ; else run emmc_write_recovery ; fi
+mmc_write_vol=imszb $loadaddr image_size && test 0x$image_size -le 0x$part_size && mmc erase 0x$part_addr 0x$part_size && mmc write $loadaddr 0x$part_addr 0x$image_size
+mmc_read_vol=mmc read $loadaddr $part_addr 0x8 && imszb $loadaddr image_size && test 0x$image_size -le 0x$part_size && mmc read $loadaddr 0x$part_addr 0x$image_size && setexpr filesize $image_size * 0x200
+reset_factory=eraseenv && reset
+sdmmc_read_emmc_hdr=mmc dev 1 && mmc read $loadaddr 0x1ff8 0x8
+sdmmc_read_preloader=mmc dev 1 && mmc read $loadaddr 0x4 0x100
+sdmmc_read_uboot=mmc dev 1 ; part start mmc 1 1 part_addr && part size mmc 1 1 part_size && mmc read $loadaddr $part_addr $part_size
+sdmmc_read_production=mmc dev 1 ; part start mmc 1 $part_default part_addr && part size mmc 1 $part_default part_size && run mmc_read_vol
+sdmmc_read_recovery=mmc dev 1 ; part start mmc 1 $part_recovery part_addr && part size mmc 1 $part_recovery part_size && run mmc_read_vol
+sdmmc_write_production=iminfo $fileaddr && mmc dev 1 && part start mmc 1 $part_default part_addr && part size mmc 1 $part_default part_size && run mmc_write_vol
+sdmmc_write_recovery=iminfo $fileaddr && mmc dev 1 && part start mmc 1 $part_recovery part_addr && part size mmc 1 $part_recovery part_size && run mmc_write_vol
+_checkbootedfrom=setenv _checkbootedfrom ; if itest.l *81dffff0 == 434d4d65 ; then setenv bootedfrom eMMC ; else setenv bootedfrom SD ; fi
+_init_env=setenv _init_env ; setenv _create_env ; saveenv ; saveenv
+_firstboot=setenv _firstboot ; led bpi-r64:pio:blue on ; run _checkbootedfrom _switch_to_menu _update_bootdev _update_bootcmd _update_bootcmd2 _init_env boot_first
+_update_bootcmd=setenv _update_bootcmd ; if test "$bootedfrom" = "SD" ; then setenv boot_production "run sdmmc_read_production && bootm $loadaddr" ; else setenv boot_production "run emmc_read_production && bootm $loadaddr" ; fi
+_update_bootcmd2=setenv _update_bootcmd2 ; if test "$bootedfrom" = "SD" ; then setenv boot_recovery "run sdmmc_read_recovery && bootm $loadaddr" ; else setenv boot_recovery "run emmc_read_recovery && bootm $loadaddr" ; fi
+_update_bootdev=setenv _update_bootdev ; if test "$bootedfrom" = "SD" ; then setenv bootargs "$console root=/dev/mmcblk1p65" ; else setenv bootargs "$console root=/dev/mmcblk0p65" ; fi
+_switch_to_menu=setenv _switch_to_menu ; setenv bootdelay 3 ; setenv bootmenu_delay 3 ; setenv bootmenu_0 $bootmenu_0d ; setenv bootmenu_0d ; run _bootmenu_update_title
+_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title [$bootedfrom] $ver" ; run _set_bm2
+_set_bm2=setenv _set_bm2 ; setenv bootmenu_2 "Boot production system from $bootedfrom.=run boot_production ; run bootmenu_confirm_return" ; run _set_bm3
+_set_bm3=setenv _set_bm3 ; setenv bootmenu_3 "Boot recovery system from $bootedfrom.=run boot_recovery ; run bootmenu_confirm_return" ; run _set_bm4
+_set_bm4=setenv _set_bm4 ; setenv bootmenu_4 "Load production system via TFTP then write to $bootedfrom.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_production ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return" ; run _set_bm5
+_set_bm5=setenv _set_bm5 ; setenv bootmenu_5 "Load recovery system via TFTP then write to $bootedfrom.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_recovery ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return" ; run _set_bm5a
+_set_bm5a=setenv _set_bm5a ; if test "$bootedfrom" = "SD" ; then run _set_bm6 ; else setenv _set_bm6 ; setenv _menu_next 6 ; fi ; run _set_bmr
+_set_bm6=setenv _set_bm6 ; setenv bootmenu_6 "Install bootloader, recovery and production to eMMC.=run emmc_init ; run bootmenu_confirm_return" ; setenv _menu_next 7
+_set_bmr=setenv _set_bmr ; setenv bootmenu_${_menu_next} "Reboot.=reset" ; setexpr _menu_next ${_menu_next} + 1 ; run _set_bmf
+_set_bmf=setenv _set_bmf ; setenv bootmenu_${_menu_next} "Reset all settings to factory defaults.=run reset_factory ; reset" ; setenv _menu_next
--- a/arch/arm/dts/mt7623n-bananapi-bpi-r2.dts
+++ b/arch/arm/dts/mt7623n-bananapi-bpi-r2.dts
@@ -66,6 +66,15 @@
default-state = "off";
};
};
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ factory {
+ label = "factory";
+ gpios = <&gpio 256 GPIO_ACTIVE_LOW>;
+ };
+ };
};
&eth {
--- a/board/mediatek/mt7623/mt7623_rfb.c
+++ b/board/mediatek/mt7623/mt7623_rfb.c
@@ -6,6 +6,17 @@
#include <common.h>
#include <mmc.h>
#include <asm/global_data.h>
+#include <config.h>
+#include <dm.h>
+#include <button.h>
+#include <env.h>
+#include <init.h>
+#include <asm/global_data.h>
+#include <linux/delay.h>
+
+#ifndef CONFIG_RESET_BUTTON_LABEL
+#define CONFIG_RESET_BUTTON_LABEL "reset"
+#endif
DECLARE_GLOBAL_DATA_PTR;
@@ -17,6 +28,25 @@ int board_init(void)
return 0;
}
+int board_late_init(void)
+{
+ struct udevice *dev;
+
+ if (!button_get_by_label(CONFIG_RESET_BUTTON_LABEL, &dev)) {
+ puts("reset button found\n");
+#ifdef CONFIG_RESET_BUTTON_SETTLE_DELAY
+ mdelay(CONFIG_RESET_BUTTON_SETTLE_DELAY);
+#endif
+ if (button_get_state(dev) == BUTTON_ON) {
+ puts("button pushed, resetting environment\n");
+ gd->env_valid = ENV_INVALID;
+ }
+ }
+
+ env_relocate();
+ return 0;
+}
+
#ifdef CONFIG_MMC
int mmc_get_boot_dev(void)
{
--- a/board/mediatek/mt7623/Kconfig
+++ b/board/mediatek/mt7623/Kconfig
@@ -10,4 +10,8 @@ config MTK_BROM_HEADER_INFO
string
default "lk=1"
+config RESET_BUTTON_LABEL
+ string "Button to trigger factory reset"
+ default "reset"
+
endif

View File

@ -0,0 +1,61 @@
From 22fb5991a44c78ff18ec0082dc90c809356eb893 Mon Sep 17 00:00:00 2001
From: Ansuel Smith <ansuelsmth@gmail.com>
Date: Sun, 27 Sep 2020 19:23:35 +0200
Subject: [PATCH 1/2] ath10k: Try to get mac-address from dts
Most of embedded device that have the ath10k wifi integrated store the
mac-address in nvmem partitions. Try to fetch the mac-address using the
standard 'of_get_mac_address' than in all the check also try to fetch the
address using the nvmem api searching for a defined 'mac-address' cell.
Mac-address defined in the dts have priority than any other address found.
Tested-on: QCA9984 hw1.0 PCI 10.4
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
ath10k-5.10/core.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/ath10k-5.10/core.c b/ath10k-5.10/core.c
index 5f4e12196..9ed7b9883 100644
--- a/ath10k-5.10/core.c
+++ b/ath10k-5.10/core.c
@@ -8,6 +8,9 @@
#include <linux/module.h>
#include <linux/firmware.h>
#include <linux/of.h>
+#include <linux/of_net.h>
+#include <linux/of_platform.h>
+#include <linux/property.h>
#include <linux/property.h>
#include <linux/dmi.h>
#include <linux/ctype.h>
@@ -2961,8 +2963,14 @@ EXPORT_SYMBOL(ath10k_core_stop);
static int ath10k_core_probe_fw(struct ath10k *ar)
{
struct bmi_target_info target_info;
+ const char *mac;
int ret = 0;
+#ifdef CONFIG_OF
+ /* register the platform to be found by the of api */
+ of_platform_device_create(ar->dev->of_node, NULL, NULL);
+#endif
+
ret = ath10k_hif_power_up(ar, ATH10K_FIRMWARE_MODE_NORMAL);
if (ret) {
ath10k_err(ar, "could not power on hif bus (%d)\n", ret);
@@ -3062,6 +3068,10 @@ static int ath10k_core_probe_fw(struct ath10k *ar)
device_get_mac_address(ar->dev, ar->mac_addr, sizeof(ar->mac_addr));
+ mac = of_get_mac_address(ar->dev->of_node);
+ if (!IS_ERR(mac))
+ ether_addr_copy(ar->mac_addr, mac);
+
ret = ath10k_core_init_firmware_features(ar);
if (ret) {
ath10k_err(ar, "fatal problem with firmware features: %d\n",
--
2.27.0

View File

@ -0,0 +1,61 @@
From 22fb5991a44c78ff18ec0082dc90c809356eb893 Mon Sep 17 00:00:00 2001
From: Ansuel Smith <ansuelsmth@gmail.com>
Date: Sun, 27 Sep 2020 19:23:35 +0200
Subject: [PATCH 1/2] ath10k: Try to get mac-address from dts
Most of embedded device that have the ath10k wifi integrated store the
mac-address in nvmem partitions. Try to fetch the mac-address using the
standard 'of_get_mac_address' than in all the check also try to fetch the
address using the nvmem api searching for a defined 'mac-address' cell.
Mac-address defined in the dts have priority than any other address found.
Tested-on: QCA9984 hw1.0 PCI 10.4
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
drivers/net/wireless/ath/ath10k/core.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index 5f4e12196..9ed7b9883 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -8,6 +8,9 @@
#include <linux/module.h>
#include <linux/firmware.h>
#include <linux/of.h>
+#include <linux/of_net.h>
+#include <linux/of_platform.h>
+#include <linux/property.h>
#include <linux/property.h>
#include <linux/dmi.h>
#include <linux/ctype.h>
@@ -2961,8 +2963,14 @@ EXPORT_SYMBOL(ath10k_core_stop);
static int ath10k_core_probe_fw(struct ath10k *ar)
{
struct bmi_target_info target_info;
+ const char *mac;
int ret = 0;
+#ifdef CONFIG_OF
+ /* register the platform to be found by the of api */
+ of_platform_device_create(ar->dev->of_node, NULL, NULL);
+#endif
+
ret = ath10k_hif_power_up(ar, ATH10K_FIRMWARE_MODE_NORMAL);
if (ret) {
ath10k_err(ar, "could not power on hif bus (%d)\n", ret);
@@ -3062,6 +3068,10 @@ static int ath10k_core_probe_fw(struct ath10k *ar)
device_get_mac_address(ar->dev, ar->mac_addr, sizeof(ar->mac_addr));
+ mac = of_get_mac_address(ar->dev->of_node);
+ if (!IS_ERR(mac))
+ ether_addr_copy(ar->mac_addr, mac);
+
ret = ath10k_core_init_firmware_features(ar);
if (ret) {
ath10k_err(ar, "fatal problem with firmware features: %d\n",
--
2.27.0

View File

@ -0,0 +1,111 @@
From: Lorenzo Bianconi <lorenzo@kernel.org>
Date: Sat, 9 Jan 2021 18:57:51 +0100
Subject: [PATCH] mac80211: introduce aql_enable node in debugfs
Introduce aql_enable node in debugfs in order to enable/disable aql.
This is useful for debugging purpose.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://lore.kernel.org/r/e7a934d5d84e4796c4f97ea5de4e66c824296b07.1610214851.git.lorenzo@kernel.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
--- a/net/mac80211/debugfs.c
+++ b/net/mac80211/debugfs.c
@@ -281,6 +281,56 @@ static const struct file_operations aql_
.llseek = default_llseek,
};
+static ssize_t aql_enable_read(struct file *file, char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ char buf[3];
+ int len;
+
+ len = scnprintf(buf, sizeof(buf), "%d\n",
+ !static_key_false(&aql_disable.key));
+
+ return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+}
+
+static ssize_t aql_enable_write(struct file *file, const char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ bool aql_disabled = static_key_false(&aql_disable.key);
+ char buf[3];
+ size_t len;
+
+ if (count > sizeof(buf))
+ return -EINVAL;
+
+ if (copy_from_user(buf, user_buf, count))
+ return -EFAULT;
+
+ buf[sizeof(buf) - 1] = '\0';
+ len = strlen(buf);
+ if (len > 0 && buf[len - 1] == '\n')
+ buf[len - 1] = 0;
+
+ if (buf[0] == '0' && buf[1] == '\0') {
+ if (!aql_disabled)
+ static_branch_inc(&aql_disable);
+ } else if (buf[0] == '1' && buf[1] == '\0') {
+ if (aql_disabled)
+ static_branch_dec(&aql_disable);
+ } else {
+ return -EINVAL;
+ }
+
+ return count;
+}
+
+static const struct file_operations aql_enable_ops = {
+ .write = aql_enable_write,
+ .read = aql_enable_read,
+ .open = simple_open,
+ .llseek = default_llseek,
+};
+
static ssize_t force_tx_status_read(struct file *file,
char __user *user_buf,
size_t count,
@@ -569,6 +619,7 @@ void debugfs_hw_add(struct ieee80211_loc
DEBUGFS_ADD(power);
DEBUGFS_ADD(hw_conf);
DEBUGFS_ADD_MODE(force_tx_status, 0600);
+ DEBUGFS_ADD_MODE(aql_enable, 0600);
if (local->ops->wake_tx_queue)
DEBUGFS_ADD_MODE(aqm, 0600);
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1140,6 +1140,8 @@ enum mac80211_scan_state {
SCAN_ABORT,
};
+DECLARE_STATIC_KEY_FALSE(aql_disable);
+
struct ieee80211_local {
/* embed the driver visible part.
* don't cast (use the static inlines below), but we keep
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3887,6 +3887,8 @@ void __ieee80211_schedule_txq(struct iee
}
EXPORT_SYMBOL(__ieee80211_schedule_txq);
+DEFINE_STATIC_KEY_FALSE(aql_disable);
+
bool ieee80211_txq_airtime_check(struct ieee80211_hw *hw,
struct ieee80211_txq *txq)
{
@@ -3896,6 +3898,9 @@ bool ieee80211_txq_airtime_check(struct
if (!wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL))
return true;
+ if (static_branch_unlikely(&aql_disable))
+ return true;
+
if (!txq->sta)
return true;

View File

@ -0,0 +1,39 @@
From: Johannes Berg <johannes.berg@intel.com>
Date: Fri, 18 Jun 2021 13:41:44 +0300
Subject: [PATCH] mac80211: rearrange struct txq_info for fewer holes
We can slightly decrease the size of struct txq_info by
rearranging some fields for fewer holes, so do that.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210618133832.1bf019a1fe2e.Ib54622b8d6dc1a9a7dc484e573c073119450538b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -5,7 +5,7 @@
* Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
* Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net>
* Copyright 2013-2015 Intel Mobile Communications GmbH
- * Copyright (C) 2018-2020 Intel Corporation
+ * Copyright (C) 2018-2021 Intel Corporation
*/
#ifndef IEEE80211_I_H
@@ -848,9 +848,12 @@ struct txq_info {
struct fq_tin tin;
struct codel_vars def_cvars;
struct codel_stats cstats;
- struct sk_buff_head frags;
- struct list_head schedule_order;
+
u16 schedule_round;
+ struct list_head schedule_order;
+
+ struct sk_buff_head frags;
+
unsigned long flags;
/* keep last! */

View File

@ -0,0 +1,72 @@
From: Felix Fietkau <nbd@nbd.name>
Date: Fri, 2 Jul 2021 06:57:53 +0200
Subject: [PATCH] mac80211: fix enabling 4-address mode on a sta vif after
assoc
Notify the driver about the 4-address mode change and also send a nulldata
packet to the AP to notify it about the change
Fixes: 1ff4e8f2dec8 ("mac80211: notify the driver when a sta uses 4-address mode")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -152,6 +152,8 @@ static int ieee80211_change_iface(struct
struct vif_params *params)
{
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+ struct ieee80211_local *local = sdata->local;
+ struct sta_info *sta;
int ret;
ret = ieee80211_if_change_type(sdata, type);
@@ -162,7 +164,24 @@ static int ieee80211_change_iface(struct
RCU_INIT_POINTER(sdata->u.vlan.sta, NULL);
ieee80211_check_fast_rx_iface(sdata);
} else if (type == NL80211_IFTYPE_STATION && params->use_4addr >= 0) {
+ struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
+
+ if (params->use_4addr == ifmgd->use_4addr)
+ return 0;
+
sdata->u.mgd.use_4addr = params->use_4addr;
+ if (!ifmgd->associated)
+ return 0;
+
+ mutex_lock(&local->sta_mtx);
+ sta = sta_info_get(sdata, ifmgd->bssid);
+ if (sta)
+ drv_sta_set_4addr(local, sdata, &sta->sta,
+ params->use_4addr);
+ mutex_unlock(&local->sta_mtx);
+
+ if (params->use_4addr)
+ ieee80211_send_4addr_nullfunc(local, sdata);
}
if (sdata->vif.type == NL80211_IFTYPE_MONITOR) {
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -2224,6 +2224,8 @@ void ieee80211_dynamic_ps_timer(struct t
void ieee80211_send_nullfunc(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata,
bool powersave);
+void ieee80211_send_4addr_nullfunc(struct ieee80211_local *local,
+ struct ieee80211_sub_if_data *sdata);
void ieee80211_sta_tx_notify(struct ieee80211_sub_if_data *sdata,
struct ieee80211_hdr *hdr, bool ack, u16 tx_time);
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1115,8 +1115,8 @@ void ieee80211_send_nullfunc(struct ieee
ieee80211_tx_skb(sdata, skb);
}
-static void ieee80211_send_4addr_nullfunc(struct ieee80211_local *local,
- struct ieee80211_sub_if_data *sdata)
+void ieee80211_send_4addr_nullfunc(struct ieee80211_local *local,
+ struct ieee80211_sub_if_data *sdata)
{
struct sk_buff *skb;
struct ieee80211_hdr *nullfunc;

View File

@ -0,0 +1,398 @@
From: Carl Huang <cjhuang@codeaurora.org>
Date: Thu, 3 Dec 2020 05:37:26 -0500
Subject: [PATCH] nl80211: add common API to configure SAR power limitations
NL80211_CMD_SET_SAR_SPECS is added to configure SAR from
user space. NL80211_ATTR_SAR_SPEC is used to pass the SAR
power specification when used with NL80211_CMD_SET_SAR_SPECS.
Wireless driver needs to register SAR type, supported frequency
ranges to wiphy, so user space can query it. The index in
frequency range is used to specify which sub band the power
limitation applies to. The SAR type is for compatibility, so later
other SAR mechanism can be implemented without breaking the user
space SAR applications.
Normal process is user space queries the SAR capability, and
gets the index of supported frequency ranges and associates the
power limitation with this index and sends to kernel.
Here is an example of message send to kernel:
8c 00 00 00 08 00 01 00 00 00 00 00 38 00 2b 81
08 00 01 00 00 00 00 00 2c 00 02 80 14 00 00 80
08 00 02 00 00 00 00 00 08 00 01 00 38 00 00 00
14 00 01 80 08 00 02 00 01 00 00 00 08 00 01 00
48 00 00 00
NL80211_CMD_SET_SAR_SPECS: 0x8c
NL80211_ATTR_WIPHY: 0x01(phy idx is 0)
NL80211_ATTR_SAR_SPEC: 0x812b (NLA_NESTED)
NL80211_SAR_ATTR_TYPE: 0x00 (NL80211_SAR_TYPE_POWER)
NL80211_SAR_ATTR_SPECS: 0x8002 (NLA_NESTED)
freq range 0 power: 0x38 in 0.25dbm unit (14dbm)
freq range 1 power: 0x48 in 0.25dbm unit (18dbm)
Signed-off-by: Carl Huang <cjhuang@codeaurora.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Reviewed-by: Abhishek Kumar <kuabhs@chromium.org>
Link: https://lore.kernel.org/r/20201203103728.3034-2-cjhuang@codeaurora.org
[minor edits, NLA parse cleanups]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1737,6 +1737,54 @@ struct station_info {
u8 connected_to_as;
};
+/**
+ * struct cfg80211_sar_sub_specs - sub specs limit
+ * @power: power limitation in 0.25dbm
+ * @freq_range_index: index the power limitation applies to
+ */
+struct cfg80211_sar_sub_specs {
+ s32 power;
+ u32 freq_range_index;
+};
+
+/**
+ * struct cfg80211_sar_specs - sar limit specs
+ * @type: it's set with power in 0.25dbm or other types
+ * @num_sub_specs: number of sar sub specs
+ * @sub_specs: memory to hold the sar sub specs
+ */
+struct cfg80211_sar_specs {
+ enum nl80211_sar_type type;
+ u32 num_sub_specs;
+ struct cfg80211_sar_sub_specs sub_specs[];
+};
+
+
+/**
+ * @struct cfg80211_sar_chan_ranges - sar frequency ranges
+ * @start_freq: start range edge frequency
+ * @end_freq: end range edge frequency
+ */
+struct cfg80211_sar_freq_ranges {
+ u32 start_freq;
+ u32 end_freq;
+};
+
+/**
+ * struct cfg80211_sar_capa - sar limit capability
+ * @type: it's set via power in 0.25dbm or other types
+ * @num_freq_ranges: number of frequency ranges
+ * @freq_ranges: memory to hold the freq ranges.
+ *
+ * Note: WLAN driver may append new ranges or split an existing
+ * range to small ones and then append them.
+ */
+struct cfg80211_sar_capa {
+ enum nl80211_sar_type type;
+ u32 num_freq_ranges;
+ const struct cfg80211_sar_freq_ranges *freq_ranges;
+};
+
#if IS_ENABLED(CPTCFG_CFG80211)
/**
* cfg80211_get_station - retrieve information about a given station
@@ -4259,6 +4307,8 @@ struct cfg80211_ops {
struct cfg80211_tid_config *tid_conf);
int (*reset_tid_config)(struct wiphy *wiphy, struct net_device *dev,
const u8 *peer, u8 tids);
+ int (*set_sar_specs)(struct wiphy *wiphy,
+ struct cfg80211_sar_specs *sar);
};
/*
@@ -5030,6 +5080,8 @@ struct wiphy {
u8 max_data_retry_count;
+ const struct cfg80211_sar_capa *sar_capa;
+
char priv[] __aligned(NETDEV_ALIGN);
};
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -405,6 +405,18 @@ nl80211_unsol_bcast_probe_resp_policy[NL
.len = IEEE80211_MAX_DATA_LEN }
};
+static const struct nla_policy
+sar_specs_policy[NL80211_SAR_ATTR_SPECS_MAX + 1] = {
+ [NL80211_SAR_ATTR_SPECS_POWER] = { .type = NLA_S32 },
+ [NL80211_SAR_ATTR_SPECS_RANGE_INDEX] = {.type = NLA_U32 },
+};
+
+static const struct nla_policy
+sar_policy[NL80211_SAR_ATTR_MAX + 1] = {
+ [NL80211_SAR_ATTR_TYPE] = NLA_POLICY_MAX(NLA_U32, NUM_NL80211_SAR_TYPE),
+ [NL80211_SAR_ATTR_SPECS] = NLA_POLICY_NESTED_ARRAY(sar_specs_policy),
+};
+
static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
[0] = { .strict_start_type = NL80211_ATTR_HE_OBSS_PD },
[NL80211_ATTR_WIPHY] = { .type = NLA_U32 },
@@ -739,6 +751,7 @@ static const struct nla_policy nl80211_p
[NL80211_ATTR_SAE_PWE] =
NLA_POLICY_RANGE(NLA_U8, NL80211_SAE_PWE_HUNT_AND_PECK,
NL80211_SAE_PWE_BOTH),
+ [NL80211_ATTR_SAR_SPEC] = NLA_POLICY_NESTED(sar_policy),
[NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT },
};
@@ -2117,6 +2130,56 @@ fail:
return -ENOBUFS;
}
+static int
+nl80211_put_sar_specs(struct cfg80211_registered_device *rdev,
+ struct sk_buff *msg)
+{
+ struct nlattr *sar_capa, *specs, *sub_freq_range;
+ u8 num_freq_ranges;
+ int i;
+
+ if (!rdev->wiphy.sar_capa)
+ return 0;
+
+ num_freq_ranges = rdev->wiphy.sar_capa->num_freq_ranges;
+
+ sar_capa = nla_nest_start(msg, NL80211_ATTR_SAR_SPEC);
+ if (!sar_capa)
+ return -ENOSPC;
+
+ if (nla_put_u32(msg, NL80211_SAR_ATTR_TYPE, rdev->wiphy.sar_capa->type))
+ goto fail;
+
+ specs = nla_nest_start(msg, NL80211_SAR_ATTR_SPECS);
+ if (!specs)
+ goto fail;
+
+ /* report supported freq_ranges */
+ for (i = 0; i < num_freq_ranges; i++) {
+ sub_freq_range = nla_nest_start(msg, i + 1);
+ if (!sub_freq_range)
+ goto fail;
+
+ if (nla_put_u32(msg, NL80211_SAR_ATTR_SPECS_START_FREQ,
+ rdev->wiphy.sar_capa->freq_ranges[i].start_freq))
+ goto fail;
+
+ if (nla_put_u32(msg, NL80211_SAR_ATTR_SPECS_END_FREQ,
+ rdev->wiphy.sar_capa->freq_ranges[i].end_freq))
+ goto fail;
+
+ nla_nest_end(msg, sub_freq_range);
+ }
+
+ nla_nest_end(msg, specs);
+ nla_nest_end(msg, sar_capa);
+
+ return 0;
+fail:
+ nla_nest_cancel(msg, sar_capa);
+ return -ENOBUFS;
+}
+
struct nl80211_dump_wiphy_state {
s64 filter_wiphy;
long start;
@@ -2366,6 +2429,8 @@ static int nl80211_send_wiphy(struct cfg
CMD(set_multicast_to_unicast, SET_MULTICAST_TO_UNICAST);
CMD(update_connect_params, UPDATE_CONNECT_PARAMS);
CMD(update_ft_ies, UPDATE_FT_IES);
+ if (rdev->wiphy.sar_capa)
+ CMD(set_sar_specs, SET_SAR_SPECS);
}
#undef CMD
@@ -2691,6 +2756,11 @@ static int nl80211_send_wiphy(struct cfg
if (nl80211_put_tid_config_support(rdev, msg))
goto nla_put_failure;
+ state->split_start++;
+ break;
+ case 16:
+ if (nl80211_put_sar_specs(rdev, msg))
+ goto nla_put_failure;
/* done */
state->split_start = 0;
@@ -14713,6 +14783,111 @@ static void nl80211_post_doit(__genl_con
}
}
+static int nl80211_set_sar_sub_specs(struct cfg80211_registered_device *rdev,
+ struct cfg80211_sar_specs *sar_specs,
+ struct nlattr *spec[], int index)
+{
+ u32 range_index, i;
+
+ if (!sar_specs || !spec)
+ return -EINVAL;
+
+ if (!spec[NL80211_SAR_ATTR_SPECS_POWER] ||
+ !spec[NL80211_SAR_ATTR_SPECS_RANGE_INDEX])
+ return -EINVAL;
+
+ range_index = nla_get_u32(spec[NL80211_SAR_ATTR_SPECS_RANGE_INDEX]);
+
+ /* check if range_index exceeds num_freq_ranges */
+ if (range_index >= rdev->wiphy.sar_capa->num_freq_ranges)
+ return -EINVAL;
+
+ /* check if range_index duplicates */
+ for (i = 0; i < index; i++) {
+ if (sar_specs->sub_specs[i].freq_range_index == range_index)
+ return -EINVAL;
+ }
+
+ sar_specs->sub_specs[index].power =
+ nla_get_s32(spec[NL80211_SAR_ATTR_SPECS_POWER]);
+
+ sar_specs->sub_specs[index].freq_range_index = range_index;
+
+ return 0;
+}
+
+static int nl80211_set_sar_specs(struct sk_buff *skb, struct genl_info *info)
+{
+ struct cfg80211_registered_device *rdev = info->user_ptr[0];
+ struct nlattr *spec[NL80211_SAR_ATTR_SPECS_MAX + 1];
+ struct nlattr *tb[NL80211_SAR_ATTR_MAX + 1];
+ struct cfg80211_sar_specs *sar_spec;
+ enum nl80211_sar_type type;
+ struct nlattr *spec_list;
+ u32 specs;
+ int rem, err;
+
+ if (!rdev->wiphy.sar_capa || !rdev->ops->set_sar_specs)
+ return -EOPNOTSUPP;
+
+ if (!info->attrs[NL80211_ATTR_SAR_SPEC])
+ return -EINVAL;
+
+ nla_parse_nested(tb, NL80211_SAR_ATTR_MAX,
+ info->attrs[NL80211_ATTR_SAR_SPEC],
+ NULL, NULL);
+
+ if (!tb[NL80211_SAR_ATTR_TYPE] || !tb[NL80211_SAR_ATTR_SPECS])
+ return -EINVAL;
+
+ type = nla_get_u32(tb[NL80211_SAR_ATTR_TYPE]);
+ if (type != rdev->wiphy.sar_capa->type)
+ return -EINVAL;
+
+ specs = 0;
+ nla_for_each_nested(spec_list, tb[NL80211_SAR_ATTR_SPECS], rem)
+ specs++;
+
+ if (specs > rdev->wiphy.sar_capa->num_freq_ranges)
+ return -EINVAL;
+
+ sar_spec = kzalloc(sizeof(*sar_spec) +
+ specs * sizeof(struct cfg80211_sar_sub_specs),
+ GFP_KERNEL);
+ if (!sar_spec)
+ return -ENOMEM;
+
+ sar_spec->type = type;
+ specs = 0;
+ nla_for_each_nested(spec_list, tb[NL80211_SAR_ATTR_SPECS], rem) {
+ nla_parse_nested(spec, NL80211_SAR_ATTR_SPECS_MAX,
+ spec_list, NULL, NULL);
+
+ switch (type) {
+ case NL80211_SAR_TYPE_POWER:
+ if (nl80211_set_sar_sub_specs(rdev, sar_spec,
+ spec, specs)) {
+ err = -EINVAL;
+ goto error;
+ }
+ break;
+ default:
+ err = -EINVAL;
+ goto error;
+ }
+ specs++;
+ }
+
+ sar_spec->num_sub_specs = specs;
+
+ rdev->cur_cmd_info = info;
+ err = rdev_set_sar_specs(rdev, sar_spec);
+ rdev->cur_cmd_info = NULL;
+error:
+ kfree(sar_spec);
+ return err;
+}
+
static __genl_const struct genl_ops nl80211_ops[] = {
{
.cmd = NL80211_CMD_GET_WIPHY,
@@ -15576,6 +15751,14 @@ static const struct genl_small_ops nl802
.internal_flags = NL80211_FLAG_NEED_NETDEV |
NL80211_FLAG_NEED_RTNL,
},
+ {
+ .cmd = NL80211_CMD_SET_SAR_SPECS,
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
+ .doit = nl80211_set_sar_specs,
+ .flags = GENL_UNS_ADMIN_PERM,
+ .internal_flags = NL80211_FLAG_NEED_WIPHY |
+ NL80211_FLAG_NEED_RTNL,
+ },
};
static struct genl_family nl80211_fam __genl_ro_after_init = {
--- a/net/wireless/rdev-ops.h
+++ b/net/wireless/rdev-ops.h
@@ -1356,4 +1356,16 @@ static inline int rdev_reset_tid_config(
return ret;
}
+static inline int rdev_set_sar_specs(struct cfg80211_registered_device *rdev,
+ struct cfg80211_sar_specs *sar)
+{
+ int ret;
+
+ trace_rdev_set_sar_specs(&rdev->wiphy, sar);
+ ret = rdev->ops->set_sar_specs(&rdev->wiphy, sar);
+ trace_rdev_return_int(&rdev->wiphy, ret);
+
+ return ret;
+}
+
#endif /* __CFG80211_RDEV_OPS */
--- a/net/wireless/trace.h
+++ b/net/wireless/trace.h
@@ -3551,6 +3551,25 @@ TRACE_EVENT(rdev_reset_tid_config,
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT ", tids: 0x%x",
WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->tids)
);
+
+TRACE_EVENT(rdev_set_sar_specs,
+ TP_PROTO(struct wiphy *wiphy, struct cfg80211_sar_specs *sar),
+ TP_ARGS(wiphy, sar),
+ TP_STRUCT__entry(
+ WIPHY_ENTRY
+ __field(u16, type)
+ __field(u16, num)
+ ),
+ TP_fast_assign(
+ WIPHY_ASSIGN;
+ __entry->type = sar->type;
+ __entry->num = sar->num_sub_specs;
+
+ ),
+ TP_printk(WIPHY_PR_FMT ", Set type:%d, num_specs:%d",
+ WIPHY_PR_ARG, __entry->type, __entry->num)
+);
+
#endif /* !__RDEV_OPS_TRACE || TRACE_HEADER_MULTI_READ */
#undef TRACE_INCLUDE_PATH

View File

@ -0,0 +1,51 @@
From: Carl Huang <cjhuang@codeaurora.org>
Date: Thu, 3 Dec 2020 05:37:27 -0500
Subject: [PATCH] mac80211: add ieee80211_set_sar_specs
This change registers ieee80211_set_sar_specs to
mac80211_config_ops, so cfg80211 can call it.
Signed-off-by: Carl Huang <cjhuang@codeaurora.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Reviewed-by: Abhishek Kumar <kuabhs@chromium.org>
Link: https://lore.kernel.org/r/20201203103728.3034-3-cjhuang@codeaurora.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -4207,6 +4207,8 @@ struct ieee80211_ops {
struct ieee80211_vif *vif);
void (*sta_set_4addr)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_sta *sta, bool enabled);
+ int (*set_sar_specs)(struct ieee80211_hw *hw,
+ const struct cfg80211_sar_specs *sar);
void (*sta_set_decap_offload)(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_sta *sta, bool enabled);
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -4136,6 +4136,17 @@ static int ieee80211_reset_tid_config(st
return ret;
}
+static int ieee80211_set_sar_specs(struct wiphy *wiphy,
+ struct cfg80211_sar_specs *sar)
+{
+ struct ieee80211_local *local = wiphy_priv(wiphy);
+
+ if (!local->ops->set_sar_specs)
+ return -EOPNOTSUPP;
+
+ return local->ops->set_sar_specs(&local->hw, sar);
+}
+
const struct cfg80211_ops mac80211_config_ops = {
.add_virtual_intf = ieee80211_add_iface,
.del_virtual_intf = ieee80211_del_iface,
@@ -4239,4 +4250,5 @@ const struct cfg80211_ops mac80211_confi
.probe_mesh_link = ieee80211_probe_mesh_link,
.set_tid_config = ieee80211_set_tid_config,
.reset_tid_config = ieee80211_reset_tid_config,
+ .set_sar_specs = ieee80211_set_sar_specs,
};

View File

@ -1,6 +1,6 @@
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -3745,6 +3745,7 @@ struct mgmt_frame_regs {
@@ -3793,6 +3793,7 @@ struct mgmt_frame_regs {
* (as advertised by the nl80211 feature flag.)
* @get_tx_power: store the current TX power into the dbm variable;
* return 0 if successful
@ -8,7 +8,7 @@
*
* @set_wds_peer: set the WDS peer for a WDS interface
*
@@ -4067,6 +4068,7 @@ struct cfg80211_ops {
@@ -4115,6 +4116,7 @@ struct cfg80211_ops {
enum nl80211_tx_power_setting type, int mbm);
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
int *dbm);
@ -57,7 +57,7 @@
__NL80211_ATTR_AFTER_LAST,
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2709,6 +2709,19 @@ static int ieee80211_get_tx_power(struct
@@ -2761,6 +2761,19 @@ static int ieee80211_get_tx_power(struct
return 0;
}
@ -77,7 +77,7 @@
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
const u8 *addr)
{
@@ -4139,6 +4152,7 @@ const struct cfg80211_ops mac80211_confi
@@ -4202,6 +4215,7 @@ const struct cfg80211_ops mac80211_confi
.set_wiphy_params = ieee80211_set_wiphy_params,
.set_tx_power = ieee80211_set_tx_power,
.get_tx_power = ieee80211_get_tx_power,
@ -87,7 +87,7 @@
CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1390,6 +1390,7 @@ struct ieee80211_local {
@@ -1426,6 +1426,7 @@ struct ieee80211_local {
int dynamic_ps_forced_timeout;
int user_power_level; /* in dBm, for all interfaces */
@ -129,15 +129,15 @@
local->hw.max_mtu = IEEE80211_MAX_DATA_LEN;
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -740,6 +740,7 @@ static const struct nla_policy nl80211_p
NLA_POLICY_RANGE(NLA_U8, NL80211_SAE_PWE_HUNT_AND_PECK,
@@ -753,6 +753,7 @@ static const struct nla_policy nl80211_p
NL80211_SAE_PWE_BOTH),
[NL80211_ATTR_SAR_SPEC] = NLA_POLICY_NESTED(sar_policy),
[NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT },
+ [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 },
};
/* policy for the key attributes */
@@ -3248,6 +3249,20 @@ static int nl80211_set_wiphy(struct sk_b
@@ -3318,6 +3319,20 @@ static int nl80211_set_wiphy(struct sk_b
if (result)
return result;
}

View File

@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2021-06-06
PKG_SOURCE_VERSION:=22b690334c0f49b11534cc2e331c9d5e17c4a0bc
PKG_MIRROR_HASH:=ff5e563935919d2e40c1e7254ef3bc06f7ecc5e69f8ddd12903e8f5de942d630
PKG_SOURCE_DATE:=2021-07-15
PKG_SOURCE_VERSION:=bbebea7d6dc64313132226adc3f7369d36e9359d
PKG_MIRROR_HASH:=17cd74e72c1f6c8742b698bf6772afacc6fba71b233af8c4d59530600cf44d5b
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_USE_NINJA:=0

View File

@ -5,9 +5,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
PKG_SOURCE_DATE:=2021-07-13
PKG_SOURCE_VERSION:=1f283c654aeb1f8983e0a81b7a81cc4784fffe3f
PKG_MIRROR_HASH:=a65bb00f376eec5006c6efa1bc3298687054c3936de9c61997496969c93f9ccc
PKG_SOURCE_DATE:=2021-07-14
PKG_SOURCE_VERSION:=7f24a063475e1e2be4e0c516a5b62c3fae5ec542
PKG_MIRROR_HASH:=3fad25b8655e01e20f54b6c6decad6a660a34ab3ca2de97fe3c9b7db5aa485fe
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=GPL-2.0

View File

@ -1123,7 +1123,7 @@ dnsmasq_start()
procd_set_param respawn
procd_add_jail dnsmasq ubus log
procd_add_jail_mount $CONFIGFILE $TRUSTANCHORSFILE $HOSTFILE $RFC6761FILE $DHCPBOGUSHOSTNAMEFILE /etc/passwd /etc/group /etc/TZ /dev/null /dev/urandom $dnsmasqconffile $dnsmasqconfdir $resolvdir $user_dhcpscript /etc/hosts /etc/ethers /sbin/hotplug-call $EXTRA_MOUNT $DHCPSCRIPT
procd_add_jail_mount $CONFIGFILE $TRUSTANCHORSFILE $HOSTFILE $RFC6761FILE $DHCPBOGUSHOSTNAMEFILE /etc/passwd /etc/group /etc/TZ /dev/null /dev/urandom $dnsmasqconffile $dnsmasqconfdir $resolvdir $user_dhcpscript /etc/hosts /etc/ethers /sbin/hotplug-call $EXTRA_MOUNT $DHCPSCRIPT /tmp/hosts/
procd_add_jail_mount_rw /var/run/dnsmasq/ $leasefile
procd_close_instance

View File

@ -744,6 +744,7 @@ enum {
CSA_VHT,
CSA_HE,
CSA_BLOCK_TX,
CSA_FORCE,
__CSA_MAX
};
@ -758,8 +759,18 @@ static const struct blobmsg_policy csa_policy[__CSA_MAX] = {
[CSA_VHT] = { "vht", BLOBMSG_TYPE_BOOL },
[CSA_HE] = { "he", BLOBMSG_TYPE_BOOL },
[CSA_BLOCK_TX] = { "block_tx", BLOBMSG_TYPE_BOOL },
[CSA_FORCE] = { "force", BLOBMSG_TYPE_BOOL },
};
static void switch_chan_fallback_cb(void *eloop_data, void *user_ctx)
{
struct hostapd_iface *iface = eloop_data;
struct hostapd_freq_params *freq_params = user_ctx;
hostapd_switch_channel_fallback(iface, freq_params);
}
#ifdef NEED_AP_MLME
static int
hostapd_switch_chan(struct ubus_context *ctx, struct ubus_object *obj,
@ -769,6 +780,7 @@ hostapd_switch_chan(struct ubus_context *ctx, struct ubus_object *obj,
struct blob_attr *tb[__CSA_MAX];
struct hostapd_data *hapd = get_hapd_from_object(obj);
struct hostapd_config *iconf = hapd->iface->conf;
struct hostapd_freq_params *freq_params;
struct csa_settings css = {
.freq_params = {
.ht_enabled = iconf->ieee80211n,
@ -825,7 +837,15 @@ hostapd_switch_chan(struct ubus_context *ctx, struct ubus_object *obj,
ret = UBUS_STATUS_NOT_SUPPORTED;
}
return ret;
if (!ret || !tb[CSA_FORCE] || !blobmsg_get_bool(tb[CSA_FORCE]))
return ret;
freq_params = malloc(sizeof(*freq_params));
memcpy(freq_params, &css.freq_params, sizeof(*freq_params));
eloop_register_timeout(0, 1, switch_chan_fallback_cb,
hapd->iface, freq_params);
return 0;
#undef SET_CSA_SETTING
}
#endif

View File

@ -12,9 +12,9 @@ PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git
PKG_SOURCE_DATE:=2021-06-19
PKG_SOURCE_VERSION:=564d25e53fad925fa3ed56e3004c107d40925fa4
PKG_MIRROR_HASH:=a0644d31f99f20e5c2cee74153b81a0c2eae9ebeb644662cc76b0984b44dd490
PKG_SOURCE_DATE:=2021-07-18
PKG_SOURCE_VERSION:=bc9d317f2921ae6b529f2c9f8de79b75992e206f
PKG_MIRROR_HASH:=be96c4984821b8af95bfee1a29c082bb9eaa052cd3e03d8632ff02afd2debc81
PKG_MAINTAINER:=Hans Dedecker <dedeckeh@gmail.com>
PKG_LICENSE:=GPL-2.0

View File

@ -12,9 +12,9 @@ PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/fstools.git
PKG_MIRROR_HASH:=41c9c51d193f5150db67fcd898b6ea904b88476c94cdfd021d81e2711441b430
PKG_SOURCE_DATE:=2021-05-16
PKG_SOURCE_VERSION:=3d40a1b591cd569f95891116cd033b496de0f92b
PKG_MIRROR_HASH:=c57f21db30349f30d70b6169ad9d9c905733069fe14ea6b4ffdfbd82a355dd61
PKG_SOURCE_DATE:=2021-07-15
PKG_SOURCE_VERSION:=cdc9939b071427cf2b35134481df27b4bd76dbfc
CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0

View File

@ -16,6 +16,7 @@ reload_service() {
start_service() {
procd_open_instance
procd_set_param command "$PROG"
procd_set_param watch block
procd_set_param respawn
procd_close_instance
}

View File

@ -12,9 +12,9 @@ PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git
PKG_SOURCE_DATE:=2021-07-10
PKG_SOURCE_VERSION:=2dcefbd6094681dcbd2d7ff608590e74425a9220
PKG_MIRROR_HASH:=6f2615230a1db09740e8125517488a53b62baef0731b9adbd377765cad130289
PKG_SOURCE_DATE:=2021-07-18
PKG_SOURCE_VERSION:=9bd1b7f0951ec2bcf56674fa729af3872b276057
PKG_MIRROR_HASH:=87681b3f320af1392bfdecfe6e3c69a32a95169af0ca243e44bad78f22b34e3d
CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0
@ -90,7 +90,7 @@ endef
define Package/uxc
SECTION:=base
CATEGORY:=Base system
DEPENDS:=+procd-ujail +libubus +libubox +libblobmsg-json
DEPENDS:=+procd-ujail +libubus +libubox +libblobmsg-json +blockd
TITLE:=OpenWrt container management
MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
endef

View File

@ -16,3 +16,7 @@ boot() {
__BOOT_UXC=1
start
}
service_triggers() {
procd_add_raw_trigger "mount.add" 3000 /etc/init.d/uxc boot
}

View File

@ -12,10 +12,10 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/rpcd.git
PKG_SOURCE_DATE:=2021-05-05
PKG_SOURCE_VERSION:=7a560a1a5769146ab072f8e0165940459d3e16f7
PKG_SOURCE_DATE:=2021-07-13
PKG_SOURCE_VERSION:=1fa35765ddf64976aa48950cac53d501fb71dda0
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
PKG_MIRROR_HASH:=69d9588a5a910676252eabcd2815af318806cae8316777e8b6eb00b26bdc42cb
PKG_MIRROR_HASH:=be116e2616b3ae1b5fb9c4c338d6908f8cc9e5de239a2c83aa21b7a69b5c1c93
PKG_LICENSE:=ISC
PKG_LICENSE_FILES:=

View File

@ -46,7 +46,7 @@ LOADABLES=
DTOVERLAY=
DTADDR=
while getopts ":A:a:c:C:D:d:e:f:i:k:n:o:O:v:r:S" OPTION
while getopts ":A:a:c:C:D:d:e:f:i:k:n:o:O:v:r:H:" OPTION
do
case $OPTION in
A ) ARCH=$OPTARG;;
@ -63,7 +63,7 @@ do
o ) OUTPUT=$OPTARG;;
O ) DTOVERLAY="$DTOVERLAY ${OPTARG}";;
r ) ROOTFS=$OPTARG;;
S ) HASH=$OPTARG;;
H ) HASH=$OPTARG;;
v ) VERSION=$OPTARG;;
* ) echo "Invalid option passed to '$0' (options:$*)"
usage;;

View File

@ -9,7 +9,7 @@
struct fis_image_desc {
unsigned char name[16]; // Null terminated name
uint32_t flash_base; // Address within FLASH of image
@@ -67,6 +69,7 @@ static int parse_redboot_partitions(stru
@@ -72,6 +74,7 @@ static int parse_redboot_partitions(stru
const struct mtd_partition **pparts,
struct mtd_part_parser_data *data)
{
@ -17,7 +17,7 @@
int nrparts = 0;
struct fis_image_desc *buf;
struct mtd_partition *parts;
@@ -234,14 +237,15 @@ static int parse_redboot_partitions(stru
@@ -239,14 +242,15 @@ static int parse_redboot_partitions(stru
}
}
#endif
@ -35,7 +35,7 @@
#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
if (nulllen > 0) {
strcpy(nullname, nullstring);
@@ -260,6 +264,8 @@ static int parse_redboot_partitions(stru
@@ -265,6 +269,8 @@ static int parse_redboot_partitions(stru
}
#endif
for ( ; i<nrparts; i++) {
@ -44,7 +44,7 @@
parts[i].size = fl->img->size;
parts[i].offset = fl->img->flash_base;
parts[i].name = names;
@@ -293,6 +299,13 @@ static int parse_redboot_partitions(stru
@@ -298,6 +304,13 @@ static int parse_redboot_partitions(stru
fl = fl->next;
kfree(tmp_fl);
}

View File

@ -1,6 +1,6 @@
--- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c
@@ -88,12 +88,18 @@ static int parse_redboot_partitions(stru
@@ -93,12 +93,18 @@ static int parse_redboot_partitions(stru
parse_redboot_of(master);
@ -19,7 +19,7 @@
return -EIO;
}
offset -= master->erasesize;
@@ -106,10 +112,6 @@ static int parse_redboot_partitions(stru
@@ -111,10 +117,6 @@ static int parse_redboot_partitions(stru
goto nogood;
}
}
@ -30,7 +30,7 @@
printk(KERN_NOTICE "Searching for RedBoot partition table in %s at offset 0x%lx\n",
master->name, offset);
@@ -182,6 +184,11 @@ static int parse_redboot_partitions(stru
@@ -187,6 +189,11 @@ static int parse_redboot_partitions(stru
}
if (i == numslots) {
/* Didn't find it */

View File

@ -1,6 +1,6 @@
--- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c
@@ -65,6 +65,22 @@ static void parse_redboot_of(struct mtd_
@@ -70,6 +70,22 @@ static void parse_redboot_of(struct mtd_
directory = dirblock;
}
@ -23,7 +23,7 @@
static int parse_redboot_partitions(struct mtd_info *master,
const struct mtd_partition **pparts,
struct mtd_part_parser_data *data)
@@ -81,6 +97,7 @@ static int parse_redboot_partitions(stru
@@ -86,6 +102,7 @@ static int parse_redboot_partitions(stru
int namelen = 0;
int nulllen = 0;
int numslots;
@ -31,7 +31,7 @@
unsigned long offset;
#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
static char nullstring[] = "unallocated";
@@ -195,7 +212,10 @@ static int parse_redboot_partitions(stru
@@ -200,7 +217,10 @@ static int parse_redboot_partitions(stru
goto out;
}
@ -43,7 +43,7 @@
struct fis_list *new_fl, **prev;
if (buf[i].name[0] == 0xff) {
@@ -271,12 +291,13 @@ static int parse_redboot_partitions(stru
@@ -276,12 +296,13 @@ static int parse_redboot_partitions(stru
}
#endif
for ( ; i<nrparts; i++) {
@ -59,7 +59,7 @@
strcpy(names, fl->img->name);
#ifdef CONFIG_MTD_REDBOOT_PARTS_READONLY
if (!memcmp(names, "RedBoot", 8) ||
@@ -306,7 +327,9 @@ static int parse_redboot_partitions(stru
@@ -311,7 +332,9 @@ static int parse_redboot_partitions(stru
fl = fl->next;
kfree(tmp_fl);
}

View File

@ -103,8 +103,9 @@
ath9k0: wifi@0,11 { /* 2.4 GHz */
compatible = "pci168c,0029";
mtd-mac-address = <&hwinfo 0x1c>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_hwinfo_1c>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
reg = <0x8800 0 0 0 0>;
#gpio-cells = <2>;
gpio-controller;
@ -112,8 +113,9 @@
ath9k1: wifi@0,12 { /* 5 GHz */
compatible = "pci168c,0029";
mtd-mac-address = <&hwinfo 0x1c>;
mtd-mac-address-increment = <2>;
nvmem-cells = <&macaddr_hwinfo_1c>;
nvmem-cell-names = "mac-address";
mac-address-increment = <2>;
reg = <0x9000 0 0 0 0>;
#gpio-cells = <2>;
gpio-controller;
@ -132,7 +134,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&hwinfo 0x1c>;
nvmem-cells = <&macaddr_hwinfo_1c>;
nvmem-cell-names = "mac-address";
pll-data = <0x00110000 0x00001099 0x00991099>;
@ -179,3 +182,13 @@
};
};
};
&hwinfo {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_hwinfo_1c: macaddr@1c {
reg = <0x1c 0x6>;
};
};

View File

@ -247,7 +247,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x120c>;
nvmem-cells = <&macaddr_art_120c>;
nvmem-cell-names = "mac-address";
fixed-link {
speed = <1000>;
@ -258,8 +259,23 @@
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x520c>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_art_520c>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
phy-handle = <&phy4>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_120c: macaddr@120c {
reg = <0x120c 0x6>;
};
macaddr_art_520c: macaddr@520c {
reg = <0x520c 0x6>;
};
};

View File

@ -81,8 +81,9 @@
compatible = "pci168c,0029";
reg = <0x8800 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&config 0x66>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_config_66>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
#gpio-cells = <2>;
gpio-controller;
};
@ -91,8 +92,9 @@
compatible = "pci168c,0029";
reg = <0x9000 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&config 0x66>;
mtd-mac-address-increment = <2>;
nvmem-cells = <&macaddr_config_66>;
nvmem-cell-names = "mac-address";
mac-address-increment = <2>;
#gpio-cells = <2>;
gpio-controller;
};
@ -114,7 +116,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&config 0x66>;
nvmem-cells = <&macaddr_config_66>;
nvmem-cell-names = "mac-address";
pll-data = <0x00110000 0x00001099 0x00991099>;
@ -167,3 +170,13 @@
};
};
};
&config {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_config_66: macaddr@66 {
reg = <0x66 0x6>;
};
};

View File

@ -153,7 +153,7 @@
ath9k0: wifi@0,11 {
compatible = "pci168c,0029";
reg = <0x8800 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
mtd-mac-address = <&art 0xc>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
@ -181,7 +181,7 @@
ath9k1: wifi@0,12 {
compatible = "pci168c,0029";
reg = <0x9000 0 0 0 0>;
mtd-mac-address = <&art 0xc>;
mtd-mac-address = <&art 0x0>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;

View File

@ -153,14 +153,16 @@
};
&eth0 {
mtd-mac-address = <&art 0x120c>;
nvmem-cells = <&macaddr_art_120c>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x120c>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_art_120c>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
&pcie {
@ -170,7 +172,8 @@
compatible = "pci168c,002a";
reg = <0x0000 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&art 0x120c>;
nvmem-cells = <&macaddr_art_120c>;
nvmem-cell-names = "mac-address";
#gpio-cells = <2>;
gpio-controller;
};
@ -181,3 +184,13 @@
pinctrl-single,bits = <0x0 0x0 0xf8>;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_120c: macaddr@120c {
reg = <0x120c 0x6>;
};
};

View File

@ -72,13 +72,15 @@
};
&eth0 {
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&pcie {
@ -92,3 +94,13 @@
gpio-controller;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -174,13 +174,15 @@
};
&eth0 {
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&pcie {
@ -189,10 +191,25 @@
ath9k: wifi@0,0 {
compatible = "pci168c,002b";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -107,13 +107,15 @@
};
&eth0 {
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&pcie {
@ -122,10 +124,25 @@
ath9k: wifi@0,0 {
compatible = "pci168c,002b";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -104,7 +104,8 @@
ath9k: wifi@0,0 {
reg = <0x0000 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
#gpio-cells = <2>;
gpio-controller;
};
@ -115,3 +116,13 @@
pinctrl-single,bits = <0x0 0x0 0xf8>;
};
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -14,9 +14,20 @@
};
&eth1 {
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&ath9k {
compatible = "pci168c,002a";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -30,15 +30,27 @@
};
&eth0 {
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-1)>;
};
&eth1 {
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
&ath9k {
compatible = "pci168c,002b";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -179,13 +179,15 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
compatible = "qca,ar7241-eth", "syscon", "simple-mfd";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&pcie {
@ -194,10 +196,25 @@
ath9k: wifi@0,0 {
compatible = "pci168c,002e";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -171,7 +171,7 @@
compatible = "pci168c,002e";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>;
mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;

View File

@ -89,18 +89,31 @@
#gpio-cells = <2>;
gpio-controller;
qca,no-eeprom;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
};
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-1)>;
};
&eth1 {
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -135,18 +135,31 @@
#gpio-cells = <2>;
gpio-controller;
qca,no-eeprom;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
};
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-1)>;
};
&eth1 {
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -94,9 +94,20 @@
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&wifi {
ubnt,hsr;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -45,4 +45,3 @@
mtd-mac-address = <&art 0x0>;
};

View File

@ -15,5 +15,16 @@
};
&eth0 {
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -192,7 +192,8 @@
pll-data = <0x1c000000 0x00000101 0x00001616>;
mtd-mac-address = <&art 0x120c>;
nvmem-cells = <&macaddr_art_120c>;
nvmem-cell-names = "mac-address";
phy-mode = "rgmii";
phy-handle = <&phy0>;
@ -204,7 +205,8 @@
ath9k: wifi@0,0 {
compatible = "pci168c,002a";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x120c>;
nvmem-cells = <&macaddr_art_120c>;
nvmem-cell-names = "mac-address";
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
@ -229,3 +231,13 @@
#trigger-source-cells = <0>;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_120c: macaddr@120c {
reg = <0x120c 0x6>;
};
};

View File

@ -64,7 +64,8 @@
};
&eth0 {
mtd-mac-address = <&art 0x1002>;
nvmem-cells = <&macaddr_art_1002>;
nvmem-cell-names = "mac-address";
};
&pcie {
@ -73,9 +74,20 @@
ath9k: wifi@0,0 {
compatible = "pci168c,0030";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0x1002>;
nvmem-cells = <&macaddr_art_1002>;
nvmem-cell-names = "mac-address";
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_1002: macaddr@1002 {
reg = <0x1002 0x6>;
};
};

View File

@ -63,7 +63,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
phy-handle = <&phy4>;
phy-mode = "rgmii-id";
@ -77,10 +78,21 @@
ath9k: wifi@0,0,0 {
compatible = "pci168c,002a";
reg = <0x0 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -63,7 +63,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
phy-handle = <&phy4>;
phy-mode = "rgmii-id";
@ -77,10 +78,21 @@
ath9k: wifi@0,0,0 {
compatible = "pci168c,002a";
reg = <0x0 0 0 0 0>;
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-1)>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -81,8 +81,9 @@
compatible = "pci168c,002a";
reg = <0x0000 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&config 0x66>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_config_66>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
};
@ -101,7 +102,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&config 0x66>;
nvmem-cells = <&macaddr_config_66>;
nvmem-cell-names = "mac-address";
pll-data = <0x02000000 0x00000101 0x00001313>;
@ -116,7 +118,8 @@
&eth1 {
status = "okay";
mtd-mac-address = <&config 0x66>;
nvmem-cells = <&macaddr_config_66>;
nvmem-cell-names = "mac-address";
};
&spi {
@ -164,3 +167,13 @@
};
};
};
&config {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_config_66: macaddr@66 {
reg = <0x66 0x6>;
};
};

View File

@ -157,7 +157,8 @@
#gpio-cells = <2>;
gpio-controller;
qca,no-eeprom;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
};
@ -165,7 +166,8 @@
status = "okay";
phy-mode = "rgmii";
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
phy-handle = <&phy0>;
fixed-link {
@ -173,3 +175,13 @@
full-duplex;
};
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -67,10 +67,21 @@
phy-handle = <&phy0>;
phy-mode = "rgmii";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
fixed-link {
speed = <1000>;
full-duplex;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -179,7 +179,8 @@
phy-mode = "rgmii-rxid";
pll-data = <0x16000000 0x00000101 0x00001313>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
phy-handle = <&phy0>;
fixed-link {
@ -187,3 +188,13 @@
full-duplex;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -131,5 +131,16 @@
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -79,11 +79,27 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -188,7 +188,8 @@
status = "disabled";
phy-mode = "rgmii";
mtd-mac-address = <&art 0x1120c>;
nvmem-cells = <&macaddr_art_1120c>;
nvmem-cell-names = "mac-address";
fixed-link {
speed = <1000>;
@ -215,7 +216,8 @@
resets = <&rst 13>;
reset-names = "mac";
qca,mac-idx = <1>;
mtd-mac-address = <&art 0x1120c>;
nvmem-cells = <&macaddr_art_1120c>;
nvmem-cell-names = "mac-address";
};
&wmac {
@ -247,3 +249,13 @@
&usb_phy {
status = "okay";
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_1120c: macaddr@1120c {
reg = <0x1120c 0x6>;
};
};

View File

@ -118,7 +118,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
phy-handle = <&phy12>;
};
@ -127,5 +128,16 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -137,7 +137,8 @@
status = "okay";
phy-mode = "rgmii";
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
fixed-link {
speed = <1000>;
@ -149,5 +150,16 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -144,7 +144,8 @@
status = "okay";
phy-mode = "rmii";
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
fixed-link {
speed = <100>;
@ -155,5 +156,16 @@
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -113,13 +113,15 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -133,5 +135,16 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -130,13 +130,15 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&wmac {
@ -144,3 +146,17 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -112,7 +112,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x1002>;
nvmem-cells = <&macaddr_art_1002>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -132,5 +133,20 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x2>;
nvmem-cells = <&macaddr_art_2>;
nvmem-cell-names = "mac-address";
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_2: macaddr@2 {
reg = <0x2 0x6>;
};
macaddr_art_1002: macaddr@1002 {
reg = <0x1002 0x6>;
};
};

View File

@ -86,14 +86,16 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <2>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <2>;
};
&wmac {
@ -101,3 +103,13 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -103,7 +103,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -115,10 +116,25 @@
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -55,7 +55,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -123,3 +124,13 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -93,9 +93,10 @@
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment-byte = <3>;
mtd-mac-address-increment = <0x40>;
nvmem-cells = <&macaddr_art_1002>;
nvmem-cell-names = "mac-address";
mac-address-increment-byte = <3>;
mac-address-increment = <0x40>;
};
&mdio1 {
@ -107,3 +108,13 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_1002: macaddr@1002 {
reg = <0x1002 0x6>;
};
};

View File

@ -63,7 +63,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -117,3 +118,13 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -121,7 +121,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -134,7 +135,8 @@
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&wmac {
@ -142,3 +144,13 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -58,7 +58,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -117,3 +118,13 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -24,8 +24,9 @@
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-1)>;
gmac-config {
device = <&gmac>;
@ -38,8 +39,9 @@
&eth1 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
&pinmux {
@ -90,3 +92,13 @@
&usb_phy {
status = "okay";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -62,7 +62,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&eth1 {
@ -119,3 +120,13 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -75,7 +75,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -102,5 +103,16 @@
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -83,7 +83,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -111,5 +112,16 @@
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -109,14 +109,16 @@
&eth0 {
status = "okay";
mtd-mac-address = <&config 0x0>;
nvmem-cells = <&macaddr_config_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&config 0x0>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_config_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
&spi {
@ -188,6 +190,17 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&config 0x0>;
mtd-mac-address-increment = <2>;
nvmem-cells = <&macaddr_config_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <2>;
};
&config {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_config_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -146,7 +146,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -165,5 +166,16 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -135,7 +135,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -154,5 +155,16 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -80,7 +80,8 @@
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -110,5 +111,16 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -61,7 +61,7 @@
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>;
mac-address-increment = <(-1)>;
};
&usb {

View File

@ -121,8 +121,9 @@
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
gmac-config {
device = <&gmac>;
@ -135,13 +136,25 @@
&eth1 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-1)>;
};
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -46,7 +46,8 @@
};
&eth1 {
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&wmac {
@ -54,3 +55,13 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -65,13 +65,15 @@
phy-handle = <&swphy0>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -84,3 +86,13 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -142,11 +142,13 @@
phy-handle = <&swphy4>;
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&eth1 {
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&wmac {
@ -154,3 +156,17 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -133,18 +133,30 @@
status = "okay";
phy-handle = <&swphy0>;
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
&eth1 {
phy-handle = <&swphy4>;
pll-data = <0x06000000 0x00000101 0x00001616>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
switch-phy-swap = <1>;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -188,7 +188,8 @@
&eth0 {
status = "okay";
phy-handle = <&swphy4>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&eth1 {
@ -213,3 +214,13 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -82,7 +82,7 @@
phy-handle = <&swphy0>;
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>;
mac-address-increment = <(-1)>;
};
&eth1 {

View File

@ -54,7 +54,8 @@
phy-handle = <&swphy0>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -71,5 +72,16 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
nvmem-cells = <&macaddr_uboot_1fc00>;
nvmem-cell-names = "mac-address";
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_1fc00: macaddr@1fc00 {
reg = <0x1fc00 0x6>;
};
};

View File

@ -96,7 +96,8 @@
/* default for ar934x, except for 1000M and 10M */
pll-data = <0x06000000 0x00000101 0x00001313>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
phy-mode = "rgmii";
phy-handle = <&phy0>;
@ -111,3 +112,13 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -18,7 +18,8 @@
/* default for ar934x, except for 1000M and 10M */
pll-data = <0x02000000 0x00000101 0x00001313>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
phy-mode = "rgmii-id";
phy-handle = <&phy4>;
@ -29,3 +30,13 @@
rxdv-delay = <3>;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -26,7 +26,8 @@
/* default for ar934x, except for 1000M and 10M */
pll-data = <0x06000000 0x00000101 0x00001313>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
phy-mode = "rgmii";
phy-handle = <&phy0>;
@ -37,3 +38,13 @@
rxdv-delay = <2>;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -110,5 +110,16 @@
};
&eth0 {
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -106,8 +106,9 @@
compatible = "pci168c,0030";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&hw_info 0x0>;
mtd-mac-address-increment = <2>;
nvmem-cells = <&macaddr_hw_info_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <2>;
};
};
@ -160,8 +161,9 @@
&wmac {
status = "okay";
mtd-mac-address = <&hw_info 0x0>;
mtd-mac-address-increment = <1>;
nvmem-cells = <&macaddr_hw_info_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
&nand {
@ -215,7 +217,8 @@
pll-data = <0x06000000 0x00000101 0x00001313>;
mtd-mac-address = <&hw_info 0x0>;
nvmem-cells = <&macaddr_hw_info_0>;
nvmem-cell-names = "mac-address";
phy-mode = "rgmii-id";
phy-handle = <&phy0>;
@ -227,3 +230,13 @@
rxdv-delay = <1>;
};
};
&hw_info {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_hw_info_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -90,14 +90,16 @@
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
phy-handle = <&swphy4>;
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&ref {
@ -149,3 +151,17 @@
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -120,7 +120,8 @@
&eth0 {
status = "okay";
phy-handle = <&swphy0>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
gmac-config {
device = <&gmac>;
@ -130,10 +131,25 @@
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
};

View File

@ -139,8 +139,19 @@
pll-data = <0x06000000 0x00000101 0x00001616>;
mtd-mac-address = <&uboot 0x2e010>;
nvmem-cells = <&macaddr_uboot_2e010>;
nvmem-cell-names = "mac-address";
phy-mode = "rgmii";
phy-handle = <&phy0>;
};
&uboot {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_uboot_2e010: macaddr@2e010 {
reg = <0x2e010 0x6>;
};
};

View File

@ -130,8 +130,9 @@
pll-data = <0x02000000 0x00000101 0x00001616>;
mtd-mac-address = <&art 0x1002>;
mtd-mac-address-increment = <2>;
nvmem-cells = <&macaddr_art_1002>;
nvmem-cell-names = "mac-address";
mac-address-increment = <2>;
phy-mode = "rgmii";
phy-handle = <&phy0>;
@ -168,3 +169,13 @@
>;
};
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_1002: macaddr@1002 {
reg = <0x1002 0x6>;
};
};

View File

@ -29,17 +29,30 @@
};
&eth0 {
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-2)>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-2)>;
};
&pcie {
wifi@0,0,0 {
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
};
&wmac {
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-1)>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -24,17 +24,30 @@
};
&eth0 {
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
};
&pcie {
wifi@0,0,0 {
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-2)>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-2)>;
};
};
&wmac {
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-1)>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
};

View File

@ -219,7 +219,8 @@
/* default for ar934x, except for 1000M */
pll-data = <0x06000000 0x00000101 0x00001616>;
mtd-mac-address = <&caldata 0x0>;
nvmem-cells = <&macaddr_caldata_0>;
nvmem-cell-names = "mac-address";
phy-mode = "rgmii";
phy-handle = <&phy0>;
@ -244,7 +245,8 @@
&wmac {
status = "okay";
mtd-mac-address = <&caldata 0x0>;
nvmem-cells = <&macaddr_caldata_0>;
nvmem-cell-names = "mac-address";
qca,no-eeprom;
};
@ -254,9 +256,24 @@
ath9k: wifi@0,0 {
compatible = "pci168c,0033";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&caldata 0xc>;
nvmem-cells = <&macaddr_caldata_c>;
nvmem-cell-names = "mac-address";
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
};
};
&caldata {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_caldata_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_caldata_c: macaddr@c {
reg = <0xc 0x6>;
};
};

View File

@ -129,7 +129,8 @@
ath9k: wifi@0,0 {
compatible = "pci168c,0030";
reg = <0x0000 0 0 0 0>;
mtd-mac-address = <&art 0xc>;
nvmem-cells = <&macaddr_art_c>;
nvmem-cell-names = "mac-address";
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
@ -140,7 +141,8 @@
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x6>;
nvmem-cells = <&macaddr_art_6>;
nvmem-cell-names = "mac-address";
};
&mdio0 {
@ -158,8 +160,27 @@
pll-data = <0x06000000 0x00000101 0x00001313>;
mtd-mac-address = <&art 0x0>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
phy-mode = "rgmii-id";
phy-handle = <&phy0>;
};
&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_art_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
macaddr_art_c: macaddr@c {
reg = <0xc 0x6>;
};
};

Some files were not shown because too many files have changed in this diff Show More