Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2023-11-27 22:44:43 +08:00
commit 2c767ac1a7
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
28 changed files with 492 additions and 104 deletions

View File

@ -1,2 +1,2 @@
LINUX_VERSION-5.15 = .138
LINUX_KERNEL_HASH-5.15.138 = af84e54164e1c01f59764ba528448ed36b377d22aafbd81b4b0cf47792ef4aaa
LINUX_VERSION-5.15 = .139
LINUX_KERNEL_HASH-5.15.139 = 9c68c10dfe18e59b892e940436dea6a18d167160d55e62563cf7282244d8044e

View File

@ -18,7 +18,7 @@ PKG_FLAGS:=nonshared
PKG_LICENSE:=GPL-2.0 GPL-2.0+
PKG_LICENSE_FILES:=Licenses/README
PKG_BUILD_PARALLEL:=1
PKG_BUILD_PARALLEL ?= 1
ifdef UBOOT_USE_BINMAN
$(eval $(call TestHostCommand,python3-pyelftools, \
@ -27,10 +27,6 @@ ifdef UBOOT_USE_BINMAN
endif
ifdef UBOOT_USE_INTREE_DTC
$(eval $(call TestHostCommand,swig, \
Please install the swig package, \
swig -version))
$(eval $(call TestHostCommand,python3-dev, \
Please install the python3-dev package, \
python3.11-config --includes 2>&1 | grep 'python3', \
@ -39,6 +35,14 @@ ifdef UBOOT_USE_INTREE_DTC
python3.8-config --includes 2>&1 | grep 'python3', \
python3.7-config --includes 2>&1 | grep 'python3', \
python3-config --includes 2>&1 | grep -E 'python3\.([7-9]|[0-9][0-9])\.?'))
$(eval $(call TestHostCommand,python3-setuptools, \
Please install the Python3 setuptools module, \
$(STAGING_DIR_HOST)/bin/python3 -c 'import setuptools'))
$(eval $(call TestHostCommand,swig, \
Please install the swig package, \
swig -version))
endif
export GCC_HONOUR_COPTS=s

View File

@ -3,13 +3,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=firmware-utils
PKG_RELEASE:=2
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
PKG_SOURCE_DATE:=2023-05-18
PKG_SOURCE_VERSION:=02cdbc6a4d61605c008efef09162f772f553fcde
PKG_MIRROR_HASH:=f5188fc38bb03ddbcc34763ff049597e2d8af98c0854910dc87f10e5927096e2
PKG_SOURCE_DATE:=2023-11-21
PKG_SOURCE_VERSION:=12bf1a99bd6eebae90caa144bb4d8b0cd763ff8f
PKG_MIRROR_HASH:=f711bf80123a6f14737da27ab8dfff87a4d429c74057de355b1693e89f223abc
PKG_BUILD_DEPENDS:=openssl zlib

View File

@ -34,7 +34,7 @@ def get_pid(args):
enc = args.hw_version.rjust(8, '0').encode('ascii')
struct.pack_into('>8s', buf, 0x0, enc)
enc = binascii.hexlify(args.hw_id.encode())
enc = binascii.hexlify(args.hw_id.encode()).upper()
struct.pack_into('>6s', buf, 0x8, enc)
enc = args.sw_version.rjust(4, '0').encode('ascii')

View File

@ -414,7 +414,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
/* forking complete and child started to run, tell ptracer */
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -5010,6 +5010,7 @@ context_switch(struct rq *rq, struct tas
@@ -5014,6 +5014,7 @@ context_switch(struct rq *rq, struct tas
* finish_task_switch()'s mmdrop().
*/
switch_mm_irqs_off(prev->active_mm, next->mm, next);

View File

@ -37,7 +37,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
map->format.val_bytes = DIV_ROUND_UP(config->val_bits, 8);
map->format.buf_size = DIV_ROUND_UP(config->reg_bits +
config->val_bits + config->pad_bits, 8);
@@ -1735,6 +1736,7 @@ static int _regmap_raw_write_impl(struct
@@ -1737,6 +1738,7 @@ static int _regmap_raw_write_impl(struct
return ret;
}
@ -45,7 +45,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
map->format.format_reg(map->work_buf, reg, map->reg_shift);
regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
map->write_flag_mask);
@@ -1905,6 +1907,7 @@ static int _regmap_bus_formatted_write(v
@@ -1907,6 +1909,7 @@ static int _regmap_bus_formatted_write(v
return ret;
}
@ -53,7 +53,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
map->format.format_write(map, reg, val);
trace_regmap_hw_write_start(map, reg, 1);
@@ -2346,6 +2349,7 @@ static int _regmap_raw_multi_reg_write(s
@@ -2348,6 +2351,7 @@ static int _regmap_raw_multi_reg_write(s
unsigned int reg = regs[i].reg;
unsigned int val = regs[i].def;
trace_regmap_hw_write_start(map, reg, 1);
@ -61,7 +61,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
map->format.format_reg(u8, reg, map->reg_shift);
u8 += reg_bytes + pad_bytes;
map->format.format_val(u8, val, 0);
@@ -2673,6 +2677,7 @@ static int _regmap_raw_read(struct regma
@@ -2675,6 +2679,7 @@ static int _regmap_raw_read(struct regma
return ret;
}

View File

@ -42,7 +42,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
map->format.reg_bytes = DIV_ROUND_UP(config->reg_bits, 8);
map->format.pad_bytes = config->pad_bits / 8;
map->format.reg_downshift = config->reg_downshift;
@@ -1736,6 +1738,7 @@ static int _regmap_raw_write_impl(struct
@@ -1738,6 +1740,7 @@ static int _regmap_raw_write_impl(struct
return ret;
}
@ -50,7 +50,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
reg >>= map->format.reg_downshift;
map->format.format_reg(map->work_buf, reg, map->reg_shift);
regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
@@ -1907,6 +1910,7 @@ static int _regmap_bus_formatted_write(v
@@ -1909,6 +1912,7 @@ static int _regmap_bus_formatted_write(v
return ret;
}
@ -58,7 +58,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
reg >>= map->format.reg_downshift;
map->format.format_write(map, reg, val);
@@ -2349,6 +2353,7 @@ static int _regmap_raw_multi_reg_write(s
@@ -2351,6 +2355,7 @@ static int _regmap_raw_multi_reg_write(s
unsigned int reg = regs[i].reg;
unsigned int val = regs[i].def;
trace_regmap_hw_write_start(map, reg, 1);
@ -66,7 +66,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
reg >>= map->format.reg_downshift;
map->format.format_reg(u8, reg, map->reg_shift);
u8 += reg_bytes + pad_bytes;
@@ -2677,6 +2682,7 @@ static int _regmap_raw_read(struct regma
@@ -2679,6 +2684,7 @@ static int _regmap_raw_read(struct regma
return ret;
}

View File

@ -28,7 +28,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -1929,6 +1929,8 @@ static int _regmap_bus_reg_write(void *c
@@ -1931,6 +1931,8 @@ static int _regmap_bus_reg_write(void *c
{
struct regmap *map = context;
@ -37,7 +37,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
return map->bus->reg_write(map->bus_context, reg, val);
}
@@ -2703,6 +2705,8 @@ static int _regmap_bus_reg_read(void *co
@@ -2705,6 +2707,8 @@ static int _regmap_bus_reg_read(void *co
{
struct regmap *map = context;
@ -46,7 +46,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
return map->bus->reg_read(map->bus_context, reg, val);
}
@@ -3078,6 +3082,8 @@ static int _regmap_update_bits(struct re
@@ -3080,6 +3084,8 @@ static int _regmap_update_bits(struct re
*change = false;
if (regmap_volatile(map, reg) && map->reg_update_bits) {

View File

@ -125,7 +125,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#include <linux/mutex.h>
#include <linux/err.h>
#include <linux/property.h>
@@ -3358,3 +3359,5 @@ static int __init regmap_initcall(void)
@@ -3360,3 +3361,5 @@ static int __init regmap_initcall(void)
return 0;
}
postcore_initcall(regmap_initcall);

View File

@ -72,7 +72,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -4216,6 +4216,7 @@ int wake_up_state(struct task_struct *p,
@@ -4220,6 +4220,7 @@ int wake_up_state(struct task_struct *p,
{
return try_to_wake_up(p, state, 0);
}

View File

@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -7707,7 +7707,7 @@ static int nft_register_flowtable_net_ho
@@ -7703,7 +7703,7 @@ static int nft_register_flowtable_net_ho
err = flowtable->data.type->setup(&flowtable->data,
hook->ops.dev,
FLOW_BLOCK_BIND);

View File

@ -15,7 +15,7 @@ Link: https://lore.kernel.org/r/20220515210048.483898-9-robimarko@gmail.com
--- a/drivers/clk/qcom/Kconfig
+++ b/drivers/clk/qcom/Kconfig
@@ -166,6 +166,7 @@ config IPQ_LCC_806X
@@ -167,6 +167,7 @@ config IPQ_LCC_806X
config IPQ_GCC_8074
tristate "IPQ8074 Global Clock Controller"

View File

@ -35,7 +35,7 @@ Link: https://lore.kernel.org/r/20220818220628.339366-1-robimarko@gmail.com
extern const struct clk_ops clk_byte2_ops;
--- a/drivers/clk/qcom/clk-rcg2.c
+++ b/drivers/clk/qcom/clk-rcg2.c
@@ -477,6 +477,13 @@ const struct clk_ops clk_rcg2_floor_ops
@@ -471,6 +471,13 @@ const struct clk_ops clk_rcg2_floor_ops
};
EXPORT_SYMBOL_GPL(clk_rcg2_floor_ops);

View File

@ -110,7 +110,7 @@ Link: https://lore.kernel.org/r/20220426212136.1543984-1-bjorn.andersson@linaro.
static int update_config(struct clk_rcg2 *rcg)
{
int count, ret;
@@ -164,12 +174,10 @@ calc_rate(unsigned long rate, u32 m, u32
@@ -158,12 +168,10 @@ calc_rate(unsigned long rate, u32 m, u32
}
static unsigned long
@ -125,7 +125,7 @@ Link: https://lore.kernel.org/r/20220426212136.1543984-1-bjorn.andersson@linaro.
if (rcg->mnd_width) {
mask = BIT(rcg->mnd_width) - 1;
@@ -190,6 +198,17 @@ clk_rcg2_recalc_rate(struct clk_hw *hw,
@@ -184,6 +192,17 @@ clk_rcg2_recalc_rate(struct clk_hw *hw,
return calc_rate(parent_rate, m, n, mode, hid_div);
}
@ -143,7 +143,7 @@ Link: https://lore.kernel.org/r/20220426212136.1543984-1-bjorn.andersson@linaro.
static int _freq_tbl_determine_rate(struct clk_hw *hw, const struct freq_tbl *f,
struct clk_rate_request *req,
enum freq_policy policy)
@@ -263,7 +282,8 @@ static int clk_rcg2_determine_floor_rate
@@ -257,7 +276,8 @@ static int clk_rcg2_determine_floor_rate
return _freq_tbl_determine_rate(hw, rcg->freq_tbl, req, FLOOR);
}
@ -153,7 +153,7 @@ Link: https://lore.kernel.org/r/20220426212136.1543984-1-bjorn.andersson@linaro.
{
u32 cfg, mask, d_val, not2d_val, n_minus_m;
struct clk_hw *hw = &rcg->clkr.hw;
@@ -305,15 +325,27 @@ static int __clk_rcg2_configure(struct c
@@ -299,15 +319,27 @@ static int __clk_rcg2_configure(struct c
cfg |= rcg->parent_map[index].cfg << CFG_SRC_SEL_SHIFT;
if (rcg->mnd_width && f->n && (f->m != f->n))
cfg |= CFG_MODE_DUAL_EDGE;
@ -184,7 +184,7 @@ Link: https://lore.kernel.org/r/20220426212136.1543984-1-bjorn.andersson@linaro.
if (ret)
return ret;
@@ -994,11 +1026,12 @@ static int clk_rcg2_shared_set_rate(stru
@@ -988,11 +1020,12 @@ static int clk_rcg2_shared_set_rate(stru
return -EINVAL;
/*
@ -201,7 +201,7 @@ Link: https://lore.kernel.org/r/20220426212136.1543984-1-bjorn.andersson@linaro.
return clk_rcg2_shared_force_enable_clear(hw, f);
}
@@ -1022,6 +1055,11 @@ static int clk_rcg2_shared_enable(struct
@@ -1016,6 +1049,11 @@ static int clk_rcg2_shared_enable(struct
if (ret)
return ret;
@ -213,7 +213,7 @@ Link: https://lore.kernel.org/r/20220426212136.1543984-1-bjorn.andersson@linaro.
ret = update_config(rcg);
if (ret)
return ret;
@@ -1032,13 +1070,12 @@ static int clk_rcg2_shared_enable(struct
@@ -1026,13 +1064,12 @@ static int clk_rcg2_shared_enable(struct
static void clk_rcg2_shared_disable(struct clk_hw *hw)
{
struct clk_rcg2 *rcg = to_clk_rcg2(hw);
@ -228,7 +228,7 @@ Link: https://lore.kernel.org/r/20220426212136.1543984-1-bjorn.andersson@linaro.
/*
* Park the RCG at a safe configuration - sourced off of safe source.
@@ -1056,17 +1093,52 @@ static void clk_rcg2_shared_disable(stru
@@ -1050,17 +1087,52 @@ static void clk_rcg2_shared_disable(stru
update_config(rcg);
clk_rcg2_clear_force_enable(hw);

View File

@ -64,7 +64,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
/**
--- a/drivers/clk/qcom/clk-rcg2.c
+++ b/drivers/clk/qcom/clk-rcg2.c
@@ -209,11 +209,60 @@ clk_rcg2_recalc_rate(struct clk_hw *hw,
@@ -203,11 +203,60 @@ clk_rcg2_recalc_rate(struct clk_hw *hw,
return __clk_rcg2_recalc_rate(hw, parent_rate, cfg);
}
@ -125,7 +125,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
struct clk_hw *p;
struct clk_rcg2 *rcg = to_clk_rcg2(hw);
int index;
@@ -232,7 +281,15 @@ static int _freq_tbl_determine_rate(stru
@@ -226,7 +275,15 @@ static int _freq_tbl_determine_rate(stru
if (!f)
return -EINVAL;
@ -142,7 +142,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
if (index < 0)
return index;
@@ -242,18 +299,18 @@ static int _freq_tbl_determine_rate(stru
@@ -236,18 +293,18 @@ static int _freq_tbl_determine_rate(stru
return -EINVAL;
if (clk_flags & CLK_SET_RATE_PARENT) {
@ -167,7 +167,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
rate = tmp;
}
} else {
@@ -261,7 +318,7 @@ static int _freq_tbl_determine_rate(stru
@@ -255,7 +312,7 @@ static int _freq_tbl_determine_rate(stru
}
req->best_parent_hw = p;
req->best_parent_rate = rate;
@ -176,7 +176,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
return 0;
}
@@ -357,6 +414,7 @@ static int __clk_rcg2_set_rate(struct cl
@@ -351,6 +408,7 @@ static int __clk_rcg2_set_rate(struct cl
{
struct clk_rcg2 *rcg = to_clk_rcg2(hw);
const struct freq_tbl *f;
@ -184,7 +184,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
switch (policy) {
case FLOOR:
@@ -372,7 +430,15 @@ static int __clk_rcg2_set_rate(struct cl
@@ -366,7 +424,15 @@ static int __clk_rcg2_set_rate(struct cl
if (!f)
return -EINVAL;

View File

@ -54,9 +54,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
side of CZ.NIC's Turris Omnia router. There are 12 RGB LEDs on the
--- a/drivers/leds/leds-turris-omnia.c
+++ b/drivers/leds/leds-turris-omnia.c
@@ -41,6 +41,39 @@ struct omnia_leds {
struct omnia_led leds[];
};
@@ -72,6 +72,39 @@ static int omnia_cmd_read_u8(const struc
return -EIO;
}
+static struct led_hw_trigger_type omnia_hw_trigger_type;
+
@ -94,7 +94,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
static int omnia_led_brightness_set_blocking(struct led_classdev *cdev,
enum led_brightness brightness)
{
@@ -112,6 +145,8 @@ static int omnia_led_register(struct i2c
@@ -143,6 +176,8 @@ static int omnia_led_register(struct i2c
cdev = &led->mc_cdev.led_cdev;
cdev->max_brightness = 255;
cdev->brightness_set_blocking = omnia_led_brightness_set_blocking;
@ -102,8 +102,8 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
+ cdev->default_trigger = omnia_hw_trigger.name;
/* put the LED into software mode */
ret = i2c_smbus_write_byte_data(client, CMD_LED_MODE,
@@ -228,6 +263,12 @@ static int omnia_leds_probe(struct i2c_c
ret = omnia_cmd_write_u8(client, CMD_LED_MODE,
@@ -249,6 +284,12 @@ static int omnia_leds_probe(struct i2c_c
mutex_init(&leds->lock);

View File

@ -17,7 +17,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
--- a/drivers/leds/leds-turris-omnia.c
+++ b/drivers/leds/leds-turris-omnia.c
@@ -131,10 +131,13 @@ static int omnia_led_register(struct i2c
@@ -162,10 +162,13 @@ static int omnia_led_register(struct i2c
}
led->subled_info[0].color_index = LED_COLOR_ID_RED;

View File

@ -20,7 +20,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
--- a/drivers/leds/leds-turris-omnia.c
+++ b/drivers/leds/leds-turris-omnia.c
@@ -146,7 +146,7 @@ static int omnia_led_register(struct i2c
@@ -177,7 +177,7 @@ static int omnia_led_register(struct i2c
init_data.fwnode = &np->fwnode;
cdev = &led->mc_cdev.led_cdev;

View File

@ -0,0 +1,8 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7620a_sercomm_cpj.dtsi"
/ {
compatible = "rostelecom,rt-fl-1", "ralink,mt7620a-soc";
model = "Rostelecom RT-FL-1";
};

View File

@ -0,0 +1,8 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7620a_sercomm_cpj.dtsi"
/ {
compatible = "rostelecom,s1010", "ralink,mt7620a-soc";
model = "Rostelecom S1010";
};

View File

@ -0,0 +1,307 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7620a.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
/ {
aliases {
label-mac-device = &ethernet;
led-boot = &status_green;
led-failsafe = &status_amber;
led-running = &status_green;
led-upgrade = &status_amber;
};
keys {
compatible = "gpio-keys";
button-0 {
label = "reset";
linux,code = <KEY_RESTART>;
gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
button-1 {
label = "wps";
linux,code = <KEY_RESTART>;
gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
leds {
compatible = "gpio-leds";
status_green: led-0 {
label = "green:status";
gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_STATUS;
};
status_amber: led-1 {
label = "amber:status";
gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_STATUS;
};
led-2 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WAN;
gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
};
led-3 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <1>;
gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
};
led-4 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <2>;
gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
};
led-5 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <3>;
gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
};
led-6 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <4>;
gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
};
led-7 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
function-enumerator = <24>;
gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy1tpt";
};
};
virtual_flash {
compatible = "mtd-concat";
devices = <&fwconcat0 &fwconcat1>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
compatible = "openwrt,uimage";
/* sercomm krnl hdr with fw chksums */
openwrt,offset = <0x100>;
label = "firmware";
reg = <0x0 0x0>;
};
};
};
};
&ethernet {
nvmem-cells = <&macaddr_label 0>;
nvmem-cell-names = "mac-address";
};
&gpio1 {
status = "okay";
};
&gpio2 {
status = "okay";
};
&gpio3 {
status = "okay";
};
&pcie {
status = "okay";
};
/* mt7612 */
&pcie0 {
wifi@0,0 {
compatible = "mediatek,mt76";
reg = <0x0000 0 0 0 0>;
ieee80211-freq-limit = <5000000 6000000>;
nvmem-cells = <&eeprom_factory_8000>, <&macaddr_label 6>;
nvmem-cell-names = "eeprom", "mac-address";
/* 5 GHz WLAN phy green led */
led {
led-sources = <2>;
led-active-low;
};
};
};
&spi0 {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <70000000>;
m25p,fast-read;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
/* whole flash */
partition@0_all {
label = "ALL";
reg = <0x0 0x1000000>;
read-only;
};
partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};
partition@30000 {
label = "ftd_and_bootflag";
reg = <0x30000 0x20000>;
};
factory: partition@50000 {
label = "Factory";
reg = <0x50000 0x10000>;
read-only;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
eeprom_factory_8000: eeprom@8000 {
reg = <0x8000 0x200>;
};
};
};
partition@60000 {
label = "SC Nvram(permanent data)";
reg = <0x60000 0x10000>;
read-only;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
macaddr_label: macaddr@0 {
compatible = "mac-base";
reg = <0x0 0x6>;
#nvmem-cell-cells = <1>;
};
};
};
fwconcat0: partition@70000 {
label = "Firmware";
reg = <0x70000 0x790000>;
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "Kernel";
reg = <0x0 0x200000>;
};
partition@200000 {
label = "RootFS";
reg = <0x200000 0x590000>;
};
};
fwconcat1: partition@800000 {
label = "Firmware2";
reg = <0x800000 0x790000>;
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "Kernel2";
reg = <0x0 0x200000>;
};
partition@200000 {
label = "RootFS2";
reg = <0x200000 0x590000>;
};
};
partition@f90000 {
label = "MAC IP";
reg = <0xf90000 0x10000>;
read-only;
};
partition@fa0000 {
label = "Critical Log";
reg = <0xfa0000 0x10000>;
read-only;
};
partition@fb000 {
label = "Critical Log Bak";
reg = <0xfb0000 0x10000>;
read-only;
};
partition@fc0000 {
label = "Xml Config";
reg = <0xfc0000 0x20000>;
read-only;
};
partition@fe0000 {
label = "Xml Config Bak";
reg = <0xfe0000 0x20000>;
read-only;
};
};
};
};
&state_default {
gpio {
groups = "ephy", "rgmii1", "uartf", "wled";
function = "gpio";
};
};
/* mt7620 */
&wmac {
nvmem-cells = <&macaddr_label 2>;
nvmem-cell-names = "mac-address";
ralink,mtd-eeprom = <&factory 0x0>;
};

View File

@ -23,6 +23,35 @@ define Build/sercomm-crypto
rm -f $@.enc $@.key
endef
define Build/sercomm-factory-cpj
dd bs=$$((0x1fff00)) count=1 if=$@ of=$@.kernel conv=notrunc \
2>/dev/null
dd bs=$$((0x1fff00)) skip=1 if=$@ of=$@.rootfs1 conv=notrunc \
2>/dev/null
cp $@.rootfs1 $@.rootfs2
$(TOPDIR)/scripts/sercomm-kernel-header.py \
--kernel-image $@.kernel \
--kernel-offset $(SERCOMM_KERNEL_OFFSET) \
--rootfs-image $@.rootfs1 \
--rootfs-offset $(SERCOMM_ROOTFS_OFFSET) \
--output-header $@.header1
$(TOPDIR)/scripts/sercomm-kernel-header.py \
--kernel-image $@.kernel \
--kernel-offset $(SERCOMM_KERNEL2_OFFSET) \
--rootfs-image $@.rootfs2 \
--rootfs-offset $(SERCOMM_ROOTFS2_OFFSET) \
--output-header $@.header2
cat $@.header1 $@.kernel > $@.kernel1
cat $@.header2 $@.kernel > $@.kernel2
rm $@.header1 $@.header2 $@.kernel
$(call Build/sercomm-part-tag-common,kernel $@.kernel1)
$(call Build/sercomm-part-tag-common,kernel2 $@.kernel2)
$(call Build/sercomm-part-tag-common,rootfs $@.rootfs1)
$(call Build/sercomm-part-tag-common,rootfs2 $@.rootfs2)
cat $@.kernel2 $@.rootfs2 $@.kernel1 $@.rootfs1 > $@
rm $@.kernel1 $@.rootfs1 $@.kernel2 $@.rootfs2
endef
define Build/sercomm-factory-cqr
$(TOPDIR)/scripts/sercomm-pid.py \
--hw-version $(SERCOMM_HWVER) \
@ -38,10 +67,6 @@ define Build/sercomm-factory-cqr
mv $@.fhdr $@
endef
define Build/sercomm-fix-buc-pid
printf 1 | dd seek=$$((0x13)) of=$@ bs=1 conv=notrunc 2>/dev/null
endef
define Build/sercomm-kernel
$(TOPDIR)/scripts/sercomm-kernel-header.py \
--kernel-image $@ \
@ -104,6 +129,10 @@ define Build/sercomm-payload
rm $@.pid
endef
define Build/sercomm-pid-setbit
printf 1 | dd seek=$$(($(1))) of=$@ bs=1 conv=notrunc 2>/dev/null
endef
define Build/sercomm-prepend-tagged-kernel
$(CP) $(IMAGE_KERNEL) $(IMAGE_KERNEL).tagged
$(call Build/sercomm-part-tag-common,$(word 1,$(1)) \
@ -117,12 +146,46 @@ define Build/sercomm-reset-slot1-chksum
dd of=$@ seek=$$((0x118)) bs=1 conv=notrunc 2>/dev/null
endef
define Build/sercomm-sysupgrade-cpj
dd bs=$$((0x1fff00)) count=1 if=$@ of=$@.kernel conv=notrunc \
2>/dev/null
dd bs=$$((0x1fff00)) skip=1 if=$@ of=$@.rootfs conv=notrunc \
2>/dev/null
$(TOPDIR)/scripts/sercomm-kernel-header.py \
--kernel-image $@.kernel \
--kernel-offset $(SERCOMM_KERNEL_OFFSET) \
--rootfs-image $@.rootfs \
--rootfs-offset $(SERCOMM_ROOTFS_OFFSET) \
--output-header $@.header
cat $@.header $@.kernel $@.rootfs > $@
rm $@.header $@.kernel $@.rootfs
endef
define Device/sercomm
$(Device/nand)
LOADER_TYPE := bin
IMAGES += factory.img
endef
define Device/sercomm_cpj
SOC := mt7620a
DEVICE_VENDOR := Rostelecom
DEVICE_ALT0_VENDOR := Sercomm
IMAGE_SIZE := 7743k
SERCOMM_HWID := CPJ
SERCOMM_HWVER := 10000
SERCOMM_SWVER := 1001
SERCOMM_KERNEL_OFFSET := 0x70100
SERCOMM_ROOTFS_OFFSET := 0x270000
SERCOMM_KERNEL2_OFFSET := 0x800100
SERCOMM_ROOTFS2_OFFSET := 0xa00000
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | \
sercomm-sysupgrade-cpj | pad-rootfs | check-size | \
append-metadata
ARTIFACTS := initramfs-factory.img
DEVICE_PACKAGES := kmod-mt76x2
endef
define Device/sercomm_cxx_dxx
$(Device/sercomm)
KERNEL_SIZE := 6144k

View File

@ -2,6 +2,7 @@
# MT7620A Profiles
#
include ./common-sercomm.mk
include ./common-tp-link.mk
DEVICE_VARS += DLINK_ROM_ID DLINK_FAMILY_MEMBER DLINK_FIRMWARE_SIZE DLINK_IMAGE_OFFSET
@ -1087,6 +1088,27 @@ define Device/ravpower_rp-wd03
endef
TARGET_DEVICES += ravpower_rp-wd03
define Device/rostelecom_rt-fl-1
$(Device/sercomm_cpj)
DEVICE_MODEL := RT-FL-1
DEVICE_ALT0_MODEL := RT-FL-1
ARTIFACT/initramfs-factory.img := \
append-image-stage initramfs-kernel.bin | check-size | \
sercomm-factory-cpj | gzip | sercomm-payload | \
sercomm-pid-setbit 0x11 | sercomm-crypto
endef
TARGET_DEVICES += rostelecom_rt-fl-1
define Device/rostelecom_s1010
$(Device/sercomm_cpj)
DEVICE_MODEL := S1010
DEVICE_ALT0_MODEL := S1010.RT
ARTIFACT/initramfs-factory.img := \
append-image-stage initramfs-kernel.bin | check-size | \
sercomm-factory-cpj | gzip | sercomm-payload | sercomm-crypto
endef
TARGET_DEVICES += rostelecom_s1010
define Device/sanlinking_d240
SOC := mt7620a
IMAGE_SIZE := 16064k

View File

@ -2537,7 +2537,7 @@ define Device/wifire_s1500-nbn
IMAGE_SIZE := 51200k
IMAGE/factory.img := append-kernel | sercomm-kernel-factory | \
sercomm-reset-slot1-chksum | append-ubi | check-size | \
sercomm-factory-cqr | sercomm-fix-buc-pid | sercomm-mkhash | \
sercomm-factory-cqr | sercomm-pid-setbit 0x13 | sercomm-mkhash | \
sercomm-crypto
SERCOMM_HWID := BUC
SERCOMM_HWVER := 10000

View File

@ -202,6 +202,14 @@ zbtlink,zbt-we826-e)
ravpower,rp-wd03)
ucidef_set_led_netdev "internet" "internet" "green:wifi" "eth0"
;;
rostelecom,rt-fl-1|\
rostelecom,s1010)
ucidef_set_led_switch "lan-1" "lan-1" "green:lan-1" "switch0" "0x02"
ucidef_set_led_switch "lan-2" "lan-2" "green:lan-2" "switch0" "0x04"
ucidef_set_led_switch "lan-3" "lan-3" "green:lan-3" "switch0" "0x08"
ucidef_set_led_switch "lan-4" "lan-4" "green:lan-4" "switch0" "0x10"
ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x01"
;;
tplink,archer-c2-v1)
ucidef_set_led_switch "lan" "lan" "green:lan" "switch1" "0x1e"
ucidef_set_led_switch "wan" "wan" "green:wan" "switch1" "0x01"

View File

@ -119,6 +119,8 @@ ramips_setup_interfaces()
netgear,jwnr2010-v5|\
phicomm,k2-v22.4|\
phicomm,k2-v22.5|\
rostelecom,rt-fl-1|\
rostelecom,s1010|\
trendnet,tew-810dr|\
zbtlink,zbt-we2026)
ucidef_add_switch "switch0" \
@ -387,6 +389,11 @@ ramips_setup_macs()
linksys,e1700)
wan_mac=$(mtd_get_mac_ascii config WAN_MAC_ADDR)
;;
rostelecom,rt-fl-1|\
rostelecom,s1010)
label_mac=$(mtd_get_mac_binary "SC Nvram(permanent data)" 0x0)
wan_mac=$(macaddr_add "$label_mac" 10)
;;
snr,cpe-w4n-mt)
lan_mac=$(mtd_get_mac_binary Factory 0x28)
wan_mac=$(mtd_get_mac_binary Factory 0x2e)
@ -407,7 +414,7 @@ ramips_setup_macs()
label_mac=$(mtd_get_mac_binary factory 0x4)
;;
zyxel,keenetic-lite-iii-a)
lan_mac=$(mtd_get_mac_binary RF-EEPROM 0x4)
lan_mac=$(mtd_get_mac_binary RF-EEPROM 0x4)
wan_mac=$(mtd_get_mac_binary RF-EEPROM 0x28)
label_mac=$wan_mac
;;

View File

@ -30,6 +30,14 @@ platform_do_upgrade() {
}
default_do_upgrade "$1"
;;
rostelecom,rt-fl-1|\
rostelecom,s1010)
idx="$(find_mtd_index ftd_and_bootflag)"
[ -n "$idx" ] && \
printf 0 | dd bs=1 seek=$((0x18007)) count=1 \
of=/dev/mtdblock$idx
default_do_upgrade "$1"
;;
*)
default_do_upgrade "$1"
;;

View File

@ -1,47 +0,0 @@
From 859bd2e0c0052967536f3f902716f204d5a978b1 Mon Sep 17 00:00:00 2001
From: Jonas Gorski <jonas.gorski@gmail.com>
Date: Fri, 8 Sep 2023 22:48:33 +0200
Subject: [PATCH] hwrng: geode: fix accessing registers
When the membase and pci_dev pointer were moved to a new struct in priv,
the actual membase users were left untouched, and they started reading
out arbitrary memory behind the struct instead of registers. This
unfortunately turned the RNG into a constant number generator, depending
on the content of what was at that offset.
To fix this, update geode_rng_data_{read,present}() to also get the
membase via amd_geode_priv, and properly read from the right addresses
again.
Fixes: 9f6ec8dc574e ("hwrng: geode - Fix PCI device refcount leak")
Reported-by: Timur I. Davletshin <timur.davletshin@gmail.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217882
Tested-by: Timur I. Davletshin <timur.davletshin@gmail.com>
Suggested-by: Jo-Philipp Wich <jo@mein.io>
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
---
drivers/char/hw_random/geode-rng.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/drivers/char/hw_random/geode-rng.c
+++ b/drivers/char/hw_random/geode-rng.c
@@ -58,7 +58,8 @@ struct amd_geode_priv {
static int geode_rng_data_read(struct hwrng *rng, u32 *data)
{
- void __iomem *mem = (void __iomem *)rng->priv;
+ struct amd_geode_priv *priv = (struct amd_geode_priv *)rng->priv;
+ void __iomem *mem = priv->membase;
*data = readl(mem + GEODE_RNG_DATA_REG);
@@ -67,7 +68,8 @@ static int geode_rng_data_read(struct hw
static int geode_rng_data_present(struct hwrng *rng, int wait)
{
- void __iomem *mem = (void __iomem *)rng->priv;
+ struct amd_geode_priv *priv = (struct amd_geode_priv *)rng->priv;
+ void __iomem *mem = priv->membase;
int data, i;
for (i = 0; i < 20; i++) {