From 81a41bfe22a21e675132cb3ab36ee977ad7efec3 Mon Sep 17 00:00:00 2001 From: yangxu52 Date: Mon, 30 Mar 2026 23:26:21 +0800 Subject: [PATCH] kernel: bump to 5.4.302 - update the 5.4 kernel baseline from 5.4.284 to 5.4.302 - rebase the affected generic patches, including the MikroTik build bits and codel backport, to the 5.4.302 source context - rebase the affected MediaTek TRNG and PWM patches to the new source context - adjust 993-usb-serial-option-add-u9300.patch so the LONGSUNG U9300 modem patch still applies after the qmi_wwan changes --- include/kernel-5.4 | 4 +-- .../993-usb-serial-option-add-u9300.patch | 4 +-- .../270-platform-mikrotik-build-bits.patch | 9 ++++-- ...del-do-not-defer-queue-length-update.patch | 28 ++++++------------- .../0111-mt7986-trng-add-rng-support.patch | 2 +- .../0931-pwm-add-mt7981-support.patch | 19 +++++++++---- ...32-add-pwm-feature-in-mt7988-project.patch | 5 ++-- .../1661-Add-trngv2-driver-support.patch | 8 ++++-- 8 files changed, 42 insertions(+), 37 deletions(-) diff --git a/include/kernel-5.4 b/include/kernel-5.4 index 838d6376da..980bb4c348 100644 --- a/include/kernel-5.4 +++ b/include/kernel-5.4 @@ -1,2 +1,2 @@ -LINUX_VERSION-5.4 = .284 -LINUX_KERNEL_HASH-5.4.284 = 77221ab9aebeac746915c755ec3b7d320f85cd219c63d9c501820fbca1e3b32b +LINUX_VERSION-5.4 = .302 +LINUX_KERNEL_HASH-5.4.302 = ae6a3207f12aa4d6cfb0fa793ec9da4a6fcdfdcb57d869d63d6b77e3a8c1423d diff --git a/target/linux/generic/hack-5.4/993-usb-serial-option-add-u9300.patch b/target/linux/generic/hack-5.4/993-usb-serial-option-add-u9300.patch index 61772ecead..e57eb1654a 100644 --- a/target/linux/generic/hack-5.4/993-usb-serial-option-add-u9300.patch +++ b/target/linux/generic/hack-5.4/993-usb-serial-option-add-u9300.patch @@ -1,9 +1,9 @@ --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c -@@ -1369,6 +1369,7 @@ static const struct usb_device_id produc - {QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */ +@@ -1392,6 +1392,7 @@ {QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */ {QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)}, /* SIMCom 7100E, 7230E, 7600E ++ */ + {QMI_QUIRK_SET_DTR(0x1e0e, 0x9071, 3)}, /* SIMCom 8230C ++ */ + {QMI_FIXED_INTF(0x1c9e, 0x9b3c, 4)}, /* LONGSUNG_U9300 */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)}, /* Quectel EC21 Mini PCIe */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)}, /* Quectel EG91 */ diff --git a/target/linux/generic/pending-5.4/270-platform-mikrotik-build-bits.patch b/target/linux/generic/pending-5.4/270-platform-mikrotik-build-bits.patch index df738ef97b..44a1e2ca0a 100644 --- a/target/linux/generic/pending-5.4/270-platform-mikrotik-build-bits.patch +++ b/target/linux/generic/pending-5.4/270-platform-mikrotik-build-bits.patch @@ -16,16 +16,21 @@ Signed-off-by: Thibaut VARĂˆNE --- a/drivers/platform/Kconfig +++ b/drivers/platform/Kconfig -@@ -13,3 +13,5 @@ source "drivers/platform/chrome/Kconfig" +@@ -13,6 +13,8 @@ source "drivers/platform/chrome/Kconfig" source "drivers/platform/mellanox/Kconfig" source "drivers/platform/olpc/Kconfig" + +source "drivers/platform/mikrotik/Kconfig" + + source "drivers/platform/surface/Kconfig" + --- a/drivers/platform/Makefile +++ b/drivers/platform/Makefile -@@ -9,3 +9,4 @@ obj-$(CONFIG_MIPS) += mips/ +@@ -9,5 +9,6 @@ obj-$(CONFIG_MIPS) += mips/ obj-$(CONFIG_OLPC_EC) += olpc/ obj-$(CONFIG_GOLDFISH) += goldfish/ obj-$(CONFIG_CHROME_PLATFORMS) += chrome/ +obj-$(CONFIG_MIKROTIK) += mikrotik/ + obj-$(CONFIG_SURFACE_PLATFORMS) += surface/ + diff --git a/target/linux/generic/pending-5.4/620-net_sched-codel-do-not-defer-queue-length-update.patch b/target/linux/generic/pending-5.4/620-net_sched-codel-do-not-defer-queue-length-update.patch index ca85b8a98c..c1f12affc5 100644 --- a/target/linux/generic/pending-5.4/620-net_sched-codel-do-not-defer-queue-length-update.patch +++ b/target/linux/generic/pending-5.4/620-net_sched-codel-do-not-defer-queue-length-update.patch @@ -22,19 +22,11 @@ Link: https://bugzilla.kernel.org/show_bug.cgi?id=109581 --- a/net/sched/sch_codel.c +++ b/net/sched/sch_codel.c -@@ -95,11 +95,17 @@ static struct sk_buff *codel_qdisc_deque - &q->stats, qdisc_pkt_len, codel_get_enqueue_time, +@@ -96,7 +96,12 @@ static struct sk_buff *codel_qdisc_deque drop_func, dequeue_func); -- /* We cant call qdisc_tree_reduce_backlog() if our qlen is 0, -- * or HTB crashes. Defer it for next round. -+ /* If our qlen is 0 qdisc_tree_reduce_backlog() will deactivate -+ * parent class, dequeue in parent qdisc will do the same if we -+ * return skb. Temporary increment qlen if we have skb. - */ -- if (q->stats.drop_count && sch->q.qlen) { + if (q->stats.drop_count) { - qdisc_tree_reduce_backlog(sch, q->stats.drop_count, q->stats.drop_len); -+ if (q->stats.drop_count) { + if (skb) + sch->q.qlen++; + qdisc_tree_reduce_backlog(sch, q->stats.drop_count, @@ -46,10 +38,11 @@ Link: https://bugzilla.kernel.org/show_bug.cgi?id=109581 } --- a/net/sched/sch_fq_codel.c +++ b/net/sched/sch_fq_codel.c -@@ -305,6 +305,21 @@ begin: +@@ -304,6 +304,21 @@ begin: + skb = codel_dequeue(sch, &sch->qstats.backlog, &q->cparams, &flow->cvars, &q->cstats, qdisc_pkt_len, codel_get_enqueue_time, drop_func, dequeue_func); - ++ + /* If our qlen is 0 qdisc_tree_reduce_backlog() will deactivate + * parent class, dequeue in parent qdisc will do the same if we + * return skb. Temporary increment qlen if we have skb. @@ -64,18 +57,15 @@ Link: https://bugzilla.kernel.org/show_bug.cgi?id=109581 + q->cstats.drop_count = 0; + q->cstats.drop_len = 0; + } -+ + if (!skb) { /* force a pass through old_flows to prevent starvation */ - if ((head == &q->new_flows) && !list_empty(&q->old_flows)) -@@ -315,15 +330,6 @@ begin: +@@ -315,13 +330,6 @@ begin: } qdisc_bstats_update(sch, skb); flow->deficit -= qdisc_pkt_len(skb); -- /* We cant call qdisc_tree_reduce_backlog() if our qlen is 0, -- * or HTB crashes. Defer it for next round. -- */ -- if (q->cstats.drop_count && sch->q.qlen) { +- +- if (q->cstats.drop_count) { - qdisc_tree_reduce_backlog(sch, q->cstats.drop_count, - q->cstats.drop_len); - q->cstats.drop_count = 0; diff --git a/target/linux/mediatek/patches-5.4/0111-mt7986-trng-add-rng-support.patch b/target/linux/mediatek/patches-5.4/0111-mt7986-trng-add-rng-support.patch index 1b132a3413..abb360616c 100644 --- a/target/linux/mediatek/patches-5.4/0111-mt7986-trng-add-rng-support.patch +++ b/target/linux/mediatek/patches-5.4/0111-mt7986-trng-add-rng-support.patch @@ -33,7 +33,7 @@ index e649be5a5..496adb0a0 100644 } static int mtk_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) -@@ -181,6 +181,7 @@ static UNIVERSAL_DEV_PM_OPS(mtk_rng_pm_ops, mtk_rng_runtime_suspend, +@@ -186,6 +186,7 @@ static UNIVERSAL_DEV_PM_OPS(mtk_rng_pm_ops, mtk_rng_runtime_suspend, #endif /* CONFIG_PM */ static const struct of_device_id mtk_rng_match[] = { diff --git a/target/linux/mediatek/patches-5.4/0931-pwm-add-mt7981-support.patch b/target/linux/mediatek/patches-5.4/0931-pwm-add-mt7981-support.patch index 0de7966e77..0ec017e1fc 100644 --- a/target/linux/mediatek/patches-5.4/0931-pwm-add-mt7981-support.patch +++ b/target/linux/mediatek/patches-5.4/0931-pwm-add-mt7981-support.patch @@ -3,7 +3,7 @@ index 7c56ee2..3a5a456 100644 --- a/drivers/pwm/pwm-mediatek.c +++ b/drivers/pwm/pwm-mediatek.c @@ -33,10 +32,13 @@ - #define PWM45THRES_FIXUP 0x34 + #define PWM_CK_26M_SEL 0x210 #define PWM_CLK_DIV_MAX 7 +#define REG_V1 1 @@ -13,9 +13,9 @@ index 7c56ee2..3a5a456 100644 unsigned int num_pwms; bool pwm45_fixup; + int reg_ver; + bool has_ck_26m_sel; }; - /** @@ -57,10 +59,14 @@ struct pwm_mediatek_chip { const struct pwm_mediatek_of_data *soc; }; @@ -73,57 +73,64 @@ index 7c56ee2..3a5a456 100644 } static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm, -@@ -281,36 +311,49 @@ static int pwm_mediatek_remove(struct platform_device *pdev) - static const struct pwm_mediatek_of_data mt2712_pwm_data = { +@@ -282,41 +312,56 @@ static int pwm_mediatek_remove(struct platform_device *pdev) .num_pwms = 8, .pwm45_fixup = false, + .has_ck_26m_sel = false, + .reg_ver = REG_V1, }; static const struct pwm_mediatek_of_data mt7622_pwm_data = { .num_pwms = 6, .pwm45_fixup = false, + .has_ck_26m_sel = true, + .reg_ver = REG_V1, }; static const struct pwm_mediatek_of_data mt7623_pwm_data = { .num_pwms = 5, .pwm45_fixup = true, + .has_ck_26m_sel = false, + .reg_ver = REG_V1, }; static const struct pwm_mediatek_of_data mt7628_pwm_data = { .num_pwms = 4, .pwm45_fixup = true, + .has_ck_26m_sel = false, + .reg_ver = REG_V1, }; static const struct pwm_mediatek_of_data mt7629_pwm_data = { .num_pwms = 1, .pwm45_fixup = false, + .has_ck_26m_sel = false, + .reg_ver = REG_V1, +}; + +static const struct pwm_mediatek_of_data mt7981_pwm_data = { + .num_pwms = 3, + .pwm45_fixup = false, ++ .has_ck_26m_sel = true, + .reg_ver = REG_V2, }; static const struct pwm_mediatek_of_data mt7986_pwm_data = { .num_pwms = 2, .pwm45_fixup = false, -+ .reg_ver = REG_V1, ++ .has_ck_26m_sel = true, ++ .reg_ver = REG_V2, }; static const struct pwm_mediatek_of_data mt8516_pwm_data = { .num_pwms = 5, .pwm45_fixup = false, + .has_ck_26m_sel = true, + .reg_ver = REG_V1, }; static const struct of_device_id pwm_mediatek_of_match[] = { -@@ -319,6 +362,7 @@ static const struct of_device_id pwm_mediatek_of_match[] = { +@@ -319,6 +364,7 @@ static const struct of_device_id pwm_mediatek_of_match[] = { { .compatible = "mediatek,mt7623-pwm", .data = &mt7623_pwm_data }, { .compatible = "mediatek,mt7628-pwm", .data = &mt7628_pwm_data }, { .compatible = "mediatek,mt7629-pwm", .data = &mt7629_pwm_data }, diff --git a/target/linux/mediatek/patches-5.4/0932-add-pwm-feature-in-mt7988-project.patch b/target/linux/mediatek/patches-5.4/0932-add-pwm-feature-in-mt7988-project.patch index 8268e7db23..3cf30c30d0 100644 --- a/target/linux/mediatek/patches-5.4/0932-add-pwm-feature-in-mt7988-project.patch +++ b/target/linux/mediatek/patches-5.4/0932-add-pwm-feature-in-mt7988-project.patch @@ -2,20 +2,21 @@ diff --git a/drivers/pwm/pwm-mediatek.c b/drivers/pwm/pwm-mediatek.c index 3a5a456..6d6206e 100644 --- a/drivers/pwm/pwm-mediatek.c +++ b/drivers/pwm/pwm-mediatek.c -@@ -350,6 +350,12 @@ static const struct pwm_mediatek_of_data mt7986_pwm_data = { +@@ -350,6 +350,13 @@ static const struct pwm_mediatek_of_data mt7986_pwm_data = { .reg_ver = REG_V2, }; +static const struct pwm_mediatek_of_data mt7988_pwm_data = { + .num_pwms = 8, + .pwm45_fixup = false, ++ .has_ck_26m_sel = true, + .reg_ver = REG_V2, +}; + static const struct pwm_mediatek_of_data mt8516_pwm_data = { .num_pwms = 5, .pwm45_fixup = false, -@@ -364,6 +370,7 @@ static const struct of_device_id pwm_mediatek_of_match[] = { +@@ -364,6 +371,7 @@ static const struct of_device_id pwm_mediatek_of_match[] = { { .compatible = "mediatek,mt7629-pwm", .data = &mt7629_pwm_data }, { .compatible = "mediatek,mt7981-pwm", .data = &mt7981_pwm_data }, { .compatible = "mediatek,mt7986-pwm", .data = &mt7986_pwm_data }, diff --git a/target/linux/mediatek/patches-5.4/1661-Add-trngv2-driver-support.patch b/target/linux/mediatek/patches-5.4/1661-Add-trngv2-driver-support.patch index 7c09a7102b..6827c2d58b 100644 --- a/target/linux/mediatek/patches-5.4/1661-Add-trngv2-driver-support.patch +++ b/target/linux/mediatek/patches-5.4/1661-Add-trngv2-driver-support.patch @@ -143,19 +143,21 @@ index a8bd06da7..75fca4cef 100644 ret = devm_hwrng_register(&pdev->dev, &priv->rng); if (ret) { -@@ -146,11 +189,6 @@ static int mtk_rng_probe(struct platform_device *pdev) +@@ -146,13 +189,6 @@ static int mtk_rng_probe(struct platform_device *pdev) return ret; } - dev_set_drvdata(&pdev->dev, priv); - pm_runtime_set_autosuspend_delay(&pdev->dev, RNG_AUTOSUSPEND_TIMEOUT); - pm_runtime_use_autosuspend(&pdev->dev); -- pm_runtime_enable(&pdev->dev); +- ret = devm_pm_runtime_enable(&pdev->dev); +- if (ret) +- return ret; - dev_info(&pdev->dev, "registered RNG driver\n"); return 0; -@@ -185,9 +223,22 @@ static const struct dev_pm_ops mtk_rng_pm_ops = { +@@ -185,9 +221,22 @@ static const struct dev_pm_ops mtk_rng_pm_ops = { #define MTK_RNG_PM_OPS NULL #endif /* CONFIG_PM */