Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2024-12-24 16:05:21 +08:00
commit 22369ffdd7
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
38 changed files with 861 additions and 204 deletions

View File

@ -426,7 +426,7 @@ menu "Global build settings"
config USE_SECCOMP
bool "Enable SECCOMP"
select KERNEL_SECCOMP
depends on (aarch64 || arm || armeb || mips || mipsel || mips64 || mips64el || i386 || powerpc || x86_64)
depends on (aarch64 || arm || armeb || mips || mipsel || mips64 || mips64el || i386 || loongarch64 || powerpc || x86_64)
depends on !TARGET_uml
default y
help

View File

@ -1257,6 +1257,13 @@ config KERNEL_MPTCP_IPV6
default KERNEL_MPTCP
endif
config KERNEL_NF_CONNTRACK_TIMEOUT
bool "Per-connection connection tracking timeout"
default y if !SMALL_FLASH
help
Select this option to enable support for per-connection conntrack timeouts.
Increases the (uncompressed) size of nf_conntrack.ko by ~8kB.
#
# NFS related symbols
#

View File

@ -28,6 +28,7 @@ asus,rt-ac59u-v2|\
asus,zenwifi-cd6n|\
asus,zenwifi-cd6r|\
buffalo,bhr-4grv2|\
buffalo,wzr-450hp2|\
devolo,magic-2-wifi|\
engenius,eap300-v2|\
engenius,eap350-v1|\

View File

@ -102,7 +102,8 @@ zbtlink,zbt-z8103ax)
comfast,cf-e393ax)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x80000"
;;
dlink,aquila-pro-ai-m30-a1)
dlink,aquila-pro-ai-m30-a1|\
dlink,aquila-pro-ai-m60-a1)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x40000"
;;
gatonetworks,gdsp)

View File

@ -1,29 +1,8 @@
From ed4ae7386257aa66455e330234e513d098a36f84 Mon Sep 17 00:00:00 2001
From: Alex Shumsky <alexthreed@gmail.com>
To: u-boot@lists.denx.de
Cc: Alex Shumsky <alexthreed@gmail.com>,
Dragan Simic <dsimic@manjaro.org>, Marek Vasut <marex@denx.de>,
Ben Wolsieffer <benwolsieffer@gmail.com>,
Caleb Connolly <caleb.connolly@linaro.org>,
Chris Morgan <macromorgan@hotmail.com>,
Devarsh Thakkar <devarsht@ti.com>,
Jagan Teki <jagan@amarulasolutions.com>,
Janne Grunau <j@jannau.net>,
Jerome Forissier <jerome.forissier@linaro.org>,
Jiaxun Yang <jiaxun.yang@flygoat.com>,
Jonas Karlman <jonas@kwiboo.se>,
Joshua Watt <jpewhacker@gmail.com>,
Kever Yang <kever.yang@rock-chips.com>,
Mattijs Korpershoek <mkorpershoek@baylibre.com>,
Neal Gompa <neal@gompa.dev>,
Philipp Tomsich <philipp.tomsich@theobroma-systems.com>,
Philipp Tomsich <philipp.tomsich@vrull.eu>,
Quentin Schulz <quentin.schulz@cherry.de>,
Rasmus Villemoes <rasmus.villemoes@prevas.dk>,
Simon Glass <sjg@chromium.org>, Stefan Roese <sr@denx.de>,
Tim Harvey <tharvey@gateworks.com>, Tom Rini <trini@konsulko.com>
Subject: [PATCH v6] rockchip: board: Increase rng-seed size to make it sufficient for modern Linux
Date: Wed, 16 Oct 2024 13:02:03 +0300 [thread overview]
Message-ID: <20241016100203.629713-1-alexthreed@gmail.com> (raw)
Date: Wed, 16 Oct 2024 13:02:03 +0300
Subject: [PATCH] rockchip: board: Increase rng-seed size to make it sufficient
for modern Linux
Increase rng-seed size to make Linux happy and initialize rng pool instantly.
Linux 5.19+ requires 32 bytes of entropy to initialize random pool, but u-boot
@ -46,27 +25,9 @@ Signed-off-by: Alex Shumsky <alexthreed@gmail.com>
Fixes: d2048bafae40 ("rockchip: board: Add board_rng_seed() for all Rockchip devices")
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Marek Vasut <marex@denx.de>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
---
Changes in v6:
- fix wording in docs and debug message
Changes in v5:
- add docs
Changes in v4:
- fix typos and code style
Changes in v3:
- reword warning
- increase default rng_seed_size to support older linux as well
- reword commit message
Changes in v2:
- add env config knob rng_seed_size
- add warning for small rng_seed_size
- 12-character commit SHA in Fixes
arch/arm/mach-rockchip/board.c | 11 ++++++++++-
common/Kconfig | 3 +++
doc/usage/environment.rst | 5 +++++

View File

@ -0,0 +1,55 @@
From a63456b9191fae2fe49f4b121e025792022e3950 Mon Sep 17 00:00:00 2001
From: Markus Volk <f_l_k@t-online.de>
Date: Wed, 30 Oct 2024 06:07:16 +0100
Subject: [PATCH] scripts/dtc/pylibfdt/libfdt.i_shipped: Use SWIG_AppendOutput
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Swig has changed language specific AppendOutput functions. The helper
macro SWIG_AppendOutput remains unchanged. Use that instead
of SWIG_Python_AppendOutput, which would require an extra parameter
since swig 4.3.0.
/home/flk/poky/build-test/tmp/work/qemux86_64-poky-linux/u-boot/2024.10/git/arch/x86/cpu/u-boot-64.lds
| scripts/dtc/pylibfdt/libfdt_wrap.c: In function _wrap_fdt_next_node:
| scripts/dtc/pylibfdt/libfdt_wrap.c:5581:17: error: too few arguments to function SWIG_Python_AppendOutput
| 5581 | resultobj = SWIG_Python_AppendOutput(resultobj, val);
| | ^~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Reported-by: Rudi Heitbaum <rudi@heitbaum.com>
Link: https://github.com/dgibson/dtc/pull/154
---
scripts/dtc/pylibfdt/libfdt.i_shipped | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/scripts/dtc/pylibfdt/libfdt.i_shipped
+++ b/scripts/dtc/pylibfdt/libfdt.i_shipped
@@ -1037,7 +1037,7 @@ typedef uint32_t fdt32_t;
fdt_string(fdt1, fdt32_to_cpu($1->nameoff)));
buff = PyByteArray_FromStringAndSize(
(const char *)($1 + 1), fdt32_to_cpu($1->len));
- resultobj = SWIG_Python_AppendOutput(resultobj, buff);
+ resultobj = SWIG_AppendOutput(resultobj, buff);
}
}
@@ -1076,7 +1076,7 @@ typedef uint32_t fdt32_t;
%typemap(argout) int *depth {
PyObject *val = Py_BuildValue("i", *arg$argnum);
- resultobj = SWIG_Python_AppendOutput(resultobj, val);
+ resultobj = SWIG_AppendOutput(resultobj, val);
}
%apply int *depth { int *depth };
@@ -1092,7 +1092,7 @@ typedef uint32_t fdt32_t;
if (PyTuple_GET_SIZE(resultobj) == 0)
resultobj = val;
else
- resultobj = SWIG_Python_AppendOutput(resultobj, val);
+ resultobj = SWIG_AppendOutput(resultobj, val);
}
}

View File

@ -17,40 +17,30 @@
#include <linux/mutex.h>
#include <linux/version.h>
#define GCA230718_MAX_LEDS (4u)
#define GCA230718_MAX_LEDS (4u)
#define GCA230718_OPMODE_DISABLED (0x00u)
#define GCA230718_OPMODE_NO_TOGGLE (0x01u)
#define GCA230718_OPMODE_TOGGLE_RAMP_CONTROL_DISABLED (0x02u)
#define GCA230718_OPMODE_TOGGLE_RAMP_CONTROL_ENSABLED (0x03u)
#define GCA230718_OPMODE_DISABLED (0x00u)
#define GCA230718_OPMODE_NO_TOGGLE (0x01u)
#define GCA230718_OPMODE_TOGGLE_RAMP_CONTROL_DISABLED (0x02u)
#define GCA230718_OPMODE_TOGGLE_RAMP_CONTROL_ENSABLED (0x03u)
#define GCA230718_1ST_SEQUENCE_BYTE_1 (0x02u)
#define GCA230718_2ND_SEQUENCE_BYTE_1 (0x01u)
#define GCA230718_3RD_SEQUENCE_BYTE_1 (0x03u)
#define GCA230718_1ST_SEQUENCE_BYTE_1 (0x02u)
#define GCA230718_2ND_SEQUENCE_BYTE_1 (0x01u)
#define GCA230718_3RD_SEQUENCE_BYTE_1 (0x03u)
struct gca230718_led
{
struct gca230718_led {
enum led_brightness brightness;
struct i2c_client *client;
struct led_classdev ledClassDev;
};
struct gca230718_private
{
struct gca230718_private {
struct mutex lock;
struct gca230718_led leds[GCA230718_MAX_LEDS];
};
static void gca230718_init_private_led_data(struct gca230718_private* data)
{
u8 ledIndex;
for (ledIndex = 0; ledIndex < GCA230718_MAX_LEDS; ledIndex++)
{
data->leds[ledIndex].client = NULL;
}
}
static void gca230718_send_sequence(struct i2c_client *client, u8 byte0, struct gca230718_private* gca230718_privateData)
static void gca230718_send_sequence(struct i2c_client *client, u8 byte0,
struct gca230718_private *priv)
{
int status = 0;
u8 ledIndex;
@ -64,142 +54,119 @@ static void gca230718_send_sequence(struct i2c_client *client, u8 byte0, struct
controlCommand[1] = byte0;
controlCommand[2] = GCA230718_OPMODE_NO_TOGGLE;
/* Byte 3-6 are set below to the brighness value of the individual LEDs */
controlCommand[7] = 0x01; /* Frequency, doesn't care as long as GCA230718_OPMODE_NO_TOGGLE is used above */
controlCommand[7] =
0x01; /* Frequency, doesn't care as long as GCA230718_OPMODE_NO_TOGGLE is used above */
/* Byte 8-11 are set below to the brighness value of the individual LEDs */
controlCommand[12] = 0x87;
for (ledIndex = 0; ledIndex < GCA230718_MAX_LEDS; ledIndex++)
{
controlCommand[3 + ledIndex] = gca230718_privateData->leds[ledIndex].brightness;
controlCommand[8 + ledIndex] = gca230718_privateData->leds[ledIndex].brightness;
for (ledIndex = 0; ledIndex < GCA230718_MAX_LEDS; ledIndex++) {
controlCommand[3 + ledIndex] = priv->leds[ledIndex].brightness;
controlCommand[8 + ledIndex] = priv->leds[ledIndex].brightness;
}
mutex_lock(&(gca230718_privateData->lock));
mutex_lock(&(priv->lock));
if ((status = i2c_smbus_write_i2c_block_data(client, resetCommandRegister, sizeof(resetCommand), resetCommand)) != 0)
{
pr_info("Error %i during call of i2c_smbus_write_i2c_block_data for reset command\n", status);
}
else if ((status = i2c_smbus_write_i2c_block_data(client, controlCommandRegister, sizeof(controlCommand), controlCommand)) != 0)
{
pr_info("Error %i during call of i2c_smbus_write_i2c_block_data for control command\n", status);
if ((status = i2c_smbus_write_i2c_block_data(
client, resetCommandRegister, sizeof(resetCommand),
resetCommand)) != 0) {
pr_info("Error %i during call of i2c_smbus_write_i2c_block_data for reset command\n",
status);
} else if ((status = i2c_smbus_write_i2c_block_data(
client, controlCommandRegister,
sizeof(controlCommand), controlCommand)) != 0) {
pr_info("Error %i during call of i2c_smbus_write_i2c_block_data for control command\n",
status);
}
mutex_unlock(&(gca230718_privateData->lock));
mutex_unlock(&(priv->lock));
}
static int gca230718_set_brightness(struct led_classdev *led_cdev, enum led_brightness value)
static int gca230718_set_brightness(struct led_classdev *led_cdev,
enum led_brightness value)
{
struct gca230718_led* led;
struct i2c_client* client;
struct gca230718_led *led;
struct i2c_client *client;
led = container_of(led_cdev, struct gca230718_led, ledClassDev);
client = led->client;
if (client != NULL)
{
struct gca230718_private* gca230718_privateData;
if (client) {
struct gca230718_private *priv;
led->brightness = value;
gca230718_privateData = i2c_get_clientdata(client);
priv = i2c_get_clientdata(client);
gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1, gca230718_privateData);
gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1,
priv);
}
return 0;
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,3,0)
static int gca230718_probe(struct i2c_client *client)
#else
static int gca230718_probe(struct i2c_client *client, const struct i2c_device_id *id)
#endif
{
int status = 0;
struct gca230718_private* gca230718_privateData;
struct gca230718_private *priv;
int err;
pr_info("Enter gca230718_probe for device address %u\n", client->addr);
gca230718_privateData = devm_kzalloc(&(client->dev), sizeof(struct gca230718_private), GFP_KERNEL);
if (gca230718_privateData == NULL)
{
priv = devm_kzalloc(&client->dev, sizeof(struct gca230718_private),
GFP_KERNEL);
if (!priv) {
pr_info("Error during allocating memory for private data\n");
status = -ENOMEM;
return -ENOMEM;
}
else
{
struct device_node* ledNode;
mutex_init(&gca230718_privateData->lock);
gca230718_init_private_led_data(gca230718_privateData);
i2c_set_clientdata(client, gca230718_privateData);
for_each_child_of_node(client->dev.of_node, ledNode)
{
u32 regValue = 0;
if (of_property_read_u32(ledNode, "reg", &regValue) != 0)
{
pr_info("Missing entry \"reg\" in node %s\n", ledNode->name);
}
else if (regValue >= GCA230718_MAX_LEDS)
{
pr_info("Invalid entry \"reg\" in node %s (%u)\n", ledNode->name, regValue);
}
else
{
struct led_classdev* ledClassDev = &(gca230718_privateData->leds[regValue].ledClassDev);
struct led_init_data init_data = {};
err = devm_mutex_init(&client->dev, &priv->lock);
if (err)
return err;
gca230718_privateData->leds[regValue].client = client;
init_data.fwnode = of_fwnode_handle(ledNode);
i2c_set_clientdata(client, priv);
pr_info("Creating LED for node %s: reg=%u\n", ledNode->name, regValue);
struct device_node *ledNode;
for_each_child_of_node(client->dev.of_node, ledNode) {
u32 regValue = 0;
if (of_property_read_u32(ledNode, "reg", &regValue))
pr_info("Missing entry \"reg\" in node %s\n",
ledNode->name);
else if (regValue >= GCA230718_MAX_LEDS)
pr_info("Invalid entry \"reg\" in node %s (%u)\n",
ledNode->name, regValue);
else {
struct led_classdev *ledClassDev =
&(priv->leds[regValue].ledClassDev);
struct led_init_data init_data = {};
ledClassDev->name = of_get_property(ledNode, "label", NULL);
if (ledClassDev->name == NULL)
{
ledClassDev->name = ledNode->name;
}
priv->leds[regValue].client = client;
init_data.fwnode = of_fwnode_handle(ledNode);
ledClassDev->brightness = LED_OFF;
ledClassDev->max_brightness = LED_FULL;
ledClassDev->brightness_set_blocking = gca230718_set_brightness;
if (devm_led_classdev_register_ext(&(client->dev), ledClassDev, &init_data) != 0)
{
pr_info("Error during call of devm_led_classdev_register_ext");
}
}
pr_info("Creating LED for node %s: reg=%u\n",
ledNode->name, regValue);
ledClassDev->name =
of_get_property(ledNode, "label", NULL);
if (!ledClassDev->name)
ledClassDev->name = ledNode->name;
ledClassDev->brightness = LED_OFF;
ledClassDev->max_brightness = LED_FULL;
ledClassDev->brightness_set_blocking =
gca230718_set_brightness;
if (devm_led_classdev_register_ext(
&client->dev, ledClassDev, &init_data))
pr_info("Error during call of devm_led_classdev_register_ext");
}
}
if (status == 0)
{
/*
Send full initialization sequence.
Afterwards only GCA230718_2ND_SEQUENCE_BYTE_1 must be send to upddate the brightness values.
*/
gca230718_send_sequence(client, GCA230718_1ST_SEQUENCE_BYTE_1, gca230718_privateData);
gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1, gca230718_privateData);
gca230718_send_sequence(client, GCA230718_3RD_SEQUENCE_BYTE_1, gca230718_privateData);
}
/*
Send full initialization sequence.
Afterwards only GCA230718_2ND_SEQUENCE_BYTE_1 must be send to upddate the brightness values.
*/
gca230718_send_sequence(client, GCA230718_1ST_SEQUENCE_BYTE_1, priv);
gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1, priv);
gca230718_send_sequence(client, GCA230718_3RD_SEQUENCE_BYTE_1, priv);
return status;
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,18,0)
static void gca230718_remove(struct i2c_client *client)
#else
static int gca230718_remove(struct i2c_client *client)
#endif
{
struct gca230718_private* gca230718_privateData;
gca230718_privateData = i2c_get_clientdata(client);
mutex_destroy(&gca230718_privateData->lock);
gca230718_init_private_led_data(gca230718_privateData);
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
return 0;
#endif
}
static const struct i2c_device_id gca230718_i2c_ids[] = {
@ -216,7 +183,6 @@ MODULE_DEVICE_TABLE(of, gca230718_dt_ids);
static struct i2c_driver gca230718_driver = {
.probe = gca230718_probe,
.remove = gca230718_remove,
.id_table = gca230718_i2c_ids,
.driver = {
.name = KBUILD_MODNAME,

View File

@ -1048,6 +1048,40 @@ endef
$(eval $(call KernelPackage,nfnetlink-queue))
define KernelPackage/nfnetlink-cthelper
TITLE:=Netfilter User space conntrack helpers
FILES:=$(LINUX_DIR)/net/netfilter/nfnetlink_cthelper.ko
KCONFIG:=CONFIG_NF_CT_NETLINK_HELPER
AUTOLOAD:=$(call AutoProbe,nfnetlink_cthelper)
$(call AddDepends/nfnetlink,+kmod-nfnetlink-queue +kmod-nf-conntrack-netlink)
endef
define KernelPackage/nfnetlink-cthelper/description
Kernel modules support for a netlink-based connection tracking
userspace helpers interface
endef
$(eval $(call KernelPackage,nfnetlink-cthelper))
define KernelPackage/nfnetlink-cttimeout
TITLE:=Netfilter conntrack expectation timeout
FILES:=$(LINUX_DIR)/net/netfilter/nfnetlink_cttimeout.ko
KCONFIG:=CONFIG_NF_CT_NETLINK_TIMEOUT
AUTOLOAD:=$(call AutoProbe,nfnetlink_cttimeout)
$(call AddDepends/nfnetlink,+kmod-nf-conntrack +kmod-nf-conntrack-timeout @KERNEL_NF_CONNTRACK_TIMEOUT)
endef
define KernelPackage/nfnetlink-cttimeout/description
Kernel modules support for a netlink-based connection tracking
userspace timeout interface
Requires CONFIG_NF_CONNTRACK_TIMEOUT (only enabled for non-small flash devices)
endef
$(eval $(call KernelPackage,nfnetlink-cttimeout))
define KernelPackage/nf-conntrack-netlink
TITLE:=Connection tracking netlink interface
FILES:=$(LINUX_DIR)/net/netfilter/nf_conntrack_netlink.ko

View File

@ -8,6 +8,10 @@ config MBEDTLS_AES_C
bool "MBEDTLS_AES_C"
default y
config MBEDTLS_ARIA_C
bool "MBEDTLS_ARIA_C"
default n
config MBEDTLS_CAMELLIA_C
bool "MBEDTLS_CAMELLIA_C"
default n

View File

@ -37,6 +37,7 @@ MBEDTLS_BUILD_OPTS_CURVES= \
MBEDTLS_BUILD_OPTS_CIPHERS= \
CONFIG_MBEDTLS_AES_C \
CONFIG_MBEDTLS_ARIA_C \
CONFIG_MBEDTLS_CAMELLIA_C \
CONFIG_MBEDTLS_CCM_C \
CONFIG_MBEDTLS_CMAC_C \

View File

@ -12,9 +12,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git
PKG_MIRROR_HASH:=99139ce325d73f5b250d115703540acfac3bcdc8ee202f2d3aacf3083042bc70
PKG_SOURCE_DATE:=2024-12-17
PKG_SOURCE_VERSION:=fd01fb852302a2683d09ee1c2193d7c51e2b0ba8
PKG_MIRROR_HASH:=41dbb5352eff931ecc78c4ce9a081645c26a7fb8dc57cdd6521a2f8d3a142567
PKG_SOURCE_DATE:=2024-12-22
PKG_SOURCE_VERSION:=42d3937654508b04da64969f9d764ac2ec411904
CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0

View File

@ -50,6 +50,10 @@
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
cal_art_1000: calibration@1000 {
reg = <0x1000 0x3d8>;
};
};
};
};
@ -65,6 +69,6 @@
};
&ath9k {
nvmem-cells = <&macaddr_art_0 1>;
nvmem-cell-names = "mac-address";
nvmem-cells = <&macaddr_art_0 1>, <&cal_art_1000>;
nvmem-cell-names = "mac-address", "calibration";
};

View File

@ -50,6 +50,10 @@
macaddr_art_6: macaddr@6 {
reg = <0x6 0x6>;
};
cal_art_1000: calibration@1000 {
reg = <0x1000 0x3d8>;
};
};
};
};
@ -65,6 +69,6 @@
};
&ath9k {
nvmem-cells = <&macaddr_art_0 1>;
nvmem-cell-names = "mac-address";
nvmem-cells = <&macaddr_art_0 1>, <&cal_art_1000>;
nvmem-cell-names = "mac-address", "calibration";
};

View File

@ -173,7 +173,6 @@
ath9k: wifi@0,0 {
compatible = "pci168c,002e";
reg = <0x0000 0 0 0 0>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;

View File

@ -128,6 +128,16 @@
reg = <0x7f0000 0x10000>;
label = "art";
read-only;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
cal_art_1000: calibration@1000 {
reg = <0x1000 0x3d8>;
};
};
};
};
};
@ -141,9 +151,8 @@
reg = <0x0000 0 0 0 0>;
#gpio-cells = <2>;
gpio-controller;
qca,no-eeprom;
nvmem-cells = <&macaddr_uboot_1fc00 0>;
nvmem-cell-names = "mac-address";
nvmem-cells = <&macaddr_uboot_1fc00 0>, <&cal_art_1000>;
nvmem-cell-names = "mac-address", "calibration";
};
};

View File

@ -83,7 +83,7 @@
};
calibration_art_1000: calibration@1000 {
reg = <0x1000 0x440>;
reg = <0x1000 0x3d8>;
};
};
};
@ -92,6 +92,7 @@
};
&wifi {
compatible = "pci168c,002e";
nvmem-cells = <&calibration_art_1000>;
nvmem-cell-names = "calibration";
};

View File

@ -159,6 +159,7 @@
status = "okay";
ath9k: wifi@0,0 {
compatible = "pci168c,0030";
reg = <0x0000 0 0 0 0>;
#gpio-cells = <2>;
gpio-controller;

View File

@ -0,0 +1,179 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "qca955x.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
/ {
compatible = "buffalo,wzr-450hp2", "qca,qca9558";
model = "Buffalo WZR-450HP2/WZR-450HP2D";
aliases {
led-boot = &led_status_green;
led-failsafe = &led_status_green;
led-running = &led_status_green;
led-upgrade = &led_status_green;
label-mac-device = &eth0;
};
leds {
compatible = "gpio-leds";
led_status_green: status_green {
function = LED_FUNCTION_STATUS;
color = <LED_COLOR_ID_GREEN>;
gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
default-state = "on";
};
led_wlan_green: wlan_green {
function = LED_FUNCTION_WLAN;
color = <LED_COLOR_ID_GREEN>;
gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0tpt";
};
led_wps_green: wps_green {
function = LED_FUNCTION_WPS;
color = <LED_COLOR_ID_GREEN>;
gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
};
};
keys {
compatible = "gpio-keys";
reset {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
rfkill {
label = "RFKILL button";
linux,code = <KEY_RFKILL>;
gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
};
&spi {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <25000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x40000>;
read-only;
};
partition@40000 {
reg = <0x40000 0x10000>;
label = "u-boot-env";
};
partition@50000 {
compatible = "denx,uimage";
reg = <0x50000 0xf90000>;
label = "firmware";
};
partition@fe0000 {
reg = <0xfe0000 0x10000>;
label = "user_property";
read-only;
};
art: partition@ff0000 {
label = "art";
reg = <0xff0000 0x10000>;
read-only;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
macaddr_wan: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_lan: macaddr@6 {
reg = <0x6 0x6>;
};
cal_ath9k: cal_ath9k@1000 {
reg = <0x1000 0x440>;
};
};
};
};
};
};
&mdio0 {
status = "okay";
phy0: ethernet-phy@0 {
reg = <0>;
qca,ar8327-initvals = <
0x04 0x07600000 /* PORT0 PAD MODE CTRL: RGMII, to eth0 */
0x0c 0x00080080 /* PORT6 PAD MODE CTRL: SGMII, to eth1 */
0x10 0x81000080 /* POWER ON STRAP */
0x50 0xcc35cc35 /* LED_CTRL0 */
0x54 0xca35ca35 /* LED_CTRL1 */
0x58 0xc935c935 /* LED_CTRL2 */
0x5c 0x03ffff00 /* LED_CTRL3 */
0x7c 0x0000007e /* PORT0_STATUS */
0x94 0x0000007e /* PORT6_STATUS */
>;
};
};
&eth0 {
status = "okay";
nvmem-cells = <&macaddr_wan>;
nvmem-cell-names = "mac-address";
phy-handle = <&phy0>;
pll-data = <0x56000000 0x00000101 0x00001616>;
gmac-config {
device = <&gmac>;
rgmii-enabled = <1>;
};
};
&eth1 {
status = "okay";
nvmem-cells = <&macaddr_lan>;
nvmem-cell-names = "mac-address";
pll-data = <0x03000101 0x00000101 0x00001616>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
&wmac {
status = "okay";
nvmem-cells = <&cal_ath9k>;
nvmem-cell-names = "calibration";
};

View File

@ -213,6 +213,10 @@ ath79_setup_interfaces()
ucidef_add_switch "switch0" \
"0@eth1" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" "6@eth0"
;;
buffalo,wzr-450hp2)
ucidef_add_switch "switch0" \
"6@eth1" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" "0@eth0"
;;
buffalo,wzr-600dhp|\
buffalo,wzr-hp-ag300h|\
tplink,archer-c25-v1|\

View File

@ -83,11 +83,6 @@ case "$FIRMWARE" in
meraki,mr12)
caldata_extract "art" 0x11000 0xeb8
;;
netgear,wnr2200-8m|\
netgear,wnr2200-16m|\
tplink,tl-wr842n-v1)
caldata_extract "art" 0x1000 0x3e0
;;
ubnt,powerbridge-m|\
ubnt,rocket-m)
caldata_extract "art" 0x1000 0x1000

View File

@ -760,6 +760,18 @@ define Device/buffalo_wzr-hp-g450h
endef
TARGET_DEVICES += buffalo_wzr-hp-g450h
define Device/buffalo_wzr-450hp2
$(Device/buffalo_common)
SOC := qca9558
DEVICE_MODEL := WZR-450HP2
DEVICE_ALT0_VENDOR := Buffalo
DEVICE_ALT0_MODEL := WZR-450HP2D
BUFFALO_PRODUCT := WZR-450HP2
IMAGE_SIZE := 15936k
SUPPORTED_DEVICES += wzr-450hp2
endef
TARGET_DEVICES += buffalo_wzr-450hp2
define Device/comfast_cf-e110n-v2
SOC := qca9533
DEVICE_VENDOR := COMFAST

View File

@ -180,7 +180,7 @@
#size-cells = <1>;
cal_data_1000: calibration@1000 {
reg = <0x1000 0x440>;
reg = <0x1000 0x3d8>;
};
};
};

View File

@ -202,6 +202,9 @@ ipq40xx_setup_macs()
wan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
lan_mac=$(macaddr_add "$wan_mac" 1)
;;
extreme-networks,ws-ap3915i)
label_mac="$(mtd_get_mac_ascii CFG1 ethaddr)"
;;
ezviz,cs-w3-wd1200g-eup)
label_mac=$(mtd_get_mac_binary "ART" 0x6)
;;

View File

@ -68,6 +68,11 @@
};
};
output-usb-power {
compatible = "regulator-output";
vout-supply = <&reg_usb>;
};
reg_usb: regulator-usb {
compatible = "regulator-fixed";
@ -414,8 +419,6 @@
&usb2_hs_phy {
status = "okay";
phy-supply = <&reg_usb>;
};
&watchdog {

View File

@ -3,4 +3,5 @@ CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_MTD_UBI_BLOCK=y
CONFIG_MTD_UBI_NVMEM=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_REGULATOR_USERSPACE_CONSUMER=y
CONFIG_UBIFS_FS=y

View File

@ -542,7 +542,6 @@ define Device/extreme-networks_ws-ap3915i
DEVICE_MODEL := WS-AP3915i
IMAGE_SIZE := 30080k
SOC := qcom-ipq4029
BLOCKSIZE := 128k
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | check-size | append-metadata
endef
TARGET_DEVICES += extreme-networks_ws-ap3915i

View File

@ -136,6 +136,10 @@
#address-cells = <1>;
#size-cells = <1>;
cal_ath9k_cal_985: calibration@985 {
reg = <0x985 0x3d8>;
};
macaddr_ath9k_cal_a91: macaddr@a91 {
compatible = "mac-base";
reg = <0xa91 0x6>;
@ -180,8 +184,9 @@
reset-gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
wifi@0,0 {
compatible = "pci0,0";
compatible = "pci168c,002d";
reg = <0x7000 0 0 0 0>;
qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */
nvmem-cells = <&cal_ath9k_cal_985>;
nvmem-cell-names = "calibration";
};
};

View File

@ -163,6 +163,10 @@
#address-cells = <1>;
#size-cells = <1>;
cal_ath9k_cal_985: calibration@985 {
reg = <0x985 0x3d8>;
};
macaddr_ath9k_cal_a91: macaddr@a91 {
compatible = "mac-base";
reg = <0xa91 0x6>;
@ -206,9 +210,10 @@
reset-gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
wifi@0,0 {
compatible = "pci0,0";
compatible = "pci168c,002d";
reg = <0x7000 0 0 0 0>;
qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */
nvmem-cells = <&cal_ath9k_cal_985>;
nvmem-cell-names = "calibration";
};
};

View File

@ -49,7 +49,7 @@
#size-cells = <1>;
cal_urlader_985: cal@985 {
reg = <0x985 0x440>;
reg = <0x985 0x3d8>;
};
macaddr_urlader_a91: macaddr@a91 {
@ -94,7 +94,7 @@
};
&wifi {
/delete-property/ qca,no-eeprom;
compatible = "pci168c,002e";
nvmem-cells = <&cal_urlader_985>;
nvmem-cell-names = "calibration";
};

View File

@ -49,6 +49,10 @@
#address-cells = <1>;
#size-cells = <1>;
cal_urlader_985: cal@985 {
reg = <0x985 0x3d8>;
};
macaddr_urlader_a91: macaddr@a91 {
compatible = "mac-base";
reg = <0xa91 0x6>;
@ -89,3 +93,9 @@
&phy1 {
reset-gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
};
&wifi {
compatible = "pci168c,002e";
nvmem-cells = <&cal_urlader_985>;
nvmem-cell-names = "calibration";
};

View File

@ -127,3 +127,8 @@
&phy1 {
reset-gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
};
&wifi {
compatible = "pci168c,0030";
qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:01:00.0.bin */
};

View File

@ -155,10 +155,8 @@
#address-cells = <2>;
device_type = "pci";
wifi: wifi@168c,002e {
compatible = "pci168c,002e";
wifi: wifi@0,0 {
reg = <0 0 0 0 0>;
qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:01:00.0.bin */
};
};
};

View File

@ -19,9 +19,6 @@ case "$FIRMWARE" in
avm,fritz3390)
caldata_extract_reverse "urlader" 0x2546 0x440
;;
avm,fritz7360sl)
caldata_extract "urlader" 0x985 0x1000
;;
avm,fritz7412|\
avm,fritz7430)
/usr/bin/fritz_cal_extract -i 1 -s 0x1e000 -e 0x207 -l 5120 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader") || \

View File

@ -45,9 +45,6 @@ case "$FIRMWARE" in
caldata_extract "calibration" 0xf000 0x1000
ath9k_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) 2) 0x20c
;;
avm,fritz7312|avm,fritz7320)
caldata_extract "urlader" 0x985 0x1000
;;
*)
caldata_die "board $board is not supported yet"
;;

View File

@ -0,0 +1,377 @@
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/dts-v1/;
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
#include "mt7986a.dtsi"
/ {
model = "D-Link AQUILA PRO AI M60 A1";
compatible = "dlink,aquila-pro-ai-m60-a1", "mediatek,mt7986a";
aliases {
serial0 = &uart0;
led-boot = &led_status_white;
led-failsafe = &led_status_red;
led-running = &led_status_white;
led-upgrade = &led_status_blue;
};
chosen {
stdout-path = "serial0:115200n8";
};
memory@40000000 {
reg = <0 0x40000000 0 0x20000000>;
};
gpio-keys {
compatible = "gpio-keys";
button-reset {
label = "reset";
gpios = <&pio 10 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
button-wps {
label = "wps";
gpios = <&pio 9 GPIO_ACTIVE_LOW>;
linux,code = <KEY_WPS_BUTTON>;
};
button-leds-on-off {
label = "leds-on-off";
linux,code = <KEY_LIGHTS_TOGGLE>;
gpios = <&pio 47 GPIO_ACTIVE_LOW>;
};
};
};
&eth {
status = "okay";
gmac0: mac@0 {
compatible = "mediatek,eth-mac";
reg = <0>;
phy-mode = "2500base-x";
nvmem-cells = <&macaddr_odm 1>;
nvmem-cell-names = "mac-address";
fixed-link {
speed = <2500>;
full-duplex;
pause;
};
};
gmac1: mac@1 {
compatible = "mediatek,eth-mac";
reg = <1>;
phy-mode = "2500base-x";
phy-handle = <&phy6>;
nvmem-cells = <&macaddr_odm 0>;
nvmem-cell-names = "mac-address";
label = "internet";
};
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
reset-gpios = <&pio 6 GPIO_ACTIVE_LOW>;
reset-delay-us = <1500000>;
reset-post-delay-us = <1000000>;
phy6: phy@6 {
compatible = "maxlinear,gpy211", "ethernet-phy-ieee802.3-c45";
reg = <6>;
phy-mode = "2500base-x";
};
switch@1f {
compatible = "mediatek,mt7531";
reg = <31>;
reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
interrupt-controller;
#interrupt-cells = <1>;
interrupt-parent = <&pio>;
interrupts = <66 IRQ_TYPE_LEVEL_HIGH>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
label = "lan1";
};
port@1 {
reg = <1>;
label = "lan2";
};
port@2 {
reg = <2>;
label = "lan3";
};
port@3 {
reg = <3>;
label = "lan4";
};
port@6 {
reg = <6>;
label = "cpu";
ethernet = <&gmac0>;
phy-mode = "2500base-x";
fixed-link {
speed = <2500>;
full-duplex;
pause;
};
};
};
};
};
};
&pio {
spi_flash_pins: spi-flash-pins-33-to-38 {
mux {
function = "spi";
groups = "spi0", "spi0_wp_hold";
};
conf-pu {
pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP";
drive-strength = <8>;
mediatek,pull-up-adv = <0>; /* bias-disable */
};
conf-pd {
pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO";
drive-strength = <8>;
mediatek,pull-down-adv = <0>; /* bias-disable */
};
};
wf_2g_5g_pins: wf_2g_5g-pins {
mux {
function = "wifi";
groups = "wf_2g", "wf_5g";
};
conf {
pins =
"WF0_HB2",
"WF0_HB3",
"WF0_HB4",
"WF0_HB0",
"WF0_HB0_B",
"WF0_HB5",
"WF0_HB6",
"WF0_HB7",
"WF0_HB8",
"WF0_HB9",
"WF0_HB10",
"WF0_TOP_CLK",
"WF0_TOP_DATA",
"WF1_HB1",
"WF1_HB2",
"WF1_HB3",
"WF1_HB4",
"WF1_HB0",
"WF1_HB5",
"WF1_HB6",
"WF1_HB7",
"WF1_HB8",
"WF1_TOP_CLK",
"WF1_TOP_DATA";
drive-strength = <4>;
};
};
i2c_pins_3_4: i2c-pins-3-4 {
mux {
function = "i2c";
groups = "i2c";
};
};
};
&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spi_flash_pins>;
status = "okay";
flash@0 {
compatible = "spi-nand";
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
spi-max-frequency = <20000000>;
spi-tx-bus-width = <4>;
spi-rx-bus-width = <4>;
mediatek,nmbm;
mediatek,bmt-max-ratio = <1>;
mediatek,bmt-max-reserved-blocks = <64>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "BL2";
reg = <0x000000 0x100000>;
read-only;
};
partition@100000 {
label = "u-boot-env";
reg = <0x100000 0x80000>;
};
partition@180000 {
label = "Factory";
reg = <0x180000 0x200000>;
read-only;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
eeprom_factory_0: eeprom@0 {
reg = <0x0 0x1000>;
};
};
};
partition@380000 {
label = "FIP";
reg = <0x380000 0x200000>;
read-only;
};
partition@580000 {
label = "ubi";
reg = <0x580000 0x3200000>;
};
partition@3780000 {
label = "ubi1";
reg = <0x3780000 0x3200000>;
read-only;
};
partition@6980000 {
label = "Odm";
reg = <0x6980000 0x40000>;
read-only;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
macaddr_odm: macaddr@81 {
compatible = "mac-base";
reg = <0x81 0x6>;
#nvmem-cell-cells = <1>;
};
};
};
partition@69c0000 {
label = "Config1";
reg = <0x69c0000 0x80000>;
read-only;
};
partition@6a40000 {
label = "Config2";
reg = <0x6a40000 0x80000>;
read-only;
};
partition@6ac0000 {
label = "Storage";
reg = <0x6ac0000 0xA00000>;
read-only;
};
};
};
};
&wifi {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&wf_2g_5g_pins>;
nvmem-cells = <&eeprom_factory_0>;
nvmem-cell-names = "eeprom";
band@0 {
/* 2.4 GHz */
reg = <0>;
nvmem-cells = <&macaddr_odm 2>;
nvmem-cell-names = "mac-address";
};
band@1 {
/* 5 GHz */
reg = <1>;
nvmem-cells = <&macaddr_odm 5>;
nvmem-cell-names = "mac-address";
};
};
&uart0 {
status = "okay";
};
&watchdog {
status = "okay";
};
&i2c0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c_pins_3_4>;
gca230718@40 {
compatible = "unknown,gca230718";
reg = <0x40>;
led_status_red: led@0 {
color = <LED_COLOR_ID_RED>;
function = LED_FUNCTION_STATUS;
reg = <0>;
};
led@1 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_STATUS;
reg = <1>;
};
led_status_blue: led@2 {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_STATUS;
reg = <2>;
};
led_status_white: led@3 {
color = <LED_COLOR_ID_WHITE>;
function = LED_FUNCTION_STATUS;
reg = <3>;
};
};
};

View File

@ -100,7 +100,8 @@ mediatek_setup_interfaces()
openwrt,one)
ucidef_set_interfaces_lan_wan eth1 eth0
;;
dlink,aquila-pro-ai-m30-a1)
dlink,aquila-pro-ai-m30-a1|\
dlink,aquila-pro-ai-m60-a1)
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" internet
;;
keenetic,kn-3911|\

View File

@ -128,6 +128,10 @@ platform_do_upgrade() {
yuncore,ax835)
default_do_upgrade "$1"
;;
dlink,aquila-pro-ai-m60-a1)
fw_setenv sw_tryactive 0
nand_do_upgrade "$1"
;;
mercusys,mr90x-v1|\
tplink,re6000xd)
CI_UBIPART="ubi0"

View File

@ -777,6 +777,20 @@ define Device/dlink_aquila-pro-ai-m30-a1
endef
TARGET_DEVICES += dlink_aquila-pro-ai-m30-a1
define Device/dlink_aquila-pro-ai-m60-a1
DEVICE_VENDOR := D-Link
DEVICE_MODEL := AQUILA PRO AI M60
DEVICE_VARIANT := A1
DEVICE_DTS := mt7986a-dlink-aquila-pro-ai-m60-a1
DEVICE_DTS_DIR := ../dts
DEVICE_PACKAGES := kmod-leds-gca230718 kmod-mt7915e kmod-mt7986-firmware mt7986-wo-firmware
IMAGES += recovery.bin
IMAGE_SIZE := 51200k
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
IMAGE/recovery.bin := sysupgrade-tar | pad-to $$(IMAGE_SIZE) | dlink-ai-recovery-header DLK6E8202001 \x30\x6C\x19\x0C \x00\x00\x2C\x00 \x00\x00\x20\x03 \x82\x6E
endef
TARGET_DEVICES += dlink_aquila-pro-ai-m60-a1
define Device/edgecore_eap111
DEVICE_VENDOR := Edgecore
DEVICE_MODEL := EAP111