From 1d364cc9ffb6840dfa869f31e8961bec7b97d76e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Tue, 12 Dec 2023 12:02:31 +0100 Subject: [PATCH 01/23] kernel: backport upstream nvmem fix for "fixed-layout" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It replaces a pretty much identical downstream patch. Signed-off-by: Rafał Miłecki --- ...ect-fixed-layouts-to-grab-a-layout-d.patch | 45 +++++++++++++++++++ ...ect-fixed-layouts-to-grab-a-layout-d.patch | 45 +++++++++++++++++++ ...support-for-fixed-cells-NVMEM-layout.patch | 40 ----------------- ...support-for-fixed-cells-NVMEM-layout.patch | 40 ----------------- 4 files changed, 90 insertions(+), 80 deletions(-) create mode 100644 target/linux/generic/backport-5.15/820-v6.7-0005-nvmem-Do-not-expect-fixed-layouts-to-grab-a-layout-d.patch create mode 100644 target/linux/generic/backport-6.1/816-v6.7-0005-nvmem-Do-not-expect-fixed-layouts-to-grab-a-layout-d.patch delete mode 100644 target/linux/generic/pending-5.15/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch delete mode 100644 target/linux/generic/pending-6.1/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch diff --git a/target/linux/generic/backport-5.15/820-v6.7-0005-nvmem-Do-not-expect-fixed-layouts-to-grab-a-layout-d.patch b/target/linux/generic/backport-5.15/820-v6.7-0005-nvmem-Do-not-expect-fixed-layouts-to-grab-a-layout-d.patch new file mode 100644 index 0000000000..bd5ceaabf7 --- /dev/null +++ b/target/linux/generic/backport-5.15/820-v6.7-0005-nvmem-Do-not-expect-fixed-layouts-to-grab-a-layout-d.patch @@ -0,0 +1,45 @@ +From b7c1e53751cb3990153084f31c41f25fde3b629c Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Fri, 24 Nov 2023 20:38:14 +0100 +Subject: [PATCH] nvmem: Do not expect fixed layouts to grab a layout driver +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Two series lived in parallel for some time, which led to this situation: +- The nvmem-layout container is used for dynamic layouts +- We now expect fixed layouts to also use the nvmem-layout container but +this does not require any additional driver, the support is built-in the +nvmem core. + +Ensure we don't refuse to probe for wrong reasons. + +Fixes: 27f699e578b1 ("nvmem: core: add support for fixed cells *layout*") +Cc: stable@vger.kernel.org +Reported-by: Luca Ceresoli +Signed-off-by: Miquel Raynal +Tested-by: Rafał Miłecki +Tested-by: Luca Ceresoli +Reviewed-by: Luca Ceresoli + +Link: https://lore.kernel.org/r/20231124193814.360552-1-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/nvmem/core.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/nvmem/core.c ++++ b/drivers/nvmem/core.c +@@ -797,6 +797,12 @@ static struct nvmem_layout *nvmem_layout + if (!layout_np) + return NULL; + ++ /* Fixed layouts don't have a matching driver */ ++ if (of_device_is_compatible(layout_np, "fixed-layout")) { ++ of_node_put(layout_np); ++ return NULL; ++ } ++ + /* + * In case the nvmem device was built-in while the layout was built as a + * module, we shall manually request the layout driver loading otherwise diff --git a/target/linux/generic/backport-6.1/816-v6.7-0005-nvmem-Do-not-expect-fixed-layouts-to-grab-a-layout-d.patch b/target/linux/generic/backport-6.1/816-v6.7-0005-nvmem-Do-not-expect-fixed-layouts-to-grab-a-layout-d.patch new file mode 100644 index 0000000000..bd5ceaabf7 --- /dev/null +++ b/target/linux/generic/backport-6.1/816-v6.7-0005-nvmem-Do-not-expect-fixed-layouts-to-grab-a-layout-d.patch @@ -0,0 +1,45 @@ +From b7c1e53751cb3990153084f31c41f25fde3b629c Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Fri, 24 Nov 2023 20:38:14 +0100 +Subject: [PATCH] nvmem: Do not expect fixed layouts to grab a layout driver +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Two series lived in parallel for some time, which led to this situation: +- The nvmem-layout container is used for dynamic layouts +- We now expect fixed layouts to also use the nvmem-layout container but +this does not require any additional driver, the support is built-in the +nvmem core. + +Ensure we don't refuse to probe for wrong reasons. + +Fixes: 27f699e578b1 ("nvmem: core: add support for fixed cells *layout*") +Cc: stable@vger.kernel.org +Reported-by: Luca Ceresoli +Signed-off-by: Miquel Raynal +Tested-by: Rafał Miłecki +Tested-by: Luca Ceresoli +Reviewed-by: Luca Ceresoli + +Link: https://lore.kernel.org/r/20231124193814.360552-1-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/nvmem/core.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/nvmem/core.c ++++ b/drivers/nvmem/core.c +@@ -797,6 +797,12 @@ static struct nvmem_layout *nvmem_layout + if (!layout_np) + return NULL; + ++ /* Fixed layouts don't have a matching driver */ ++ if (of_device_is_compatible(layout_np, "fixed-layout")) { ++ of_node_put(layout_np); ++ return NULL; ++ } ++ + /* + * In case the nvmem device was built-in while the layout was built as a + * module, we shall manually request the layout driver loading otherwise diff --git a/target/linux/generic/pending-5.15/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch b/target/linux/generic/pending-5.15/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch deleted file mode 100644 index f403bbec9b..0000000000 --- a/target/linux/generic/pending-5.15/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch +++ /dev/null @@ -1,40 +0,0 @@ -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Thu, 13 Jul 2023 17:30:59 +0200 -Subject: [PATCH] nvmem: core: fix support for fixed cells NVMEM layout -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Returning -EPROBE_DEFER for "fixed-layout" makes nvmem_register() always -fail (that layout is supported internally with no external module). That -makes callers (e.g. mtd_nvmem_add()) fail as well and prevents booting -on devices with "fixed-layout" in DT. - -Add a quick workaround for it. - -Fixes: 6468a6f45148 ("nvmem: core: handle the absence of expected layouts") -Signed-off-by: Rafał Miłecki ---- - ---- a/drivers/nvmem/core.c -+++ b/drivers/nvmem/core.c -@@ -798,6 +798,19 @@ static struct nvmem_layout *nvmem_layout - return NULL; - - /* -+ * We should return -EPROBE_DEFER only when layout driver is expected to -+ * become available later. Otherwise NVMEM will never probe successfully -+ * for unsupported layouts. There is no known solution for that right -+ * now. -+ * -+ * This problem also affects "fixed-layout". It's supported in NVMEM -+ * core code so there never will be layout for it. We shouldn't return -+ * -EPROBE_DEFER in such case. Add a quick workaround for that. -+ */ -+ if (of_device_is_compatible(layout_np, "fixed-layout")) -+ return NULL; -+ -+ /* - * In case the nvmem device was built-in while the layout was built as a - * module, we shall manually request the layout driver loading otherwise - * we'll never have any match. diff --git a/target/linux/generic/pending-6.1/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch b/target/linux/generic/pending-6.1/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch deleted file mode 100644 index f403bbec9b..0000000000 --- a/target/linux/generic/pending-6.1/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch +++ /dev/null @@ -1,40 +0,0 @@ -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Thu, 13 Jul 2023 17:30:59 +0200 -Subject: [PATCH] nvmem: core: fix support for fixed cells NVMEM layout -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Returning -EPROBE_DEFER for "fixed-layout" makes nvmem_register() always -fail (that layout is supported internally with no external module). That -makes callers (e.g. mtd_nvmem_add()) fail as well and prevents booting -on devices with "fixed-layout" in DT. - -Add a quick workaround for it. - -Fixes: 6468a6f45148 ("nvmem: core: handle the absence of expected layouts") -Signed-off-by: Rafał Miłecki ---- - ---- a/drivers/nvmem/core.c -+++ b/drivers/nvmem/core.c -@@ -798,6 +798,19 @@ static struct nvmem_layout *nvmem_layout - return NULL; - - /* -+ * We should return -EPROBE_DEFER only when layout driver is expected to -+ * become available later. Otherwise NVMEM will never probe successfully -+ * for unsupported layouts. There is no known solution for that right -+ * now. -+ * -+ * This problem also affects "fixed-layout". It's supported in NVMEM -+ * core code so there never will be layout for it. We shouldn't return -+ * -EPROBE_DEFER in such case. Add a quick workaround for that. -+ */ -+ if (of_device_is_compatible(layout_np, "fixed-layout")) -+ return NULL; -+ -+ /* - * In case the nvmem device was built-in while the layout was built as a - * module, we shall manually request the layout driver loading otherwise - * we'll never have any match. From 9380d9efa428ca5386718d18355b5b75c5bebc68 Mon Sep 17 00:00:00 2001 From: John Audia Date: Fri, 8 Dec 2023 07:08:03 -0500 Subject: [PATCH 02/23] kernel: bump 6.1 to 6.1.66 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.66 All patches automatically rebased. Build system: x86/64 Build-tested: x86/64/AMD Cezanne Run-tested: x86/64/AMD Cezanne Signed-off-by: John Audia --- include/kernel-6.1 | 4 ++-- ...a2-eth-don-t-use-ENOTSUPP-error-code.patch | 2 +- ...sorb-phylink_start-call-into-dpaa2_m.patch | 4 ++-- ...sign-priv-mac-after-dpaa2_mac_connec.patch | 6 ++--- ...nnect-to-MAC-before-requesting-the-e.patch | 4 ++-- ...rialize-changes-to-priv-mac-with-a-m.patch | 24 +++++++++---------- ...c-move-rtnl_lock-only-around-phylink.patch | 4 ++-- ...111-MMC-added-alternative-MMC-driver.patch | 8 +++---- ...is7xx-Don-t-spin-if-no-data-received.patch | 2 +- ...CS_HIGH-if-GPIO-descriptors-are-used.patch | 4 ++-- ...do-single-sector-reads-during-recove.patch | 2 +- ...-Add-support-for-dynamic-calibration.patch | 4 ++-- 12 files changed, 34 insertions(+), 34 deletions(-) diff --git a/include/kernel-6.1 b/include/kernel-6.1 index 6038c652a9..747079455a 100644 --- a/include/kernel-6.1 +++ b/include/kernel-6.1 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.1 = .65 -LINUX_KERNEL_HASH-6.1.65 = 407229936802a44b1e484c2e9ac3bbe53a65d825cc468ccdbd76281b491ab20a +LINUX_VERSION-6.1 = .66 +LINUX_KERNEL_HASH-6.1.66 = 419e62cd6c4239e6950b688db9e8753eb1e99c216dc3204f7932398a3fef1a0c diff --git a/target/linux/armsr/patches-6.1/701-v6.2-0001-net-dpaa2-eth-don-t-use-ENOTSUPP-error-code.patch b/target/linux/armsr/patches-6.1/701-v6.2-0001-net-dpaa2-eth-don-t-use-ENOTSUPP-error-code.patch index 6238c0a903..2c70b44f4b 100644 --- a/target/linux/armsr/patches-6.1/701-v6.2-0001-net-dpaa2-eth-don-t-use-ENOTSUPP-error-code.patch +++ b/target/linux/armsr/patches-6.1/701-v6.2-0001-net-dpaa2-eth-don-t-use-ENOTSUPP-error-code.patch @@ -22,7 +22,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c -@@ -3613,7 +3613,7 @@ static int dpaa2_eth_setup_dpni(struct f +@@ -3611,7 +3611,7 @@ static int dpaa2_eth_setup_dpni(struct f dev_err(dev, "DPNI version %u.%u not supported, need >= %u.%u\n", priv->dpni_ver_major, priv->dpni_ver_minor, DPNI_VER_MAJOR, DPNI_VER_MINOR); diff --git a/target/linux/armsr/patches-6.1/701-v6.2-0003-net-dpaa2-mac-absorb-phylink_start-call-into-dpaa2_m.patch b/target/linux/armsr/patches-6.1/701-v6.2-0003-net-dpaa2-mac-absorb-phylink_start-call-into-dpaa2_m.patch index e84195f3cd..c47598749c 100644 --- a/target/linux/armsr/patches-6.1/701-v6.2-0003-net-dpaa2-mac-absorb-phylink_start-call-into-dpaa2_m.patch +++ b/target/linux/armsr/patches-6.1/701-v6.2-0003-net-dpaa2-mac-absorb-phylink_start-call-into-dpaa2_m.patch @@ -21,7 +21,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c -@@ -2082,10 +2082,8 @@ static int dpaa2_eth_open(struct net_dev +@@ -2080,10 +2080,8 @@ static int dpaa2_eth_open(struct net_dev goto enable_err; } @@ -33,7 +33,7 @@ Signed-off-by: Paolo Abeni return 0; -@@ -2159,7 +2157,6 @@ static int dpaa2_eth_stop(struct net_dev +@@ -2157,7 +2155,6 @@ static int dpaa2_eth_stop(struct net_dev int retries = 10; if (dpaa2_eth_is_type_phy(priv)) { diff --git a/target/linux/armsr/patches-6.1/701-v6.2-0005-net-dpaa2-eth-assign-priv-mac-after-dpaa2_mac_connec.patch b/target/linux/armsr/patches-6.1/701-v6.2-0005-net-dpaa2-eth-assign-priv-mac-after-dpaa2_mac_connec.patch index 8c7ed6c793..45f07decc9 100644 --- a/target/linux/armsr/patches-6.1/701-v6.2-0005-net-dpaa2-eth-assign-priv-mac-after-dpaa2_mac_connec.patch +++ b/target/linux/armsr/patches-6.1/701-v6.2-0005-net-dpaa2-eth-assign-priv-mac-after-dpaa2_mac_connec.patch @@ -49,7 +49,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c -@@ -4443,9 +4443,8 @@ static int dpaa2_eth_connect_mac(struct +@@ -4441,9 +4441,8 @@ static int dpaa2_eth_connect_mac(struct err = dpaa2_mac_open(mac); if (err) goto err_free_mac; @@ -60,7 +60,7 @@ Signed-off-by: Paolo Abeni err = dpaa2_mac_connect(mac); if (err && err != -EPROBE_DEFER) netdev_err(priv->net_dev, "Error connecting to the MAC endpoint: %pe", -@@ -4454,11 +4453,12 @@ static int dpaa2_eth_connect_mac(struct +@@ -4452,11 +4451,12 @@ static int dpaa2_eth_connect_mac(struct goto err_close_mac; } @@ -74,7 +74,7 @@ Signed-off-by: Paolo Abeni err_free_mac: kfree(mac); return err; -@@ -4466,15 +4466,18 @@ err_free_mac: +@@ -4464,15 +4464,18 @@ err_free_mac: static void dpaa2_eth_disconnect_mac(struct dpaa2_eth_priv *priv) { diff --git a/target/linux/armsr/patches-6.1/701-v6.2-0009-net-dpaa2-eth-connect-to-MAC-before-requesting-the-e.patch b/target/linux/armsr/patches-6.1/701-v6.2-0009-net-dpaa2-eth-connect-to-MAC-before-requesting-the-e.patch index 37831f264b..7c394c55db 100644 --- a/target/linux/armsr/patches-6.1/701-v6.2-0009-net-dpaa2-eth-connect-to-MAC-before-requesting-the-e.patch +++ b/target/linux/armsr/patches-6.1/701-v6.2-0009-net-dpaa2-eth-connect-to-MAC-before-requesting-the-e.patch @@ -33,7 +33,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c -@@ -4710,6 +4710,10 @@ static int dpaa2_eth_probe(struct fsl_mc +@@ -4708,6 +4708,10 @@ static int dpaa2_eth_probe(struct fsl_mc } #endif @@ -44,7 +44,7 @@ Signed-off-by: Paolo Abeni err = dpaa2_eth_setup_irqs(dpni_dev); if (err) { netdev_warn(net_dev, "Failed to set link interrupt, fall back to polling\n"); -@@ -4722,10 +4726,6 @@ static int dpaa2_eth_probe(struct fsl_mc +@@ -4720,10 +4724,6 @@ static int dpaa2_eth_probe(struct fsl_mc priv->do_link_poll = true; } diff --git a/target/linux/armsr/patches-6.1/701-v6.2-0010-net-dpaa2-eth-serialize-changes-to-priv-mac-with-a-m.patch b/target/linux/armsr/patches-6.1/701-v6.2-0010-net-dpaa2-eth-serialize-changes-to-priv-mac-with-a-m.patch index 89f58412d4..28ffe2288c 100644 --- a/target/linux/armsr/patches-6.1/701-v6.2-0010-net-dpaa2-eth-serialize-changes-to-priv-mac-with-a-m.patch +++ b/target/linux/armsr/patches-6.1/701-v6.2-0010-net-dpaa2-eth-serialize-changes-to-priv-mac-with-a-m.patch @@ -41,7 +41,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c -@@ -2020,8 +2020,11 @@ static int dpaa2_eth_link_state_update(s +@@ -2018,8 +2018,11 @@ static int dpaa2_eth_link_state_update(s /* When we manage the MAC/PHY using phylink there is no need * to manually update the netif_carrier. @@ -54,7 +54,7 @@ Signed-off-by: Paolo Abeni goto out; /* Chech link state; speed / duplex changes are not treated yet */ -@@ -2060,6 +2063,8 @@ static int dpaa2_eth_open(struct net_dev +@@ -2058,6 +2061,8 @@ static int dpaa2_eth_open(struct net_dev priv->dpbp_dev->obj_desc.id, priv->bpid); } @@ -63,7 +63,7 @@ Signed-off-by: Paolo Abeni if (!dpaa2_eth_is_type_phy(priv)) { /* We'll only start the txqs when the link is actually ready; * make sure we don't race against the link up notification, -@@ -2078,6 +2083,7 @@ static int dpaa2_eth_open(struct net_dev +@@ -2076,6 +2081,7 @@ static int dpaa2_eth_open(struct net_dev err = dpni_enable(priv->mc_io, 0, priv->mc_token); if (err < 0) { @@ -71,7 +71,7 @@ Signed-off-by: Paolo Abeni netdev_err(net_dev, "dpni_enable() failed\n"); goto enable_err; } -@@ -2085,6 +2091,8 @@ static int dpaa2_eth_open(struct net_dev +@@ -2083,6 +2089,8 @@ static int dpaa2_eth_open(struct net_dev if (dpaa2_eth_is_type_phy(priv)) dpaa2_mac_start(priv->mac); @@ -80,7 +80,7 @@ Signed-off-by: Paolo Abeni return 0; enable_err: -@@ -2156,6 +2164,8 @@ static int dpaa2_eth_stop(struct net_dev +@@ -2154,6 +2162,8 @@ static int dpaa2_eth_stop(struct net_dev int dpni_enabled = 0; int retries = 10; @@ -89,7 +89,7 @@ Signed-off-by: Paolo Abeni if (dpaa2_eth_is_type_phy(priv)) { dpaa2_mac_stop(priv->mac); } else { -@@ -2163,6 +2173,8 @@ static int dpaa2_eth_stop(struct net_dev +@@ -2161,6 +2171,8 @@ static int dpaa2_eth_stop(struct net_dev netif_carrier_off(net_dev); } @@ -98,7 +98,7 @@ Signed-off-by: Paolo Abeni /* On dpni_disable(), the MC firmware will: * - stop MAC Rx and wait for all Rx frames to be enqueued to software * - cut off WRIOP dequeues from egress FQs and wait until transmission -@@ -2488,12 +2500,20 @@ static int dpaa2_eth_ts_ioctl(struct net +@@ -2486,12 +2498,20 @@ static int dpaa2_eth_ts_ioctl(struct net static int dpaa2_eth_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) { struct dpaa2_eth_priv *priv = netdev_priv(dev); @@ -121,7 +121,7 @@ Signed-off-by: Paolo Abeni return -EOPNOTSUPP; } -@@ -4453,7 +4473,9 @@ static int dpaa2_eth_connect_mac(struct +@@ -4451,7 +4471,9 @@ static int dpaa2_eth_connect_mac(struct goto err_close_mac; } @@ -131,7 +131,7 @@ Signed-off-by: Paolo Abeni return 0; -@@ -4466,9 +4488,12 @@ err_free_mac: +@@ -4464,9 +4486,12 @@ err_free_mac: static void dpaa2_eth_disconnect_mac(struct dpaa2_eth_priv *priv) { @@ -145,7 +145,7 @@ Signed-off-by: Paolo Abeni if (!mac) return; -@@ -4487,6 +4512,7 @@ static irqreturn_t dpni_irq0_handler_thr +@@ -4485,6 +4510,7 @@ static irqreturn_t dpni_irq0_handler_thr struct fsl_mc_device *dpni_dev = to_fsl_mc_device(dev); struct net_device *net_dev = dev_get_drvdata(dev); struct dpaa2_eth_priv *priv = netdev_priv(net_dev); @@ -153,7 +153,7 @@ Signed-off-by: Paolo Abeni int err; err = dpni_get_irq_status(dpni_dev->mc_io, 0, dpni_dev->mc_handle, -@@ -4504,7 +4530,12 @@ static irqreturn_t dpni_irq0_handler_thr +@@ -4502,7 +4528,12 @@ static irqreturn_t dpni_irq0_handler_thr dpaa2_eth_update_tx_fqids(priv); rtnl_lock(); @@ -167,7 +167,7 @@ Signed-off-by: Paolo Abeni dpaa2_eth_disconnect_mac(priv); else dpaa2_eth_connect_mac(priv); -@@ -4605,6 +4636,8 @@ static int dpaa2_eth_probe(struct fsl_mc +@@ -4603,6 +4634,8 @@ static int dpaa2_eth_probe(struct fsl_mc priv = netdev_priv(net_dev); priv->net_dev = net_dev; diff --git a/target/linux/armsr/patches-6.1/701-v6.2-0012-net-dpaa2-mac-move-rtnl_lock-only-around-phylink.patch b/target/linux/armsr/patches-6.1/701-v6.2-0012-net-dpaa2-mac-move-rtnl_lock-only-around-phylink.patch index 976c2a0335..a4ad00ef4d 100644 --- a/target/linux/armsr/patches-6.1/701-v6.2-0012-net-dpaa2-mac-move-rtnl_lock-only-around-phylink.patch +++ b/target/linux/armsr/patches-6.1/701-v6.2-0012-net-dpaa2-mac-move-rtnl_lock-only-around-phylink.patch @@ -34,7 +34,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c -@@ -4529,7 +4529,6 @@ static irqreturn_t dpni_irq0_handler_thr +@@ -4527,7 +4527,6 @@ static irqreturn_t dpni_irq0_handler_thr dpaa2_eth_set_mac_addr(netdev_priv(net_dev)); dpaa2_eth_update_tx_fqids(priv); @@ -42,7 +42,7 @@ Signed-off-by: Paolo Abeni /* We can avoid locking because the "endpoint changed" IRQ * handler is the only one who changes priv->mac at runtime, * so we are not racing with anyone. -@@ -4539,7 +4538,6 @@ static irqreturn_t dpni_irq0_handler_thr +@@ -4537,7 +4536,6 @@ static irqreturn_t dpni_irq0_handler_thr dpaa2_eth_disconnect_mac(priv); else dpaa2_eth_connect_mac(priv); diff --git a/target/linux/bcm27xx/patches-6.1/950-0111-MMC-added-alternative-MMC-driver.patch b/target/linux/bcm27xx/patches-6.1/950-0111-MMC-added-alternative-MMC-driver.patch index b7940da9e4..a74b2cd62f 100644 --- a/target/linux/bcm27xx/patches-6.1/950-0111-MMC-added-alternative-MMC-driver.patch +++ b/target/linux/bcm27xx/patches-6.1/950-0111-MMC-added-alternative-MMC-driver.patch @@ -266,7 +266,7 @@ Signed-off-by: Phil Elwell static inline int mmc_blk_part_switch(struct mmc_card *card, unsigned int part_type); static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, -@@ -2996,6 +3003,8 @@ static int mmc_blk_probe(struct mmc_card +@@ -2998,6 +3005,8 @@ static int mmc_blk_probe(struct mmc_card { struct mmc_blk_data *md; int ret = 0; @@ -275,7 +275,7 @@ Signed-off-by: Phil Elwell /* * Check that the card supports the command class(es) we need. -@@ -3003,7 +3012,16 @@ static int mmc_blk_probe(struct mmc_card +@@ -3005,7 +3014,16 @@ static int mmc_blk_probe(struct mmc_card if (!(card->csd.cmdclass & CCC_BLOCK_READ)) return -ENODEV; @@ -293,7 +293,7 @@ Signed-off-by: Phil Elwell card->complete_wq = alloc_workqueue("mmc_complete", WQ_MEM_RECLAIM | WQ_HIGHPRI, 0); -@@ -3018,6 +3036,17 @@ static int mmc_blk_probe(struct mmc_card +@@ -3020,6 +3038,17 @@ static int mmc_blk_probe(struct mmc_card goto out_free; } @@ -313,7 +313,7 @@ Signed-off-by: Phil Elwell goto out; --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c -@@ -1814,7 +1814,8 @@ EXPORT_SYMBOL(mmc_erase); +@@ -1819,7 +1819,8 @@ EXPORT_SYMBOL(mmc_erase); int mmc_can_erase(struct mmc_card *card) { diff --git a/target/linux/bcm27xx/patches-6.1/950-0146-sc16is7xx-Don-t-spin-if-no-data-received.patch b/target/linux/bcm27xx/patches-6.1/950-0146-sc16is7xx-Don-t-spin-if-no-data-received.patch index 4c2741eb25..e4e4909510 100644 --- a/target/linux/bcm27xx/patches-6.1/950-0146-sc16is7xx-Don-t-spin-if-no-data-received.patch +++ b/target/linux/bcm27xx/patches-6.1/950-0146-sc16is7xx-Don-t-spin-if-no-data-received.patch @@ -12,7 +12,7 @@ Signed-off-by: Phil Elwell --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c -@@ -770,6 +770,8 @@ static bool sc16is7xx_port_irq(struct sc +@@ -771,6 +771,8 @@ static bool sc16is7xx_port_irq(struct sc rxlen = sc16is7xx_port_read(port, SC16IS7XX_RXLVL_REG); if (rxlen) sc16is7xx_handle_rx(port, rxlen, iir); diff --git a/target/linux/bcm27xx/patches-6.1/950-0227-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch b/target/linux/bcm27xx/patches-6.1/950-0227-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch index 923c0dc3fc..dfbea6258f 100644 --- a/target/linux/bcm27xx/patches-6.1/950-0227-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch +++ b/target/linux/bcm27xx/patches-6.1/950-0227-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch @@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -3614,6 +3614,7 @@ static int __spi_validate_bits_per_word( +@@ -3633,6 +3633,7 @@ static int __spi_validate_bits_per_word( */ int spi_setup(struct spi_device *spi) { @@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell unsigned bad_bits, ugly_bits; int status = 0; -@@ -3634,6 +3635,14 @@ int spi_setup(struct spi_device *spi) +@@ -3653,6 +3654,14 @@ int spi_setup(struct spi_device *spi) (SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL | SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL))) return -EINVAL; diff --git a/target/linux/bcm27xx/patches-6.1/950-0418-mmc-block-Don-t-do-single-sector-reads-during-recove.patch b/target/linux/bcm27xx/patches-6.1/950-0418-mmc-block-Don-t-do-single-sector-reads-during-recove.patch index 6b486eb7ee..de9378f79a 100644 --- a/target/linux/bcm27xx/patches-6.1/950-0418-mmc-block-Don-t-do-single-sector-reads-during-recove.patch +++ b/target/linux/bcm27xx/patches-6.1/950-0418-mmc-block-Don-t-do-single-sector-reads-during-recove.patch @@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c -@@ -1926,7 +1926,7 @@ static void mmc_blk_mq_rw_recovery(struc +@@ -1928,7 +1928,7 @@ static void mmc_blk_mq_rw_recovery(struc return; } diff --git a/target/linux/mediatek/patches-6.1/432-drivers-spi-Add-support-for-dynamic-calibration.patch b/target/linux/mediatek/patches-6.1/432-drivers-spi-Add-support-for-dynamic-calibration.patch index 280993e5db..4f9ad9acef 100644 --- a/target/linux/mediatek/patches-6.1/432-drivers-spi-Add-support-for-dynamic-calibration.patch +++ b/target/linux/mediatek/patches-6.1/432-drivers-spi-Add-support-for-dynamic-calibration.patch @@ -212,7 +212,7 @@ Signed-off-by: SkyLake.Huang static inline struct spi_driver *to_spi_driver(struct device_driver *drv) { return drv ? container_of(drv, struct spi_driver, driver) : NULL; -@@ -682,6 +716,11 @@ struct spi_controller { +@@ -683,6 +717,11 @@ struct spi_controller { void *dummy_rx; void *dummy_tx; @@ -224,7 +224,7 @@ Signed-off-by: SkyLake.Huang int (*fw_translate_cs)(struct spi_controller *ctlr, unsigned cs); /* -@@ -1489,6 +1528,9 @@ spi_register_board_info(struct spi_board +@@ -1490,6 +1529,9 @@ spi_register_board_info(struct spi_board { return 0; } #endif From 78a6cf13e055c5729dcb8d1a7e1f2e9ab9604db1 Mon Sep 17 00:00:00 2001 From: John Audia Date: Mon, 11 Dec 2023 06:22:35 -0500 Subject: [PATCH 03/23] kernel: bump 6.1 to 6.1.67 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.67 NO patches affected. Build system: x86/64 Build-tested: x86/64/AMD Cezanne Run-tested: x86/64/AMD Cezanne Signed-off-by: John Audia --- include/kernel-6.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/kernel-6.1 b/include/kernel-6.1 index 747079455a..ef5b2b0b6e 100644 --- a/include/kernel-6.1 +++ b/include/kernel-6.1 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.1 = .66 -LINUX_KERNEL_HASH-6.1.66 = 419e62cd6c4239e6950b688db9e8753eb1e99c216dc3204f7932398a3fef1a0c +LINUX_VERSION-6.1 = .67 +LINUX_KERNEL_HASH-6.1.67 = 7537db7289ca4854a126bc1237c47c5b21784bcbf27b4e571d389e3528c59285 From 62ff11576d096473bf8a9d03964009987c8f8a21 Mon Sep 17 00:00:00 2001 From: Nick Hainke Date: Mon, 11 Dec 2023 16:48:47 +0100 Subject: [PATCH 04/23] ethtool: update to 6.6 Release Notes: https://lore.kernel.org/netdev/20231123220625.q427zyjaogdmlf6d@lion.mk-sys.cz/T/ Signed-off-by: Nick Hainke --- package/network/utils/ethtool/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/network/utils/ethtool/Makefile b/package/network/utils/ethtool/Makefile index 92ee2103c9..bc2b13e423 100644 --- a/package/network/utils/ethtool/Makefile +++ b/package/network/utils/ethtool/Makefile @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ethtool -PKG_VERSION:=6.5 +PKG_VERSION:=6.6 PKG_RELEASE:=1 PKG_MAINTAINER:=Felix Fietkau PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/software/network/ethtool -PKG_HASH:=814171ea4b8026b081c0741dbbf32e6968311483ecf64711232faec2ac70a14c +PKG_HASH:=833a8493cb9cd5809ab59743092d9a38742c282290800e9626407511bbcebf9e PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING From 9a323b50e60673bea6b92b5952a83d80da641c45 Mon Sep 17 00:00:00 2001 From: Christian Svensson Date: Mon, 20 Nov 2023 21:35:26 +0100 Subject: [PATCH 05/23] octeon: upgrade to 6.1 kernel The kernel patches apply with only minor changes. The only other notable change is that octeon-usb has moved from staging and had its config macro renamed from CONFIG_OCTEON_USB to CONFIG_USB_OCTEON_HCD. Signed-off-by: Christian Svensson --- target/linux/octeon/Makefile | 2 +- .../linux/octeon/{config-5.15 => config-6.1} | 26 +++++++++++++++---- .../100-mips_image_cmdline_hack.patch | 2 +- .../100-ubnt_edgerouter2_support.patch | 0 .../110-er200-ethernet_probe_order.patch | 0 .../120-cmdline-hack.patch | 4 +-- .../130-add_itus_support.patch | 4 +-- .../150-ubnt_usg_support.patch | 4 +-- .../700-allocate_interface_by_label.patch | 2 +- ...-honor_sgmii_node_device_tree_status.patch | 0 10 files changed, 30 insertions(+), 14 deletions(-) rename target/linux/octeon/{config-5.15 => config-6.1} (90%) rename target/linux/octeon/{patches-5.15 => patches-6.1}/100-mips_image_cmdline_hack.patch (95%) rename target/linux/octeon/{patches-5.15 => patches-6.1}/100-ubnt_edgerouter2_support.patch (100%) rename target/linux/octeon/{patches-5.15 => patches-6.1}/110-er200-ethernet_probe_order.patch (100%) rename target/linux/octeon/{patches-5.15 => patches-6.1}/120-cmdline-hack.patch (90%) rename target/linux/octeon/{patches-5.15 => patches-6.1}/130-add_itus_support.patch (94%) rename target/linux/octeon/{patches-5.15 => patches-6.1}/150-ubnt_usg_support.patch (93%) rename target/linux/octeon/{patches-5.15 => patches-6.1}/700-allocate_interface_by_label.patch (94%) rename target/linux/octeon/{patches-5.15 => patches-6.1}/701-honor_sgmii_node_device_tree_status.patch (100%) diff --git a/target/linux/octeon/Makefile b/target/linux/octeon/Makefile index 4b5c4c07c1..fa3da97579 100644 --- a/target/linux/octeon/Makefile +++ b/target/linux/octeon/Makefile @@ -10,7 +10,7 @@ BOARDNAME:=Cavium Networks Octeon FEATURES:=squashfs ramdisk pci usb CPU_TYPE:=octeonplus -KERNEL_PATCHVER:=5.15 +KERNEL_PATCHVER:=6.1 define Target/Description Build firmware images for Cavium Networks Octeon-based boards. diff --git a/target/linux/octeon/config-5.15 b/target/linux/octeon/config-6.1 similarity index 90% rename from target/linux/octeon/config-5.15 rename to target/linux/octeon/config-6.1 index 2350e45295..af5cdf4852 100644 --- a/target/linux/octeon/config-5.15 +++ b/target/linux/octeon/config-6.1 @@ -23,10 +23,16 @@ CONFIG_CAVIUM_OCTEON_LOCK_L2_LOW_LEVEL_INTERRUPT=y CONFIG_CAVIUM_OCTEON_LOCK_L2_MEMCPY=y CONFIG_CAVIUM_OCTEON_LOCK_L2_TLB=y CONFIG_CAVIUM_OCTEON_SOC=y +CONFIG_CAVIUM_RESERVE32=0 +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_CEVT_R4K=y CONFIG_CLONE_BACKWARDS=y # CONFIG_COMMON_CLK is not set +CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 CONFIG_COMPAT_32BIT_TIME=y +CONFIG_CONTEXT_TRACKING=y +CONFIG_CONTEXT_TRACKING_IDLE=y CONFIG_CPU_BIG_ENDIAN=y CONFIG_CPU_CAVIUM_OCTEON=y CONFIG_CPU_GENERIC_DUMP_TLB=y @@ -48,11 +54,16 @@ CONFIG_CRYPTO_CRC32=y CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2 +CONFIG_CRYPTO_LIB_SHA1=y +CONFIG_CRYPTO_LIB_UTILS=y # CONFIG_CRYPTO_MD5_OCTEON is not set CONFIG_CRYPTO_RNG2=y # CONFIG_CRYPTO_SHA1_OCTEON is not set # CONFIG_CRYPTO_SHA256_OCTEON is not set # CONFIG_CRYPTO_SHA512_OCTEON is not set +# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set +CONFIG_DEBUG_INFO_NONE=y +CONFIG_DEPRECATED_IRQ_CPU_ONOFFLINE=y CONFIG_DNOTIFY=y CONFIG_DTC=y CONFIG_EARLY_PRINTK=y @@ -66,6 +77,7 @@ CONFIG_EDAC_OCTEON_PC=y CONFIG_EDAC_OCTEON_PCI=y CONFIG_EDAC_SUPPORT=y CONFIG_EEPROM_AT24=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y CONFIG_EXT4_FS=y CONFIG_F2FS_FS=y CONFIG_FAT_FS=y @@ -74,11 +86,12 @@ CONFIG_FS_IOMAP=y CONFIG_FS_MBCACHE=y CONFIG_FWNODE_MDIO=y CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_FW_LOADER_SYSFS=y +CONFIG_GCC11_NO_ARRAY_BOUNDS=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_GENERIC_CPU_AUTOPROBE=y -CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_GETTIMEOFDAY=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_IRQ_SHOW=y @@ -94,7 +107,6 @@ CONFIG_GLOB=y CONFIG_GPIO_CDEV=y CONFIG_GPIO_OCTEON=y CONFIG_GRO_CELLS=y -CONFIG_HANDLE_DOMAIN_IRQ=y CONFIG_HARDWARE_WATCHPOINTS=y CONFIG_HAS_DMA=y CONFIG_HAS_IOMEM=y @@ -125,7 +137,6 @@ CONFIG_MIPS=y CONFIG_MIPS_ASID_BITS=8 CONFIG_MIPS_ASID_SHIFT=0 CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y -CONFIG_MIPS_EBPF_JIT=y CONFIG_MIPS_ELF_APPENDED_DTB=y CONFIG_MIPS_FP_SUPPORT=y CONFIG_MIPS_L1_CACHE_SHIFT=7 @@ -163,7 +174,6 @@ CONFIG_NVMEM_SYSFS=y CONFIG_OCTEON_ETHERNET=y CONFIG_OCTEON_ILM=y CONFIG_OCTEON_MGMT_ETHERNET=y -CONFIG_OCTEON_USB=y CONFIG_OCTEON_WDT=y CONFIG_OF=y CONFIG_OF_ADDRESS=y @@ -174,6 +184,9 @@ CONFIG_OF_IRQ=y CONFIG_OF_KOBJ=y CONFIG_OF_MDIO=y CONFIG_PADATA=y +CONFIG_PAGE_POOL=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y # CONFIG_PARTITION_ADVANCED is not set CONFIG_PATA_OCTEON_CF=y CONFIG_PATA_TIMINGS=y @@ -189,9 +202,11 @@ CONFIG_PHYLINK=y CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_PREEMPT_NONE_BUILD=y CONFIG_PTP_1588_CLOCK_OPTIONAL=y CONFIG_QUEUED_RWLOCKS=y CONFIG_QUEUED_SPINLOCKS=y +CONFIG_RANDSTRUCT_NONE=y CONFIG_RAS=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y @@ -211,7 +226,7 @@ CONFIG_SG_POOL=y CONFIG_SMP=y CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_SPARSEMEM=y -CONFIG_SPARSEMEM_STATIC=y +CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPI=y CONFIG_SPI_MASTER=y CONFIG_SPI_MEM=y @@ -239,6 +254,7 @@ CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_HCD_PLATFORM=y # CONFIG_USB_OCTEON_EHCI is not set +CONFIG_USB_OCTEON_HCD=y # CONFIG_USB_OCTEON_OHCI is not set CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y CONFIG_USB_OHCI_HCD=y diff --git a/target/linux/octeon/patches-5.15/100-mips_image_cmdline_hack.patch b/target/linux/octeon/patches-6.1/100-mips_image_cmdline_hack.patch similarity index 95% rename from target/linux/octeon/patches-5.15/100-mips_image_cmdline_hack.patch rename to target/linux/octeon/patches-6.1/100-mips_image_cmdline_hack.patch index 785fc1273c..08f30c5e03 100644 --- a/target/linux/octeon/patches-5.15/100-mips_image_cmdline_hack.patch +++ b/target/linux/octeon/patches-6.1/100-mips_image_cmdline_hack.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -1182,6 +1182,10 @@ config MIPS_MSC +@@ -1114,6 +1114,10 @@ config MIPS_MSC config SYNC_R4K bool diff --git a/target/linux/octeon/patches-5.15/100-ubnt_edgerouter2_support.patch b/target/linux/octeon/patches-6.1/100-ubnt_edgerouter2_support.patch similarity index 100% rename from target/linux/octeon/patches-5.15/100-ubnt_edgerouter2_support.patch rename to target/linux/octeon/patches-6.1/100-ubnt_edgerouter2_support.patch diff --git a/target/linux/octeon/patches-5.15/110-er200-ethernet_probe_order.patch b/target/linux/octeon/patches-6.1/110-er200-ethernet_probe_order.patch similarity index 100% rename from target/linux/octeon/patches-5.15/110-er200-ethernet_probe_order.patch rename to target/linux/octeon/patches-6.1/110-er200-ethernet_probe_order.patch diff --git a/target/linux/octeon/patches-5.15/120-cmdline-hack.patch b/target/linux/octeon/patches-6.1/120-cmdline-hack.patch similarity index 90% rename from target/linux/octeon/patches-5.15/120-cmdline-hack.patch rename to target/linux/octeon/patches-6.1/120-cmdline-hack.patch index 7e9ed9d29b..e65cf78da4 100644 --- a/target/linux/octeon/patches-5.15/120-cmdline-hack.patch +++ b/target/linux/octeon/patches-6.1/120-cmdline-hack.patch @@ -1,6 +1,6 @@ --- a/arch/mips/cavium-octeon/setup.c +++ b/arch/mips/cavium-octeon/setup.c -@@ -650,6 +650,35 @@ void octeon_user_io_init(void) +@@ -653,6 +653,35 @@ void octeon_user_io_init(void) write_c0_derraddr1(0); } @@ -36,7 +36,7 @@ /** * prom_init - Early entry point for arch setup */ -@@ -873,6 +902,8 @@ void __init prom_init(void) +@@ -896,6 +925,8 @@ void __init prom_init(void) } } diff --git a/target/linux/octeon/patches-5.15/130-add_itus_support.patch b/target/linux/octeon/patches-6.1/130-add_itus_support.patch similarity index 94% rename from target/linux/octeon/patches-5.15/130-add_itus_support.patch rename to target/linux/octeon/patches-6.1/130-add_itus_support.patch index e51153096c..d76e8637ea 100644 --- a/target/linux/octeon/patches-5.15/130-add_itus_support.patch +++ b/target/linux/octeon/patches-6.1/130-add_itus_support.patch @@ -11,7 +11,7 @@ --- a/arch/mips/include/asm/octeon/cvmx-bootinfo.h +++ b/arch/mips/include/asm/octeon/cvmx-bootinfo.h -@@ -297,7 +297,7 @@ enum cvmx_board_types_enum { +@@ -298,7 +298,7 @@ enum cvmx_board_types_enum { CVMX_BOARD_TYPE_UBNT_E100 = 20002, CVMX_BOARD_TYPE_UBNT_E200 = 20003, CVMX_BOARD_TYPE_UBNT_E220 = 20005, @@ -20,7 +20,7 @@ CVMX_BOARD_TYPE_UBNT_E300 = 20300, CVMX_BOARD_TYPE_KONTRON_S1901 = 21901, CVMX_BOARD_TYPE_CUST_PRIVATE_MAX = 30000, -@@ -401,7 +401,7 @@ static inline const char *cvmx_board_typ +@@ -403,7 +403,7 @@ static inline const char *cvmx_board_typ ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E100) ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E200) ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E220) diff --git a/target/linux/octeon/patches-5.15/150-ubnt_usg_support.patch b/target/linux/octeon/patches-6.1/150-ubnt_usg_support.patch similarity index 93% rename from target/linux/octeon/patches-5.15/150-ubnt_usg_support.patch rename to target/linux/octeon/patches-6.1/150-ubnt_usg_support.patch index 88aa1c406f..00c268eda8 100644 --- a/target/linux/octeon/patches-5.15/150-ubnt_usg_support.patch +++ b/target/linux/octeon/patches-6.1/150-ubnt_usg_support.patch @@ -1,6 +1,6 @@ --- a/arch/mips/include/asm/octeon/cvmx-bootinfo.h +++ b/arch/mips/include/asm/octeon/cvmx-bootinfo.h -@@ -296,6 +296,7 @@ enum cvmx_board_types_enum { +@@ -297,6 +297,7 @@ enum cvmx_board_types_enum { CVMX_BOARD_TYPE_CUST_PRIVATE_MIN = 20001, CVMX_BOARD_TYPE_UBNT_E100 = 20002, CVMX_BOARD_TYPE_UBNT_E200 = 20003, @@ -8,7 +8,7 @@ CVMX_BOARD_TYPE_UBNT_E220 = 20005, CVMX_BOARD_TYPE_ITUS_SHIELD = 20006, CVMX_BOARD_TYPE_UBNT_E300 = 20300, -@@ -399,6 +400,7 @@ static inline const char *cvmx_board_typ +@@ -401,6 +402,7 @@ static inline const char *cvmx_board_typ /* Customer private range */ ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MIN) ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E100) diff --git a/target/linux/octeon/patches-5.15/700-allocate_interface_by_label.patch b/target/linux/octeon/patches-6.1/700-allocate_interface_by_label.patch similarity index 94% rename from target/linux/octeon/patches-5.15/700-allocate_interface_by_label.patch rename to target/linux/octeon/patches-6.1/700-allocate_interface_by_label.patch index e4dc3f96e5..22f284b2c0 100644 --- a/target/linux/octeon/patches-5.15/700-allocate_interface_by_label.patch +++ b/target/linux/octeon/patches-6.1/700-allocate_interface_by_label.patch @@ -22,7 +22,7 @@ Signed-off-by: Roman Kuzmitskii + if (priv->of_node) + label = of_get_property(priv->of_node, "label", NULL); + - ret = of_get_mac_address(priv->of_node, dev->dev_addr); + ret = of_get_ethdev_address(priv->of_node, dev); if (ret) eth_hw_addr_random(dev); @@ -441,6 +445,9 @@ int cvm_oct_common_init(struct net_devic diff --git a/target/linux/octeon/patches-5.15/701-honor_sgmii_node_device_tree_status.patch b/target/linux/octeon/patches-6.1/701-honor_sgmii_node_device_tree_status.patch similarity index 100% rename from target/linux/octeon/patches-5.15/701-honor_sgmii_node_device_tree_status.patch rename to target/linux/octeon/patches-6.1/701-honor_sgmii_node_device_tree_status.patch From 9075cfd609e905bc7162574a24a7fb457e65a374 Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Fri, 8 Dec 2023 09:32:41 +0100 Subject: [PATCH 06/23] kirkwood: fix Ctera C200 V1 ubi part name In 749237967a12 downstream dts was replaced with upstream accepted patch. But in upstream version last partition was called "rootfs" instead "ubi". OpenWrt require "ubi" label for ubi rootfs. This patch restore proper label. Fixes: 749237967a12 ("kirkwood: Replace dtses with upstream accepted") Signed-off-by: Pawel Dembicki --- .../linux/kirkwood/patches-5.15/114-ctera-c-200-v1.patch | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/linux/kirkwood/patches-5.15/114-ctera-c-200-v1.patch b/target/linux/kirkwood/patches-5.15/114-ctera-c-200-v1.patch index 23922b8d88..aed79d5dd5 100644 --- a/target/linux/kirkwood/patches-5.15/114-ctera-c-200-v1.patch +++ b/target/linux/kirkwood/patches-5.15/114-ctera-c-200-v1.patch @@ -49,3 +49,12 @@ function = LED_FUNCTION_STATUS; color = ; gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; +@@ -240,7 +252,7 @@ + }; + + partition@7a00000 { +- label = "rootfs"; ++ label = "ubi"; + reg = <0x7a00000 0x8600000>; + }; + }; From 36aff2a86e1160dbb7be172388b1653870eaf335 Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Tue, 14 Nov 2023 09:09:11 +0100 Subject: [PATCH 07/23] kirkwood: copy patches 5.15 to 6.1 Simple copy 5.15 patches. Upstreamed patch dropped: 001-5.18-Add-Ctera-C-200-V1-board.patch Signed-off-by: Pawel Dembicki (kirkwoor -> kirkwood in subject) Signed-off-by: Christian Lamparter --- ...dts-kirkwood-Add-Zyxel-NSA310S-board.patch | 301 ++++++++++++++++++ ...irkwood-Add-Endian-4i-Edge-200-board.patch | 249 +++++++++++++++ .../kirkwood/patches-6.1/100-ib62x0.patch | 53 +++ .../kirkwood/patches-6.1/101-iconnect.patch | 80 +++++ .../kirkwood/patches-6.1/102-dockstar.patch | 62 ++++ .../patches-6.1/103-iomega-ix2-200.patch | 67 ++++ .../patches-6.1/105-linksys-viper-dts.patch | 59 ++++ .../kirkwood/patches-6.1/106-goflexnet.patch | 53 +++ ...-zyxel-nsa3x0-common-nand-partitions.patch | 48 +++ .../kirkwood/patches-6.1/107-03-nsa325.patch | 54 ++++ .../patches-6.1/109-pogoplug_v4.patch | 87 +++++ .../kirkwood/patches-6.1/110-pogo_e02.patch | 68 ++++ .../linux/kirkwood/patches-6.1/111-l-50.patch | 47 +++ .../kirkwood/patches-6.1/112-sheevaplug.patch | 47 +++ .../patches-6.1/113-readynas_duo_v2.patch | 76 +++++ .../patches-6.1/114-ctera-c-200-v1.patch | 51 +++ .../kirkwood/patches-6.1/115-nsa310s.patch | 35 ++ .../patches-6.1/116-4i-edge-200.patch | 34 ++ ...able-sata-port-specific-led-triggers.patch | 10 + .../202-linksys-find-active-root.patch | 62 ++++ .../patches-6.1/203-blackarmor-nas220.patch | 99 ++++++ 21 files changed, 1642 insertions(+) create mode 100644 target/linux/kirkwood/patches-6.1/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch create mode 100644 target/linux/kirkwood/patches-6.1/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch create mode 100644 target/linux/kirkwood/patches-6.1/100-ib62x0.patch create mode 100644 target/linux/kirkwood/patches-6.1/101-iconnect.patch create mode 100644 target/linux/kirkwood/patches-6.1/102-dockstar.patch create mode 100644 target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch create mode 100644 target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch create mode 100644 target/linux/kirkwood/patches-6.1/106-goflexnet.patch create mode 100644 target/linux/kirkwood/patches-6.1/107-01-zyxel-nsa3x0-common-nand-partitions.patch create mode 100644 target/linux/kirkwood/patches-6.1/107-03-nsa325.patch create mode 100644 target/linux/kirkwood/patches-6.1/109-pogoplug_v4.patch create mode 100644 target/linux/kirkwood/patches-6.1/110-pogo_e02.patch create mode 100644 target/linux/kirkwood/patches-6.1/111-l-50.patch create mode 100644 target/linux/kirkwood/patches-6.1/112-sheevaplug.patch create mode 100644 target/linux/kirkwood/patches-6.1/113-readynas_duo_v2.patch create mode 100644 target/linux/kirkwood/patches-6.1/114-ctera-c-200-v1.patch create mode 100644 target/linux/kirkwood/patches-6.1/115-nsa310s.patch create mode 100644 target/linux/kirkwood/patches-6.1/116-4i-edge-200.patch create mode 100644 target/linux/kirkwood/patches-6.1/201-enable-sata-port-specific-led-triggers.patch create mode 100644 target/linux/kirkwood/patches-6.1/202-linksys-find-active-root.patch create mode 100644 target/linux/kirkwood/patches-6.1/203-blackarmor-nas220.patch diff --git a/target/linux/kirkwood/patches-6.1/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch b/target/linux/kirkwood/patches-6.1/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch new file mode 100644 index 0000000000..b745ea104f --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch @@ -0,0 +1,301 @@ +From e977a103840c57d72b52cbc8c17f87f86ef9aa8d Mon Sep 17 00:00:00 2001 +From: Pawel Dembicki +Date: Sat, 29 Oct 2022 22:57:38 +0200 +Subject: [PATCH] ARM: dts: kirkwood: Add Zyxel NSA310S board + +Zyxel NSA310S is a NAS based on Marvell kirkwood SoC. + +Specification: + - Processor Marvell 88F6702 1 GHz + - 256MB RAM + - 128MB NAND + - 1x GBE LAN port (PHY: Marvell 88E1318) + - 2x USB 2.0 + - 1x SATA + - 3x button + - 7x leds + - serial on J1 connector (115200 8N1) (GND-NOPIN-RX-TX-VCC) + +Tested-by: Tony Dinh +Signed-off-by: Pawel Dembicki +Acked-by: Adam Baker +Reviewed-by: Andrew Lunn +Signed-off-by: Gregory CLEMENT +--- + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/kirkwood-nsa310s.dts | 259 +++++++++++++++++++++++++ + 2 files changed, 260 insertions(+) + create mode 100644 arch/arm/boot/dts/kirkwood-nsa310s.dts + +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -320,6 +320,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \ + kirkwood-ns2mini.dtb \ + kirkwood-nsa310.dtb \ + kirkwood-nsa310a.dtb \ ++ kirkwood-nsa310s.dtb \ + kirkwood-nsa320.dtb \ + kirkwood-nsa325.dtb \ + kirkwood-openblocks_a6.dtb \ +--- /dev/null ++++ b/arch/arm/boot/dts/kirkwood-nsa310s.dts +@@ -0,0 +1,259 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * ZyXEL NSA310S Board Description ++ * Copyright 2020-2022 Pawel Dembicki ++ * Copyright (c) 2015-2021, Tony Dinh ++ * Copyright (c) 2014, Adam Baker ++ * Based upon the board setup file created by Peter Schildmann ++ */ ++/dts-v1/; ++ ++#include "kirkwood.dtsi" ++#include "kirkwood-6281.dtsi" ++#include ++ ++/ { ++ model = "ZyXEL NSA310S"; ++ compatible = "zyxel,nsa310s", "marvell,kirkwood-88f6702", "marvell,kirkwood"; ++ ++ memory { ++ device_type = "memory"; ++ reg = <0x00000000 0x10000000>; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 earlyprintk"; ++ stdout-path = &uart0; ++ }; ++ ++ gpio_poweroff { ++ compatible = "gpio-poweroff"; ++ pinctrl-0 = <&pmx_pwr_off>; ++ pinctrl-names = "default"; ++ gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ keys { ++ compatible = "gpio-keys"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ pinctrl-0 = <&pmx_buttons>; ++ pinctrl-names = "default"; ++ ++ power { ++ label = "Power Button"; ++ linux,code = ; ++ gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ copy { ++ label = "Copy Button"; ++ linux,code = ; ++ gpios = <&gpio0 25 GPIO_ACTIVE_LOW>; ++ }; ++ ++ reset { ++ label = "Reset Button"; ++ linux,code = ; ++ gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ pinctrl-0 = <&pmx_leds>; ++ pinctrl-names = "default"; ++ ++ led-1 { ++ function = LED_FUNCTION_DISK_ERR; ++ color = ; ++ gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led-2 { ++ function = LED_FUNCTION_USB; ++ color = ; ++ gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "usb-host"; ++ }; ++ ++ led-3 { ++ function = LED_FUNCTION_DISK; ++ color = ; ++ gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "ata1"; ++ }; ++ ++ led-4 { ++ function = LED_FUNCTION_INDICATOR; ++ color = ; ++ gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led-5 { ++ function = LED_FUNCTION_INDICATOR; ++ color = ; ++ gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led-6 { ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "default-on"; ++ }; ++ ++ led-7 { ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>; ++ }; ++ }; ++ ++ usb0_power: regulator@1 { ++ compatible = "regulator-fixed"; ++ regulator-name = "USB Power"; ++ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ gpio = <&gpio0 21 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ sata1_power: regulator@2 { ++ compatible = "regulator-fixed"; ++ regulator-name = "SATA1 Power"; ++ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ gpio = <&gpio1 1 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ thermal-zones { ++ disk-thermal { ++ polling-delay = <20000>; ++ polling-delay-passive = <2000>; ++ ++ thermal-sensors = <&hdd_temp>; ++ ++ trips { ++ disk_alert: disk-alert { ++ temperature = <40000>; ++ hysteresis = <5000>; ++ type = "active"; ++ }; ++ disk_crit: disk-crit { ++ temperature = <60000>; ++ hysteresis = <2000>; ++ type = "critical"; ++ }; ++ }; ++ }; ++ }; ++}; ++ ++ ++ð0 { ++ status = "okay"; ++ ++ ethernet0-port@0 { ++ phy-handle = <ðphy0>; ++ }; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ rtc@68 { ++ compatible = "htk,ht1382"; ++ reg = <0x68>; ++ }; ++}; ++ ++&mdio { ++ status = "okay"; ++ ++ ethphy0: ethernet-phy@1 { ++ reg = <1>; ++ phy-mode = "rgmii-id"; ++ marvell,reg-init = <0x1 0x16 0x0 0x3>, ++ <0x1 0x10 0x0 0x1017>, ++ <0x1 0x11 0x0 0x4408>, ++ <0x1 0x16 0x0 0x0>; ++ }; ++}; ++ ++&nand { ++ status = "okay"; ++ chip-delay = <35>; ++ ++ partition@0 { ++ label = "uboot"; ++ reg = <0x0000000 0x00c0000>; ++ read-only; ++ }; ++ partition@c0000 { ++ label = "uboot_env"; ++ reg = <0x00c0000 0x0080000>; ++ }; ++ partition@140000 { ++ label = "ubi"; ++ reg = <0x0140000 0x7ec0000>; ++ }; ++}; ++ ++&pciec { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++}; ++ ++&pinctrl { ++ pinctrl-names = "default"; ++ ++ pmx_buttons: pmx-buttons { ++ marvell,pins = "mpp24", "mpp25", "mpp26"; ++ marvell,function = "gpio"; ++ }; ++ ++ pmx_leds: pmx-leds { ++ marvell,pins = "mpp13", "mpp15", "mpp16", "mpp22", "mpp23", ++ "mpp28", "mpp29"; ++ marvell,function = "gpio"; ++ }; ++ ++ pmx_power: pmx-power { ++ marvell,pins = "mpp21", "mpp33"; ++ marvell,function = "gpio"; ++ }; ++ ++ pmx_pwr_off: pmx-pwr-off { ++ marvell,pins = "mpp27"; ++ marvell,function = "gpio"; ++ }; ++}; ++ ++&rtc { ++ status = "disabled"; ++}; ++ ++&sata { ++ status = "okay"; ++ nr-ports = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ hdd_temp: sata-port@0 { ++ reg = <0>; ++ #thermal-sensor-cells = <0>; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; diff --git a/target/linux/kirkwood/patches-6.1/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch b/target/linux/kirkwood/patches-6.1/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch new file mode 100644 index 0000000000..4b0f46bb6d --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch @@ -0,0 +1,249 @@ +From 5668d088ee4ea05db9daaae0645d1d1f579b20f9 Mon Sep 17 00:00:00 2001 +From: Pawel Dembicki +Date: Mon, 3 Oct 2022 09:34:43 +0200 +Subject: ARM: dts: kirkwood: Add Endian 4i Edge 200 board + +Add Endian 4i Edge 200 is 5-port firewall. +It have also clone: Endian UTM Mini (The same hardware, with added WLAN +card). + +Hardware: + - SoC: Marvell 88F6281-A1 ARMv5TE Processor 1.2GHz + - Ram: 512MB (4x Nanya NT5TU128M8GE-AC) + - NAND Flash: 512MB (Micron 29F4G08AAC) + - Lan 1-4: 4x GBE (Marvell 88E6171R-TFJ2) + - Lan 5: 1x GBE (Marvell 88E1116R-NNC1) + - Storage: MicroSD Slot + - MCPIE: MiniPCIe Slot present [fitted with SparkLan WPEA-110N/E + (Atheros AR9280 chipset) in Endian UTM Mini WLAN only] + - USB: 1x USB 2.0 port + - Console: RJ-45 port + - LEDs: 3x GPIO controlled + +Signed-off-by: Pawel Dembicki +Reviewed-by: Andrew Lunn +Signed-off-by: Gregory CLEMENT +--- + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/kirkwood-4i-edge-200.dts | 205 +++++++++++++++++++++++++++++ + 2 files changed, 206 insertions(+) + create mode 100644 arch/arm/boot/dts/kirkwood-4i-edge-200.dts + +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -265,6 +265,7 @@ dtb-$(CONFIG_ARCH_KEYSTONE) += \ + keystone-k2g-evm.dtb \ + keystone-k2g-ice.dtb + dtb-$(CONFIG_MACH_KIRKWOOD) += \ ++ kirkwood-4i-edge-200.dtb \ + kirkwood-b3.dtb \ + kirkwood-blackarmor-nas220.dtb \ + kirkwood-c200-v1.dtb \ +--- /dev/null ++++ b/arch/arm/boot/dts/kirkwood-4i-edge-200.dts +@@ -0,0 +1,205 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Endian 4i Edge 200 Board Description ++ * Note: Endian UTM Mini is hardware clone of Endian Edge 200 ++ * Copyright 2021-2022 Pawel Dembicki ++ */ ++ ++/dts-v1/; ++ ++#include "kirkwood.dtsi" ++#include "kirkwood-6281.dtsi" ++#include ++ ++/ { ++ model = "Endian 4i Edge 200"; ++ compatible = "endian,4i-edge-200", "marvell,kirkwood-88f6281", "marvell,kirkwood"; ++ ++ memory { ++ device_type = "memory"; ++ reg = <0x00000000 0x20000000>; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8"; ++ stdout-path = &uart0; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ pinctrl-0 = <&pmx_led>; ++ pinctrl-names = "default"; ++ ++ led-1 { ++ function = LED_FUNCTION_SD; ++ color = ; ++ gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "mmc0"; ++ }; ++ ++ led-2 { ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led-3 { ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>; ++ }; ++ }; ++}; ++ ++ð0 { ++ status = "okay"; ++}; ++ ++ð0port { ++ speed = <1000>; ++ duplex = <1>; ++}; ++ ++ð1 { ++ status = "okay"; ++}; ++ ++ð1port { ++ phy-handle = <ðphyb>; ++}; ++ ++&mdio { ++ status = "okay"; ++ ++ ethphyb: ethernet-phy@b { ++ reg = <0x0b>; ++ ++ marvell,reg-init = ++ /* link-activity, bi-color mode 4 */ ++ <3 0x10 0xfff0 0xf>; /* Reg 3,16 <- 0xzzzf */ ++ }; ++ ++ switch0: switch@11 { ++ compatible = "marvell,mv88e6085"; ++ reg = <0x11>; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ port@0 { ++ reg = <0>; ++ label = "port1"; ++ }; ++ ++ port@1 { ++ reg = <1>; ++ label = "port2"; ++ }; ++ ++ port@2 { ++ reg = <2>; ++ label = "port3"; ++ }; ++ ++ port@3 { ++ reg = <3>; ++ label = "port4"; ++ }; ++ ++ port@5 { ++ reg = <5>; ++ phy-mode = "rgmii-id"; ++ ethernet = <ð0port>; ++ ++ fixed-link { ++ speed = <1000>; ++ full-duplex; ++ }; ++ }; ++ }; ++ }; ++}; ++ ++&nand { ++ status = "okay"; ++ pinctrl-0 = <&pmx_nand>; ++ pinctrl-names = "default"; ++ ++ partition@0 { ++ label = "u-boot"; ++ reg = <0x00000000 0x000a0000>; ++ read-only; ++ }; ++ ++ partition@a0000 { ++ label = "u-boot-env"; ++ reg = <0x000a0000 0x00060000>; ++ read-only; ++ }; ++ ++ partition@100000 { ++ label = "kernel"; ++ reg = <0x00100000 0x00400000>; ++ }; ++ ++ partition@500000 { ++ label = "ubi"; ++ reg = <0x00500000 0x1fb00000>; ++ }; ++}; ++ ++&pciec { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++}; ++ ++&pinctrl { ++ pinctrl-0 = <&pmx_sysrst>; ++ pinctrl-names = "default"; ++ ++ pmx_sysrst: pmx-sysrst { ++ marvell,pins = "mpp6"; ++ marvell,function = "sysrst"; ++ }; ++ ++ pmx_sdio_cd: pmx-sdio-cd { ++ marvell,pins = "mpp28"; ++ marvell,function = "gpio"; ++ }; ++ ++ pmx_led: pmx-led { ++ marvell,pins = "mpp34", "mpp35", "mpp49"; ++ marvell,function = "gpio"; ++ }; ++}; ++ ++&rtc { ++ status = "okay"; ++}; ++ ++&sata_phy0 { ++ status = "disabled"; ++}; ++ ++&sata_phy1 { ++ status = "disabled"; ++}; ++ ++&sdio { ++ pinctrl-0 = <&pmx_sdio_cd>; ++ pinctrl-names = "default"; ++ status = "okay"; ++ cd-gpios = <&gpio0 28 9>; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&usb0 { ++ status = "okay"; ++}; diff --git a/target/linux/kirkwood/patches-6.1/100-ib62x0.patch b/target/linux/kirkwood/patches-6.1/100-ib62x0.patch new file mode 100644 index 0000000000..0637c24b63 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/100-ib62x0.patch @@ -0,0 +1,53 @@ +--- a/arch/arm/boot/dts/kirkwood-ib62x0.dts ++++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts +@@ -6,7 +6,14 @@ + + / { + model = "RaidSonic ICY BOX IB-NAS62x0 (Rev B)"; +- compatible = "raidsonic,ib-nas6210-b", "raidsonic,ib-nas6220-b", "raidsonic,ib-nas6210", "raidsonic,ib-nas6220", "raidsonic,ib-nas62x0", "marvell,kirkwood-88f6281", "marvell,kirkwood"; ++ compatible = "raidsonic,ib-nas62x0", "marvell,kirkwood-88f6281", "marvell,kirkwood"; ++ ++ aliases { ++ led-boot = &led_green_os; ++ led-failsafe = &led_red_os; ++ led-running = &led_green_os; ++ led-upgrade = &led_red_os; ++ }; + + memory { + device_type = "memory"; +@@ -81,12 +88,12 @@ + &pmx_led_usb_transfer>; + pinctrl-names = "default"; + +- green-os { ++ led_green_os: green-os { + label = "ib62x0:green:os"; + gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>; +- default-state = "keep"; ++ default-state = "on"; + }; +- red-os { ++ led_red_os: red-os { + label = "ib62x0:red:os"; + gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>; + }; +@@ -118,13 +125,13 @@ + }; + + partition@100000 { +- label = "uImage"; +- reg = <0x0100000 0x600000>; ++ label = "second stage u-boot"; ++ reg = <0x100000 0x200000>; + }; + +- partition@700000 { +- label = "root"; +- reg = <0x0700000 0xf900000>; ++ partition@200000 { ++ label = "ubi"; ++ reg = <0x200000 0xfe00000>; + }; + + }; diff --git a/target/linux/kirkwood/patches-6.1/101-iconnect.patch b/target/linux/kirkwood/patches-6.1/101-iconnect.patch new file mode 100644 index 0000000000..935e2dfcf5 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/101-iconnect.patch @@ -0,0 +1,80 @@ +--- a/arch/arm/boot/dts/kirkwood-iconnect.dts ++++ b/arch/arm/boot/dts/kirkwood-iconnect.dts +@@ -8,6 +8,13 @@ + model = "Iomega Iconnect"; + compatible = "iom,iconnect-1.1", "iom,iconnect", "marvell,kirkwood-88f6281", "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_power_blue; ++ led-failsafe = &led_power_red; ++ led-running = &led_power_blue; ++ led-upgrade = &led_power_red; ++ }; ++ + memory { + device_type = "memory"; + reg = <0x00000000 0x10000000>; +@@ -16,8 +23,6 @@ + chosen { + bootargs = "console=ttyS0,115200n8 earlyprintk"; + stdout-path = &uart0; +- linux,initrd-start = <0x4500040>; +- linux,initrd-end = <0x4800000>; + }; + + ocp@f1000000 { +@@ -89,12 +94,12 @@ + gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; + default-state = "on"; + }; +- power-blue { ++ led_power_blue: power-blue { + label = "power:blue"; + gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; +- default-state = "keep"; ++ default-state = "on"; + }; +- power-red { ++ led_power_red: power-red { + label = "power:red"; + gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>; + }; +@@ -146,28 +151,23 @@ + status = "okay"; + + partition@0 { +- label = "uboot"; +- reg = <0x0000000 0xc0000>; ++ label = "u-boot"; ++ reg = <0x0000000 0xe0000>; + }; + +- partition@a0000 { +- label = "env"; +- reg = <0xa0000 0x20000>; ++ partition@e0000 { ++ label = "u-boot environment"; ++ reg = <0xe0000 0x100000>; + }; + + partition@100000 { +- label = "zImage"; +- reg = <0x100000 0x300000>; +- }; +- +- partition@540000 { +- label = "initrd"; +- reg = <0x540000 0x300000>; ++ label = "second stage u-boot"; ++ reg = <0x100000 0x200000>; + }; + +- partition@980000 { +- label = "boot"; +- reg = <0x980000 0x1f400000>; ++ partition@200000 { ++ label = "ubi"; ++ reg = <0x200000 0x1fe00000>; + }; + }; + diff --git a/target/linux/kirkwood/patches-6.1/102-dockstar.patch b/target/linux/kirkwood/patches-6.1/102-dockstar.patch new file mode 100644 index 0000000000..127f84962c --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/102-dockstar.patch @@ -0,0 +1,62 @@ +--- a/arch/arm/boot/dts/kirkwood-dockstar.dts ++++ b/arch/arm/boot/dts/kirkwood-dockstar.dts +@@ -8,6 +8,13 @@ + model = "Seagate FreeAgent Dockstar"; + compatible = "seagate,dockstar", "marvell,kirkwood-88f6281", "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_health; ++ led-failsafe = &led_fault; ++ led-running = &led_health; ++ led-upgrade = &led_fault; ++ }; ++ + memory { + device_type = "memory"; + reg = <0x00000000 0x8000000>; +@@ -42,12 +49,12 @@ + pinctrl-0 = <&pmx_led_green &pmx_led_orange>; + pinctrl-names = "default"; + +- health { ++ led_health: health { + label = "status:green:health"; + gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; +- default-state = "keep"; ++ default-state = "on"; + }; +- fault { ++ led_fault: fault { + label = "status:orange:fault"; + gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; + }; +@@ -78,18 +85,22 @@ + + partition@0 { + label = "u-boot"; +- reg = <0x0000000 0x100000>; +- read-only; ++ reg = <0x0000000 0xe0000>; ++ }; ++ ++ partition@e0000 { ++ label = "u-boot environment"; ++ reg = <0xe0000 0x100000>; + }; + + partition@100000 { +- label = "uImage"; +- reg = <0x0100000 0x400000>; ++ label = "second stage u-boot"; ++ reg = <0x100000 0x200000>; + }; + +- partition@500000 { +- label = "data"; +- reg = <0x0500000 0xfb00000>; ++ partition@200000 { ++ label = "ubi"; ++ reg = <0x200000 0xfe00000>; + }; + }; + diff --git a/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch b/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch new file mode 100644 index 0000000000..9313b4bc3e --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch @@ -0,0 +1,67 @@ +--- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts ++++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts +@@ -8,6 +8,13 @@ + model = "Iomega StorCenter ix2-200"; + compatible = "iom,ix2-200", "marvell,kirkwood-88f6281", "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_power; ++ led-failsafe = &led_health; ++ led-running = &led_power; ++ led-upgrade = &led_health; ++ }; ++ + memory { + device_type = "memory"; + reg = <0x00000000 0x10000000>; +@@ -127,16 +134,16 @@ + &pmx_led_rebuild &pmx_led_health >; + pinctrl-names = "default"; + +- power_led { ++ led_power: power_led { + label = "status:white:power_led"; + gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>; +- default-state = "keep"; ++ default-state = "on"; + }; + rebuild_led { + label = "status:white:rebuild_led"; + gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; + }; +- health_led { ++ led_health: health_led { + label = "status:red:health_led"; + gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; + }; +@@ -186,18 +193,18 @@ + }; + + partition@a0000 { +- label = "env"; ++ label = "u-boot environment"; + reg = <0xa0000 0x20000>; + read-only; + }; + + partition@100000 { +- label = "uImage"; ++ label = "kernel"; + reg = <0x100000 0x300000>; + }; + + partition@400000 { +- label = "rootfs"; ++ label = "ubi"; + reg = <0x400000 0x1C00000>; + }; + }; +@@ -211,7 +218,7 @@ + }; + + ð0 { +- status = "okay"; ++ status = "disabled"; + ethernet0-port@0 { + speed = <1000>; + duplex = <1>; diff --git a/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch b/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch new file mode 100644 index 0000000000..d56a469d94 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch @@ -0,0 +1,59 @@ +--- a/arch/arm/boot/dts/kirkwood-linksys-viper.dts ++++ b/arch/arm/boot/dts/kirkwood-linksys-viper.dts +@@ -24,6 +24,10 @@ + }; + + aliases { ++ led-boot = &led_white_health; ++ led-failsafe = &led_white_health; ++ led-running = &led_white_health; ++ led-upgrade = &led_white_health; + serial0 = &uart0; + }; + +@@ -56,9 +60,10 @@ + pinctrl-0 = < &pmx_led_white_health &pmx_led_white_pulse >; + pinctrl-names = "default"; + +- white-health { ++ led_white_health: white-health { + label = "viper:white:health"; + gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>; ++ default-state = "on"; + }; + + white-pulse { +@@ -114,23 +119,23 @@ + }; + + partition@200000 { +- label = "kernel"; +- reg = <0x200000 0x2A0000>; ++ label = "kernel1"; ++ reg = <0x200000 0x1A00000>; + }; + +- partition@4a0000 { +- label = "rootfs"; +- reg = <0x4A0000 0x1760000>; ++ partition@500000 { ++ label = "rootfs1"; ++ reg = <0x500000 0x1700000>; + }; + + partition@1c00000 { +- label = "alt_kernel"; +- reg = <0x1C00000 0x2A0000>; ++ label = "kernel2"; ++ reg = <0x1C00000 0x1A00000>; + }; + +- partition@1ea0000 { +- label = "alt_rootfs"; +- reg = <0x1EA0000 0x1760000>; ++ partition@1f00000 { ++ label = "rootfs2"; ++ reg = <0x1F00000 0x1700000>; + }; + + partition@3600000 { diff --git a/target/linux/kirkwood/patches-6.1/106-goflexnet.patch b/target/linux/kirkwood/patches-6.1/106-goflexnet.patch new file mode 100644 index 0000000000..82cf90841e --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/106-goflexnet.patch @@ -0,0 +1,53 @@ +--- a/arch/arm/boot/dts/kirkwood-goflexnet.dts ++++ b/arch/arm/boot/dts/kirkwood-goflexnet.dts +@@ -8,6 +8,13 @@ + model = "Seagate GoFlex Net"; + compatible = "seagate,goflexnet", "marvell,kirkwood-88f6281", "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_health; ++ led-failsafe = &led_fault; ++ led-running = &led_health; ++ led-upgrade = &led_fault; ++ }; ++ + memory { + device_type = "memory"; + reg = <0x00000000 0x8000000>; +@@ -85,12 +92,12 @@ + >; + pinctrl-names = "default"; + +- health { ++ led_health: health { + label = "status:green:health"; + gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; +- default-state = "keep"; ++ default-state = "on"; + }; +- fault { ++ led_fault: fault { + label = "status:orange:fault"; + gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; + }; +@@ -159,18 +166,8 @@ + }; + + partition@100000 { +- label = "uImage"; +- reg = <0x0100000 0x400000>; +- }; +- +- partition@500000 { +- label = "pogoplug"; +- reg = <0x0500000 0x2000000>; +- }; +- +- partition@2500000 { +- label = "root"; +- reg = <0x02500000 0xd800000>; ++ label = "ubi"; ++ reg = <0x0100000 0x0ff00000>; + }; + }; + diff --git a/target/linux/kirkwood/patches-6.1/107-01-zyxel-nsa3x0-common-nand-partitions.patch b/target/linux/kirkwood/patches-6.1/107-01-zyxel-nsa3x0-common-nand-partitions.patch new file mode 100644 index 0000000000..df654033fd --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/107-01-zyxel-nsa3x0-common-nand-partitions.patch @@ -0,0 +1,48 @@ +--- a/arch/arm/boot/dts/kirkwood-nsa3x0-common.dtsi ++++ b/arch/arm/boot/dts/kirkwood-nsa3x0-common.dtsi +@@ -112,40 +112,16 @@ + + partition@0 { + label = "uboot"; +- reg = <0x0000000 0x0100000>; ++ reg = <0x0000000 0x00c0000>; + read-only; + }; + partition@100000 { + label = "uboot_env"; +- reg = <0x0100000 0x0080000>; ++ reg = <0x00c0000 0x0080000>; + }; +- partition@180000 { +- label = "key_store"; +- reg = <0x0180000 0x0080000>; +- }; +- partition@200000 { +- label = "info"; +- reg = <0x0200000 0x0080000>; +- }; +- partition@280000 { +- label = "etc"; +- reg = <0x0280000 0x0a00000>; +- }; +- partition@c80000 { +- label = "kernel_1"; +- reg = <0x0c80000 0x0a00000>; +- }; +- partition@1680000 { +- label = "rootfs1"; +- reg = <0x1680000 0x2fc0000>; +- }; +- partition@4640000 { +- label = "kernel_2"; +- reg = <0x4640000 0x0a00000>; +- }; +- partition@5040000 { +- label = "rootfs2"; +- reg = <0x5040000 0x2fc0000>; ++ partition@140000 { ++ label = "ubi"; ++ reg = <0x0140000 0x7ec0000>; + }; + }; + diff --git a/target/linux/kirkwood/patches-6.1/107-03-nsa325.patch b/target/linux/kirkwood/patches-6.1/107-03-nsa325.patch new file mode 100644 index 0000000000..374c0895a9 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/107-03-nsa325.patch @@ -0,0 +1,54 @@ +--- a/arch/arm/boot/dts/kirkwood-nsa325.dts ++++ b/arch/arm/boot/dts/kirkwood-nsa325.dts +@@ -15,6 +15,13 @@ + model = "ZyXEL NSA325"; + compatible = "zyxel,nsa325", "marvell,kirkwood-88f6282", "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_green_sys; ++ led-failsafe = &led_orange_sys; ++ led-running = &led_green_sys; ++ led-upgrade = &led_orange_sys; ++ }; ++ + memory { + device_type = "memory"; + reg = <0x00000000 0x20000000>; +@@ -162,17 +169,19 @@ + &pmx_led_hdd1_green &pmx_led_hdd1_red>; + pinctrl-names = "default"; + +- green-sys { ++ led_green_sys: green-sys { + label = "nsa325:green:sys"; + gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>; ++ default-state = "on"; + }; +- orange-sys { ++ led_orange_sys: orange-sys { + label = "nsa325:orange:sys"; + gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>; + }; + green-hdd1 { + label = "nsa325:green:hdd1"; + gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "ata1"; + }; + red-hdd1 { + label = "nsa325:red:hdd1"; +@@ -181,6 +190,7 @@ + green-hdd2 { + label = "nsa325:green:hdd2"; + gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "ata2"; + }; + red-hdd2 { + label = "nsa325:red:hdd2"; +@@ -189,6 +199,7 @@ + green-usb { + label = "nsa325:green:usb"; + gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "usb-host"; + }; + green-copy { + label = "nsa325:green:copy"; diff --git a/target/linux/kirkwood/patches-6.1/109-pogoplug_v4.patch b/target/linux/kirkwood/patches-6.1/109-pogoplug_v4.patch new file mode 100644 index 0000000000..4273eb9af1 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/109-pogoplug_v4.patch @@ -0,0 +1,87 @@ +--- a/arch/arm/boot/dts/kirkwood-pogoplug-series-4.dts ++++ b/arch/arm/boot/dts/kirkwood-pogoplug-series-4.dts +@@ -18,12 +18,20 @@ + compatible = "cloudengines,pogoplugv4", "marvell,kirkwood-88f6192", + "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_health; ++ led-failsafe = &led_fault; ++ led-running = &led_health; ++ led-upgrade = &led_fault; ++ }; ++ + memory { + device_type = "memory"; + reg = <0x00000000 0x08000000>; + }; + + chosen { ++ bootargs = "console=ttyS0,115200"; + stdout-path = "uart0:115200n8"; + }; + +@@ -37,8 +45,8 @@ + eject { + debounce-interval = <50>; + wakeup-source; +- linux,code = ; +- label = "Eject Button"; ++ linux,code = ; ++ label = "Reset"; + gpios = <&gpio0 29 GPIO_ACTIVE_LOW>; + }; + }; +@@ -48,12 +56,12 @@ + pinctrl-0 = <&pmx_led_green &pmx_led_red>; + pinctrl-names = "default"; + +- health { ++ led_health: health { + label = "pogoplugv4:green:health"; + gpios = <&gpio0 22 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; +- fault { ++ led_fault: fault { + label = "pogoplugv4:red:fault"; + gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; + }; +@@ -137,29 +145,19 @@ + #size-cells = <1>; + + partition@0 { +- label = "u-boot"; +- reg = <0x00000000 0x200000>; ++ label = "uboot"; ++ reg = <0x00000000 0x1c0000>; + read-only; + }; + +- partition@200000 { +- label = "uImage"; +- reg = <0x00200000 0x300000>; +- }; +- +- partition@500000 { +- label = "uImage2"; +- reg = <0x00500000 0x300000>; +- }; +- +- partition@800000 { +- label = "failsafe"; +- reg = <0x00800000 0x800000>; ++ partition@1c0000 { ++ label = "uboot_env"; ++ reg = <0x001c0000 0x40000>; + }; + +- partition@1000000 { +- label = "root"; +- reg = <0x01000000 0x7000000>; ++ partition@200000 { ++ label = "ubi"; ++ reg = <0x00200000 0x7e00000>; + }; + }; + }; diff --git a/target/linux/kirkwood/patches-6.1/110-pogo_e02.patch b/target/linux/kirkwood/patches-6.1/110-pogo_e02.patch new file mode 100644 index 0000000000..fc384d3521 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/110-pogo_e02.patch @@ -0,0 +1,68 @@ +--- a/arch/arm/boot/dts/kirkwood-pogo_e02.dts ++++ b/arch/arm/boot/dts/kirkwood-pogo_e02.dts +@@ -20,6 +20,13 @@ + compatible = "cloudengines,pogoe02", "marvell,kirkwood-88f6281", + "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_health; ++ led-failsafe = &led_fault; ++ led-running = &led_health; ++ led-upgrade = &led_fault; ++ }; ++ + memory { + device_type = "memory"; + reg = <0x00000000 0x10000000>; +@@ -33,12 +40,12 @@ + gpio-leds { + compatible = "gpio-leds"; + +- health { ++ led_health: health { + label = "pogo_e02:green:health"; + gpios = <&gpio1 16 GPIO_ACTIVE_LOW>; +- default-state = "keep"; ++ default-state = "on"; + }; +- fault { ++ led_fault: fault { + label = "pogo_e02:orange:fault"; + gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; + }; +@@ -95,24 +102,24 @@ + status = "okay"; + + partition@0 { +- label = "u-boot"; +- reg = <0x0000000 0x100000>; ++ label = "uboot"; ++ reg = <0x0 0xe0000>; + read-only; + }; + +- partition@100000 { +- label = "uImage"; +- reg = <0x0100000 0x400000>; ++ partition@e0000 { ++ label = "uboot_env"; ++ reg = <0xe0000 0x20000>; + }; + +- partition@500000 { +- label = "pogoplug"; +- reg = <0x0500000 0x2000000>; ++ partition@100000 { ++ label = "second_stage_uboot"; ++ reg = <0x100000 0x100000>; + }; + +- partition@2500000 { +- label = "root"; +- reg = <0x02500000 0x5b00000>; ++ partition@200000 { ++ label = "ubi"; ++ reg = <0x200000 0x7e00000>; + }; + }; + diff --git a/target/linux/kirkwood/patches-6.1/111-l-50.patch b/target/linux/kirkwood/patches-6.1/111-l-50.patch new file mode 100644 index 0000000000..bc933cb610 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/111-l-50.patch @@ -0,0 +1,47 @@ +--- a/arch/arm/boot/dts/kirkwood-l-50.dts ++++ b/arch/arm/boot/dts/kirkwood-l-50.dts +@@ -18,6 +18,13 @@ + reg = <0x00000000 0x20000000>; + }; + ++ aliases { ++ led-boot = &led_status_green; ++ led-failsafe = &led_status_red; ++ led-running = &led_status_green; ++ led-upgrade = &led_status_red; ++ }; ++ + chosen { + bootargs = "console=ttyS0,115200n8"; + stdout-path = &uart0; +@@ -95,12 +102,12 @@ + leds { + compatible = "gpio-leds"; + +- status_green { ++ led_status_green: status_green { + label = "l-50:green:status"; + gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; + }; + +- status_red { ++ led_status_red: status_red { + label = "l-50:red:status"; + gpios = <&gpio3 2 GPIO_ACTIVE_LOW>; + }; +@@ -349,13 +356,8 @@ + }; + + partition@100000 { +- label = "kernel-1"; +- reg = <0x00100000 0x00800000>; +- }; +- +- partition@900000 { +- label = "rootfs-1"; +- reg = <0x00900000 0x07100000>; ++ label = "ubi"; ++ reg = <0x00100000 0x07900000>; + }; + + partition@7a00000 { diff --git a/target/linux/kirkwood/patches-6.1/112-sheevaplug.patch b/target/linux/kirkwood/patches-6.1/112-sheevaplug.patch new file mode 100644 index 0000000000..d1ff9884a0 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/112-sheevaplug.patch @@ -0,0 +1,47 @@ +--- a/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi ++++ b/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi +@@ -78,13 +78,8 @@ + }; + + partition@100000 { +- label = "uImage"; +- reg = <0x0100000 0x400000>; +- }; +- +- partition@500000 { +- label = "root"; +- reg = <0x0500000 0x1fb00000>; ++ label = "ubi"; ++ reg = <0x0100000 0x1ff00000>; + }; + }; + +--- a/arch/arm/boot/dts/kirkwood-sheevaplug.dts ++++ b/arch/arm/boot/dts/kirkwood-sheevaplug.dts +@@ -13,6 +13,13 @@ + model = "Globalscale Technologies SheevaPlug"; + compatible = "globalscale,sheevaplug", "marvell,kirkwood-88f6281", "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_health; ++ led-failsafe = &led_health; ++ led-running = &led_health; ++ led-upgrade = &led_health; ++ }; ++ + ocp@f1000000 { + mvsdio@90000 { + pinctrl-0 = <&pmx_sdio>; +@@ -28,10 +35,10 @@ + pinctrl-0 = <&pmx_led_blue &pmx_led_red>; + pinctrl-names = "default"; + +- health { ++ led_health: health { + label = "sheevaplug:blue:health"; + gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; +- default-state = "keep"; ++ default-state = "on"; + }; + + misc { diff --git a/target/linux/kirkwood/patches-6.1/113-readynas_duo_v2.patch b/target/linux/kirkwood/patches-6.1/113-readynas_duo_v2.patch new file mode 100644 index 0000000000..c6452c55a3 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/113-readynas_duo_v2.patch @@ -0,0 +1,76 @@ +--- a/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts ++++ b/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts +@@ -19,6 +19,13 @@ + reg = <0x00000000 0x10000000>; + }; + ++ aliases { ++ led-boot = &led_power; ++ led-failsafe = &led_power; ++ led-running = &led_power; ++ led-upgrade = &led_power; ++ }; ++ + chosen { + bootargs = "console=ttyS0,115200n8 earlyprintk"; + stdout-path = &uart0; +@@ -115,7 +122,7 @@ + &pmx_led_blue_backup >; + pinctrl-names = "default"; + +- power_led { ++ led_power: power_led { + label = "status:blue:power_led"; + gpios = <&gpio0 31 GPIO_ACTIVE_LOW>; + default-state = "keep"; +@@ -129,11 +136,13 @@ + disk1_led { + label = "status:blue:disk1_led"; + gpios = <&gpio0 23 GPIO_ACTIVE_LOW>; ++ linux,default-trigger = "ata1"; + }; + + disk2_led { + label = "status:blue:disk2_led"; + gpios = <&gpio0 22 GPIO_ACTIVE_LOW>; ++ linux,default-trigger = "ata2"; + }; + + backup_led { +@@ -150,7 +159,13 @@ + + power-button { + label = "Power Button"; +- linux,code = ; ++ /* Power button and INT pin from PHY are both connected ++ * to this GPIO. Every network restart causes PHY restart ++ * and button is pressed. It's difficult to use it as ++ * KEY_POWER without changes in kernel (or netifd) so ++ * the button is configured as regular one. ++ */ ++ linux,code = ; + gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; + }; + +@@ -208,18 +223,13 @@ + }; + + partition@200000 { +- label = "uImage"; ++ label = "kernel"; + reg = <0x0200000 0x600000>; + }; + + partition@800000 { +- label = "minirootfs"; +- reg = <0x0800000 0x1000000>; +- }; +- +- partition@1800000 { +- label = "jffs2"; +- reg = <0x1800000 0x6800000>; ++ label = "ubi"; ++ reg = <0x0800000 0x7800000>; + }; + }; + diff --git a/target/linux/kirkwood/patches-6.1/114-ctera-c-200-v1.patch b/target/linux/kirkwood/patches-6.1/114-ctera-c-200-v1.patch new file mode 100644 index 0000000000..23922b8d88 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/114-ctera-c-200-v1.patch @@ -0,0 +1,51 @@ +--- a/arch/arm/boot/dts/kirkwood-c200-v1.dts ++++ b/arch/arm/boot/dts/kirkwood-c200-v1.dts +@@ -14,6 +14,14 @@ + model = "Ctera C200 V1"; + compatible = "ctera,c200-v1", "marvell,kirkwood-88f6281", "marvell,kirkwood"; + ++ ++ aliases { ++ led-boot = &led_status_green; ++ led-failsafe = &led_status_red; ++ led-running = &led_status_green; ++ led-upgrade = &led_status_red; ++ }; ++ + chosen { + bootargs = "console=ttyS0,115200"; + stdout-path = &uart0; +@@ -78,6 +86,7 @@ + function-enumerator = <1>; + color = ; + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; ++ linux,default-trigger = "ata1"; + }; + + led-2 { +@@ -85,6 +94,7 @@ + function-enumerator = <2>; + color = ; + gpios = <&gpio0 16 GPIO_ACTIVE_LOW>; ++ linux,default-trigger = "ata2"; + }; + + led-3 { +@@ -94,13 +104,15 @@ + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + }; + +- led-4 { ++ led_status_red: led-4 { ++ label = "red:status"; + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; + }; + +- led-5 { ++ led_status_green: led-5 { ++ label = "green:status"; + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; diff --git a/target/linux/kirkwood/patches-6.1/115-nsa310s.patch b/target/linux/kirkwood/patches-6.1/115-nsa310s.patch new file mode 100644 index 0000000000..4c6e08f49c --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/115-nsa310s.patch @@ -0,0 +1,35 @@ +--- a/arch/arm/boot/dts/kirkwood-nsa310s.dts ++++ b/arch/arm/boot/dts/kirkwood-nsa310s.dts +@@ -16,6 +16,13 @@ + model = "ZyXEL NSA310S"; + compatible = "zyxel,nsa310s", "marvell,kirkwood-88f6702", "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_green_sys; ++ led-failsafe = &led_red_sys; ++ led-running = &led_green_sys; ++ led-upgrade = &led_red_sys; ++ }; ++ + memory { + device_type = "memory"; + reg = <0x00000000 0x10000000>; +@@ -96,14 +103,16 @@ + gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>; + }; + +- led-6 { ++ led_green_sys: led-6 { ++ label = "nsa310s:green:sys"; + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "default-on"; + }; + +- led-7 { ++ led_red_sys: led-7 { ++ label = "nsa310s:red:sys"; + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>; diff --git a/target/linux/kirkwood/patches-6.1/116-4i-edge-200.patch b/target/linux/kirkwood/patches-6.1/116-4i-edge-200.patch new file mode 100644 index 0000000000..ffc46c29dc --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/116-4i-edge-200.patch @@ -0,0 +1,34 @@ +--- a/arch/arm/boot/dts/kirkwood-4i-edge-200.dts ++++ b/arch/arm/boot/dts/kirkwood-4i-edge-200.dts +@@ -20,6 +20,13 @@ + reg = <0x00000000 0x20000000>; + }; + ++ aliases { ++ led-boot = &led_status_green; ++ led-failsafe = &led_status_orange; ++ led-running = &led_status_green; ++ led-upgrade = &led_status_orange; ++ }; ++ + chosen { + bootargs = "console=ttyS0,115200n8"; + stdout-path = &uart0; +@@ -37,13 +44,15 @@ + linux,default-trigger = "mmc0"; + }; + +- led-2 { ++ led_status_orange: led-2 { ++ label = "orange:status"; + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>; + }; + +- led-3 { ++ led_status_green: led-3 { ++ label = "green:status"; + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>; diff --git a/target/linux/kirkwood/patches-6.1/201-enable-sata-port-specific-led-triggers.patch b/target/linux/kirkwood/patches-6.1/201-enable-sata-port-specific-led-triggers.patch new file mode 100644 index 0000000000..35db065727 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/201-enable-sata-port-specific-led-triggers.patch @@ -0,0 +1,10 @@ +--- a/arch/arm/mach-mvebu/Kconfig ++++ b/arch/arm/mach-mvebu/Kconfig +@@ -116,6 +116,7 @@ config MACH_DOVE + config MACH_KIRKWOOD + bool "Marvell Kirkwood boards" + depends on ARCH_MULTI_V5 ++ select ARCH_WANT_LIBATA_LEDS + select CPU_FEROCEON + select GPIOLIB + select KIRKWOOD_CLK diff --git a/target/linux/kirkwood/patches-6.1/202-linksys-find-active-root.patch b/target/linux/kirkwood/patches-6.1/202-linksys-find-active-root.patch new file mode 100644 index 0000000000..515bb21707 --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/202-linksys-find-active-root.patch @@ -0,0 +1,62 @@ +The WRT1900AC among other Linksys routers uses a dual-firmware layout. +Dynamically rename the active partition to "ubi". + +Signed-off-by: Imre Kaloz +--- +--- a/drivers/mtd/parsers/ofpart_core.c ++++ b/drivers/mtd/parsers/ofpart_core.c +@@ -38,6 +38,8 @@ static bool node_has_compatible(struct d + return of_get_property(pp, "compatible", NULL); + } + ++static int mangled_rootblock; ++ + static int parse_fixed_partitions(struct mtd_info *master, + const struct mtd_partition **pparts, + struct mtd_part_parser_data *data) +@@ -47,6 +49,7 @@ static int parse_fixed_partitions(struct + struct mtd_partition *parts; + struct device_node *mtd_node; + struct device_node *ofpart_node; ++ const char *owrtpart = "ubi"; + const char *partname; + struct device_node *pp; + int nr_parts, i, ret = 0; +@@ -133,9 +136,15 @@ static int parse_fixed_partitions(struct + parts[i].size = of_read_number(reg + a_cells, s_cells); + parts[i].of_node = pp; + +- partname = of_get_property(pp, "label", &len); +- if (!partname) +- partname = of_get_property(pp, "name", &len); ++ if (mangled_rootblock && (i == mangled_rootblock)) { ++ partname = owrtpart; ++ } else { ++ partname = of_get_property(pp, "label", &len); ++ ++ if (!partname) ++ partname = of_get_property(pp, "name", &len); ++ } ++ + parts[i].name = partname; + + if (of_get_property(pp, "read-only", &len)) +@@ -252,6 +261,18 @@ static int __init ofpart_parser_init(voi + return 0; + } + ++static int __init active_root(char *str) ++{ ++ get_option(&str, &mangled_rootblock); ++ ++ if (!mangled_rootblock) ++ return 1; ++ ++ return 1; ++} ++ ++__setup("mangled_rootblock=", active_root); ++ + static void __exit ofpart_parser_exit(void) + { + deregister_mtd_parser(&ofpart_parser); diff --git a/target/linux/kirkwood/patches-6.1/203-blackarmor-nas220.patch b/target/linux/kirkwood/patches-6.1/203-blackarmor-nas220.patch new file mode 100644 index 0000000000..e04a28206a --- /dev/null +++ b/target/linux/kirkwood/patches-6.1/203-blackarmor-nas220.patch @@ -0,0 +1,99 @@ +--- a/arch/arm/boot/dts/kirkwood-blackarmor-nas220.dts ++++ b/arch/arm/boot/dts/kirkwood-blackarmor-nas220.dts +@@ -17,6 +17,13 @@ + compatible = "seagate,blackarmor-nas220","marvell,kirkwood-88f6192", + "marvell,kirkwood"; + ++ aliases { ++ led-boot = &led_status_amber; ++ led-failsafe = &led_status_amber; ++ led-running = &led_status_blue; ++ led-upgrade = &led_status_amber; ++ }; ++ + memory { /* 128 MB */ + device_type = "memory"; + reg = <0x00000000 0x8000000>; +@@ -36,14 +43,14 @@ + compatible = "gpio-keys"; + + reset { +- label = "Reset"; +- linux,code = ; ++ label = "Reset Button"; ++ linux,code = ; + gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>; + }; + +- button { +- label = "Power"; +- linux,code = ; ++ power { ++ label = "Power Button"; ++ linux,code = ; + gpios = <&gpio0 26 GPIO_ACTIVE_LOW>; + }; + }; +@@ -51,11 +58,27 @@ + gpio-leds { + compatible = "gpio-leds"; + +- blue-power { ++ led_power_blue: power_blue { + label = "nas220:blue:power"; + gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "default-on"; + }; ++ ++ disk_blue { ++ label = "nas220:blue:disk"; ++ gpios = <&gpio0 16 GPIO_ACTIVE_LOW>; ++ linux,default-trigger = "disk-activity"; ++ }; ++ ++ led_status_blue: status_blue { ++ label = "nas220:blue:status"; ++ gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_status_amber: status_amber { ++ label = "nas220:amber:status"; ++ gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>; ++ }; + }; + + regulators { +@@ -153,6 +176,33 @@ + + &nand { + status = "okay"; ++ ++ partitions { ++ compatible = "fixed-partitions"; ++ ++ partition@0 { ++ label = "uboot"; ++ reg = <0x0 0xa0000>; ++ read-only; ++ }; ++ ++ partition@a0000 { ++ label = "uboot-env"; ++ reg = <0xa0000 0x10000>; ++ read-only; ++ }; ++ ++ partition@b0000 { ++ label = "reserved"; ++ reg = <0xb0000 0x10000>; ++ read-only; ++ }; ++ ++ partition@c0000 { ++ label = "ubi"; ++ reg = <0xc0000 0x1e80000>; ++ }; ++ }; + }; + + &mdio { From bcbb21bb6bd9c10080fc06723dadd0afded85876 Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Tue, 14 Nov 2023 09:09:58 +0100 Subject: [PATCH 08/23] kirkwood: copy config 5.15 to 6.1 Config was just copied. Signed-off-by: Pawel Dembicki --- target/linux/kirkwood/config-6.1 | 293 +++++++++++++++++++++++++++++++ 1 file changed, 293 insertions(+) create mode 100644 target/linux/kirkwood/config-6.1 diff --git a/target/linux/kirkwood/config-6.1 b/target/linux/kirkwood/config-6.1 new file mode 100644 index 0000000000..ce19fce6ee --- /dev/null +++ b/target/linux/kirkwood/config-6.1 @@ -0,0 +1,293 @@ +CONFIG_ALIGNMENT_TRAP=y +CONFIG_ARCH_32BIT_OFF_T=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MULTIPLATFORM=y +CONFIG_ARCH_MULTI_CPU_AUTO=y +# CONFIG_ARCH_MULTI_V4 is not set +# CONFIG_ARCH_MULTI_V4T is not set +CONFIG_ARCH_MULTI_V4_V5=y +CONFIG_ARCH_MULTI_V5=y +CONFIG_ARCH_MVEBU=y +CONFIG_ARCH_NR_GPIO=0 +CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARM=y +# CONFIG_ARMADA_37XX_WATCHDOG is not set +# CONFIG_ARMADA_THERMAL is not set +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_HAS_SG_CHAIN=y +# CONFIG_ARM_KIRKWOOD_CPUIDLE is not set +CONFIG_ARM_L1_CACHE_SHIFT=5 +# CONFIG_ARM_MVEBU_V7_CPUIDLE is not set +CONFIG_ARM_PATCH_PHYS_VIRT=y +# CONFIG_ARM_THUMB is not set +CONFIG_ARM_UNWIND=y +CONFIG_ATA=y +CONFIG_ATAGS=y +CONFIG_ATA_LEDS=y +CONFIG_AUTO_ZRELADDR=y +CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_MQ_PCI=y +CONFIG_CACHE_FEROCEON_L2=y +# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set +CONFIG_CLKSRC_MMIO=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_COMMON_CLK=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_CPU_32v5=y +CONFIG_CPU_ABRT_EV5T=y +CONFIG_CPU_CACHE_VIVT=y +CONFIG_CPU_COPY_FEROCEON=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y +CONFIG_CPU_FEROCEON=y +# CONFIG_CPU_FEROCEON_OLD_ID is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_PABRT_LEGACY=y +CONFIG_CPU_PM=y +CONFIG_CPU_THERMAL=y +CONFIG_CPU_THUMB_CAPABLE=y +CONFIG_CPU_TLB_FEROCEON=y +CONFIG_CPU_USE_DOMAINS=y +CONFIG_CRC16=y +# CONFIG_CRC32_SARWATE is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_DEV_MARVELL=y +CONFIG_CRYPTO_DEV_MARVELL_CESA=y +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_LIB_DES=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_ZSTD=y +CONFIG_DEBUG_LL=y +CONFIG_DEBUG_LL_INCLUDE="debug/8250.S" +CONFIG_DEBUG_MVEBU_UART0_ALTERNATE=y +# CONFIG_DEBUG_MVEBU_UART1_ALTERNATE is not set +CONFIG_DEBUG_UART_8250=y +CONFIG_DEBUG_UART_8250_SHIFT=2 +CONFIG_DEBUG_UART_PHYS=0xf1012000 +CONFIG_DEBUG_UART_VIRT=0xfed12000 +CONFIG_DEBUG_UNCOMPRESS=y +CONFIG_DMA_OPS=y +CONFIG_DMA_REMAP=y +CONFIG_DNOTIFY=y +CONFIG_DTC=y +# CONFIG_EARLY_PRINTK is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_FIXED_PHY=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_FORCE_PCI=y +CONFIG_FWNODE_MDIO=y +CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PINCONF=y +CONFIG_GENERIC_SCHED_CLOCK=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GLOB=y +CONFIG_GPIOLIB_IRQCHIP=y +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_MVEBU=y +CONFIG_GRO_CELLS=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HWMON=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_OMAP=y +CONFIG_HZ_FIXED=0 +CONFIG_HZ_PERIODIC=y +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MV64XXX=y +# CONFIG_I2C_PXA is not set +CONFIG_INITRAMFS_SOURCE="" +CONFIG_IRQCHIP=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_WORK=y +CONFIG_KIRKWOOD_CLK=y +CONFIG_KIRKWOOD_THERMAL=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_NETXBIG=y +CONFIG_LEDS_NS2=y +CONFIG_LIBFDT=y +CONFIG_LOCK_DEBUGGING_SUPPORT=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_MACH_KIRKWOOD=y +CONFIG_MACH_MVEBU_ANY=y +CONFIG_MANGLE_BOOTARGS=y +CONFIG_MARVELL_PHY=y +CONFIG_MDIO_BUS=y +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_DEVRES=y +CONFIG_MEMFD_CREATE=y +CONFIG_MIGRATION=y +CONFIG_MODULES_USE_ELF_REL=y +# CONFIG_MTD_CFI is not set +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_NAND_CORE=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_ECC_SW_HAMMING=y +# CONFIG_MTD_NAND_MARVELL is not set +CONFIG_MTD_NAND_ORION=y +CONFIG_MTD_RAW_NAND=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPLIT_FIRMWARE=y +CONFIG_MTD_SPLIT_UIMAGE_FW=y +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_BLOCK=y +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MV643XX_ETH=y +CONFIG_MVEBU_CLK_COMMON=y +CONFIG_MVEBU_MBUS=y +CONFIG_MVMDIO=y +# CONFIG_MVNETA is not set +# CONFIG_MVPP2 is not set +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_KUSER_HELPERS=y +CONFIG_NEED_PER_CPU_KM=y +CONFIG_NET_DEVLINK=y +CONFIG_NET_DSA=y +CONFIG_NET_DSA_MV88E6XXX=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_DSA_COMMON=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_SELFTESTS=y +CONFIG_NET_SWITCHDEV=y +CONFIG_NLS=y +CONFIG_NVMEM=y +CONFIG_OF=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_FLATTREE=y +CONFIG_OF_GPIO=y +CONFIG_OF_IRQ=y +CONFIG_OF_KOBJ=y +CONFIG_OF_MDIO=y +CONFIG_OLD_SIGACTION=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_ORION_IRQCHIP=y +CONFIG_ORION_TIMER=y +CONFIG_ORION_WATCHDOG=y +CONFIG_OUTER_CACHE=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PCI=y +CONFIG_PCI_BRIDGE_EMUL=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_MVEBU=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_PHYLIB=y +CONFIG_PHYLINK=y +# CONFIG_PHY_MVEBU_A3700_UTMI is not set +# CONFIG_PHY_MVEBU_A38X_COMPHY is not set +CONFIG_PHY_MVEBU_SATA=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_KIRKWOOD=y +CONFIG_PINCTRL_MVEBU=y +# CONFIG_PINCTRL_SINGLE is not set +CONFIG_PINCTRL_SX150X=y +CONFIG_PLAT_ORION=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_LINKSTATION=y +CONFIG_POWER_SUPPLY=y +CONFIG_PTP_1588_CLOCK_OPTIONAL=y +CONFIG_RATIONAL=y +CONFIG_REGMAP=y +CONFIG_REGMAP_MMIO=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_MV=y +CONFIG_RTC_I2C_AND_SPI=y +CONFIG_RTC_MC146818_LIB=y +CONFIG_SCSI=y +CONFIG_SCSI_COMMON=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_MCTRL_GPIO=y +# CONFIG_SERIAL_MVEBU_UART is not set +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SGL_ALLOC=y +CONFIG_SG_POOL=y +CONFIG_SOC_BUS=y +CONFIG_SPARSE_IRQ=y +CONFIG_SPI=y +# CONFIG_SPI_ARMADA_3700 is not set +CONFIG_SPI_MASTER=y +CONFIG_SPI_MEM=y +CONFIG_SPI_ORION=y +CONFIG_SPLIT_PTLOCK_CPUS=999999 +CONFIG_SRAM=y +CONFIG_SRAM_EXEC=y +CONFIG_SRCU=y +CONFIG_SWPHY=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_THERMAL=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_TINY_SRCU=y +CONFIG_UBIFS_FS=y +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +CONFIG_UNWINDER_ARM=y +CONFIG_USB=y +CONFIG_USB_COMMON=y +CONFIG_USB_LED_TRIG=y +CONFIG_USB_SUPPORT=y +CONFIG_USE_OF=y +# CONFIG_VFP is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_WAN=y +CONFIG_WATCHDOG_CORE=y +CONFIG_XXHASH=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y From c8550de0164655c53cf45a210c1f3f1eec591d6b Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Tue, 14 Nov 2023 11:16:40 +0100 Subject: [PATCH 09/23] kirkwood: kernel: refresh 6.1 patches Kernel patches copied from 5.15 need to be refreshed. Signed-off-by: Pawel Dembicki --- .../002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch | 2 +- .../003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch | 2 +- .../201-enable-sata-port-specific-led-triggers.patch | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/target/linux/kirkwood/patches-6.1/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch b/target/linux/kirkwood/patches-6.1/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch index b745ea104f..09e71813cd 100644 --- a/target/linux/kirkwood/patches-6.1/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch +++ b/target/linux/kirkwood/patches-6.1/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch @@ -29,7 +29,7 @@ Signed-off-by: Gregory CLEMENT --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -320,6 +320,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \ +@@ -356,6 +356,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \ kirkwood-ns2mini.dtb \ kirkwood-nsa310.dtb \ kirkwood-nsa310a.dtb \ diff --git a/target/linux/kirkwood/patches-6.1/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch b/target/linux/kirkwood/patches-6.1/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch index 4b0f46bb6d..cde281526b 100644 --- a/target/linux/kirkwood/patches-6.1/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch +++ b/target/linux/kirkwood/patches-6.1/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch @@ -31,7 +31,7 @@ Signed-off-by: Gregory CLEMENT --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -265,6 +265,7 @@ dtb-$(CONFIG_ARCH_KEYSTONE) += \ +@@ -300,6 +300,7 @@ dtb-$(CONFIG_ARCH_KEYSTONE) += \ keystone-k2g-evm.dtb \ keystone-k2g-ice.dtb dtb-$(CONFIG_MACH_KIRKWOOD) += \ diff --git a/target/linux/kirkwood/patches-6.1/201-enable-sata-port-specific-led-triggers.patch b/target/linux/kirkwood/patches-6.1/201-enable-sata-port-specific-led-triggers.patch index 35db065727..3db362de9f 100644 --- a/target/linux/kirkwood/patches-6.1/201-enable-sata-port-specific-led-triggers.patch +++ b/target/linux/kirkwood/patches-6.1/201-enable-sata-port-specific-led-triggers.patch @@ -1,6 +1,6 @@ --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig -@@ -116,6 +116,7 @@ config MACH_DOVE +@@ -115,6 +115,7 @@ config MACH_DOVE config MACH_KIRKWOOD bool "Marvell Kirkwood boards" depends on ARCH_MULTI_V5 From 9c673d34a0fd0b51c27184237c9c043fef7c6d5c Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Tue, 14 Nov 2023 11:17:13 +0100 Subject: [PATCH 10/23] kirkwood: 6.1: refresh kernel config Done by 'make kernel_oldconfig'. Signed-off-by: Pawel Dembicki --- target/linux/kirkwood/config-6.1 | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/target/linux/kirkwood/config-6.1 b/target/linux/kirkwood/config-6.1 index ce19fce6ee..6d21143e96 100644 --- a/target/linux/kirkwood/config-6.1 +++ b/target/linux/kirkwood/config-6.1 @@ -21,8 +21,7 @@ CONFIG_ARM=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y -CONFIG_ARM_CRYPTO=y -CONFIG_ARM_HAS_SG_CHAIN=y +CONFIG_ARM_HAS_GROUP_RELOCS=y # CONFIG_ARM_KIRKWOOD_CPUIDLE is not set CONFIG_ARM_L1_CACHE_SHIFT=5 # CONFIG_ARM_MVEBU_V7_CPUIDLE is not set @@ -38,9 +37,13 @@ CONFIG_BLK_DEV_SD=y CONFIG_BLK_MQ_PCI=y CONFIG_CACHE_FEROCEON_L2=y # CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set +CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_CLKSRC_MMIO=y CONFIG_CLONE_BACKWARDS=y CONFIG_COMMON_CLK=y +CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 CONFIG_COMPAT_32BIT_TIME=y CONFIG_CPU_32v5=y CONFIG_CPU_ABRT_EV5T=y @@ -52,6 +55,7 @@ CONFIG_CPU_FEROCEON=y # CONFIG_CPU_FEROCEON_OLD_ID is not set CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_CPU_PABRT_LEGACY=y CONFIG_CPU_PM=y CONFIG_CPU_THERMAL=y @@ -70,9 +74,12 @@ CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y CONFIG_CRYPTO_LIB_DES=y +CONFIG_CRYPTO_LIB_SHA1=y +CONFIG_CRYPTO_LIB_UTILS=y CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_ZSTD=y +CONFIG_DEBUG_INFO=y CONFIG_DEBUG_LL=y CONFIG_DEBUG_LL_INCLUDE="debug/8250.S" CONFIG_DEBUG_MVEBU_UART0_ALTERNATE=y @@ -81,19 +88,20 @@ CONFIG_DEBUG_UART_8250=y CONFIG_DEBUG_UART_8250_SHIFT=2 CONFIG_DEBUG_UART_PHYS=0xf1012000 CONFIG_DEBUG_UART_VIRT=0xfed12000 -CONFIG_DEBUG_UNCOMPRESS=y CONFIG_DMA_OPS=y -CONFIG_DMA_REMAP=y CONFIG_DNOTIFY=y CONFIG_DTC=y # CONFIG_EARLY_PRINTK is not set CONFIG_EDAC_ATOMIC_SCRUB=y CONFIG_EDAC_SUPPORT=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y CONFIG_FIXED_PHY=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_FORCE_PCI=y CONFIG_FWNODE_MDIO=y CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_FW_LOADER_SYSFS=y +CONFIG_GCC11_NO_ARRAY_BOUNDS=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_ATOMIC64=y CONFIG_GENERIC_BUG=y @@ -118,7 +126,6 @@ CONFIG_GPIOLIB_IRQCHIP=y CONFIG_GPIO_CDEV=y CONFIG_GPIO_MVEBU=y CONFIG_GRO_CELLS=y -CONFIG_HANDLE_DOMAIN_IRQ=y CONFIG_HARDIRQS_SW_RESEND=y CONFIG_HAS_DMA=y CONFIG_HAS_IOMEM=y @@ -135,6 +142,7 @@ CONFIG_I2C_MV64XXX=y # CONFIG_I2C_PXA is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_IRQCHIP=y +CONFIG_IRQSTACKS=y CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_FORCED_THREADING=y CONFIG_IRQ_WORK=y @@ -206,6 +214,9 @@ CONFIG_ORION_TIMER=y CONFIG_ORION_WATCHDOG=y CONFIG_OUTER_CACHE=y CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PAGE_POOL=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y CONFIG_PCI=y CONFIG_PCI_BRIDGE_EMUL=y CONFIG_PCI_DOMAINS=y @@ -228,7 +239,9 @@ CONFIG_POWER_RESET=y CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_LINKSTATION=y CONFIG_POWER_SUPPLY=y +CONFIG_PREEMPT_NONE_BUILD=y CONFIG_PTP_1588_CLOCK_OPTIONAL=y +CONFIG_RANDSTRUCT_NONE=y CONFIG_RATIONAL=y CONFIG_REGMAP=y CONFIG_REGMAP_MMIO=y @@ -248,6 +261,7 @@ CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SGL_ALLOC=y CONFIG_SG_POOL=y CONFIG_SOC_BUS=y +CONFIG_SOFTIRQ_ON_OWN_STACK=y CONFIG_SPARSE_IRQ=y CONFIG_SPI=y # CONFIG_SPI_ARMADA_3700 is not set @@ -266,6 +280,7 @@ CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_HWMON=y CONFIG_THERMAL_OF=y +CONFIG_THREAD_INFO_IN_TASK=y CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_TIMER_OF=y CONFIG_TIMER_PROBE=y @@ -289,5 +304,6 @@ CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_INFLATE=y +CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y CONFIG_ZSTD_DECOMPRESS=y From 8613353b5e7348d5c04ec7d04e248309f708687a Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Tue, 14 Nov 2023 11:18:36 +0100 Subject: [PATCH 11/23] kirkwood: add 6.1 kernel as testing It allow to test 6.1 kernel in Kirkwood. Signed-off-by: Pawel Dembicki --- target/linux/kirkwood/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/kirkwood/Makefile b/target/linux/kirkwood/Makefile index 133208dd25..54f26281a4 100644 --- a/target/linux/kirkwood/Makefile +++ b/target/linux/kirkwood/Makefile @@ -12,6 +12,7 @@ CPU_TYPE:=xscale SUBTARGETS:=generic KERNEL_PATCHVER:=5.15 +KERNEL_TESTING_PATCHVER:=6.1 include $(INCLUDE_DIR)/target.mk From aab21ee0552019c4bf1c7b829aea2992b59fb9bf Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Tue, 31 Oct 2023 08:14:21 +0100 Subject: [PATCH 12/23] tools: add ledumon and ledhwbmon packages ledumon: This program creates a new userspace LED class device and monitors it. For this it es using the kmod-leds-uled.ko kernel module. ledhwbmon: This program monitors LED brightness level changes having its origin in hardware/firmware, i.e. outside of kernel control. Signed-off-by: Florian Eckert --- package/devel/leds/Makefile | 74 +++++++++++++++++++++++++++++++++++++ target/sdk/Makefile | 1 + 2 files changed, 75 insertions(+) create mode 100644 package/devel/leds/Makefile diff --git a/package/devel/leds/Makefile b/package/devel/leds/Makefile new file mode 100644 index 0000000000..47b9674c4f --- /dev/null +++ b/package/devel/leds/Makefile @@ -0,0 +1,74 @@ +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=leds +PKG_VERSION:=$(LINUX_VERSION) +PKG_RELEASE:=1 + +PKG_BUILD_PARALLEL:=1 +PKG_MAINTAINER:=Florian Eckert +PKG_LICENSE:=GPL-2.0-only + +include $(INCLUDE_DIR)/package.mk + +define Package/leds/default + SECTION:=devel + CATEGORY:=Development + VERSION:=$(LINUX_VERSION)-$(PKG_RELEASE) + URL:=http://www.kernel.org +endef + +define Package/ledumon + $(Package/leds/default) + TITLE:=Monitoring userspace LEDs + DEPENDS:=+kmod-leds-uleds +endef + +define Package/ledumon/description + This program creates a new userspace LED class device and monitors it. + A timestamp and brightness value is printed each time the brightness + changes. +endef + +define Package/ledhwbmon + $(Package/leds/default) + TITLE:=Monitoring hardware controlled LED brightness +endef + +define Package/ledhwbmon/description + This program monitors LED brightness level changes having its origin + in hardware/firmware, i.e. outside of kernel control. A timestamp and + brightness value is printed each time the brightness changes. +endef + +MAKE_FLAGS = \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + CC="$(TARGET_CC)" \ + LD="$(TARGET_CROSS)ld" \ + EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS) -static" \ + $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \ + prefix=/usr + +define Build/Compile + -$(MAKE) clean \ + -C $(LINUX_DIR)/tools/leds + +$(MAKE_FLAGS) $(MAKE) \ + -C $(LINUX_DIR)/tools/leds +endef + +define Package/ledumon/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(LINUX_DIR)/tools/leds/uledmon \ + $(1)/usr/bin/ledumon +endef + +define Package/ledhwbmon/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(LINUX_DIR)/tools/leds/led_hw_brightness_mon \ + $(1)/usr/bin/ledhwbmon +endef + +$(eval $(call BuildPackage,ledumon)) +$(eval $(call BuildPackage,ledhwbmon)) diff --git a/target/sdk/Makefile b/target/sdk/Makefile index fbe35170c1..c57a451617 100644 --- a/target/sdk/Makefile +++ b/target/sdk/Makefile @@ -86,6 +86,7 @@ KERNEL_FILES := $(patsubst $(TOPDIR)/%,%,$(wildcard $(addprefix $(LINUX_DIR)/,$( # USERSPACE_UTILS_FILES := \ tools/build \ + tools/leds \ tools/power/cpupower \ tools/scripts \ tools/spi \ From 1b2d625cfbc2b338f4b836e59c10777b7dba27b6 Mon Sep 17 00:00:00 2001 From: Lech Perczak Date: Wed, 15 Nov 2023 03:22:56 +0100 Subject: [PATCH 13/23] imx: enable CONFIG_REGULATOR_PFUZE100 globally PFUZE100 series of PMICs are used on boards supported by both subtargets. Enable this for whole i.MX target. Signed-off-by: Lech Perczak --- target/linux/imx/config-5.15 | 1 + target/linux/imx/cortexa9/config-default | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/imx/config-5.15 b/target/linux/imx/config-5.15 index 7caaacbed7..9966ad4487 100644 --- a/target/linux/imx/config-5.15 +++ b/target/linux/imx/config-5.15 @@ -345,6 +345,7 @@ CONFIG_REGMAP_MMIO=y CONFIG_REGULATOR=y CONFIG_REGULATOR_ANATOP=y CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_PFUZE100=y CONFIG_RESET_CONTROLLER=y CONFIG_RFS_ACCEL=y CONFIG_RPS=y diff --git a/target/linux/imx/cortexa9/config-default b/target/linux/imx/cortexa9/config-default index 7bd02264b2..5757c8c8be 100644 --- a/target/linux/imx/cortexa9/config-default +++ b/target/linux/imx/cortexa9/config-default @@ -43,7 +43,6 @@ CONFIG_PM_GENERIC_DOMAINS=y CONFIG_PM_GENERIC_DOMAINS_OF=y CONFIG_REGMAP_I2C=y CONFIG_REGULATOR_LTC3676=y -CONFIG_REGULATOR_PFUZE100=y CONFIG_RTC_DRV_DS1307=y CONFIG_RTC_DRV_DS1672=y CONFIG_SATA_HOST=y From 51a50c73dd9d38181de72968b81ed24e6ddb40b9 Mon Sep 17 00:00:00 2001 From: Lech Perczak Date: Wed, 15 Nov 2023 03:03:26 +0100 Subject: [PATCH 14/23] imx: imx7d-pico-pi: add CPU supply nodes to device tree Attach sw1a as "cpu-supply" to both CPUs in order to cpufreq driver to prove successfully. Signed-off-by: Lech Perczak --- ...-nxp-imx7d-pico-add-cpu-supply-nodes.patch | 43 +++++++++++++++++++ ...-nxp-imx7d-pico-add-cpu-supply-nodes.patch | 43 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 target/linux/generic/pending-5.15/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch create mode 100644 target/linux/generic/pending-6.1/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch diff --git a/target/linux/generic/pending-5.15/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch b/target/linux/generic/pending-5.15/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch new file mode 100644 index 0000000000..186b052d40 --- /dev/null +++ b/target/linux/generic/pending-5.15/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch @@ -0,0 +1,43 @@ +From 89a74fc5d367441bf4912e9158f0640ea3494b9e Mon Sep 17 00:00:00 2001 +From: Lech Perczak +Date: Fri, 17 Nov 2023 21:33:04 +0100 +Subject: [PATCH] ARM: dts: nxp: imx7d-pico: add cpu-supply nodes + +The PICO-IMX7D SoM has the usual power supply configuration using +output sw1a of PF3000 PMIC, which was defined in downstream derivative +of linux-imx (see link) in the sources for "Android Things" devkit. +It is required to support CPU frequency scaling. + +Map the respective "cpu-supply" nodes of each core to sw1a of the PMIC. + +Enabling them causes cpufreq-dt, and imx-thermal drivers to probe +successfully, and CPU frequency scaling to function. + +Link: https://android.googlesource.com/platform/hardware/bsp/kernel/nxp/imx-v4.1/+/o-iot-preview-5/arch/arm/boot/dts/imx7d-pico.dtsi#849 + +Cc: Fabio Estevam +Cc: Shawn Guo +Cc: Sascha Hauer + +Signed-off-by: Lech Perczak +--- + arch/arm/boot/dts/imx7d-pico.dtsi | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/arch/arm/boot/dts/imx7d-pico.dtsi ++++ b/arch/arm/boot/dts/imx7d-pico.dtsi +@@ -108,6 +108,14 @@ + assigned-clock-rates = <0>, <32768>; + }; + ++&cpu0 { ++ cpu-supply = <&sw1a_reg>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&sw1a_reg>; ++}; ++ + &ecspi3 { + cs-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>; + pinctrl-names = "default"; diff --git a/target/linux/generic/pending-6.1/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch b/target/linux/generic/pending-6.1/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch new file mode 100644 index 0000000000..e25389363f --- /dev/null +++ b/target/linux/generic/pending-6.1/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch @@ -0,0 +1,43 @@ +From d0562705bcd4cb9849156f095b2af0ec1bb53b56 Mon Sep 17 00:00:00 2001 +From: Lech Perczak +Date: Fri, 17 Nov 2023 21:33:04 +0100 +Subject: [PATCH] ARM: dts: nxp: imx7d-pico: add cpu-supply nodes + +The PICO-IMX7D SoM has the usual power supply configuration using +output sw1a of PF3000 PMIC, which was defined in downstream derivative +of linux-imx (see link) in the sources for "Android Things" devkit. +It is required to support CPU frequency scaling. + +Map the respective "cpu-supply" nodes of each core to sw1a of the PMIC. + +Enabling them causes cpufreq-dt, and imx-thermal drivers to probe +successfully, and CPU frequency scaling to function. + +Link: https://android.googlesource.com/platform/hardware/bsp/kernel/nxp/imx-v4.1/+/o-iot-preview-5/arch/arm/boot/dts/imx7d-pico.dtsi#849 + +Cc: Fabio Estevam +Cc: Shawn Guo +Cc: Sascha Hauer + +Signed-off-by: Lech Perczak +--- + arch/arm/boot/dts/imx7d-pico.dtsi | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/arch/arm/boot/dts/imx7d-pico.dtsi ++++ b/arch/arm/boot/dts/imx7d-pico.dtsi +@@ -108,6 +108,14 @@ + assigned-clock-rates = <0>, <32768>; + }; + ++&cpu0 { ++ cpu-supply = <&sw1a_reg>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&sw1a_reg>; ++}; ++ + &ecspi3 { + cs-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>; + pinctrl-names = "default"; From f6d739e0e0238da9ede88a0149c4715f129688fe Mon Sep 17 00:00:00 2001 From: Lech Perczak Date: Wed, 15 Nov 2023 01:53:49 +0100 Subject: [PATCH 15/23] imx: enable CONFIG_CPU_FREQ_THERMAL Without that, imx_thermal fails to initialize on deferred probe, because it fails to register cpufreq cooling device. Signed-off-by: Lech Perczak --- target/linux/imx/config-5.15 | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/imx/config-5.15 b/target/linux/imx/config-5.15 index 9966ad4487..d3291a5997 100644 --- a/target/linux/imx/config-5.15 +++ b/target/linux/imx/config-5.15 @@ -65,6 +65,7 @@ CONFIG_CPU_COPY_V6=y CONFIG_CPU_CP15=y CONFIG_CPU_CP15_MMU=y CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_THERMAL=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_ATTR_SET=y CONFIG_CPU_FREQ_GOV_COMMON=y From 807acbce66c34596ac80cad8ea2a3f170f58429c Mon Sep 17 00:00:00 2001 From: "Eric J. Anderson" Date: Mon, 4 Dec 2023 22:41:47 +0100 Subject: [PATCH 16/23] ath79: make boot-leds service executable This service was unfunctional due to not having its executable bit set. Fixes #13500. Signed-off-by: Eric J. Anderson --- target/linux/ath79/nand/base-files/etc/init.d/boot-leds | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 target/linux/ath79/nand/base-files/etc/init.d/boot-leds diff --git a/target/linux/ath79/nand/base-files/etc/init.d/boot-leds b/target/linux/ath79/nand/base-files/etc/init.d/boot-leds old mode 100644 new mode 100755 From 1438bc583c671120ddd38f4eb2dc786ec53e207c Mon Sep 17 00:00:00 2001 From: Furong Xu Date: Tue, 12 Dec 2023 16:12:12 +0800 Subject: [PATCH 17/23] rockchip: fix eth1 irq affinity NanoPi R2S and some other RK3328 boards use RTL8152 as eth1, which is connected to xhci-hcd:usb1 but not xhci-hcd:usb3 |:~# cat /proc/interrupts | CPU0 CPU1 CPU2 CPU3 | 11: 53449 171813 129595 87823 GICv2 30 Level arch_timer | 18: 0 0 0 0 GICv2 94 Level rockchip_usb2phy | 19: 0 0 0 0 GICv2 32 Level ff1f0000.dma-controller | 20: 0 0 0 0 GICv2 33 Level ff1f0000.dma-controller | 21: 4 0 0 0 GICv2 89 Level ttyS2 | 22: 0 0 0 0 GICv2 43 Level ff350800.iommu | 23: 0 0 0 0 GICv2 106 Level ff360480.iommu | 24: 0 1417932 0 0 GICv2 56 Level eth0 | 25: 334 0 0 4422194 GICv2 99 Level xhci-hcd:usb1 | 26: 0 0 0 0 GICv2 48 Level ehci_hcd:usb3 | 27: 0 0 0 0 GICv2 49 Level ohci_hcd:usb2 | 28: 3285 0 0 0 GICv2 69 Level ff160000.i2c | 29: 0 0 0 0 rockchip_gpio_irq 24 Level rk805 | 30: 0 0 0 0 rk805 0 Edge rk805_pwrkey_fall | 35: 0 0 0 0 rk805 5 Edge RTC alarm | 37: 0 0 0 0 rk805 7 Edge rk805_pwrkey_rise | 38: 0 0 0 0 GICv2 90 Level rockchip_thermal | 39: 0 0 0 0 GICv2 72 Edge ff1a0000.watchdog | 40: 2601 0 0 0 GICv2 44 Level dw-mci | 41: 0 0 0 0 rockchip_gpio_irq 0 Edge keys |IPI0: 1559 1208 893 1131 Rescheduling interrupts |[...] Fix 40-net-smp-affinity to match the correct device irq name. Signed-off-by: Furong Xu --- .../armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity b/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity index 84064d4f8b..fc181dff46 100644 --- a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity +++ b/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity @@ -34,7 +34,7 @@ friendlyarm,nanopi-r2s|\ xunlong,orangepi-r1-plus|\ xunlong,orangepi-r1-plus-lts) set_interface_core 2 "eth0" - set_interface_core 4 "eth1" "xhci-hcd:usb3" + set_interface_core 4 "eth1" "xhci-hcd:usb1" ;; friendlyarm,nanopi-r4s) set_interface_core 10 "eth0" From 854739b32c7f2e56e5b79ee049749e60faece8f5 Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Sun, 22 Oct 2023 13:27:50 -0600 Subject: [PATCH 18/23] base-files: ipcalc.sh: Rewrite in pure shell Also add better error checking on input. Signed-off-by: Philip Prindeville --- package/base-files/files/bin/ipcalc.sh | 175 +++++++++--------- .../base-files/files/lib/functions/ipv4.sh | 140 ++++++++++++++ 2 files changed, 232 insertions(+), 83 deletions(-) create mode 100644 package/base-files/files/lib/functions/ipv4.sh diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh index 9b5e5accdc..0bd6edd07a 100755 --- a/package/base-files/files/bin/ipcalc.sh +++ b/package/base-files/files/bin/ipcalc.sh @@ -1,100 +1,109 @@ -#!/usr/bin/awk -f +#!/bin/sh -function bitcount(c) { - c=and(rshift(c, 1),0x55555555)+and(c,0x55555555) - c=and(rshift(c, 2),0x33333333)+and(c,0x33333333) - c=and(rshift(c, 4),0x0f0f0f0f)+and(c,0x0f0f0f0f) - c=and(rshift(c, 8),0x00ff00ff)+and(c,0x00ff00ff) - c=and(rshift(c,16),0x0000ffff)+and(c,0x0000ffff) - return c +. /lib/functions/ipv4.sh + +PROG="$(basename "$0")" + +usage() { + echo "Usage: $PROG address/prefix [ start limit ]" >&2 + exit 1 } -function ip2int(ip) { - ret=0 - n=split(ip,a,"\\.") - for (x=1;x<=n;x++) - ret=or(lshift(ret,8),a[x]) - return ret -} +if [ $# -eq 0 ]; then + usage +fi -function int2ip(ip,ret,x) { - ret=and(ip,255) - ip=rshift(ip,8) - for(;x<3;x++) { - ret=and(ip,255)"."ret - ip=rshift(ip,8) - } - return ret -} +case "$1" in +*/*.*) + str2ip ipaddr "${1%/*}" || exit 1 + str2ip netmask "${1#*/}" || exit 1 + shift + ;; +*/*) + str2ip ipaddr "${1%/*}" || exit 1 + prefix="${1#*/}" + assert_uint32 "$prefix" || exit 1 + if [ "$prefix" -gt 32 ]; then + printf "Prefix out of range (%s)\n" "$prefix" >&2 + exit 1 + fi + netmask=$(((0xffffffff << (32 - prefix)) & 0xffffffff)) + shift + ;; +*) + str2ip ipaddr "$1" || exit 1 + str2ip netmask "$2" || exit 1 + shift 2 + ;; +esac -function compl32(v) { - ret=xor(v, 0xffffffff) - return ret -} +if [ $# -ne 0 ] && [ $# -ne 2 ]; then + usage +fi -BEGIN { - slpos=index(ARGV[1],"/") - if (slpos != 0) { - # rearrange arguments to not use compound notation - ARGV[4]=ARGV[3] - ARGV[3]=ARGV[2] - ARGV[2]=substr(ARGV[1],slpos+1) - ARGV[1]=substr(ARGV[1],0,slpos-1) - } - ipaddr=ip2int(ARGV[1]) - dotpos=index(ARGV[2],".") - if (dotpos == 0) - netmask=compl32(2**(32-int(ARGV[2]))-1) - else - netmask=ip2int(ARGV[2]) +if ! bitcount prefix "$netmask"; then + printf "Invalid netmask (%s)\n" "$netmask" >&2 + exit 1 +fi - network=and(ipaddr,netmask) - prefix=32-bitcount(compl32(netmask)) +# complement of the netmask, i.e. the hostmask +hostmask=$((netmask ^ 0xffffffff)) +network=$((ipaddr & netmask)) +broadcast=$((network | hostmask)) - print "IP="int2ip(ipaddr) - print "NETMASK="int2ip(netmask) - print "NETWORK="int2ip(network) - if (prefix<=30) { - broadcast=or(network,compl32(netmask)) - print "BROADCAST="int2ip(broadcast) - } - print "PREFIX="prefix +ip2str IP "$ipaddr" +ip2str NETMASK "$netmask" +ip2str NETWORK "$network" - # range calculations: - # ipcalc +echo "IP=$IP" +echo "NETMASK=$NETMASK" +if [ "$prefix" -le 30 ]; then + ip2str BROADCAST "$broadcast" + echo "BROADCAST=$BROADCAST" +fi +echo "NETWORK=$NETWORK" +echo "PREFIX=$prefix" - if (ARGC <= 3) - exit(0) +[ $# -eq 0 ] && exit 0 - if (prefix<=30) - limit=network+1 - else - limit=network +if [ "$prefix" -le 30 ]; then + lower=$((network + 1)) +else + lower="$network" +fi - start=or(network,and(ip2int(ARGV[3]),compl32(netmask))) - if (startlimit) end=limit - if (end==ipaddr) end=ipaddr-1 +range="$2" +assert_uint32 "$range" || exit 1 +end=$((start + range - 1)) +[ "$end" -gt "$upper" ] && end="$upper" +[ "$end" -eq "$ipaddr" ] && end=$((end - 1)) - if (start>end) { - print "network ("int2ip(network)"/"prefix") too small" > "/dev/stderr" - exit(1) - } +if [ "$start" -gt "$end" ]; then + echo "network ($NETWORK/$prefix) too small" >&2 + exit 1 +fi - if (ipaddr >= start && ipaddr <= end) { - print "warning: ipaddr inside range - this might not be supported in future releases of Openwrt" > "/dev/stderr" - # turn this into an error after Openwrt 24 has been released - # exit(1) - } +ip2str START "$start" +ip2str END "$end" - print "START="int2ip(start) - print "END="int2ip(end) -} +if [ "$start" -le "$ipaddr" ] && [ "$ipaddr" -le "$end" ]; then + echo "error: address $IP inside range $START..$END" >&2 + exit 1 +fi + +echo "START=$START" +echo "END=$END" + +exit 0 diff --git a/package/base-files/files/lib/functions/ipv4.sh b/package/base-files/files/lib/functions/ipv4.sh new file mode 100644 index 0000000000..30ae480305 --- /dev/null +++ b/package/base-files/files/lib/functions/ipv4.sh @@ -0,0 +1,140 @@ +uint_max=4294967295 + +assert_uint32() { + local __n="$1" + + if [ -z "$__n" -o -n "${__n//[0-9]/}" ]; then + printf "Not a decimal integer (%s)\n" "$__n ">&2 + return 1 + fi + + if [ "$__n" -gt $uint_max ]; then + printf "Out of range (%s)\n" "$__n" >&2 + return 1 + fi + + if [ "$((__n + 0))" != "$__n" ]; then + printf "Not normalized notation (%s)\n" "$__n" >&2 + return 1 + fi + + return 0 +} + +bitcount() { + local __var="$1" __c="$2" + assert_uint32 "$__c" || return 1 + + __c=$((((__c >> 1) & 0x55555555) + (__c & 0x55555555))) + __c=$((((__c >> 2) & 0x33333333) + (__c & 0x33333333))) + __c=$((((__c >> 4) & 0x0f0f0f0f) + (__c & 0x0f0f0f0f))) + __c=$((((__c >> 8) & 0x00ff00ff) + (__c & 0x00ff00ff))) + __c=$((((__c >> 16) & 0x0000ffff) + (__c & 0x0000ffff))) + + export -- "$__var=$__c" +} + +# tedious but portable with busybox's limited shell +str2ip() { + local __var="$1" __ip="$2" __n __val=0 + + case "$__ip" in + [0-9].*) + __n="${__ip:0:1}" + __ip="${__ip:2}" + ;; + [1-9][0-9].*) + __n="${__ip:0:2}" + __ip="${__ip:3}" + ;; + 1[0-9][0-9].*|2[0-4][0-9].*|25[0-5].*) + __n="${__ip:0:3}" + __ip="${__ip:4}" + ;; + *) + printf "Not a dotted quad (%s)\n" "$2" >&2 + return 1 + ;; + esac + + __val=$((__n << 24)) + + case "$__ip" in + [0-9].*) + __n="${__ip:0:1}" + __ip="${__ip:2}" + ;; + [1-9][0-9].*) + __n="${__ip:0:2}" + __ip="${__ip:3}" + ;; + 1[0-9][0-9].*|2[0-4][0-9].*|25[0-5].*) + __n="${__ip:0:3}" + __ip="${__ip:4}" + ;; + *) + printf "Not a dotted quad (%s)\n" "$2" >&2 + return 1 + ;; + esac + + __val=$((__val + (__n << 16))) + + case "$__ip" in + [0-9].*) + __n="${__ip:0:1}" + __ip="${__ip:2}" + ;; + [1-9][0-9].*) + __n="${__ip:0:2}" + __ip="${__ip:3}" + ;; + 1[0-9][0-9].*|2[0-4][0-9].*|25[0-5].*) + __n="${__ip:0:3}" + __ip="${__ip:4}" + ;; + *) + printf "Not a dotted quad (%s)\n" "$2" >&2 + return 1 + ;; + esac + + __val=$((__val + (__n << 8))) + + case "$__ip" in + [0-9]) + __n="${__ip:0:1}" + __ip="${__ip:1}" + ;; + [1-9][0-9]) + __n="${__ip:0:2}" + __ip="${__ip:2}" + ;; + 1[0-9][0-9]|2[0-4][0-9]|25[0-5]) + __n="${__ip:0:3}" + __ip="${__ip:3}" + ;; + *) + printf "Not a dotted quad (%s)\n" "$2" >&2 + return 1 + ;; + esac + + __val=$((__val + __n)) + + if [ -n "$__ip" ]; then + printf "Not a dotted quad (%s)\n" "$2" >&2 + return 1 + fi + + export -- "$__var=$__val" + return 0 +} + +ip2str() { + local __var="$1" __n="$2" + assert_uint32 "$__n" || return 1 + + export -- "$__var=$((__n >> 24)).$(((__n >> 16) & 255)).$(((__n >> 8) & 255)).$((__n & 255))" +} + From 5ee3a78242204850f8b5ed8c5b772a0d2378bebb Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Sun, 22 Oct 2023 13:32:06 -0600 Subject: [PATCH 19/23] base-files: ipcalc.sh: Add support for decimal output This is useful if you later need to perform numeric range-checking on addresses, i.e. to see if an address falls inside a CIDR range, etc. and what interface it corresponds to. Signed-off-by: Philip Prindeville --- package/base-files/files/bin/ipcalc.sh | 38 +++++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh index 0bd6edd07a..e6592e2b4a 100755 --- a/package/base-files/files/bin/ipcalc.sh +++ b/package/base-files/files/bin/ipcalc.sh @@ -4,11 +4,35 @@ PROG="$(basename "$0")" +# hook for library function +_ip2str() { + local var="$1" n="$2" + assert_uint32 "$n" || exit 1 + + if [ "$decimal" -ne 0 ]; then + export -- "$var=$n" + elif [ "$hexadecimal" -ne 0 ]; then + export -- "$var=$(printf "%x" "$n")" + else + ip2str "$@" + fi +} + usage() { - echo "Usage: $PROG address/prefix [ start limit ]" >&2 + echo "Usage: $PROG [ -d | -x ] address/prefix [ start limit ]" >&2 exit 1 } +decimal=0 +hexadecimal=0 +if [ "$1" = "-d" ]; then + decimal=1 + shift +elif [ "$1" = "-x" ]; then + hexadecimal=1 + shift +fi + if [ $# -eq 0 ]; then usage fi @@ -51,14 +75,14 @@ hostmask=$((netmask ^ 0xffffffff)) network=$((ipaddr & netmask)) broadcast=$((network | hostmask)) -ip2str IP "$ipaddr" -ip2str NETMASK "$netmask" -ip2str NETWORK "$network" +_ip2str IP "$ipaddr" +_ip2str NETMASK "$netmask" +_ip2str NETWORK "$network" echo "IP=$IP" echo "NETMASK=$NETMASK" if [ "$prefix" -le 30 ]; then - ip2str BROADCAST "$broadcast" + _ip2str BROADCAST "$broadcast" echo "BROADCAST=$BROADCAST" fi echo "NETWORK=$NETWORK" @@ -95,8 +119,8 @@ if [ "$start" -gt "$end" ]; then exit 1 fi -ip2str START "$start" -ip2str END "$end" +_ip2str START "$start" +_ip2str END "$end" if [ "$start" -le "$ipaddr" ] && [ "$ipaddr" -le "$end" ]; then echo "error: address $IP inside range $START..$END" >&2 From f0612c0d844505e214f0569285d4cafe4016a1ec Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Tue, 24 Oct 2023 00:16:25 -0600 Subject: [PATCH 20/23] base-files: ipcalc.sh: Add some commentary, etc. Explain some of the more obscure logic, or where we deviate from what the original awk code did. Also, give a count of the usable addresses on the subnet. Signed-off-by: Philip Prindeville --- package/base-files/files/bin/ipcalc.sh | 10 ++++++++++ package/base-files/files/lib/functions/ipv4.sh | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh index e6592e2b4a..2ddfbb3aba 100755 --- a/package/base-files/files/bin/ipcalc.sh +++ b/package/base-files/files/bin/ipcalc.sh @@ -4,6 +4,8 @@ PROG="$(basename "$0")" +# wrapper to convert an integer to an address, unless we're using +# decimal output format. # hook for library function _ip2str() { local var="$1" n="$2" @@ -39,11 +41,13 @@ fi case "$1" in */*.*) + # data is n.n.n.n/m.m.m.m format, like on a Cisco router str2ip ipaddr "${1%/*}" || exit 1 str2ip netmask "${1#*/}" || exit 1 shift ;; */*) + # more modern prefix notation of n.n.n.n/p str2ip ipaddr "${1%/*}" || exit 1 prefix="${1#*/}" assert_uint32 "$prefix" || exit 1 @@ -55,12 +59,14 @@ case "$1" in shift ;; *) + # address and netmask as two separate arguments str2ip ipaddr "$1" || exit 1 str2ip netmask "$2" || exit 1 shift 2 ;; esac +# we either have no arguments left, or we have a range start and length if [ $# -ne 0 ] && [ $# -ne 2 ]; then usage fi @@ -74,6 +80,7 @@ fi hostmask=$((netmask ^ 0xffffffff)) network=$((ipaddr & netmask)) broadcast=$((network | hostmask)) +count=$((hostmask + 1)) _ip2str IP "$ipaddr" _ip2str NETMASK "$netmask" @@ -81,13 +88,16 @@ _ip2str NETWORK "$network" echo "IP=$IP" echo "NETMASK=$NETMASK" +# don't include this-network or broadcast addresses if [ "$prefix" -le 30 ]; then _ip2str BROADCAST "$broadcast" echo "BROADCAST=$BROADCAST" fi echo "NETWORK=$NETWORK" echo "PREFIX=$prefix" +echo "COUNT=$count" +# if there's no range, we're done [ $# -eq 0 ] && exit 0 if [ "$prefix" -le 30 ]; then diff --git a/package/base-files/files/lib/functions/ipv4.sh b/package/base-files/files/lib/functions/ipv4.sh index 30ae480305..e12f6f56a7 100644 --- a/package/base-files/files/lib/functions/ipv4.sh +++ b/package/base-files/files/lib/functions/ipv4.sh @@ -1,5 +1,7 @@ uint_max=4294967295 +# check that $1 is only base 10 digits, and that it doesn't +# exceed 2^32-1 assert_uint32() { local __n="$1" @@ -21,6 +23,7 @@ assert_uint32() { return 0 } +# return a count of the number of bits set in $1 bitcount() { local __var="$1" __c="$2" assert_uint32 "$__c" || return 1 @@ -35,6 +38,8 @@ bitcount() { } # tedious but portable with busybox's limited shell +# we check each octet to be in the range of 0..255, +# and also make sure there's no extaneous characters. str2ip() { local __var="$1" __ip="$2" __n __val=0 @@ -131,6 +136,7 @@ str2ip() { return 0 } +# convert back from an integer to dotted-quad. ip2str() { local __var="$1" __n="$2" assert_uint32 "$__n" || return 1 From 6cdc429a484392afb4ca7c8a32355987d9e0cc73 Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Fri, 3 Nov 2023 21:11:49 -0600 Subject: [PATCH 21/23] base-files: ipcalc.sh: Add prefix-to-netmask conversion Seems like it might be used in other places, so factor it into the library. Signed-off-by: Philip Prindeville --- package/base-files/files/bin/ipcalc.sh | 2 +- package/base-files/files/lib/functions/ipv4.sh | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh index 2ddfbb3aba..4f48e0a792 100755 --- a/package/base-files/files/bin/ipcalc.sh +++ b/package/base-files/files/bin/ipcalc.sh @@ -55,7 +55,7 @@ case "$1" in printf "Prefix out of range (%s)\n" "$prefix" >&2 exit 1 fi - netmask=$(((0xffffffff << (32 - prefix)) & 0xffffffff)) + prefix2netmask netmask "$prefix" || exit 1 shift ;; *) diff --git a/package/base-files/files/lib/functions/ipv4.sh b/package/base-files/files/lib/functions/ipv4.sh index e12f6f56a7..9405a63552 100644 --- a/package/base-files/files/lib/functions/ipv4.sh +++ b/package/base-files/files/lib/functions/ipv4.sh @@ -144,3 +144,16 @@ ip2str() { export -- "$__var=$((__n >> 24)).$(((__n >> 16) & 255)).$(((__n >> 8) & 255)).$((__n & 255))" } +# convert prefix into an integer bitmask +prefix2netmask() { + local __var="$1" __n="$2" + assert_uint32 "$__n" || return 1 + + if [ "$__n" -gt 32 ]; then + printf "Prefix out-of-range (%s)" "$__n" >&2 + return 1 + fi + + export -- "$__var=$(((~(uint_max >> __n)) & uint_max))" +} + From dd256099c3fbf48e108381dea8588c38e89cf14a Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Sat, 11 Nov 2023 12:37:20 -0700 Subject: [PATCH 22/23] base-files: ipcalc.sh: Add netmask2prefix function Also add is_contiguous to check if it's a valid netmask. Signed-off-by: Philip Prindeville --- package/base-files/files/bin/ipcalc.sh | 7 +--- .../base-files/files/lib/functions/ipv4.sh | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh index 4f48e0a792..9e2702c60d 100755 --- a/package/base-files/files/bin/ipcalc.sh +++ b/package/base-files/files/bin/ipcalc.sh @@ -44,6 +44,7 @@ case "$1" in # data is n.n.n.n/m.m.m.m format, like on a Cisco router str2ip ipaddr "${1%/*}" || exit 1 str2ip netmask "${1#*/}" || exit 1 + netmask2prefix prefix "$netmask" || exit 1 shift ;; */*) @@ -62,6 +63,7 @@ case "$1" in # address and netmask as two separate arguments str2ip ipaddr "$1" || exit 1 str2ip netmask "$2" || exit 1 + netmask2prefix prefix "$netmask" || exit 1 shift 2 ;; esac @@ -71,11 +73,6 @@ if [ $# -ne 0 ] && [ $# -ne 2 ]; then usage fi -if ! bitcount prefix "$netmask"; then - printf "Invalid netmask (%s)\n" "$netmask" >&2 - exit 1 -fi - # complement of the netmask, i.e. the hostmask hostmask=$((netmask ^ 0xffffffff)) network=$((ipaddr & netmask)) diff --git a/package/base-files/files/lib/functions/ipv4.sh b/package/base-files/files/lib/functions/ipv4.sh index 9405a63552..c6fcd2af2e 100644 --- a/package/base-files/files/lib/functions/ipv4.sh +++ b/package/base-files/files/lib/functions/ipv4.sh @@ -157,3 +157,42 @@ prefix2netmask() { export -- "$__var=$(((~(uint_max >> __n)) & uint_max))" } +_is_contiguous() { + local __x="$1" # no checking done + local __y=$((~__x & uint_max)) + local __z=$(((__y + 1) & uint_max)) + + [ $((__z & __y)) -eq 0 ] +} + +# check argument as being contiguous upper bits (and yes, +# 0 doesn't have any discontiguous bits). +is_contiguous() { + local __var="$1" __x="$2" __val=0 + assert_uint32 "$__x" || return 1 + + local __y=$((~__x & uint_max)) + local __z=$(((__y + 1) & uint_max)) + + [ $((__z & __y)) -eq 0 ] && __val=1 + + export -- "$__var=$__val" +} + +# convert mask to prefix, validating that it's a conventional +# (contiguous) netmask. +netmask2prefix() { + local __var="$1" __n="$2" __cont __bits + assert_uint32 "$__n" || return 1 + + is_contiguous __cont "$__n" || return 1 + if [ $__cont -eq 0 ]; then + printf "Not a contiguous netmask (%08x)\n" "$__n" >&2 + return 1 + fi + + bitcount __bits "$__n" # already checked + + export -- "$__var=$__bits" +} + From e906ccfc8c8a75872405efaf1bc2e2b625369c30 Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Sun, 10 Dec 2023 23:35:57 -0700 Subject: [PATCH 23/23] base-files: ipcalc.sh: Add tests for unroutable, etc See RFC-1918, RFC-3927, and RFC-1122. Signed-off-by: Philip Prindeville --- .../base-files/files/lib/functions/ipv4.sh | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/package/base-files/files/lib/functions/ipv4.sh b/package/base-files/files/lib/functions/ipv4.sh index c6fcd2af2e..d0b93dbcb9 100644 --- a/package/base-files/files/lib/functions/ipv4.sh +++ b/package/base-files/files/lib/functions/ipv4.sh @@ -1,5 +1,23 @@ uint_max=4294967295 +d_10_0_0_0=167772160 +d_10_255_255_255=184549375 + +d_172_16_0_0=2886729728 +d_172_31_255_255=2887778303 + +d_192_168_0_0=3232235520 +d_192_168_255_255=3232301055 + +d_169_254_0_0=2851995648 +d_169_254_255_255=2852061183 + +d_127_0_0_0=2130706432 +d_127_255_255_255=2147483647 + +d_224_0_0_0=3758096384 +d_239_255_255_255=4026531839 + # check that $1 is only base 10 digits, and that it doesn't # exceed 2^32-1 assert_uint32() { @@ -196,3 +214,55 @@ netmask2prefix() { export -- "$__var=$__bits" } +# check the argument as being an rfc-1918 address +is_rfc1918() { + local __var="$1" __x="$2" __val=0 + assert_uint32 "$__x" || return 1 + + if [ $d_10_0_0_0 -le $__x ] && [ $__x -le $d_10_255_255_255 ]; then + __val=1 + elif [ $d_172_16_0_0 -le $__x ] && [ $__x -le $d_172_31_255_255 ]; then + __val=1 + elif [ $d_192_168_0_0 -le $__x ] && [ $__x -le $d_192_168_255_255 ]; then + __val=1 + fi + + export -- "$__var=$__val" +} + +# check the argument as being an rfc-3927 address +is_rfc3927() { + local __var="$1" __x="$2" __val=0 + assert_uint32 "$__x" || return 1 + + if [ $d_169_254_0_0 -le $__x ] && [ $__x -le $d_169_254_255_255 ]; then + __val=1 + fi + + export -- "$__var=$__val" +} + +# check the argument as being an rfc-1122 loopback address +is_loopback() { + local __var="$1" __x="$2" __val=0 + assert_uint32 "$__x" || return 1 + + if [ $d_127_0_0_0 -le $__x ] && [ $__x -le $d_127_255_255_255 ]; then + __val=1 + fi + + export -- "$__var=$__val" +} + +# check the argument as being a multicast address +is_multicast() { + local __var="$1" __x="$2" __val=0 + assert_uint32 "$__x" || return 1 + + if [ $d_224_0_0_0 -le $__x ] && [ $__x -le $d_239_255_255_255 ]; then + __val=1 + fi + + export -- "$__var=$__val" +} +