Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2025-02-26 23:53:46 +08:00
commit 32ddb642ea
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
75 changed files with 210 additions and 351 deletions
include
package
firmware/wireless-regdb
libs/openssl
target/linux
airoha/patches-6.6
ath79/patches-6.6
bcm27xx/patches-6.6
950-0061-Revert-Revert-xhci-add-quirk-for-host-controllers-th.patch950-0065-cgroup-Disable-cgroup-memory-by-default.patch950-0087-Add-dwc_otg-driver.patch950-0106-Add-support-for-all-the-downstream-rpi-sound-card-dr.patch950-0162-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch950-0169-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch950-0183-drm-v3d-Suppress-all-but-the-first-MMU-error.patch950-0416-gpio-pca953x-Add-ti-tca9554-compatible-string.patch950-0464-drm-v3d-New-debugfs-end-points-to-query-GPU-usage-st.patch950-0482-xhci-quirks-add-link-TRB-quirk-for-VL805.patch950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch950-0487-drivers-media-imx296-Add-standby-delay-during-probe.patch950-0509-gpio_brcmstb-Allow-to-build-for-ARCH_BCM2835.patch950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch950-0555-drm-v3d-fix-up-register-addresses-for-V3D-7.x.patch950-0661-gpio-brcmstb-Use-dynamic-GPIO-base-numbers.patch950-0679-drm-fb-helper-Look-up-preferred-fbdev-node-number-fr.patch950-0684-drm-fb_helper-Change-query-for-FB-designation-from-d.patch950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch950-0923-drm-Add-DRM_MODE_TV_MODE_MONOCHROME.patch950-1051-drm-panel-Add-and-initialise-an-orientation-field-to.patch950-1349-cgroup-Use-kernel-command-line-to-disable-memory-cgr.patch950-1359-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch950-1361-drivers-usb-xhci-prevent-a-theoretical-race-on-non-c.patch950-1365-drm-Set-non-desktop-property-to-true-for-writeback-a.patch950-1367-drm-vc4-Increase-number-of-overlay-planes-from-16-to.patch950-1445-fixup-cgroup-Use-kernel-command-line-to-disable-memo.patch950-1446-media-i2c-ov9282-Correct-the-exposure-offset.patch950-1464-serial-sc16is7xx-announce-support-for-SER_RS485_RTS_.patch
bcm47xx/patches-6.6
bcm53xx/patches-6.6
generic
imx
ipq40xx/patches-6.6
mediatek/patches-6.6
ramips
rockchip/patches-6.6
starfive/patches-6.6
tools/firmware-utils

@ -1,2 +1,2 @@
LINUX_VERSION-6.6 = .73 LINUX_VERSION-6.6 = .79
LINUX_KERNEL_HASH-6.6.73 = d2028db190c201650898be8db1c705e9fe73ab44fc04290b4f7af63514122490 LINUX_KERNEL_HASH-6.6.79 = 07a6f904470da1a099aa1683e3025a999dd82f2438f78b006b80c6ae2e9dfe8d

@ -1,14 +1,14 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=wireless-regdb PKG_NAME:=wireless-regdb
PKG_VERSION:=2024.10.07 PKG_VERSION:=2025.02.20
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_LICENSE:=ISC PKG_LICENSE:=ISC
PKG_LICENSE_FILES:=LICENSE PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/ PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
PKG_HASH:=f76f2bd79a653e9f9dd50548d99d03a4a4eb157da056dfd5892f403ec28fb3d5 PKG_HASH:=57f8e7721cf5a880c13ae0c202edbb21092a060d45f9e9c59bcd2a8272bfa456
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>

@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=openssl PKG_NAME:=openssl
PKG_VERSION:=3.0.15 PKG_VERSION:=3.0.16
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto
@ -21,7 +21,7 @@ PKG_SOURCE_URL:= \
https://www.openssl.org/source/old/$(PKG_BASE)/ \ https://www.openssl.org/source/old/$(PKG_BASE)/ \
https://github.com/openssl/openssl/releases/download/$(PKG_NAME)-$(PKG_VERSION)/ https://github.com/openssl/openssl/releases/download/$(PKG_NAME)-$(PKG_VERSION)/
PKG_HASH:=23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533 PKG_HASH:=57e03c50feab5d31b152af2b764f10379aecd8ee92f16c985983ce4a99f7ef86
PKG_LICENSE:=Apache-2.0 PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE PKG_LICENSE_FILES:=LICENSE

@ -122,7 +122,7 @@
}; };
/* Uart divisor latch read */ /* Uart divisor latch read */
@@ -2880,6 +2888,12 @@ serial8250_do_set_termios(struct uart_po @@ -2889,6 +2897,12 @@ serial8250_do_set_termios(struct uart_po
serial8250_set_divisor(port, baud, quot, frac); serial8250_set_divisor(port, baud, quot, frac);

@ -16,16 +16,16 @@ Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
--- a/drivers/mfd/syscon.c --- a/drivers/mfd/syscon.c
+++ b/drivers/mfd/syscon.c +++ b/drivers/mfd/syscon.c
@@ -52,7 +52,7 @@ static struct syscon *of_syscon_register @@ -53,7 +53,7 @@ static struct syscon *of_syscon_register
int ret; int ret;
struct regmap_config syscon_config = syscon_regmap_config; struct regmap_config syscon_config = syscon_regmap_config;
struct resource res; struct resource res;
- struct reset_control *reset; - struct reset_control *reset;
+ struct reset_control *reset = NULL; + struct reset_control *reset = NULL;
syscon = kzalloc(sizeof(*syscon), GFP_KERNEL); WARN_ON(!mutex_is_locked(&syscon_list_lock));
if (!syscon)
@@ -134,7 +134,8 @@ static struct syscon *of_syscon_register @@ -133,7 +133,8 @@ static struct syscon *of_syscon_register
goto err_attach_clk; goto err_attach_clk;
} }

@ -350,7 +350,7 @@ SVN-Revision: 35130
list_for_each_entry(p, head, list) { list_for_each_entry(p, head, list) {
--- a/net/ipv4/tcp_output.c --- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c
@@ -622,48 +622,53 @@ static void tcp_options_write(struct tcp @@ -625,48 +625,53 @@ static void tcp_options_write(struct tcp
u16 options = opts->options; /* mungable copy */ u16 options = opts->options; /* mungable copy */
if (unlikely(OPTION_MD5 & options)) { if (unlikely(OPTION_MD5 & options)) {
@ -427,7 +427,7 @@ SVN-Revision: 35130
} }
if (unlikely(opts->num_sack_blocks)) { if (unlikely(opts->num_sack_blocks)) {
@@ -671,16 +676,17 @@ static void tcp_options_write(struct tcp @@ -674,16 +679,17 @@ static void tcp_options_write(struct tcp
tp->duplicate_sack : tp->selective_acks; tp->duplicate_sack : tp->selective_acks;
int this_sack; int this_sack;
@ -451,7 +451,7 @@ SVN-Revision: 35130
} }
tp->rx_opt.dsack = 0; tp->rx_opt.dsack = 0;
@@ -693,13 +699,14 @@ static void tcp_options_write(struct tcp @@ -696,13 +702,14 @@ static void tcp_options_write(struct tcp
if (foc->exp) { if (foc->exp) {
len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len; len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len;

@ -28,7 +28,7 @@ We don't agree with upstream revert so undo it.
pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) { pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) {
--- a/drivers/usb/host/xhci-ring.c --- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c
@@ -634,8 +634,11 @@ static int xhci_move_dequeue_past_td(str @@ -635,8 +635,11 @@ static int xhci_move_dequeue_past_td(str
struct xhci_ring *ep_ring; struct xhci_ring *ep_ring;
struct xhci_command *cmd; struct xhci_command *cmd;
struct xhci_segment *new_seg; struct xhci_segment *new_seg;
@ -40,7 +40,7 @@ We don't agree with upstream revert so undo it.
dma_addr_t addr; dma_addr_t addr;
u64 hw_dequeue; u64 hw_dequeue;
bool cycle_found = false; bool cycle_found = false;
@@ -673,7 +676,27 @@ static int xhci_move_dequeue_past_td(str @@ -674,7 +677,27 @@ static int xhci_move_dequeue_past_td(str
hw_dequeue = xhci_get_hw_deq(xhci, dev, ep_index, stream_id); hw_dequeue = xhci_get_hw_deq(xhci, dev, ep_index, stream_id);
new_seg = ep_ring->deq_seg; new_seg = ep_ring->deq_seg;
new_deq = ep_ring->dequeue; new_deq = ep_ring->dequeue;

@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
--- a/kernel/cgroup/cgroup.c --- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c
@@ -6063,6 +6063,9 @@ int __init cgroup_init_early(void) @@ -6059,6 +6059,9 @@ int __init cgroup_init_early(void)
return 0; return 0;
} }
@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
/** /**
* cgroup_init - cgroup initialization * cgroup_init - cgroup initialization
* *
@@ -6096,6 +6099,12 @@ int __init cgroup_init(void) @@ -6092,6 +6095,12 @@ int __init cgroup_init(void)
cgroup_unlock(); cgroup_unlock();
@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
for_each_subsys(ss, ssid) { for_each_subsys(ss, ssid) {
if (ss->early_init) { if (ss->early_init) {
struct cgroup_subsys_state *css = struct cgroup_subsys_state *css =
@@ -6736,6 +6745,10 @@ static int __init cgroup_disable(char *s @@ -6740,6 +6749,10 @@ static int __init cgroup_disable(char *s
strcmp(token, ss->legacy_name)) strcmp(token, ss->legacy_name))
continue; continue;
@ -51,7 +51,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
static_branch_disable(cgroup_subsys_enabled_key[i]); static_branch_disable(cgroup_subsys_enabled_key[i]);
pr_info("Disabling %s control group subsystem\n", pr_info("Disabling %s control group subsystem\n",
ss->name); ss->name);
@@ -6754,6 +6767,31 @@ static int __init cgroup_disable(char *s @@ -6758,6 +6771,31 @@ static int __init cgroup_disable(char *s
} }
__setup("cgroup_disable=", cgroup_disable); __setup("cgroup_disable=", cgroup_disable);

@ -1189,7 +1189,7 @@ Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
} }
--- a/drivers/usb/core/hub.c --- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c
@@ -5712,7 +5712,7 @@ static void port_event(struct usb_hub *h @@ -5722,7 +5722,7 @@ static void port_event(struct usb_hub *h
port_dev->over_current_count++; port_dev->over_current_count++;
port_over_current_notify(port_dev); port_over_current_notify(port_dev);

@ -14927,7 +14927,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
config SND_SOC_TFA989X config SND_SOC_TFA989X
tristate "NXP/Goodix TFA989X (TFA1) amplifiers" tristate "NXP/Goodix TFA989X (TFA1) amplifiers"
depends on I2C depends on I2C
@@ -2404,4 +2422,8 @@ config SND_SOC_LPASS_TX_MACRO @@ -2405,4 +2423,8 @@ config SND_SOC_LPASS_TX_MACRO
select SND_SOC_LPASS_MACRO_COMMON select SND_SOC_LPASS_MACRO_COMMON
tristate "Qualcomm TX Macro in LPASS(Low Power Audio SubSystem)" tristate "Qualcomm TX Macro in LPASS(Low Power Audio SubSystem)"
@ -17583,7 +17583,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
* For devices with more than one control interface, we assume the * For devices with more than one control interface, we assume the
--- a/sound/usb/quirks.c --- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c +++ b/sound/usb/quirks.c
@@ -2249,6 +2249,8 @@ static const struct usb_audio_quirk_flag @@ -2253,6 +2253,8 @@ static const struct usb_audio_quirk_flag
QUIRK_FLAG_ALIGN_TRANSFER), QUIRK_FLAG_ALIGN_TRANSFER),
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */ DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
QUIRK_FLAG_ALIGN_TRANSFER), QUIRK_FLAG_ALIGN_TRANSFER),

@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
--- a/drivers/usb/host/xhci-ring.c --- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c
@@ -739,9 +739,9 @@ deq_found: @@ -740,9 +740,9 @@ deq_found:
} }
if ((ep->ep_state & SET_DEQ_PENDING)) { if ((ep->ep_state & SET_DEQ_PENDING)) {

@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
#define USB_VENDOR_ID_BELKIN 0x050d #define USB_VENDOR_ID_BELKIN 0x050d
#define USB_DEVICE_ID_FLIP_KVM 0x3201 #define USB_DEVICE_ID_FLIP_KVM 0x3201
@@ -1406,6 +1409,9 @@ @@ -1405,6 +1408,9 @@
#define USB_VENDOR_ID_XIAOMI 0x2717 #define USB_VENDOR_ID_XIAOMI 0x2717
#define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014 #define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014

@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
--- a/drivers/gpu/drm/v3d/v3d_irq.c --- a/drivers/gpu/drm/v3d/v3d_irq.c
+++ b/drivers/gpu/drm/v3d/v3d_irq.c +++ b/drivers/gpu/drm/v3d/v3d_irq.c
@@ -177,6 +177,7 @@ v3d_hub_irq(int irq, void *arg) @@ -189,6 +189,7 @@ v3d_hub_irq(int irq, void *arg)
"GMP", "GMP",
}; };
const char *client = "?"; const char *client = "?";
@ -21,7 +21,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
V3D_WRITE(V3D_MMU_CTL, V3D_READ(V3D_MMU_CTL)); V3D_WRITE(V3D_MMU_CTL, V3D_READ(V3D_MMU_CTL));
@@ -186,6 +187,7 @@ v3d_hub_irq(int irq, void *arg) @@ -198,6 +199,7 @@ v3d_hub_irq(int irq, void *arg)
client = v3d41_axi_ids[axi_id]; client = v3d41_axi_ids[axi_id];
} }
@ -29,7 +29,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
dev_err(v3d->drm.dev, "MMU error from client %s (%d) at 0x%llx%s%s%s\n", dev_err(v3d->drm.dev, "MMU error from client %s (%d) at 0x%llx%s%s%s\n",
client, axi_id, (long long)vio_addr, client, axi_id, (long long)vio_addr,
((intsts & V3D_HUB_INT_MMU_WRV) ? ((intsts & V3D_HUB_INT_MMU_WRV) ?
@@ -194,6 +196,7 @@ v3d_hub_irq(int irq, void *arg) @@ -206,6 +208,7 @@ v3d_hub_irq(int irq, void *arg)
", pte invalid" : ""), ", pte invalid" : ""),
((intsts & V3D_HUB_INT_MMU_CAP) ? ((intsts & V3D_HUB_INT_MMU_CAP) ?
", cap exceeded" : "")); ", cap exceeded" : ""));

@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- a/drivers/gpio/gpio-pca953x.c --- a/drivers/gpio/gpio-pca953x.c
+++ b/drivers/gpio/gpio-pca953x.c +++ b/drivers/gpio/gpio-pca953x.c
@@ -1347,6 +1347,7 @@ static const struct of_device_id pca953x @@ -1311,6 +1311,7 @@ static const struct of_device_id pca953x
{ .compatible = "ti,tca6424", .data = OF_953X(24, PCA_INT), }, { .compatible = "ti,tca6424", .data = OF_953X(24, PCA_INT), },
{ .compatible = "ti,tca9538", .data = OF_953X( 8, PCA_INT), }, { .compatible = "ti,tca9538", .data = OF_953X( 8, PCA_INT), },
{ .compatible = "ti,tca9539", .data = OF_953X(16, PCA_INT), }, { .compatible = "ti,tca9539", .data = OF_953X(16, PCA_INT), },

@ -257,31 +257,31 @@ Signed-off-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
+ v3d->gpu_queue_stats[V3D_BIN].last_exec_end = local_clock(); + v3d->gpu_queue_stats[V3D_BIN].last_exec_end = local_clock();
trace_v3d_bcl_irq(&v3d->drm, fence->seqno); trace_v3d_bcl_irq(&v3d->drm, fence->seqno);
dma_fence_signal(&fence->base);
@@ -109,6 +111,7 @@ v3d_irq(int irq, void *arg) @@ -112,6 +114,7 @@ v3d_irq(int irq, void *arg)
if (intsts & V3D_INT_FRDONE) { if (intsts & V3D_INT_FRDONE) {
struct v3d_fence *fence = struct v3d_fence *fence =
to_v3d_fence(v3d->render_job->base.irq_fence); to_v3d_fence(v3d->render_job->base.irq_fence);
+ v3d->gpu_queue_stats[V3D_RENDER].last_exec_end = local_clock(); + v3d->gpu_queue_stats[V3D_RENDER].last_exec_end = local_clock();
trace_v3d_rcl_irq(&v3d->drm, fence->seqno); trace_v3d_rcl_irq(&v3d->drm, fence->seqno);
dma_fence_signal(&fence->base);
@@ -118,6 +121,7 @@ v3d_irq(int irq, void *arg) @@ -124,6 +127,7 @@ v3d_irq(int irq, void *arg)
if (intsts & V3D_INT_CSDDONE) { if (intsts & V3D_INT_CSDDONE) {
struct v3d_fence *fence = struct v3d_fence *fence =
to_v3d_fence(v3d->csd_job->base.irq_fence); to_v3d_fence(v3d->csd_job->base.irq_fence);
+ v3d->gpu_queue_stats[V3D_CSD].last_exec_end = local_clock(); + v3d->gpu_queue_stats[V3D_CSD].last_exec_end = local_clock();
trace_v3d_csd_irq(&v3d->drm, fence->seqno); trace_v3d_csd_irq(&v3d->drm, fence->seqno);
dma_fence_signal(&fence->base);
@@ -154,6 +158,7 @@ v3d_hub_irq(int irq, void *arg) @@ -163,6 +167,7 @@ v3d_hub_irq(int irq, void *arg)
if (intsts & V3D_HUB_INT_TFUC) { if (intsts & V3D_HUB_INT_TFUC) {
struct v3d_fence *fence = struct v3d_fence *fence =
to_v3d_fence(v3d->tfu_job->base.irq_fence); to_v3d_fence(v3d->tfu_job->base.irq_fence);
+ v3d->gpu_queue_stats[V3D_TFU].last_exec_end = local_clock(); + v3d->gpu_queue_stats[V3D_TFU].last_exec_end = local_clock();
trace_v3d_tfu_irq(&v3d->drm, fence->seqno); trace_v3d_tfu_irq(&v3d->drm, fence->seqno);
dma_fence_signal(&fence->base);
--- a/drivers/gpu/drm/v3d/v3d_sched.c --- a/drivers/gpu/drm/v3d/v3d_sched.c
+++ b/drivers/gpu/drm/v3d/v3d_sched.c +++ b/drivers/gpu/drm/v3d/v3d_sched.c
@@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@

@ -34,7 +34,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci-ring.c --- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c
@@ -729,6 +729,15 @@ static int xhci_move_dequeue_past_td(str @@ -730,6 +730,15 @@ static int xhci_move_dequeue_past_td(str
} while (!cycle_found || !td_last_trb_found); } while (!cycle_found || !td_last_trb_found);
deq_found: deq_found:

@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci-ring.c --- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c
@@ -3714,6 +3714,48 @@ static int xhci_align_td(struct xhci_hcd @@ -3715,6 +3715,48 @@ static int xhci_align_td(struct xhci_hcd
return 1; return 1;
} }
@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
/* This is very similar to what ehci-q.c qtd_fill() does */ /* This is very similar to what ehci-q.c qtd_fill() does */
int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
struct urb *urb, int slot_id, unsigned int ep_index) struct urb *urb, int slot_id, unsigned int ep_index)
@@ -3870,6 +3912,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * @@ -3871,6 +3913,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
} }
check_trb_math(urb, enqd_len); check_trb_math(urb, enqd_len);
@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id, giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id,
start_cycle, start_trb); start_cycle, start_trb);
return 0; return 0;
@@ -4019,6 +4063,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * @@ -4020,6 +4064,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
/* Event on completion */ /* Event on completion */
field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state); field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state);

@ -1,26 +0,0 @@
From 7713ce38e6a26425ace3a57b3d03ba0125c16f89 Mon Sep 17 00:00:00 2001
From: Naushir Patuck <naush@raspberrypi.com>
Date: Fri, 28 Jul 2023 12:00:40 +0100
Subject: [PATCH 0487/1085] drivers: media: imx296: Add standby delay during
probe
Add a 2-5ms delay when coming out of standby and before reading the
sensor info register durning probe, as instructed by the datasheet. This
standby delay is already present when the sensor starts streaming.
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
---
drivers/media/i2c/imx296.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
@@ -940,6 +940,8 @@ static int imx296_identify_model(struct
return ret;
}
+ usleep_range(2000, 5000);
+
ret = imx296_read(sensor, IMX296_SENSOR_INFO);
if (ret < 0) {
dev_err(sensor->dev, "failed to read sensor information (%d)\n",

@ -53,16 +53,16 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
help help
--- a/drivers/gpio/gpio-brcmstb.c --- a/drivers/gpio/gpio-brcmstb.c
+++ b/drivers/gpio/gpio-brcmstb.c +++ b/drivers/gpio/gpio-brcmstb.c
@@ -639,6 +639,8 @@ static int brcmstb_gpio_probe(struct pla @@ -637,6 +637,8 @@ static int brcmstb_gpio_probe(struct pla
#if defined(CONFIG_MIPS) && defined(__BIG_ENDIAN) #if defined(CONFIG_MIPS) && defined(__BIG_ENDIAN)
flags = BGPIOF_BIG_ENDIAN_BYTE_ORDER; flags = BGPIOF_BIG_ENDIAN_BYTE_ORDER;
#endif #endif
+ if (of_property_read_bool(np, "brcm,gpio-direct")) + if (of_property_read_bool(np, "brcm,gpio-direct"))
+ flags |= BGPIOF_REG_DIRECT; + flags |= BGPIOF_REG_DIRECT;
of_property_for_each_u32(np, "brcm,gpio-bank-widths", prop, p, of_property_for_each_u32(np, "brcm,gpio-bank-widths", bank_width) {
bank_width) { struct brcmstb_gpio_bank *bank;
@@ -688,7 +690,9 @@ static int brcmstb_gpio_probe(struct pla @@ -685,7 +687,9 @@ static int brcmstb_gpio_probe(struct pla
} }
gc->owner = THIS_MODULE; gc->owner = THIS_MODULE;
@ -73,7 +73,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
if (!gc->label) { if (!gc->label) {
err = -ENOMEM; err = -ENOMEM;
goto fail; goto fail;
@@ -697,7 +701,7 @@ static int brcmstb_gpio_probe(struct pla @@ -694,7 +698,7 @@ static int brcmstb_gpio_probe(struct pla
gc->of_gpio_n_cells = 2; gc->of_gpio_n_cells = 2;
gc->of_xlate = brcmstb_gpio_of_xlate; gc->of_xlate = brcmstb_gpio_of_xlate;
/* not all ngpio lines are valid, will use bank width later */ /* not all ngpio lines are valid, will use bank width later */
@ -82,7 +82,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
gc->offset = bank->id * MAX_GPIO_PER_BANK; gc->offset = bank->id * MAX_GPIO_PER_BANK;
if (priv->parent_irq > 0) if (priv->parent_irq > 0)
gc->to_irq = brcmstb_gpio_to_irq; gc->to_irq = brcmstb_gpio_to_irq;
@@ -706,8 +710,10 @@ static int brcmstb_gpio_probe(struct pla @@ -703,8 +707,10 @@ static int brcmstb_gpio_probe(struct pla
* Mask all interrupts by default, since wakeup interrupts may * Mask all interrupts by default, since wakeup interrupts may
* be retained from S5 cold boot * be retained from S5 cold boot
*/ */

@ -276,10 +276,10 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
u8 tx_max_burst_prd = 0; u8 tx_max_burst_prd = 0;
u8 tx_fifo_resize_max_num; u8 tx_fifo_resize_max_num;
+ u8 axi_pipe_limit; + u8 axi_pipe_limit;
const char *usb_psy_name;
int ret;
@@ -1527,6 +1566,9 @@ static void dwc3_get_properties(struct d /* default to highest possible threshold */
lpm_nyet_threshold = 0xf;
@@ -1525,6 +1564,9 @@ static void dwc3_get_properties(struct d
*/ */
tx_fifo_resize_max_num = 6; tx_fifo_resize_max_num = 6;
@ -289,7 +289,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
dwc->maximum_speed = usb_get_maximum_speed(dev); dwc->maximum_speed = usb_get_maximum_speed(dev);
dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev); dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev);
dwc->dr_mode = usb_get_dr_mode(dev); dwc->dr_mode = usb_get_dr_mode(dev);
@@ -1648,6 +1690,9 @@ static void dwc3_get_properties(struct d @@ -1639,6 +1681,9 @@ static void dwc3_get_properties(struct d
dwc->dis_split_quirk = device_property_read_bool(dev, dwc->dis_split_quirk = device_property_read_bool(dev,
"snps,dis-split-quirk"); "snps,dis-split-quirk");
@ -299,7 +299,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
dwc->lpm_nyet_threshold = lpm_nyet_threshold; dwc->lpm_nyet_threshold = lpm_nyet_threshold;
dwc->tx_de_emphasis = tx_de_emphasis; dwc->tx_de_emphasis = tx_de_emphasis;
@@ -1665,6 +1710,8 @@ static void dwc3_get_properties(struct d @@ -1656,6 +1701,8 @@ static void dwc3_get_properties(struct d
dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd; dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd;
dwc->tx_max_burst_prd = tx_max_burst_prd; dwc->tx_max_burst_prd = tx_max_burst_prd;
@ -308,9 +308,9 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
dwc->imod_interval = 0; dwc->imod_interval = 0;
dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num; dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num;
@@ -1940,6 +1987,12 @@ static int dwc3_probe(struct platform_de @@ -1952,6 +1999,12 @@ static int dwc3_probe(struct platform_de
if (IS_ERR(dwc->usb_psy))
dwc3_get_properties(dwc); return dev_err_probe(dev, PTR_ERR(dwc->usb_psy), "couldn't get usb power supply\n");
+ if (!dwc->sysdev_is_parent) { + if (!dwc->sysdev_is_parent) {
+ ret = dma_set_mask_and_coherent(dwc->sysdev, DMA_BIT_MASK(64)); + ret = dma_set_mask_and_coherent(dwc->sysdev, DMA_BIT_MASK(64));

@ -295,7 +295,7 @@ v2: fix kernel panic with debug-fs interface to list registers
static irqreturn_t static irqreturn_t
v3d_hub_irq(int irq, void *arg); v3d_hub_irq(int irq, void *arg);
@@ -118,7 +119,8 @@ v3d_irq(int irq, void *arg) @@ -124,7 +125,8 @@ v3d_irq(int irq, void *arg)
status = IRQ_HANDLED; status = IRQ_HANDLED;
} }
@ -305,7 +305,7 @@ v2: fix kernel panic with debug-fs interface to list registers
struct v3d_fence *fence = struct v3d_fence *fence =
to_v3d_fence(v3d->csd_job->base.irq_fence); to_v3d_fence(v3d->csd_job->base.irq_fence);
v3d->gpu_queue_stats[V3D_CSD].last_exec_end = local_clock(); v3d->gpu_queue_stats[V3D_CSD].last_exec_end = local_clock();
@@ -131,7 +133,7 @@ v3d_irq(int irq, void *arg) @@ -140,7 +142,7 @@ v3d_irq(int irq, void *arg)
/* We shouldn't be triggering these if we have GMP in /* We shouldn't be triggering these if we have GMP in
* always-allowed mode. * always-allowed mode.
*/ */
@ -314,7 +314,7 @@ v2: fix kernel panic with debug-fs interface to list registers
dev_err(v3d->drm.dev, "GMP violation\n"); dev_err(v3d->drm.dev, "GMP violation\n");
/* V3D 4.2 wires the hub and core IRQs together, so if we & /* V3D 4.2 wires the hub and core IRQs together, so if we &
@@ -205,6 +207,11 @@ v3d_hub_irq(int irq, void *arg) @@ -217,6 +219,11 @@ v3d_hub_irq(int irq, void *arg)
status = IRQ_HANDLED; status = IRQ_HANDLED;
} }
@ -326,7 +326,7 @@ v2: fix kernel panic with debug-fs interface to list registers
return status; return status;
} }
@@ -219,8 +226,8 @@ v3d_irq_init(struct v3d_dev *v3d) @@ -231,8 +238,8 @@ v3d_irq_init(struct v3d_dev *v3d)
* for us. * for us.
*/ */
for (core = 0; core < v3d->cores; core++) for (core = 0; core < v3d->cores; core++)
@ -337,7 +337,7 @@ v2: fix kernel panic with debug-fs interface to list registers
irq1 = platform_get_irq_optional(v3d_to_pdev(v3d), 1); irq1 = platform_get_irq_optional(v3d_to_pdev(v3d), 1);
if (irq1 == -EPROBE_DEFER) if (irq1 == -EPROBE_DEFER)
@@ -264,12 +271,12 @@ v3d_irq_enable(struct v3d_dev *v3d) @@ -276,12 +283,12 @@ v3d_irq_enable(struct v3d_dev *v3d)
/* Enable our set of interrupts, masking out any others. */ /* Enable our set of interrupts, masking out any others. */
for (core = 0; core < v3d->cores; core++) { for (core = 0; core < v3d->cores; core++) {
@ -354,7 +354,7 @@ v2: fix kernel panic with debug-fs interface to list registers
} }
void void
@@ -284,8 +291,8 @@ v3d_irq_disable(struct v3d_dev *v3d) @@ -296,8 +303,8 @@ v3d_irq_disable(struct v3d_dev *v3d)
/* Clear any pending interrupts we might have left. */ /* Clear any pending interrupts we might have left. */
for (core = 0; core < v3d->cores; core++) for (core = 0; core < v3d->cores; core++)

@ -61,8 +61,8 @@ Fixes: 3b0213d56eb7 ("gpio: Add GPIO support for Broadcom STB SoCs")
if (offset >= gc->ngpio || offset < 0) if (offset >= gc->ngpio || offset < 0)
return -EINVAL; return -EINVAL;
@@ -598,8 +598,8 @@ static int brcmstb_gpio_probe(struct pla @@ -596,8 +596,8 @@ static int brcmstb_gpio_probe(struct pla
const __be32 *p; struct resource *res;
u32 bank_width; u32 bank_width;
int num_banks = 0; int num_banks = 0;
+ int num_gpios = 0; + int num_gpios = 0;
@ -71,7 +71,7 @@ Fixes: 3b0213d56eb7 ("gpio: Add GPIO support for Broadcom STB SoCs")
unsigned long flags = 0; unsigned long flags = 0;
bool need_wakeup_event = false; bool need_wakeup_event = false;
@@ -613,7 +613,6 @@ static int brcmstb_gpio_probe(struct pla @@ -611,7 +611,6 @@ static int brcmstb_gpio_probe(struct pla
if (IS_ERR(reg_base)) if (IS_ERR(reg_base))
return PTR_ERR(reg_base); return PTR_ERR(reg_base);
@ -79,7 +79,7 @@ Fixes: 3b0213d56eb7 ("gpio: Add GPIO support for Broadcom STB SoCs")
priv->reg_base = reg_base; priv->reg_base = reg_base;
priv->pdev = pdev; priv->pdev = pdev;
@@ -655,7 +654,7 @@ static int brcmstb_gpio_probe(struct pla @@ -652,7 +651,7 @@ static int brcmstb_gpio_probe(struct pla
dev_dbg(dev, "Width 0 found: Empty bank @ %d\n", dev_dbg(dev, "Width 0 found: Empty bank @ %d\n",
num_banks); num_banks);
num_banks++; num_banks++;
@ -88,7 +88,7 @@ Fixes: 3b0213d56eb7 ("gpio: Add GPIO support for Broadcom STB SoCs")
continue; continue;
} }
@@ -697,7 +696,7 @@ static int brcmstb_gpio_probe(struct pla @@ -694,7 +693,7 @@ static int brcmstb_gpio_probe(struct pla
err = -ENOMEM; err = -ENOMEM;
goto fail; goto fail;
} }
@ -97,7 +97,7 @@ Fixes: 3b0213d56eb7 ("gpio: Add GPIO support for Broadcom STB SoCs")
gc->of_gpio_n_cells = 2; gc->of_gpio_n_cells = 2;
gc->of_xlate = brcmstb_gpio_of_xlate; gc->of_xlate = brcmstb_gpio_of_xlate;
/* not all ngpio lines are valid, will use bank width later */ /* not all ngpio lines are valid, will use bank width later */
@@ -721,7 +720,7 @@ static int brcmstb_gpio_probe(struct pla @@ -718,7 +717,7 @@ static int brcmstb_gpio_probe(struct pla
bank->id); bank->id);
goto fail; goto fail;
} }
@ -106,7 +106,7 @@ Fixes: 3b0213d56eb7 ("gpio: Add GPIO support for Broadcom STB SoCs")
dev_dbg(dev, "bank=%d, base=%d, ngpio=%d, width=%d\n", bank->id, dev_dbg(dev, "bank=%d, base=%d, ngpio=%d, width=%d\n", bank->id,
gc->base, gc->ngpio, bank->width); gc->base, gc->ngpio, bank->width);
@@ -732,7 +731,7 @@ static int brcmstb_gpio_probe(struct pla @@ -729,7 +728,7 @@ static int brcmstb_gpio_probe(struct pla
num_banks++; num_banks++;
} }

@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
--- a/drivers/gpu/drm/drm_fb_helper.c --- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -1851,7 +1851,7 @@ __drm_fb_helper_initial_config_and_unloc @@ -1853,7 +1853,7 @@ __drm_fb_helper_initial_config_and_unloc
struct drm_device *dev = fb_helper->dev; struct drm_device *dev = fb_helper->dev;
struct fb_info *info; struct fb_info *info;
unsigned int width, height; unsigned int width, height;
@ -24,7 +24,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
width = dev->mode_config.max_width; width = dev->mode_config.max_width;
height = dev->mode_config.max_height; height = dev->mode_config.max_height;
@@ -1879,6 +1879,15 @@ __drm_fb_helper_initial_config_and_unloc @@ -1881,6 +1881,15 @@ __drm_fb_helper_initial_config_and_unloc
* register the fbdev emulation instance in kernel_fb_helper_list. */ * register the fbdev emulation instance in kernel_fb_helper_list. */
mutex_unlock(&fb_helper->lock); mutex_unlock(&fb_helper->lock);

@ -12,7 +12,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
--- a/drivers/gpu/drm/drm_fb_helper.c --- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -1879,11 +1879,11 @@ __drm_fb_helper_initial_config_and_unloc @@ -1881,11 +1881,11 @@ __drm_fb_helper_initial_config_and_unloc
* register the fbdev emulation instance in kernel_fb_helper_list. */ * register the fbdev emulation instance in kernel_fb_helper_list. */
mutex_unlock(&fb_helper->lock); mutex_unlock(&fb_helper->lock);

@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY) && if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY) &&
(dwc->maximum_speed == USB_SPEED_HIGH || (dwc->maximum_speed == USB_SPEED_HIGH ||
dwc->maximum_speed == USB_SPEED_FULL)) dwc->maximum_speed == USB_SPEED_FULL))
@@ -1670,6 +1673,8 @@ static void dwc3_get_properties(struct d @@ -1661,6 +1664,8 @@ static void dwc3_get_properties(struct d
"snps,parkmode-disable-ss-quirk"); "snps,parkmode-disable-ss-quirk");
dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev, dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev,
"snps,parkmode-disable-hs-quirk"); "snps,parkmode-disable-hs-quirk");

@ -21,7 +21,7 @@ Signed-off-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com>
--- a/drivers/gpu/drm/drm_connector.c --- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c
@@ -1049,6 +1049,7 @@ static const struct drm_prop_enum_list d @@ -1050,6 +1050,7 @@ static const struct drm_prop_enum_list d
{ DRM_MODE_TV_MODE_PAL_M, "PAL-M" }, { DRM_MODE_TV_MODE_PAL_M, "PAL-M" },
{ DRM_MODE_TV_MODE_PAL_N, "PAL-N" }, { DRM_MODE_TV_MODE_PAL_N, "PAL-N" },
{ DRM_MODE_TV_MODE_SECAM, "SECAM" }, { DRM_MODE_TV_MODE_SECAM, "SECAM" },
@ -29,7 +29,7 @@ Signed-off-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com>
}; };
DRM_ENUM_NAME_FN(drm_get_tv_mode_name, drm_tv_mode_enum_list) DRM_ENUM_NAME_FN(drm_get_tv_mode_name, drm_tv_mode_enum_list)
@@ -1735,6 +1736,12 @@ EXPORT_SYMBOL(drm_connector_attach_dp_su @@ -1736,6 +1737,12 @@ EXPORT_SYMBOL(drm_connector_attach_dp_su
* TV Mode is CCIR System B (aka 625-lines) together with * TV Mode is CCIR System B (aka 625-lines) together with
* the SECAM Color Encoding. * the SECAM Color Encoding.
* *

@ -22,7 +22,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
--- a/drivers/gpu/drm/drm_connector.c --- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c
@@ -2697,10 +2697,15 @@ int drm_connector_set_orientation_from_p @@ -2698,10 +2698,15 @@ int drm_connector_set_orientation_from_p
{ {
enum drm_panel_orientation orientation; enum drm_panel_orientation orientation;

@ -148,7 +148,7 @@ Signed-off-by: Maíra Canal <mcanal@igalia.com>
--- a/kernel/cgroup/cgroup.c --- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c
@@ -6063,9 +6063,6 @@ int __init cgroup_init_early(void) @@ -6059,9 +6059,6 @@ int __init cgroup_init_early(void)
return 0; return 0;
} }
@ -158,7 +158,7 @@ Signed-off-by: Maíra Canal <mcanal@igalia.com>
/** /**
* cgroup_init - cgroup initialization * cgroup_init - cgroup initialization
* *
@@ -6099,12 +6096,6 @@ int __init cgroup_init(void) @@ -6095,12 +6092,6 @@ int __init cgroup_init(void)
cgroup_unlock(); cgroup_unlock();
@ -171,7 +171,7 @@ Signed-off-by: Maíra Canal <mcanal@igalia.com>
for_each_subsys(ss, ssid) { for_each_subsys(ss, ssid) {
if (ss->early_init) { if (ss->early_init) {
struct cgroup_subsys_state *css = struct cgroup_subsys_state *css =
@@ -6745,10 +6736,6 @@ static int __init cgroup_disable(char *s @@ -6749,10 +6740,6 @@ static int __init cgroup_disable(char *s
strcmp(token, ss->legacy_name)) strcmp(token, ss->legacy_name))
continue; continue;
@ -182,7 +182,7 @@ Signed-off-by: Maíra Canal <mcanal@igalia.com>
static_branch_disable(cgroup_subsys_enabled_key[i]); static_branch_disable(cgroup_subsys_enabled_key[i]);
pr_info("Disabling %s control group subsystem\n", pr_info("Disabling %s control group subsystem\n",
ss->name); ss->name);
@@ -6782,7 +6769,7 @@ static int __init cgroup_enable(char *st @@ -6786,7 +6773,7 @@ static int __init cgroup_enable(char *st
strcmp(token, ss->legacy_name)) strcmp(token, ss->legacy_name))
continue; continue;

@ -35,7 +35,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
if (dwc->parkmode_disable_ss_quirk) if (dwc->parkmode_disable_ss_quirk)
reg |= DWC3_GUCTL1_PARKMODE_DISABLE_SS; reg |= DWC3_GUCTL1_PARKMODE_DISABLE_SS;
@@ -1669,6 +1675,10 @@ static void dwc3_get_properties(struct d @@ -1660,6 +1666,10 @@ static void dwc3_get_properties(struct d
"snps,resume-hs-terminations"); "snps,resume-hs-terminations");
dwc->ulpi_ext_vbus_drv = device_property_read_bool(dev, dwc->ulpi_ext_vbus_drv = device_property_read_bool(dev,
"snps,ulpi-ext-vbus-drv"); "snps,ulpi-ext-vbus-drv");

@ -28,7 +28,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
--- a/drivers/usb/host/xhci-ring.c --- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c
@@ -506,6 +506,19 @@ void xhci_ring_ep_doorbell(struct xhci_h @@ -507,6 +507,19 @@ void xhci_ring_ep_doorbell(struct xhci_h
trace_xhci_ring_ep_doorbell(slot_id, DB_VALUE(ep_index, stream_id)); trace_xhci_ring_ep_doorbell(slot_id, DB_VALUE(ep_index, stream_id));

@ -18,7 +18,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
--- a/drivers/gpu/drm/drm_connector.c --- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c
@@ -361,7 +361,8 @@ static int __drm_connector_init(struct d @@ -362,7 +362,8 @@ static int __drm_connector_init(struct d
drm_object_attach_property(&connector->base, drm_object_attach_property(&connector->base,
config->non_desktop_property, config->non_desktop_property,

@ -20,7 +20,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
--- a/drivers/gpu/drm/drm_connector.c --- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c
@@ -362,7 +362,7 @@ static int __drm_connector_init(struct d @@ -363,7 +363,7 @@ static int __drm_connector_init(struct d
drm_object_attach_property(&connector->base, drm_object_attach_property(&connector->base,
config->non_desktop_property, config->non_desktop_property,
(connector_type != DRM_MODE_CONNECTOR_VIRTUAL && (connector_type != DRM_MODE_CONNECTOR_VIRTUAL &&

@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- a/kernel/cgroup/cgroup.c --- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c
@@ -6769,11 +6769,19 @@ static int __init cgroup_enable(char *st @@ -6773,11 +6773,19 @@ static int __init cgroup_enable(char *st
strcmp(token, ss->legacy_name)) strcmp(token, ss->legacy_name))
continue; continue;

@ -1,31 +0,0 @@
From e23afbf2c7aae9264322eee8e5c72ca1887606df Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Mon, 9 Dec 2024 10:43:18 +0000
Subject: [PATCH] media: i2c: ov9282: Correct the exposure offset
The datasheet lists that "Maximum exposure time is frame
length -25 row periods, where frame length is set by
registers {0x380E, 0x380F}".
However this driver had OV9282_EXPOSURE_OFFSET set to 12
which allowed that restriction to be violated, and would
result in very under-exposed images.
Correct the offset.
Fixes: 14ea315bbeb7 ("media: i2c: Add ov9282 camera sensor driver")
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
drivers/media/i2c/ov9282.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/media/i2c/ov9282.c
+++ b/drivers/media/i2c/ov9282.c
@@ -40,7 +40,7 @@
/* Exposure control */
#define OV9282_REG_EXPOSURE 0x3500
#define OV9282_EXPOSURE_MIN 1
-#define OV9282_EXPOSURE_OFFSET 12
+#define OV9282_EXPOSURE_OFFSET 25
#define OV9282_EXPOSURE_STEP 1
#define OV9282_EXPOSURE_DEFAULT 0x0282

@ -31,7 +31,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
--- a/drivers/tty/serial/sc16is7xx.c --- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c
@@ -1457,7 +1457,7 @@ static int sc16is7xx_setup_mctrl_ports(s @@ -1480,7 +1480,7 @@ static int sc16is7xx_setup_mctrl_ports(s
} }
static const struct serial_rs485 sc16is7xx_rs485_supported = { static const struct serial_rs485 sc16is7xx_rs485_supported = {

@ -1,33 +0,0 @@
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 10 Jun 2022 13:10:47 +0200
Subject: [PATCH] bgmac: reduce max frame size to support just MTU 1500
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
bgmac allocates new replacement buffer before handling each received
frame. Allocating & DMA-preparing 9724 B each time consumes a lot of CPU
time. Ideally bgmac should just respect currently set MTU but it isn't
the case right now. For now just revert back to the old limited frame
size.
This change bumps NAT masquarade speed by ~95%.
Ref: 8c7da63978f1 ("bgmac: configure MTU and add support for frames beyond 8192 byte size")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
drivers/net/ethernet/broadcom/bgmac.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/drivers/net/ethernet/broadcom/bgmac.h
+++ b/drivers/net/ethernet/broadcom/bgmac.h
@@ -328,8 +328,7 @@
#define BGMAC_RX_FRAME_OFFSET 30 /* There are 2 unused bytes between header and real data */
#define BGMAC_RX_BUF_OFFSET (NET_SKB_PAD + NET_IP_ALIGN - \
BGMAC_RX_FRAME_OFFSET)
-/* Jumbo frame size with FCS */
-#define BGMAC_RX_MAX_FRAME_SIZE 9724
+#define BGMAC_RX_MAX_FRAME_SIZE 1536
#define BGMAC_RX_BUF_SIZE (BGMAC_RX_FRAME_OFFSET + BGMAC_RX_MAX_FRAME_SIZE)
#define BGMAC_RX_ALLOC_SIZE (SKB_DATA_ALIGN(BGMAC_RX_BUF_SIZE + BGMAC_RX_BUF_OFFSET) + \
SKB_DATA_ALIGN(sizeof(struct skb_shared_info)))

@ -5,7 +5,7 @@ when a switch driver is in use.
--- a/drivers/net/ethernet/broadcom/tg3.c --- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -4269,7 +4269,8 @@ static int tg3_power_down_prepare(struct @@ -4270,7 +4270,8 @@ static int tg3_power_down_prepare(struct
static void tg3_power_down(struct tg3 *tp) static void tg3_power_down(struct tg3 *tp)
{ {
pci_wake_from_d3(tp->pdev, tg3_flag(tp, WOL_ENABLE)); pci_wake_from_d3(tp->pdev, tg3_flag(tp, WOL_ENABLE));

@ -1,33 +0,0 @@
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 10 Jun 2022 13:10:47 +0200
Subject: [PATCH] bgmac: reduce max frame size to support just MTU 1500
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
bgmac allocates new replacement buffer before handling each received
frame. Allocating & DMA-preparing 9724 B each time consumes a lot of CPU
time. Ideally bgmac should just respect currently set MTU but it isn't
the case right now. For now just revert back to the old limited frame
size.
This change bumps NAT masquarade speed by ~95%.
Ref: 8c7da63978f1 ("bgmac: configure MTU and add support for frames beyond 8192 byte size")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
drivers/net/ethernet/broadcom/bgmac.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/drivers/net/ethernet/broadcom/bgmac.h
+++ b/drivers/net/ethernet/broadcom/bgmac.h
@@ -328,8 +328,7 @@
#define BGMAC_RX_FRAME_OFFSET 30 /* There are 2 unused bytes between header and real data */
#define BGMAC_RX_BUF_OFFSET (NET_SKB_PAD + NET_IP_ALIGN - \
BGMAC_RX_FRAME_OFFSET)
-/* Jumbo frame size with FCS */
-#define BGMAC_RX_MAX_FRAME_SIZE 9724
+#define BGMAC_RX_MAX_FRAME_SIZE 1536
#define BGMAC_RX_BUF_SIZE (BGMAC_RX_FRAME_OFFSET + BGMAC_RX_MAX_FRAME_SIZE)
#define BGMAC_RX_ALLOC_SIZE (SKB_DATA_ALIGN(BGMAC_RX_BUF_SIZE + BGMAC_RX_BUF_OFFSET) + \
SKB_DATA_ALIGN(sizeof(struct skb_shared_info)))

@ -23,7 +23,7 @@ Link: https://lore.kernel.org/linux-mtd/20240223034758.13753-14-william.zhang@br
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
@@ -3189,6 +3189,10 @@ int brcmnand_probe(struct platform_devic @@ -3194,6 +3194,10 @@ int brcmnand_probe(struct platform_devic
/* Disable XOR addressing */ /* Disable XOR addressing */
brcmnand_rmw_reg(ctrl, BRCMNAND_CS_XOR, 0xff, 0, 0); brcmnand_rmw_reg(ctrl, BRCMNAND_CS_XOR, 0xff, 0, 0);

@ -250,7 +250,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
return 0; return 0;
} }
@@ -11299,7 +11340,7 @@ static int dev_cpu_dead(unsigned int old @@ -11303,7 +11344,7 @@ static int dev_cpu_dead(unsigned int old
list_del_init(&napi->poll_list); list_del_init(&napi->poll_list);
if (napi->poll == process_backlog) if (napi->poll == process_backlog)
@ -259,7 +259,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
else else
____napi_schedule(sd, napi); ____napi_schedule(sd, napi);
} }
@@ -11307,12 +11348,14 @@ static int dev_cpu_dead(unsigned int old @@ -11311,12 +11352,14 @@ static int dev_cpu_dead(unsigned int old
raise_softirq_irqoff(NET_TX_SOFTIRQ); raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable(); local_irq_enable();
@ -278,7 +278,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
/* Process offline CPU's input_pkt_queue */ /* Process offline CPU's input_pkt_queue */
while ((skb = __skb_dequeue(&oldsd->process_queue))) { while ((skb = __skb_dequeue(&oldsd->process_queue))) {
@@ -11575,6 +11618,38 @@ static struct pernet_operations __net_in @@ -11579,6 +11622,38 @@ static struct pernet_operations __net_in
* *
*/ */
@ -317,7 +317,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
/* /*
* This is called single threaded during boot, so no need * This is called single threaded during boot, so no need
* to take the rtnl semaphore. * to take the rtnl semaphore.
@@ -11625,7 +11700,10 @@ static int __init net_dev_init(void) @@ -11629,7 +11704,10 @@ static int __init net_dev_init(void)
init_gro_hash(&sd->backlog); init_gro_hash(&sd->backlog);
sd->backlog.poll = process_backlog; sd->backlog.poll = process_backlog;
sd->backlog.weight = weight_p; sd->backlog.weight = weight_p;

@ -36,7 +36,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- a/include/linux/netdevice.h --- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h +++ b/include/linux/netdevice.h
@@ -3300,6 +3300,7 @@ static inline void dev_xmit_recursion_de @@ -3306,6 +3306,7 @@ static inline void dev_xmit_recursion_de
__this_cpu_dec(softnet_data.xmit.recursion); __this_cpu_dec(softnet_data.xmit.recursion);
} }

@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -9761,6 +9761,15 @@ static void netdev_sync_lower_features(s @@ -9765,6 +9765,15 @@ static void netdev_sync_lower_features(s
} }
} }
@ -36,7 +36,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
static netdev_features_t netdev_fix_features(struct net_device *dev, static netdev_features_t netdev_fix_features(struct net_device *dev,
netdev_features_t features) netdev_features_t features)
{ {
@@ -9842,15 +9851,9 @@ static netdev_features_t netdev_fix_feat @@ -9846,15 +9855,9 @@ static netdev_features_t netdev_fix_feat
features &= ~NETIF_F_LRO; features &= ~NETIF_F_LRO;
} }
@ -55,7 +55,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
} }
if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) { if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) {
@@ -9858,6 +9861,11 @@ static netdev_features_t netdev_fix_feat @@ -9862,6 +9865,11 @@ static netdev_features_t netdev_fix_feat
features &= ~NETIF_F_HW_TLS_RX; features &= ~NETIF_F_HW_TLS_RX;
} }

@ -18,7 +18,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -10668,6 +10668,8 @@ struct rtnl_link_stats64 *dev_get_stats( @@ -10672,6 +10672,8 @@ struct rtnl_link_stats64 *dev_get_stats(
ops->ndo_get_stats64(dev, storage); ops->ndo_get_stats64(dev, storage);
} else if (ops->ndo_get_stats) { } else if (ops->ndo_get_stats) {
netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev)); netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev));

@ -37,7 +37,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/include/linux/netdevice.h --- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h +++ b/include/linux/netdevice.h
@@ -4561,6 +4561,9 @@ static inline void netif_addr_unlock_bh( @@ -4567,6 +4567,9 @@ static inline void netif_addr_unlock_bh(
void ether_setup(struct net_device *dev); void ether_setup(struct net_device *dev);
@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
unsigned char name_assign_type, unsigned char name_assign_type,
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -10355,25 +10355,12 @@ err_free_name: @@ -10359,25 +10359,12 @@ err_free_name:
} }
EXPORT_SYMBOL(register_netdevice); EXPORT_SYMBOL(register_netdevice);
@ -79,7 +79,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* make sure we BUG if trying to hit standard /* make sure we BUG if trying to hit standard
* register/unregister code path * register/unregister code path
*/ */
@@ -10393,12 +10380,32 @@ int init_dummy_netdev(struct net_device @@ -10397,12 +10384,32 @@ int init_dummy_netdev(struct net_device
* because users of this 'device' dont need to change * because users of this 'device' dont need to change
* its refcount. * its refcount.
*/ */
@ -113,7 +113,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/** /**
* register_netdev - register a network device * register_netdev - register a network device
* @dev: device to register * @dev: device to register
@@ -10992,6 +10999,19 @@ void free_netdev(struct net_device *dev) @@ -10996,6 +11003,19 @@ void free_netdev(struct net_device *dev)
EXPORT_SYMBOL(free_netdev); EXPORT_SYMBOL(free_netdev);
/** /**

@ -330,7 +330,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
} }
EXPORT_SYMBOL_GPL(nvmem_cell_put); EXPORT_SYMBOL_GPL(nvmem_cell_put);
@@ -2116,11 +2057,22 @@ EXPORT_SYMBOL_GPL(nvmem_dev_size); @@ -2118,11 +2059,22 @@ EXPORT_SYMBOL_GPL(nvmem_dev_size);
static int __init nvmem_init(void) static int __init nvmem_init(void)
{ {

@ -28,7 +28,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
FUSE_INVALID = -1 FUSE_INVALID = -1
}; };
@@ -93,7 +94,10 @@ static int imx_ocotp_reg_read(void *cont @@ -95,7 +96,10 @@ static int imx_ocotp_reg_read(void *cont
continue; continue;
} }
@ -39,8 +39,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+ *buf++ = readl_relaxed(reg + (i << 2)); + *buf++ = readl_relaxed(reg + (i << 2));
} }
memcpy(val, (u8 *)p, bytes); memcpy(val, ((u8 *)p) + skipbytes, bytes);
@@ -155,8 +159,30 @@ static const struct ocotp_devtype_data i @@ -157,8 +161,30 @@ static const struct ocotp_devtype_data i
}, },
}; };

@ -23,7 +23,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -10985,7 +10985,8 @@ void free_netdev(struct net_device *dev) @@ -10989,7 +10989,8 @@ void free_netdev(struct net_device *dev)
dev->xdp_bulkq = NULL; dev->xdp_bulkq = NULL;
/* Compatibility with error handling in drivers */ /* Compatibility with error handling in drivers */

@ -78,7 +78,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
netif_napi_del(&bgmac->napi); netif_napi_del(&bgmac->napi);
--- a/drivers/net/ethernet/broadcom/bgmac.h --- a/drivers/net/ethernet/broadcom/bgmac.h
+++ b/drivers/net/ethernet/broadcom/bgmac.h +++ b/drivers/net/ethernet/broadcom/bgmac.h
@@ -388,6 +388,7 @@ @@ -387,6 +387,7 @@
#define BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII BIT(18) #define BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII BIT(18)
#define BGMAC_FEAT_CC7_IF_TYPE_RGMII BIT(19) #define BGMAC_FEAT_CC7_IF_TYPE_RGMII BIT(19)
#define BGMAC_FEAT_IDM_MASK BIT(20) #define BGMAC_FEAT_IDM_MASK BIT(20)
@ -86,7 +86,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
struct bgmac_slot_info { struct bgmac_slot_info {
union { union {
@@ -495,6 +496,9 @@ struct bgmac { @@ -494,6 +495,9 @@ struct bgmac {
void (*cmn_maskset32)(struct bgmac *bgmac, u16 offset, u32 mask, void (*cmn_maskset32)(struct bgmac *bgmac, u16 offset, u32 mask,
u32 set); u32 set);
int (*phy_connect)(struct bgmac *bgmac); int (*phy_connect)(struct bgmac *bgmac);

@ -44,7 +44,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
#define QUECTEL_VENDOR_ID 0x2c7c #define QUECTEL_VENDOR_ID 0x2c7c
/* These Quectel products use Quectel's vendor ID */ /* These Quectel products use Quectel's vendor ID */
@@ -1162,6 +1167,11 @@ static const struct usb_device_id option @@ -1153,6 +1158,11 @@ static const struct usb_device_id option
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
.driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) }, .driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
@ -56,7 +56,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
/* Quectel products using Qualcomm vendor ID */ /* Quectel products using Qualcomm vendor ID */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)}, { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20), { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
@@ -1203,6 +1213,11 @@ static const struct usb_device_id option @@ -1194,6 +1204,11 @@ static const struct usb_device_id option
.driver_info = ZLP }, .driver_info = ZLP },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96), { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
.driver_info = RSVD(4) }, .driver_info = RSVD(4) },

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

@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
case RTN_THROW: case RTN_THROW:
case RTN_UNREACHABLE: case RTN_UNREACHABLE:
default: default:
@@ -4546,6 +4565,17 @@ static int ip6_pkt_prohibit_out(struct n @@ -4551,6 +4570,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
} }
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
/* /*
* Allocate a dst for local (unicast / anycast) address. * Allocate a dst for local (unicast / anycast) address.
*/ */
@@ -5037,7 +5067,8 @@ static int rtm_to_fib6_config(struct sk_ @@ -5042,7 +5072,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE || if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT || rtm->rtm_type == RTN_PROHIBIT ||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
cfg->fc_flags |= RTF_REJECT; cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL) if (rtm->rtm_type == RTN_LOCAL)
@@ -6284,6 +6315,8 @@ static int ip6_route_dev_notify(struct n @@ -6304,6 +6335,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif #endif
@@ -6295,6 +6328,7 @@ static int ip6_route_dev_notify(struct n @@ -6315,6 +6348,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif #endif
} }
@@ -6495,6 +6529,8 @@ static int __net_init ip6_route_net_init @@ -6515,6 +6549,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false; net->ipv6.fib6_has_custom_rules = false;
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry), sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL); GFP_KERNEL);
@@ -6505,11 +6541,21 @@ static int __net_init ip6_route_net_init @@ -6525,11 +6561,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true); ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached); INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true); ip6_template_metrics, true);
@@ -6536,6 +6582,8 @@ out: @@ -6556,6 +6602,8 @@ out:
return ret; return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
out_ip6_prohibit_entry: out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry: out_ip6_null_entry:
@@ -6555,6 +6603,7 @@ static void __net_exit ip6_route_net_exi @@ -6575,6 +6623,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry); kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_prohibit_entry);
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
kfree(net->ipv6.ip6_blk_hole_entry); kfree(net->ipv6.ip6_blk_hole_entry);
#endif #endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops); dst_entries_destroy(&net->ipv6.ip6_dst_ops);
@@ -6638,6 +6687,9 @@ void __init ip6_route_init_special_entri @@ -6658,6 +6707,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);

@ -59,7 +59,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
} }
--- a/net/netfilter/nft_flow_offload.c --- a/net/netfilter/nft_flow_offload.c
+++ b/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c
@@ -480,47 +480,14 @@ static struct nft_expr_type nft_flow_off @@ -486,47 +486,14 @@ static struct nft_expr_type nft_flow_off
.owner = THIS_MODULE, .owner = THIS_MODULE,
}; };

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

@ -14,9 +14,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/netfilter/nft_flow_offload.c --- a/net/netfilter/nft_flow_offload.c
+++ b/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c
@@ -361,6 +361,7 @@ static void nft_flow_offload_eval(const @@ -367,6 +367,7 @@ static void nft_flow_offload_eval(const
ct->proto.tcp.seen[1].flags |= IP_CT_TCP_FLAG_BE_LIBERAL; if (tcph)
} flow_offload_ct_tcp(ct);
+ __set_bit(NF_FLOW_HW_BIDIRECTIONAL, &flow->flags); + __set_bit(NF_FLOW_HW_BIDIRECTIONAL, &flow->flags);
ret = flow_offload_add(flowtable, flow); ret = flow_offload_add(flowtable, flow);

@ -19,7 +19,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
+++ b/include/linux/netdevice.h +++ b/include/linux/netdevice.h
@@ -2243,7 +2243,7 @@ struct net_device { @@ -2243,7 +2243,7 @@ struct net_device {
#if IS_ENABLED(CONFIG_AX25) #if IS_ENABLED(CONFIG_AX25)
void *ax25_ptr; struct ax25_dev __rcu *ax25_ptr;
#endif #endif
-#if IS_ENABLED(CONFIG_CFG80211) -#if IS_ENABLED(CONFIG_CFG80211)
+#if IS_ENABLED(CONFIG_CFG80211_HEADERS) +#if IS_ENABLED(CONFIG_CFG80211_HEADERS)

@ -17,7 +17,7 @@ Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
--- a/drivers/net/ethernet/broadcom/tg3.c --- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -17731,8 +17731,10 @@ static int tg3_init_one(struct pci_dev * @@ -17732,8 +17732,10 @@ static int tg3_init_one(struct pci_dev *
} else } else
persist_dma_mask = dma_mask = DMA_BIT_MASK(64); persist_dma_mask = dma_mask = DMA_BIT_MASK(64);

@ -33,7 +33,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
return 0; return 0;
--- a/drivers/opp/core.c --- a/drivers/opp/core.c
+++ b/drivers/opp/core.c +++ b/drivers/opp/core.c
@@ -902,7 +902,8 @@ static int _set_opp_voltage(struct devic @@ -925,7 +925,8 @@ static int _set_opp_voltage(struct devic
static int static int
_opp_config_clk_single(struct device *dev, struct opp_table *opp_table, _opp_config_clk_single(struct device *dev, struct opp_table *opp_table,
@ -43,7 +43,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
{ {
unsigned long *target = data; unsigned long *target = data;
unsigned long freq; unsigned long freq;
@@ -934,8 +935,8 @@ _opp_config_clk_single(struct device *de @@ -957,8 +958,8 @@ _opp_config_clk_single(struct device *de
* the order in which they are present in the array while scaling up. * the order in which they are present in the array while scaling up.
*/ */
int dev_pm_opp_config_clks_simple(struct device *dev, int dev_pm_opp_config_clks_simple(struct device *dev,
@ -54,7 +54,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
{ {
int ret, i; int ret, i;
@@ -1217,7 +1218,7 @@ static int _set_opp(struct device *dev, @@ -1240,7 +1241,7 @@ static int _set_opp(struct device *dev,
} }
if (opp_table->config_clks) { if (opp_table->config_clks) {
@ -63,7 +63,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
if (ret) if (ret)
return ret; return ret;
} }
@@ -1292,7 +1293,7 @@ int dev_pm_opp_set_rate(struct device *d @@ -1315,7 +1316,7 @@ int dev_pm_opp_set_rate(struct device *d
* equivalent to a clk_set_rate() * equivalent to a clk_set_rate()
*/ */
if (!_get_opp_count(opp_table)) { if (!_get_opp_count(opp_table)) {

@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask) static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
{ {
u16 cmd; u16 cmd;
@@ -1283,3 +1298,4 @@ static void quirk_usb_early_handoff(stru @@ -1292,3 +1307,4 @@ static void quirk_usb_early_handoff(stru
} }
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID, DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff); PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);

@ -73,7 +73,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/* clear exclusive status */ /* clear exclusive status */
if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL && if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL &&
@@ -5494,6 +5508,9 @@ struct ata_port *ata_port_alloc(struct a @@ -5502,6 +5516,9 @@ struct ata_port *ata_port_alloc(struct a
ap->stats.unhandled_irq = 1; ap->stats.unhandled_irq = 1;
ap->stats.idle_irq = 1; ap->stats.idle_irq = 1;
#endif #endif
@ -83,7 +83,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
ata_sff_port_init(ap); ata_sff_port_init(ap);
return ap; return ap;
@@ -5507,6 +5524,12 @@ void ata_port_free(struct ata_port *ap) @@ -5515,6 +5532,12 @@ void ata_port_free(struct ata_port *ap)
kfree(ap->pmp_link); kfree(ap->pmp_link);
kfree(ap->slave_link); kfree(ap->slave_link);
kfree(ap->ncq_sense_buf); kfree(ap->ncq_sense_buf);
@ -96,7 +96,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
kfree(ap); kfree(ap);
} }
EXPORT_SYMBOL_GPL(ata_port_free); EXPORT_SYMBOL_GPL(ata_port_free);
@@ -5929,7 +5952,23 @@ int ata_host_register(struct ata_host *h @@ -5937,7 +5960,23 @@ int ata_host_register(struct ata_host *h
host->ports[i]->print_id = atomic_inc_return(&ata_print_id); host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
host->ports[i]->local_port_no = i + 1; host->ports[i]->local_port_no = i + 1;
} }

@ -12,6 +12,7 @@ platform_check_image() {
local board=$(board_name) local board=$(board_name)
case "$board" in case "$board" in
gateworks,imx8m*|\
gw,imx8m*) gw,imx8m*)
return 0 return 0
;; ;;
@ -25,6 +26,7 @@ platform_do_upgrade() {
local board=$(board_name) local board=$(board_name)
case "$board" in case "$board" in
gateworks,imx8m*|\
gw,imx8m*) gw,imx8m*)
export_bootdevice && export_partdevice diskdev 0 || { export_bootdevice && export_partdevice diskdev 0 || {
echo "Unable to find root device." echo "Unable to find root device."
@ -41,6 +43,7 @@ platform_copy_config() {
local partdev local partdev
case "$board" in case "$board" in
gateworks,imx8m*|\
gw,imx8m*) gw,imx8m*)
export_partdevice partdev 1 && { export_partdevice partdev 1 && {
v "Storing $UPGRADE_BACKUP on /dev/$partdev..." v "Storing $UPGRADE_BACKUP on /dev/$partdev..."

@ -46,6 +46,21 @@ define Device/gateworks_venice
FILESYSTEMS := squashfs ext4 FILESYSTEMS := squashfs ext4
DEVICE_VENDOR := Gateworks DEVICE_VENDOR := Gateworks
DEVICE_MODEL := i.MX8M Venice DEVICE_MODEL := i.MX8M Venice
SUPPORTED_DEVICES := \
gw,imx8mm-gw71xx-0x \
gw,imx8mm-gw72xx-0x \
gw,imx8mp-gw72xx-2x \
gw,imx8mm-gw73xx-0x \
gw,imx8mp-gw73xx-2x \
gw,imx8mm-gw7901 \
gw,imx8mm-gw7902 \
gw,imx8mn-gw7902 \
gw,imx8mm-gw7903 \
gateworks,imx8mp-gw71xx-2x \
gateworks,imx8mp-gw74xx \
gateworks,imx8mm-gw7904 \
gateworks,imx8mm-gw7905-0x \
gateworks,imx8mp-gw7905-2x
BOOT_SCRIPT := gateworks_venice BOOT_SCRIPT := gateworks_venice
PARTITION_OFFSET := 16M PARTITION_OFFSET := 16M
DEVICE_DTS := $(basename $(notdir $(wildcard $(DTS_DIR)/freescale/imx8m*-venice*.dts))) DEVICE_DTS := $(basename $(notdir $(wildcard $(DTS_DIR)/freescale/imx8m*-venice*.dts)))

@ -30,9 +30,9 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
#define IMX6_PCIE_FLAG_SUPPORTS_SUSPEND BIT(2) #define IMX6_PCIE_FLAG_SUPPORTS_SUSPEND BIT(2)
+#define IMX6_PCIE_FLAG_GEN1_LAST BIT(3) +#define IMX6_PCIE_FLAG_GEN1_LAST BIT(3)
struct imx6_pcie_drvdata { #define IMX6_PCIE_MAX_CLKS 6
enum imx6_pcie_variants variant;
@@ -876,26 +877,28 @@ static int imx6_pcie_start_link(struct d @@ -836,26 +837,28 @@ static int imx6_pcie_start_link(struct d
u32 tmp; u32 tmp;
int ret; int ret;
@ -76,7 +76,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
/* Allow faster modes after the link is up */ /* Allow faster modes after the link is up */
dw_pcie_dbi_ro_wr_en(pci); dw_pcie_dbi_ro_wr_en(pci);
tmp = dw_pcie_readl_dbi(pci, offset + PCI_EXP_LNKCAP); tmp = dw_pcie_readl_dbi(pci, offset + PCI_EXP_LNKCAP);
@@ -929,18 +932,14 @@ static int imx6_pcie_start_link(struct d @@ -889,18 +892,14 @@ static int imx6_pcie_start_link(struct d
goto err_reset_phy; goto err_reset_phy;
} }
} }
@ -100,20 +100,22 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
return 0; return 0;
err_reset_phy: err_reset_phy:
@@ -1505,12 +1504,14 @@ static const struct imx6_pcie_drvdata dr @@ -1456,14 +1455,16 @@ static const struct imx6_pcie_drvdata dr
}, },
[IMX8MM] = { [IMX8MM] = {
.variant = IMX8MM, .variant = IMX8MM,
- .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND, - .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
+ .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND | + .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND |
+ IMX6_PCIE_FLAG_GEN1_LAST, + IMX6_PCIE_FLAG_GEN1_LAST,
.gpr = "fsl,imx8mm-iomuxc-gpr", .gpr = "fsl,imx8mm-iomuxc-gpr",
.clk_names = imx8mm_clks,
.clks_cnt = ARRAY_SIZE(imx8mm_clks),
}, },
[IMX8MP] = { [IMX8MP] = {
.variant = IMX8MP, .variant = IMX8MP,
- .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND, - .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
+ .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND | + .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND |
+ IMX6_PCIE_FLAG_GEN1_LAST, + IMX6_PCIE_FLAG_GEN1_LAST,
.gpr = "fsl,imx8mp-iomuxc-gpr", .gpr = "fsl,imx8mp-iomuxc-gpr",
}, .clk_names = imx8mm_clks,
[IMX8MQ_EP] = { .clks_cnt = ARRAY_SIZE(imx8mm_clks),

@ -13,7 +13,7 @@ Signed-off-by: Robert Marko <robert.marko@sartura.hr>
--- a/drivers/mmc/host/sdhci-msm.c --- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c
@@ -2320,7 +2320,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat @@ -2369,7 +2369,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
static const struct sdhci_ops sdhci_msm_ops = { static const struct sdhci_ops sdhci_msm_ops = {
.reset = sdhci_and_cqhci_reset, .reset = sdhci_and_cqhci_reset,

@ -13,7 +13,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
--- a/drivers/mmc/host/sdhci-msm.c --- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c
@@ -1755,49 +1755,49 @@ static unsigned int sdhci_msm_get_min_cl @@ -1804,49 +1804,49 @@ static unsigned int sdhci_msm_get_min_cl
return SDHCI_MSM_MIN_CLOCK; return SDHCI_MSM_MIN_CLOCK;
} }

@ -19,7 +19,7 @@
}, },
[PORT_NPCM] = { [PORT_NPCM] = {
.name = "Nuvoton 16550", .name = "Nuvoton 16550",
@@ -2774,6 +2774,11 @@ serial8250_do_set_termios(struct uart_po @@ -2783,6 +2783,11 @@ serial8250_do_set_termios(struct uart_po
unsigned long flags; unsigned long flags;
unsigned int baud, quot, frac = 0; unsigned int baud, quot, frac = 0;

@ -1976,6 +1976,8 @@ define Device/mercusys_mr70x-v1
$(Device/tplink-safeloader) $(Device/tplink-safeloader)
DEVICE_VENDOR := MERCUSYS DEVICE_VENDOR := MERCUSYS
DEVICE_MODEL := MR70X DEVICE_MODEL := MR70X
DEVICE_ALT0_VENDOR := MERCUSYS
DEVICE_ALT0_MODEL := MR1800X
DEVICE_VARIANT := v1 DEVICE_VARIANT := v1
DEVICE_PACKAGES := kmod-mt7915-firmware -uboot-envtools DEVICE_PACKAGES := kmod-mt7915-firmware -uboot-envtools
TPLINK_BOARD_ID := MR70X TPLINK_BOARD_ID := MR70X

@ -42,7 +42,7 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
{ CLK_PERIPH("10300000.wmac", "xtal") } { CLK_PERIPH("10300000.wmac", "xtal") }
}; };
@@ -272,8 +274,13 @@ static struct mtmips_clk_fixed rt3352_fi @@ -271,8 +273,13 @@ static struct mtmips_clk_fixed rt3352_fi
CLK_FIXED("periph", "xtal", 40000000) CLK_FIXED("periph", "xtal", 40000000)
}; };
@ -57,7 +57,7 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
CLK_FIXED("periph", "xtal", 40000000) CLK_FIXED("periph", "xtal", 40000000)
}; };
@@ -328,6 +335,15 @@ static struct mtmips_clk_factor rt305x_f @@ -327,6 +334,15 @@ static struct mtmips_clk_factor rt305x_f
CLK_FACTOR("bus", "cpu", 1, 3) CLK_FACTOR("bus", "cpu", 1, 3)
}; };
@ -73,7 +73,7 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
static int mtmips_register_factor_clocks(struct clk_hw_onecell_data *clk_data, static int mtmips_register_factor_clocks(struct clk_hw_onecell_data *clk_data,
struct mtmips_clk_priv *priv) struct mtmips_clk_priv *priv)
{ {
@@ -811,10 +827,10 @@ static const struct mtmips_clk_data rt53 @@ -810,10 +826,10 @@ static const struct mtmips_clk_data rt53
static const struct mtmips_clk_data mt7620_clk_data = { static const struct mtmips_clk_data mt7620_clk_data = {
.clk_base = mt7620_clks_base, .clk_base = mt7620_clks_base,
.num_clk_base = ARRAY_SIZE(mt7620_clks_base), .num_clk_base = ARRAY_SIZE(mt7620_clks_base),
@ -88,7 +88,7 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
.clk_periph = mt7620_pherip_clks, .clk_periph = mt7620_pherip_clks,
.num_clk_periph = ARRAY_SIZE(mt7620_pherip_clks), .num_clk_periph = ARRAY_SIZE(mt7620_pherip_clks),
}; };
@@ -824,8 +840,8 @@ static const struct mtmips_clk_data mt76 @@ -823,8 +839,8 @@ static const struct mtmips_clk_data mt76
.num_clk_base = ARRAY_SIZE(mt76x8_clks_base), .num_clk_base = ARRAY_SIZE(mt76x8_clks_base),
.clk_fixed = mt76x8_fixed_clocks, .clk_fixed = mt76x8_fixed_clocks,
.num_clk_fixed = ARRAY_SIZE(mt76x8_fixed_clocks), .num_clk_fixed = ARRAY_SIZE(mt76x8_fixed_clocks),

@ -1,28 +0,0 @@
From 830d8062d25581cf0beaa334486eea06834044da Mon Sep 17 00:00:00 2001
From: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Date: Wed, 8 Jan 2025 10:36:36 +0100
Subject: [PATCH] clk: ralink: mtmips: remove duplicated 'xtal' clock for
Ralink SoC RT3883
Ralink SoC RT3883 has already 'xtal' defined as a base clock so there is no
need to redefine it again in fixed clocks section. Hence, remove the duplicate
one from there.
Fixes: d34db686a3d7 ("clk: ralink: mtmips: fix clocks probe order in oldest ralink SoCs")
Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Link: https://lore.kernel.org/r/20250108093636.265033-1-sergio.paracuellos@gmail.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
---
drivers/clk/ralink/clk-mtmips.c | 1 -
1 file changed, 1 deletion(-)
--- a/drivers/clk/ralink/clk-mtmips.c
+++ b/drivers/clk/ralink/clk-mtmips.c
@@ -266,7 +266,6 @@ err_clk_unreg:
}
static struct mtmips_clk_fixed rt3883_fixed_clocks[] = {
- CLK_FIXED("xtal", NULL, 40000000),
CLK_FIXED("periph", "xtal", 40000000)
};

@ -26,8 +26,18 @@ Suggested-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
--- ---
arch/mips/include/asm/mips-cps.h | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-) The proposed detection method was based on reading the LAUNCH_FREADY core flag.
However, this method only works before the cores are launched.
For this reason, the core number detection method has been changed to a simpler one.
For mt6721s the 17th revision bit is zero, hence we know that it is this chip,
so the number of cores is 1.
Co-authored-by: Shiji Yang <yangshiji66@qq.com>
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
---
arch/mips/include/asm/mips-cps.h | 5 +++++
1 file changed, 5 insertions(+)
--- a/arch/mips/include/asm/mips-cps.h --- a/arch/mips/include/asm/mips-cps.h
+++ b/arch/mips/include/asm/mips-cps.h +++ b/arch/mips/include/asm/mips-cps.h
@ -35,41 +45,19 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
#include <linux/io.h> #include <linux/io.h>
#include <linux/types.h> #include <linux/types.h>
+#include <asm/mips-boards/launch.h> +#include <asm/mach-ralink/mt7621.h>
+ +
extern unsigned long __cps_access_bad_size(void) extern unsigned long __cps_access_bad_size(void)
__compiletime_error("Bad size for CPS accessor"); __compiletime_error("Bad size for CPS accessor");
@@ -162,12 +164,31 @@ static inline uint64_t mips_cps_cluster_ @@ -165,6 +167,10 @@ static inline unsigned int mips_cps_numc
*/
static inline unsigned int mips_cps_numcores(unsigned int cluster)
{
+ unsigned int ncores;
+
if (!mips_cm_present()) if (!mips_cm_present())
return 0; return 0;
+ if (IS_ENABLED(CONFIG_SOC_MT7621) &&
+ !FIELD_GET(0x20000, __raw_readl(MT7621_SYSC_BASE + SYSC_REG_CHIP_REV)))
+ return 1;
+
/* Add one before masking to handle 0xff indicating no cores */ /* Add one before masking to handle 0xff indicating no cores */
- return FIELD_GET(CM_GCR_CONFIG_PCORES, return FIELD_GET(CM_GCR_CONFIG_PCORES,
+ ncores = FIELD_GET(CM_GCR_CONFIG_PCORES,
mips_cps_cluster_config(cluster) + 1); mips_cps_cluster_config(cluster) + 1);
+
+ if (IS_ENABLED(CONFIG_SOC_MT7621)) {
+ struct cpulaunch *launch;
+
+ /*
+ * Ralink MT7621S SoC is single core, but the GCR_CONFIG method
+ * always reports 2 cores. Check the second core's LAUNCH_FREADY
+ * flag to detect if the second core is missing. This method
+ * only works before the core has been started.
+ */
+ launch = (struct cpulaunch *)CKSEG0ADDR(CPULAUNCH);
+ launch += 2; /* MT7621 has 2 VPEs per core */
+ if (!(launch->flags & LAUNCH_FREADY))
+ ncores = 1;
+ }
+
+ return ncores;
}
/**

@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/media/usb/uvc/uvc_driver.c --- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -3271,6 +3271,18 @@ static const struct usb_device_id uvc_id @@ -3287,6 +3287,18 @@ static const struct usb_device_id uvc_id
.bInterfaceSubClass = 1, .bInterfaceSubClass = 1,
.bInterfaceProtocol = 0, .bInterfaceProtocol = 0,
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
@ -42,7 +42,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
break; break;
} }
@@ -273,6 +274,7 @@ int uvc_status_init(struct uvc_device *d @@ -274,6 +275,7 @@ int uvc_status_init(struct uvc_device *d
} }
pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress); pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress);
@ -62,9 +62,9 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+#include <linux/kobject.h> +#include <linux/kobject.h>
+#include <linux/workqueue.h> +#include <linux/workqueue.h>
#include <media/jpeg.h>
#include <media/v4l2-common.h> #include <media/v4l2-common.h>
@@ -1321,9 +1326,149 @@ static void uvc_video_decode_data(struct
@@ -1275,9 +1280,149 @@ static void uvc_video_decode_data(struct
uvc_urb->async_operations++; uvc_urb->async_operations++;
} }
@ -214,7 +214,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
/* Mark the buffer as done if the EOF marker is set. */ /* Mark the buffer as done if the EOF marker is set. */
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) { if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
uvc_dbg(stream->dev, FRAME, "Frame complete (EOF found)\n"); uvc_dbg(stream->dev, FRAME, "Frame complete (EOF found)\n");
@@ -1859,6 +2004,8 @@ static int uvc_init_video_isoc(struct uv @@ -1905,6 +2050,8 @@ static int uvc_init_video_isoc(struct uv
if (npackets == 0) if (npackets == 0)
return -ENOMEM; return -ENOMEM;
@ -225,16 +225,16 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
for_each_uvc_urb(uvc_urb, stream) { for_each_uvc_urb(uvc_urb, stream) {
--- a/drivers/media/usb/uvc/uvcvideo.h --- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -76,6 +76,8 @@ @@ -77,6 +77,8 @@
#define UVC_QUIRK_NO_RESET_RESUME 0x00004000
#define UVC_QUIRK_DISABLE_AUTOSUSPEND 0x00008000 #define UVC_QUIRK_DISABLE_AUTOSUSPEND 0x00008000
#define UVC_QUIRK_INVALID_DEVICE_SOF 0x00010000 #define UVC_QUIRK_INVALID_DEVICE_SOF 0x00010000
+#define UVC_QUIRK_MOTION 0x00020000 #define UVC_QUIRK_MJPEG_NO_EOF 0x00020000
+#define UVC_QUIRK_SINGLE_ISO 0x00040000 +#define UVC_QUIRK_MOTION 0x00040000
+#define UVC_QUIRK_SINGLE_ISO 0x00080000
/* Format flags */ /* Format flags */
#define UVC_FMT_FLAG_COMPRESSED 0x00000001 #define UVC_FMT_FLAG_COMPRESSED 0x00000001
@@ -585,6 +587,7 @@ struct uvc_device { @@ -587,6 +589,7 @@ struct uvc_device {
struct input_dev *input; struct input_dev *input;
char input_phys[64]; char input_phys[64];

@ -22,7 +22,7 @@ Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
#define PAD_DS_TUNE 0x188 #define PAD_DS_TUNE 0x188
#define PAD_CMD_TUNE 0x18c #define PAD_CMD_TUNE 0x18c
#define EMMC51_CFG0 0x204 #define EMMC51_CFG0 0x204
@@ -400,6 +404,7 @@ struct mtk_mmc_compatible { @@ -402,6 +406,7 @@ struct mtk_mmc_compatible {
bool enhance_rx; bool enhance_rx;
bool support_64g; bool support_64g;
bool use_internal_cd; bool use_internal_cd;
@ -30,7 +30,7 @@ Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
}; };
struct msdc_tune_para { struct msdc_tune_para {
@@ -537,6 +542,7 @@ static const struct mtk_mmc_compatible m @@ -539,6 +544,7 @@ static const struct mtk_mmc_compatible m
.stop_clk_fix = false, .stop_clk_fix = false,
.enhance_rx = false, .enhance_rx = false,
.use_internal_cd = true, .use_internal_cd = true,
@ -38,7 +38,7 @@ Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
}; };
static const struct mtk_mmc_compatible mt7622_compat = { static const struct mtk_mmc_compatible mt7622_compat = {
@@ -1729,9 +1735,11 @@ static void msdc_init_hw(struct msdc_hos @@ -1731,9 +1737,11 @@ static void msdc_init_hw(struct msdc_hos
} }
writel(0, host->base + MSDC_IOCON); writel(0, host->base + MSDC_IOCON);
sdr_set_field(host->base + MSDC_IOCON, MSDC_IOCON_DDLSEL, 0); sdr_set_field(host->base + MSDC_IOCON, MSDC_IOCON_DDLSEL, 0);
@ -53,7 +53,7 @@ Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
sdr_set_bits(host->base + EMMC50_CFG0, EMMC50_CFG_CFCSTS_SEL); sdr_set_bits(host->base + EMMC50_CFG0, EMMC50_CFG_CFCSTS_SEL);
if (host->dev_comp->stop_clk_fix) { if (host->dev_comp->stop_clk_fix) {
@@ -1795,6 +1803,18 @@ static void msdc_init_hw(struct msdc_hos @@ -1797,6 +1805,18 @@ static void msdc_init_hw(struct msdc_hos
MSDC_PAD_TUNE_RXDLYSEL); MSDC_PAD_TUNE_RXDLYSEL);
} }

@ -48,7 +48,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
clk_disable_unprepare(dwc->susp_clk); clk_disable_unprepare(dwc->susp_clk);
clk_disable_unprepare(dwc->ref_clk); clk_disable_unprepare(dwc->ref_clk);
clk_disable_unprepare(dwc->bus_clk); clk_disable_unprepare(dwc->bus_clk);
@@ -1884,6 +1898,20 @@ static int dwc3_get_clocks(struct dwc3 * @@ -1875,6 +1889,20 @@ static int dwc3_get_clocks(struct dwc3 *
} }
} }

@ -67,7 +67,7 @@ Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
} }
/* /*
@@ -2813,7 +2826,6 @@ serial8250_do_set_termios(struct uart_po @@ -2822,7 +2835,6 @@ serial8250_do_set_termios(struct uart_po
if (termios->c_cflag & CRTSCTS) if (termios->c_cflag & CRTSCTS)
up->mcr |= UART_MCR_AFE; up->mcr |= UART_MCR_AFE;
} }

@ -160,7 +160,7 @@ Signed-off-by: minda.chen <minda.chen@starfivetech.com>
} }
--- a/drivers/usb/host/xhci-ring.c --- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c
@@ -3707,7 +3707,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * @@ -3708,7 +3708,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
full_len = urb->transfer_buffer_length; full_len = urb->transfer_buffer_length;
/* If we have scatter/gather list, we use it. */ /* If we have scatter/gather list, we use it. */

@ -11,9 +11,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
PKG_SOURCE_DATE:=2024-10-20 PKG_SOURCE_DATE:=2025-02-16
PKG_SOURCE_VERSION:=4b7638925d3eac03e614e40bc30cb49f5877c46d PKG_SOURCE_VERSION:=5d1446bf57d6490573dc71f10c05e83b36d44374
PKG_MIRROR_HASH:=ea0e30f2b20211e4153704019ebb3f8789269893a4af6d853a85fae7c091802c PKG_MIRROR_HASH:=e054ea416f5a596f681bba593f71dfbe8149361432d7c17f2374c60dfe227749
include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk include $(INCLUDE_DIR)/cmake.mk