diff --git a/target/linux/airoha/patches-6.12/220-05-dt-bindings-phy-Add-documentation-for-Airoha-AN7581-.patch b/target/linux/airoha/patches-6.12/220-05-dt-bindings-phy-Add-documentation-for-Airoha-AN7581-.patch index 3fc0ba7dc7c..20236571a08 100644 --- a/target/linux/airoha/patches-6.12/220-05-dt-bindings-phy-Add-documentation-for-Airoha-AN7581-.patch +++ b/target/linux/airoha/patches-6.12/220-05-dt-bindings-phy-Add-documentation-for-Airoha-AN7581-.patch @@ -111,7 +111,7 @@ Signed-off-by: Christian Marangi + --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -737,6 +737,13 @@ S: Maintained +@@ -745,6 +745,13 @@ S: Maintained F: Documentation/devicetree/bindings/spi/airoha,en7581-snand.yaml F: drivers/spi/spi-airoha-snfi.c diff --git a/target/linux/airoha/patches-6.12/220-07-phy-airoha-Add-support-for-Airoha-AN7581-USB-PHY.patch b/target/linux/airoha/patches-6.12/220-07-phy-airoha-Add-support-for-Airoha-AN7581-USB-PHY.patch index bf106fa5440..844e2b43cf7 100644 --- a/target/linux/airoha/patches-6.12/220-07-phy-airoha-Add-support-for-Airoha-AN7581-USB-PHY.patch +++ b/target/linux/airoha/patches-6.12/220-07-phy-airoha-Add-support-for-Airoha-AN7581-USB-PHY.patch @@ -35,7 +35,7 @@ Signed-off-by: Christian Marangi --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -742,6 +742,7 @@ M: Christian Marangi * For devices with more than one control interface, we assume the --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c -@@ -2378,6 +2378,8 @@ static const struct usb_audio_quirk_flag +@@ -2385,6 +2385,8 @@ static const struct usb_audio_quirk_flag QUIRK_FLAG_ALIGN_TRANSFER), DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */ QUIRK_FLAG_ALIGN_TRANSFER), diff --git a/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch b/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch index 0491be43696..88c67d2ba52 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch @@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell * non-error returns are a promise to giveback() the urb later * we drop ownership so next owner (or urb unlink) can get it */ -@@ -5386,6 +5489,7 @@ static const struct hc_driver xhci_hc_dr +@@ -5387,6 +5490,7 @@ static const struct hc_driver xhci_hc_dr .endpoint_reset = xhci_endpoint_reset, .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, diff --git a/target/linux/bcm27xx/patches-6.12/950-0132-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch b/target/linux/bcm27xx/patches-6.12/950-0132-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch index a834c5dcc38..1b1b8d7746a 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0132-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0132-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch @@ -32,7 +32,7 @@ Signed-off-by: Jonathan Bell #define USB_VENDOR_ID_BELKIN 0x050d #define USB_DEVICE_ID_FLIP_KVM 0x3201 -@@ -1470,6 +1473,9 @@ +@@ -1471,6 +1474,9 @@ #define USB_VENDOR_ID_XIAOMI 0x2717 #define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014 diff --git a/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch b/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch index 9abbcd0bae8..b99b85649a5 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch @@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -3661,6 +3661,48 @@ static int xhci_align_td(struct xhci_hcd +@@ -3666,6 +3666,48 @@ static int xhci_align_td(struct xhci_hcd return 1; } @@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell /* 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, struct urb *urb, int slot_id, unsigned int ep_index) -@@ -3815,6 +3857,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3820,6 +3862,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * } check_trb_math(urb, enqd_len); @@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id, start_cycle, start_trb); return 0; -@@ -3963,6 +4007,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3968,6 +4012,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * /* Event on completion */ field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state); diff --git a/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch b/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch index 7fe2856c9ff..ef89cdb2176 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch @@ -12,7 +12,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c -@@ -1236,7 +1236,11 @@ static const struct dwcmshc_pltfm_data s +@@ -1241,7 +1241,11 @@ static const struct dwcmshc_pltfm_data s .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN | SDHCI_QUIRK_BROKEN_TIMEOUT_VAL, .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | diff --git a/target/linux/bcm27xx/patches-6.12/950-0348-usb-dwc3-Set-DMA-and-coherent-masks-early.patch b/target/linux/bcm27xx/patches-6.12/950-0348-usb-dwc3-Set-DMA-and-coherent-masks-early.patch index e60f4e92326..97030141eb3 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0348-usb-dwc3-Set-DMA-and-coherent-masks-early.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0348-usb-dwc3-Set-DMA-and-coherent-masks-early.patch @@ -212,7 +212,7 @@ Signed-off-by: Jonathan Bell }, --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -1319,6 +1319,24 @@ static void dwc3_config_threshold(struct +@@ -1320,6 +1320,24 @@ static void dwc3_config_threshold(struct } } @@ -237,7 +237,7 @@ Signed-off-by: Jonathan Bell /** * dwc3_core_init - Low-level initialization of DWC3 Core * @dwc: Pointer to our controller context structure -@@ -1386,6 +1404,8 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1387,6 +1405,8 @@ static int dwc3_core_init(struct dwc3 *d dwc3_config_soc_bus(dwc); @@ -246,7 +246,7 @@ Signed-off-by: Jonathan Bell ret = dwc3_phy_power_on(dwc); if (ret) goto err_exit_phy; -@@ -1490,6 +1510,24 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1491,6 +1511,24 @@ static int dwc3_core_init(struct dwc3 *d dwc3_writel(dwc->regs, DWC3_LLUCTL, reg); } @@ -271,7 +271,7 @@ Signed-off-by: Jonathan Bell return 0; err_power_off_phy: -@@ -1675,6 +1713,7 @@ static void dwc3_get_properties(struct d +@@ -1676,6 +1714,7 @@ static void dwc3_get_properties(struct d u8 tx_thr_num_pkt_prd = 0; u8 tx_max_burst_prd = 0; u8 tx_fifo_resize_max_num; @@ -279,7 +279,7 @@ Signed-off-by: Jonathan Bell /* default to highest possible threshold */ lpm_nyet_threshold = 0xf; -@@ -1695,6 +1734,9 @@ static void dwc3_get_properties(struct d +@@ -1696,6 +1735,9 @@ static void dwc3_get_properties(struct d */ tx_fifo_resize_max_num = 6; @@ -289,7 +289,7 @@ Signed-off-by: Jonathan Bell dwc->maximum_speed = usb_get_maximum_speed(dev); dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev); dwc->dr_mode = usb_get_dr_mode(dev); -@@ -1809,6 +1851,9 @@ static void dwc3_get_properties(struct d +@@ -1810,6 +1852,9 @@ static void dwc3_get_properties(struct d dwc->dis_split_quirk = device_property_read_bool(dev, "snps,dis-split-quirk"); @@ -299,7 +299,7 @@ Signed-off-by: Jonathan Bell dwc->lpm_nyet_threshold = lpm_nyet_threshold; dwc->tx_de_emphasis = tx_de_emphasis; -@@ -1826,6 +1871,8 @@ static void dwc3_get_properties(struct d +@@ -1827,6 +1872,8 @@ static void dwc3_get_properties(struct d dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd; dwc->tx_max_burst_prd = tx_max_burst_prd; @@ -308,7 +308,7 @@ Signed-off-by: Jonathan Bell dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num; } -@@ -2184,6 +2231,12 @@ static int dwc3_probe(struct platform_de +@@ -2185,6 +2232,12 @@ static int dwc3_probe(struct platform_de if (IS_ERR(dwc->usb_psy)) return dev_err_probe(dev, PTR_ERR(dwc->usb_psy), "couldn't get usb power supply\n"); diff --git a/target/linux/bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch b/target/linux/bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch index 9cf0c1ad16b..ebdb57af0a1 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch @@ -30,8 +30,8 @@ Signed-off-by: Jonathan Bell int vendor_specific_area1; /* P_VENDOR_SPECIFIC_AREA1 reg */ int vendor_specific_area2; /* P_VENDOR_SPECIFIC_AREA2 reg */ -@@ -289,6 +290,17 @@ static void dwcmshc_adma_write_desc(stru - sdhci_adma_write_desc(host, desc, addr, len, cmd); +@@ -302,6 +303,17 @@ static void dwcmshc_reset(struct sdhci_h + sdhci_writel(host, SDHCI_INT_RESPONSE, SDHCI_INT_STATUS); } +static void dwcmshc_set_clock(struct sdhci_host *host, unsigned int clock) @@ -48,7 +48,7 @@ Signed-off-by: Jonathan Bell static unsigned int dwcmshc_get_max_clock(struct sdhci_host *host) { struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); -@@ -1138,10 +1150,11 @@ static int sg2042_init(struct device *de +@@ -1143,10 +1155,11 @@ static int sg2042_init(struct device *de } static const struct sdhci_ops sdhci_dwcmshc_ops = { @@ -58,10 +58,10 @@ Signed-off-by: Jonathan Bell .set_uhs_signaling = dwcmshc_set_uhs_signaling, .get_max_clock = dwcmshc_get_max_clock, + .get_timeout_clock = sdhci_pltfm_clk_get_timeout_clock, - .reset = sdhci_reset, + .reset = dwcmshc_reset, .adma_write_desc = dwcmshc_adma_write_desc, .irq = dwcmshc_cqe_irq_handler, -@@ -1214,8 +1227,10 @@ static const struct sdhci_ops sdhci_dwcm +@@ -1219,8 +1232,10 @@ static const struct sdhci_ops sdhci_dwcm static const struct dwcmshc_pltfm_data sdhci_dwcmshc_pdata = { .pdata = { .ops = &sdhci_dwcmshc_ops, @@ -74,7 +74,7 @@ Signed-off-by: Jonathan Bell }, }; -@@ -1230,6 +1245,15 @@ static const struct dwcmshc_pltfm_data s +@@ -1235,6 +1250,15 @@ static const struct dwcmshc_pltfm_data s }; #endif @@ -90,7 +90,7 @@ Signed-off-by: Jonathan Bell static const struct dwcmshc_pltfm_data sdhci_dwcmshc_rk35xx_pdata = { .pdata = { .ops = &sdhci_dwcmshc_rk35xx_ops, -@@ -1353,6 +1377,10 @@ dsbl_cqe_caps: +@@ -1358,6 +1382,10 @@ dsbl_cqe_caps: static const struct of_device_id sdhci_dwcmshc_dt_ids[] = { { @@ -101,7 +101,7 @@ Signed-off-by: Jonathan Bell .compatible = "rockchip,rk3588-dwcmshc", .data = &sdhci_dwcmshc_rk35xx_pdata, }, -@@ -1445,13 +1473,32 @@ static int dwcmshc_probe(struct platform +@@ -1450,13 +1478,32 @@ static int dwcmshc_probe(struct platform priv->bus_clk = devm_clk_get(dev, "bus"); if (!IS_ERR(priv->bus_clk)) clk_prepare_enable(priv->bus_clk); @@ -134,7 +134,7 @@ Signed-off-by: Jonathan Bell priv->vendor_specific_area1 = sdhci_readl(host, DWCMSHC_P_VENDOR_AREA1) & DWCMSHC_AREA1_MASK; -@@ -1511,6 +1558,7 @@ err_rpm: +@@ -1516,6 +1563,7 @@ err_rpm: pm_runtime_put_noidle(dev); err_clk: clk_disable_unprepare(pltfm_host->clk); diff --git a/target/linux/bcm27xx/patches-6.12/950-0393-drm-fb-helper-Look-up-preferred-fbdev-node-number-fr.patch b/target/linux/bcm27xx/patches-6.12/950-0393-drm-fb-helper-Look-up-preferred-fbdev-node-number-fr.patch index 3d059f253a0..a563c222b1d 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0393-drm-fb-helper-Look-up-preferred-fbdev-node-number-fr.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0393-drm-fb-helper-Look-up-preferred-fbdev-node-number-fr.patch @@ -19,7 +19,7 @@ Signed-off-by: Dave Stevenson --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c -@@ -1803,7 +1803,7 @@ __drm_fb_helper_initial_config_and_unloc +@@ -1797,7 +1797,7 @@ __drm_fb_helper_initial_config_and_unloc struct drm_device *dev = fb_helper->dev; struct fb_info *info; unsigned int width, height; @@ -28,7 +28,7 @@ Signed-off-by: Dave Stevenson width = dev->mode_config.max_width; height = dev->mode_config.max_height; -@@ -1831,6 +1831,15 @@ __drm_fb_helper_initial_config_and_unloc +@@ -1825,6 +1825,15 @@ __drm_fb_helper_initial_config_and_unloc * register the fbdev emulation instance in kernel_fb_helper_list. */ mutex_unlock(&fb_helper->lock); diff --git a/target/linux/bcm27xx/patches-6.12/950-0413-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch b/target/linux/bcm27xx/patches-6.12/950-0413-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch index 80046cc1954..f8e80fc4d0b 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0413-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0413-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch @@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -1485,6 +1485,9 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1486,6 +1486,9 @@ static int dwc3_core_init(struct dwc3 *d if (dwc->parkmode_disable_hs_quirk) reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS; @@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY)) { if (dwc->maximum_speed == USB_SPEED_FULL || dwc->maximum_speed == USB_SPEED_HIGH) -@@ -1831,6 +1834,8 @@ static void dwc3_get_properties(struct d +@@ -1832,6 +1835,8 @@ static void dwc3_get_properties(struct d "snps,parkmode-disable-ss-quirk"); dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev, "snps,parkmode-disable-hs-quirk"); diff --git a/target/linux/bcm27xx/patches-6.12/950-0524-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch b/target/linux/bcm27xx/patches-6.12/950-0524-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch index 666c391c4f6..92cb7e94815 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0524-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0524-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch @@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -1479,6 +1479,12 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1480,6 +1480,12 @@ static int dwc3_core_init(struct dwc3 *d if (dwc->dis_tx_ipgap_linecheck_quirk) reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS; @@ -35,7 +35,7 @@ Signed-off-by: Jonathan Bell if (dwc->parkmode_disable_ss_quirk) reg |= DWC3_GUCTL1_PARKMODE_DISABLE_SS; -@@ -1830,6 +1836,10 @@ static void dwc3_get_properties(struct d +@@ -1831,6 +1837,10 @@ static void dwc3_get_properties(struct d "snps,resume-hs-terminations"); dwc->ulpi_ext_vbus_drv = device_property_read_bool(dev, "snps,ulpi-ext-vbus-drv"); diff --git a/target/linux/bcm27xx/patches-6.12/950-0947-fixup-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clock.patch b/target/linux/bcm27xx/patches-6.12/950-0947-fixup-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clock.patch index 809ab256f4b..727815eb9fd 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0947-fixup-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clock.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0947-fixup-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clock.patch @@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c -@@ -1245,13 +1245,15 @@ static const struct dwcmshc_pltfm_data s +@@ -1250,13 +1250,15 @@ static const struct dwcmshc_pltfm_data s }; #endif diff --git a/target/linux/bcm27xx/patches-6.12/950-0950-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch b/target/linux/bcm27xx/patches-6.12/950-0950-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch index 33f8ca71adb..cdd429ba013 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0950-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0950-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch @@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell static bool td_on_ring(struct xhci_td *td, struct xhci_ring *ring) { struct xhci_segment *seg; -@@ -4791,7 +4795,7 @@ static u16 xhci_calculate_u1_timeout(str +@@ -4792,7 +4796,7 @@ static u16 xhci_calculate_u1_timeout(str } } @@ -49,7 +49,7 @@ Signed-off-by: Jonathan Bell timeout_ns = xhci_calculate_intel_u1_timeout(udev, desc); else timeout_ns = udev->u1_params.sel; -@@ -4855,7 +4859,7 @@ static u16 xhci_calculate_u2_timeout(str +@@ -4856,7 +4860,7 @@ static u16 xhci_calculate_u2_timeout(str } } diff --git a/target/linux/econet/patches-6.12/901-nand-enable-en75-bbt.patch b/target/linux/econet/patches-6.12/901-nand-enable-en75-bbt.patch index 4b6f2d9e4ff..67c7c9ba6ae 100644 --- a/target/linux/econet/patches-6.12/901-nand-enable-en75-bbt.patch +++ b/target/linux/econet/patches-6.12/901-nand-enable-en75-bbt.patch @@ -29,7 +29,7 @@ Signed-off-by: Caleb James DeLisle { --- a/drivers/mtd/nand/mtk_bmt.c +++ b/drivers/mtd/nand/mtk_bmt.c -@@ -422,6 +422,8 @@ int mtk_bmt_attach(struct mtd_info *mtd) +@@ -421,6 +421,8 @@ int mtk_bmt_attach(struct mtd_info *mtd) bmtd.ops = &mtk_bmt_nmbm_ops; else if (of_property_read_bool(np, "mediatek,bbt")) bmtd.ops = &mtk_bmt_bbt_ops; diff --git a/target/linux/econet/patches-6.12/902-snand-mtk-bmt-support.patch b/target/linux/econet/patches-6.12/902-snand-mtk-bmt-support.patch index 02566032d47..540e3bf1c08 100644 --- a/target/linux/econet/patches-6.12/902-snand-mtk-bmt-support.patch +++ b/target/linux/econet/patches-6.12/902-snand-mtk-bmt-support.patch @@ -8,7 +8,7 @@ static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val) { -@@ -1575,6 +1576,7 @@ static int spinand_probe(struct spi_mem +@@ -1577,6 +1578,7 @@ static int spinand_probe(struct spi_mem if (ret) return ret; @@ -16,7 +16,7 @@ ret = mtd_device_register(mtd, NULL, 0); if (ret) goto err_spinand_cleanup; -@@ -1582,6 +1584,7 @@ static int spinand_probe(struct spi_mem +@@ -1584,6 +1586,7 @@ static int spinand_probe(struct spi_mem return 0; err_spinand_cleanup: @@ -24,7 +24,7 @@ spinand_cleanup(spinand); return ret; -@@ -1600,6 +1603,7 @@ static int spinand_remove(struct spi_mem +@@ -1602,6 +1605,7 @@ static int spinand_remove(struct spi_mem if (ret) return ret; diff --git a/target/linux/generic/backport-6.12/830-v6.18-spi-bcm63xx-fix-premature-CS-deassertion-on-RX-only-transactions.patch b/target/linux/generic/backport-6.12/830-v6.18-spi-bcm63xx-fix-premature-CS-deassertion-on-RX-only-transactions.patch deleted file mode 100644 index 6a8889ee3c1..00000000000 --- a/target/linux/generic/backport-6.12/830-v6.18-spi-bcm63xx-fix-premature-CS-deassertion-on-RX-only-transactions.patch +++ /dev/null @@ -1,59 +0,0 @@ -From fd9862f726aedbc2f29a29916cabed7bcf5cadb6 Mon Sep 17 00:00:00 2001 -From: Hang Zhou <929513338@qq.com> -Date: Mon, 17 Nov 2025 01:08:35 +1100 -Subject: [PATCH] spi: bcm63xx: fix premature CS deassertion on RX-only - transactions - -On BCM6358 (and also observed on BCM6368) the controller appears to -only generate as many SPI clocks as bytes that have been written into -the TX FIFO. For RX-only transfers the driver programs the transfer -length in SPI_MSG_CTL but does not write anything into the FIFO, so -chip select is deasserted early and the RX transfer segment is never -fully clocked in. - -A concrete failing case is a three-transfer MAC address read from -SPI-NOR: - - TX 0x03 (read command) - - TX 3-byte address - - RX 6 bytes (MAC) - -In contrast, a two-transfer JEDEC-ID read (0x9f + 6-byte RX) works -because the driver uses prepend_len and writes dummy bytes into the -TX FIFO for the RX part. - -Fix this by writing 0xff dummy bytes into the TX FIFO for RX-only -segments so that the number of bytes written to the FIFO matches the -total message length seen by the controller. - -Fixes: b17de076062a ("spi/bcm63xx: work around inability to keep CS up") - -Signed-off-by: Hang Zhou <929513338@qq.com> -Link: https://patch.msgid.link/tencent_7AC88FCB3076489A4A7E6C2163DF1ACF8D06@qq.com -Signed-off-by: Mark Brown ---- - drivers/spi/spi-bcm63xx.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - ---- a/drivers/spi/spi-bcm63xx.c -+++ b/drivers/spi/spi-bcm63xx.c -@@ -247,6 +247,20 @@ static int bcm63xx_txrx_bufs(struct spi_ - - if (t->rx_buf) { - do_rx = true; -+ -+ /* -+ * In certain hardware implementations, there appears to be a -+ * hidden accumulator that tracks the number of bytes written into -+ * the hardware FIFO, and this accumulator overrides the length in -+ * the SPI_MSG_CTL register. -+ * -+ * Therefore, for read-only transfers, we need to write some dummy -+ * value into the FIFO to keep the accumulator tracking the correct -+ * length. -+ */ -+ if (!t->tx_buf) -+ memset_io(bs->tx_io + len, 0xFF, t->len); -+ - /* prepend is half-duplex write only */ - if (t == first) - prepend_len = 0; diff --git a/target/linux/generic/kernel-6.12 b/target/linux/generic/kernel-6.12 index 73c2f33a104..0a9808b6bec 100644 --- a/target/linux/generic/kernel-6.12 +++ b/target/linux/generic/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .60 -LINUX_KERNEL_HASH-6.12.60 = a63096b2147411d683cecbf87622bb2ff4885bac2b3641d3d4f10250c89cdcf8 +LINUX_VERSION-6.12 = .62 +LINUX_KERNEL_HASH-6.12.62 = 13e2c685ac8fab5dd992dd105732554dae514aef350c2a8c7418e7b74eb62c13 diff --git a/target/linux/generic/pending-6.12/510-block-add-uImage.FIT-subimage-block-driver.patch b/target/linux/generic/pending-6.12/510-block-add-uImage.FIT-subimage-block-driver.patch index c3d246c5eea..21615160a94 100644 --- a/target/linux/generic/pending-6.12/510-block-add-uImage.FIT-subimage-block-driver.patch +++ b/target/linux/generic/pending-6.12/510-block-add-uImage.FIT-subimage-block-driver.patch @@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -23668,6 +23668,12 @@ F: Documentation/filesystems/ubifs-authe +@@ -23663,6 +23663,12 @@ F: Documentation/filesystems/ubifs-authe F: Documentation/filesystems/ubifs.rst F: fs/ubifs/ diff --git a/target/linux/layerscape/patches-6.12/701-staging-add-fsl_ppfe-driver.patch b/target/linux/layerscape/patches-6.12/701-staging-add-fsl_ppfe-driver.patch index 04efc152702..44797dc7bfd 100644 --- a/target/linux/layerscape/patches-6.12/701-staging-add-fsl_ppfe-driver.patch +++ b/target/linux/layerscape/patches-6.12/701-staging-add-fsl_ppfe-driver.patch @@ -962,7 +962,7 @@ Signed-off-by: Dong Aisheng L: linux-spi@vger.kernel.org --- a/drivers/staging/Kconfig +++ b/drivers/staging/Kconfig -@@ -64,4 +64,6 @@ source "drivers/staging/fieldbus/Kconfig +@@ -62,4 +62,6 @@ source "drivers/staging/fieldbus/Kconfig source "drivers/staging/vme_user/Kconfig" @@ -971,7 +971,7 @@ Signed-off-by: Dong Aisheng endif # STAGING --- a/drivers/staging/Makefile +++ b/drivers/staging/Makefile -@@ -21,3 +21,4 @@ obj-$(CONFIG_GREYBUS) += greybus/ +@@ -20,3 +20,4 @@ obj-$(CONFIG_GREYBUS) += greybus/ obj-$(CONFIG_BCM2835_VCHIQ) += vc04_services/ obj-$(CONFIG_XIL_AXIS_FIFO) += axis-fifo/ obj-$(CONFIG_FIELDBUS_DEV) += fieldbus/ diff --git a/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch b/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch index 02566032d47..540e3bf1c08 100644 --- a/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch +++ b/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch @@ -8,7 +8,7 @@ static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val) { -@@ -1575,6 +1576,7 @@ static int spinand_probe(struct spi_mem +@@ -1577,6 +1578,7 @@ static int spinand_probe(struct spi_mem if (ret) return ret; @@ -16,7 +16,7 @@ ret = mtd_device_register(mtd, NULL, 0); if (ret) goto err_spinand_cleanup; -@@ -1582,6 +1584,7 @@ static int spinand_probe(struct spi_mem +@@ -1584,6 +1586,7 @@ static int spinand_probe(struct spi_mem return 0; err_spinand_cleanup: @@ -24,7 +24,7 @@ spinand_cleanup(spinand); return ret; -@@ -1600,6 +1603,7 @@ static int spinand_remove(struct spi_mem +@@ -1602,6 +1605,7 @@ static int spinand_remove(struct spi_mem if (ret) return ret; diff --git a/target/linux/mediatek/patches-6.12/433-drivers-spi-mem-Add-spi-calibration-hook.patch b/target/linux/mediatek/patches-6.12/433-drivers-spi-mem-Add-spi-calibration-hook.patch index e8377f5c4cb..731d9112960 100644 --- a/target/linux/mediatek/patches-6.12/433-drivers-spi-mem-Add-spi-calibration-hook.patch +++ b/target/linux/mediatek/patches-6.12/433-drivers-spi-mem-Add-spi-calibration-hook.patch @@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang --- a/drivers/spi/spi-mem.c +++ b/drivers/spi/spi-mem.c -@@ -466,6 +466,14 @@ int spi_mem_exec_op(struct spi_mem *mem, +@@ -486,6 +486,14 @@ int spi_mem_exec_op(struct spi_mem *mem, } EXPORT_SYMBOL_GPL(spi_mem_exec_op); @@ -28,7 +28,7 @@ Signed-off-by: SkyLake.Huang * upper layer if necessary --- a/include/linux/spi/spi-mem.h +++ b/include/linux/spi/spi-mem.h -@@ -372,6 +372,10 @@ bool spi_mem_supports_op(struct spi_mem +@@ -390,6 +390,10 @@ bool spi_mem_supports_op(struct spi_mem int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op); diff --git a/target/linux/mediatek/patches-6.12/435-drivers-mtd-spinand-Add-calibration-support-for-spin.patch b/target/linux/mediatek/patches-6.12/435-drivers-mtd-spinand-Add-calibration-support-for-spin.patch index c33931ebc7f..64c059c1f21 100644 --- a/target/linux/mediatek/patches-6.12/435-drivers-mtd-spinand-Add-calibration-support-for-spin.patch +++ b/target/linux/mediatek/patches-6.12/435-drivers-mtd-spinand-Add-calibration-support-for-spin.patch @@ -68,7 +68,7 @@ Signed-off-by: SkyLake.Huang static int spinand_id_detect(struct spinand_device *spinand) { u8 *id = spinand->id.data; -@@ -1452,6 +1502,10 @@ static int spinand_init(struct spinand_d +@@ -1454,6 +1504,10 @@ static int spinand_init(struct spinand_d if (!spinand->scratchbuf) return -ENOMEM; diff --git a/target/linux/mediatek/patches-6.12/960-asus-hack-u-boot-ignore-mtdparts.patch b/target/linux/mediatek/patches-6.12/960-asus-hack-u-boot-ignore-mtdparts.patch index 70ff4dd5b61..4f50d32aa22 100644 --- a/target/linux/mediatek/patches-6.12/960-asus-hack-u-boot-ignore-mtdparts.patch +++ b/target/linux/mediatek/patches-6.12/960-asus-hack-u-boot-ignore-mtdparts.patch @@ -29,7 +29,7 @@ Signed-off-by: Daniel Golle --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c -@@ -1669,6 +1669,7 @@ static int spinand_remove(struct spi_mem +@@ -1671,6 +1671,7 @@ static int spinand_remove(struct spi_mem static const struct spi_device_id spinand_ids[] = { { .name = "spi-nand" }, @@ -37,7 +37,7 @@ Signed-off-by: Daniel Golle { /* sentinel */ }, }; MODULE_DEVICE_TABLE(spi, spinand_ids); -@@ -1676,6 +1677,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids); +@@ -1678,6 +1679,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids); #ifdef CONFIG_OF static const struct of_device_id spinand_of_ids[] = { { .compatible = "spi-nand" }, diff --git a/target/linux/pistachio/patches-6.12/401-mtd-nor-support-mtd-name-from-device-tree.patch b/target/linux/pistachio/patches-6.12/401-mtd-nor-support-mtd-name-from-device-tree.patch index af773a64eba..99a942e0775 100644 --- a/target/linux/pistachio/patches-6.12/401-mtd-nor-support-mtd-name-from-device-tree.patch +++ b/target/linux/pistachio/patches-6.12/401-mtd-nor-support-mtd-name-from-device-tree.patch @@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma --- a/drivers/spi/spi-mem.c +++ b/drivers/spi/spi-mem.c -@@ -893,7 +893,9 @@ static int spi_mem_probe(struct spi_devi +@@ -930,7 +930,9 @@ static int spi_mem_probe(struct spi_devi { struct spi_mem_driver *memdrv = to_spi_mem_drv(spi->dev.driver); struct spi_controller *ctlr = spi->controller; @@ -20,7 +20,7 @@ Signed-off-by: Abhimanyu Vishwakarma mem = devm_kzalloc(&spi->dev, sizeof(*mem), GFP_KERNEL); if (!mem) -@@ -901,10 +903,15 @@ static int spi_mem_probe(struct spi_devi +@@ -938,10 +940,15 @@ static int spi_mem_probe(struct spi_devi mem->spi = spi; diff --git a/target/linux/rockchip/patches-6.12/037-04-v6.19-mmc-sdhci-of-dwcmshc-Add-command-queue-support-for-rockch.patch b/target/linux/rockchip/patches-6.12/037-04-v6.19-mmc-sdhci-of-dwcmshc-Add-command-queue-support-for-rockch.patch index e7b1c466c1e..74e5a8e20b7 100644 --- a/target/linux/rockchip/patches-6.12/037-04-v6.19-mmc-sdhci-of-dwcmshc-Add-command-queue-support-for-rockch.patch +++ b/target/linux/rockchip/patches-6.12/037-04-v6.19-mmc-sdhci-of-dwcmshc-Add-command-queue-support-for-rockch.patch @@ -48,7 +48,7 @@ Signed-off-by: Ulf Hansson int (*init)(struct device *dev, struct sdhci_host *host, struct dwcmshc_priv *dwc_priv); void (*postinit)(struct sdhci_host *host, struct dwcmshc_priv *dwc_priv); }; -@@ -603,6 +607,68 @@ static void dwcmshc_cqhci_dumpregs(struc +@@ -616,6 +620,68 @@ static void dwcmshc_cqhci_dumpregs(struc sdhci_dumpregs(mmc_priv(mmc)); } @@ -117,7 +117,7 @@ Signed-off-by: Ulf Hansson static void dwcmshc_rk3568_set_clock(struct sdhci_host *host, unsigned int clock) { struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); -@@ -721,6 +787,10 @@ static void rk35xx_sdhci_reset(struct sd +@@ -734,6 +800,10 @@ static void rk35xx_sdhci_reset(struct sd struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct dwcmshc_priv *dwc_priv = sdhci_pltfm_priv(pltfm_host); struct rk35xx_priv *priv = dwc_priv->priv; @@ -128,7 +128,7 @@ Signed-off-by: Ulf Hansson if (mask & SDHCI_RESET_ALL && priv->reset) { reset_control_assert(priv->reset); -@@ -729,6 +799,9 @@ static void rk35xx_sdhci_reset(struct sd +@@ -742,6 +812,9 @@ static void rk35xx_sdhci_reset(struct sd } sdhci_reset(host, mask); @@ -138,7 +138,7 @@ Signed-off-by: Ulf Hansson } static int dwcmshc_rk35xx_init(struct device *dev, struct sdhci_host *host, -@@ -1230,6 +1303,15 @@ static const struct dwcmshc_pltfm_data s +@@ -1235,6 +1308,15 @@ static const struct dwcmshc_pltfm_data s }; #endif @@ -154,7 +154,7 @@ Signed-off-by: Ulf Hansson static const struct dwcmshc_pltfm_data sdhci_dwcmshc_rk35xx_pdata = { .pdata = { .ops = &sdhci_dwcmshc_rk35xx_ops, -@@ -1238,6 +1320,7 @@ static const struct dwcmshc_pltfm_data s +@@ -1243,6 +1325,7 @@ static const struct dwcmshc_pltfm_data s .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN, }, @@ -162,7 +162,7 @@ Signed-off-by: Ulf Hansson .init = dwcmshc_rk35xx_init, .postinit = dwcmshc_rk35xx_postinit, }; -@@ -1287,7 +1370,8 @@ static const struct cqhci_host_ops dwcms +@@ -1292,7 +1375,8 @@ static const struct cqhci_host_ops dwcms .set_tran_desc = dwcmshc_set_tran_desc, }; @@ -172,7 +172,7 @@ Signed-off-by: Ulf Hansson { struct cqhci_host *cq_host; struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); -@@ -1317,7 +1401,10 @@ static void dwcmshc_cqhci_init(struct sd +@@ -1322,7 +1406,10 @@ static void dwcmshc_cqhci_init(struct sd } cq_host->mmio = host->ioaddr + priv->vendor_specific_area2; @@ -184,7 +184,7 @@ Signed-off-by: Ulf Hansson /* Enable using of 128-bit task descriptors */ dma64 = host->flags & SDHCI_USE_64_BIT_DMA; -@@ -1486,7 +1573,7 @@ static int dwcmshc_probe(struct platform +@@ -1491,7 +1578,7 @@ static int dwcmshc_probe(struct platform priv->vendor_specific_area2 = sdhci_readw(host, DWCMSHC_P_VENDOR_AREA2); diff --git a/target/linux/rockchip/patches-6.12/037-05-v6.19-mmc-sdhci-of-dwcmshc-Fix-command-queue-support-for-RK3576.patch b/target/linux/rockchip/patches-6.12/037-05-v6.19-mmc-sdhci-of-dwcmshc-Fix-command-queue-support-for-RK3576.patch index c4d96895074..3dd29ffefbc 100644 --- a/target/linux/rockchip/patches-6.12/037-05-v6.19-mmc-sdhci-of-dwcmshc-Fix-command-queue-support-for-RK3576.patch +++ b/target/linux/rockchip/patches-6.12/037-05-v6.19-mmc-sdhci-of-dwcmshc-Fix-command-queue-support-for-RK3576.patch @@ -45,7 +45,7 @@ Signed-off-by: Ulf Hansson --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c -@@ -1333,6 +1333,7 @@ static const struct dwcmshc_pltfm_data s +@@ -1338,6 +1338,7 @@ static const struct dwcmshc_pltfm_data s .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN, }, diff --git a/target/linux/rockchip/patches-6.12/037-06-v6.19-mmc-sdhci-of-dwcmshc-Disable-internal-clock-auto-gate-for.patch b/target/linux/rockchip/patches-6.12/037-06-v6.19-mmc-sdhci-of-dwcmshc-Disable-internal-clock-auto-gate-for.patch index d8a0ed8d14f..45db5c1175c 100644 --- a/target/linux/rockchip/patches-6.12/037-06-v6.19-mmc-sdhci-of-dwcmshc-Disable-internal-clock-auto-gate-for.patch +++ b/target/linux/rockchip/patches-6.12/037-06-v6.19-mmc-sdhci-of-dwcmshc-Disable-internal-clock-auto-gate-for.patch @@ -27,7 +27,7 @@ Signed-off-by: Ulf Hansson --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c -@@ -696,10 +696,11 @@ static void dwcmshc_rk3568_set_clock(str +@@ -709,10 +709,11 @@ static void dwcmshc_rk3568_set_clock(str sdhci_set_clock(host, clock); diff --git a/target/linux/rockchip/patches-6.12/037-07-v6.19-mmc-sdhci-of-dwcmshc-reduce-CIT-for-better-performance.patch b/target/linux/rockchip/patches-6.12/037-07-v6.19-mmc-sdhci-of-dwcmshc-reduce-CIT-for-better-performance.patch index 90647d96c35..55833022ac2 100644 --- a/target/linux/rockchip/patches-6.12/037-07-v6.19-mmc-sdhci-of-dwcmshc-reduce-CIT-for-better-performance.patch +++ b/target/linux/rockchip/patches-6.12/037-07-v6.19-mmc-sdhci-of-dwcmshc-reduce-CIT-for-better-performance.patch @@ -30,7 +30,7 @@ Signed-off-by: Ulf Hansson #define CQHCI_SSC2 0x44 --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c -@@ -614,6 +614,11 @@ static void rk35xx_sdhci_cqe_pre_enable( +@@ -627,6 +627,11 @@ static void rk35xx_sdhci_cqe_pre_enable( struct dwcmshc_priv *dwc_priv = sdhci_pltfm_priv(pltfm_host); u32 reg; diff --git a/target/linux/siflower/patches-6.12/016-spi-spi-mem-allow-gpio-cs-in-spi_mem_exec_op.patch b/target/linux/siflower/patches-6.12/016-spi-spi-mem-allow-gpio-cs-in-spi_mem_exec_op.patch index f37f9c8d3ae..1aabc0afce4 100644 --- a/target/linux/siflower/patches-6.12/016-spi-spi-mem-allow-gpio-cs-in-spi_mem_exec_op.patch +++ b/target/linux/siflower/patches-6.12/016-spi-spi-mem-allow-gpio-cs-in-spi_mem_exec_op.patch @@ -18,7 +18,7 @@ Signed-off-by: Chuanhong Guo --- a/drivers/spi/spi-mem.c +++ b/drivers/spi/spi-mem.c -@@ -368,13 +368,19 @@ int spi_mem_exec_op(struct spi_mem *mem, +@@ -384,13 +384,19 @@ int spi_mem_exec_op(struct spi_mem *mem, if (!spi_mem_internal_supports_op(mem, op)) return -EOPNOTSUPP; diff --git a/target/linux/starfive/patches-6.12/1007-reset-starfive-Add-JH7100-audio-reset-driver.patch b/target/linux/starfive/patches-6.12/1007-reset-starfive-Add-JH7100-audio-reset-driver.patch index f5d71ff66fe..bf4362f923d 100644 --- a/target/linux/starfive/patches-6.12/1007-reset-starfive-Add-JH7100-audio-reset-driver.patch +++ b/target/linux/starfive/patches-6.12/1007-reset-starfive-Add-JH7100-audio-reset-driver.patch @@ -20,7 +20,7 @@ Signed-off-by: Emil Renner Berthing --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -22070,7 +22070,7 @@ STARFIVE JH71X0 RESET CONTROLLER DRIVERS +@@ -22065,7 +22065,7 @@ STARFIVE JH71X0 RESET CONTROLLER DRIVERS M: Emil Renner Berthing M: Hal Feng S: Maintained