mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-17 21:03:30 +00:00
kernel: bump 5.15 to 5.15.116 (#11299)
This commit is contained in:
parent
919d3485d1
commit
a8788c3123
include
target/linux
ath79/patches-5.15
bcm27xx/patches-5.15
950-0080-Added-Device-IDs-for-August-DVB-T-205.patch950-0087-OF-DT-Overlay-configfs-interface.patch950-0144-bcmgenet-Better-coalescing-parameter-defaults.patch950-0151-usb-add-plumbing-for-updating-interrupt-endpoint-int.patch950-0163-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch950-0281-media-i2c-Add-driver-for-Sony-IMX477-sensor.patch950-0292-net-bcmgenet-Reset-RBUF-on-first-open.patch950-0413-Documentation-devicetree-Add-documentation-for-imx37.patch950-0468-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch950-0520-dt-bindings-media-i2c-Add-IMX519-CMOS-sensor-binding.patch950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch950-0601-xhci-correct-room_on_ring-for-cases-where-there-is-a.patch950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch
bcm53xx/patches-5.15
bmips/patches-5.15
100-irqchip-add-support-for-bcm6345-style-external-inter.patch110-mips-bmips-add-BCM63268-timer-clock-definitions.patch111-mips-bmips-add-BCM63268-timer-reset-definitions.patch112-dt-bindings-clock-Add-BCM63268-timer-binding.patch113-clk-bcm-Add-BCM63268-timer-clock-and-reset-driver.patch200-mips-bmips-automatically-detect-CPU-frequency.patch201-mips-bmips-automatically-detect-RAM-size.patch202-mips-bmips-BCM6358-disable-ARCH_HAS_SYNC_DMA_FOR_CPU_ALL.patch202-mips-bmips-tweak-Kconfig-options.patch210-macronix_nand_block_protection_support.patch500-net-broadcom-add-BCM6368-enetsw-controller-driver.patch501-net-broadcom-add-BCM6348-enet-controller-driver.patch501-net-dsa-b53-mmap-fix-enabled_ports.patch502-net-mdio-mux-bcm6368-allow-disabling.patch510-net-dsa-b53-add-support-for-BCM63xx-RGMIIs.patch600-mips-bmips-add-pci-support.patch601-pci-controllers-add-bcm6328-pcie-support.patch602-pci-controllers-add-bcm6318-pcie-support.patch603-pci-controllers-add-bcm6348-pci-support.patch610-mips-bmips-add-pci-fixups.patch700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch
generic
backport-5.15
600-v5.18-page_pool-Add-allocation-stats.patch601-v5.18-page_pool-Add-recycle-stats.patch602-v5.18-page_pool-Add-function-to-batch-and-return-stats.patch603-v5.19-page_pool-Add-recycle-stats-to-page_pool_put_page_bu.patch604-v5.19-net-page_pool-introduce-ethtool-stats.patch606-v5.18-xdp-add-frags-support-to-xdp_return_-buff-frame.patch610-v6.3-net-page_pool-use-in_softirq-instead.patch700-net-next-net-dsa-introduce-tagger-owned-storage-for-private.patch703-03-v5.16-net-dsa-populate-supported_interfaces-member.patch703-05-v5.17-net-dsa-replace-phylink_get_interfaces-with-phylink_.patch703-06-v5.18-net-dsa-add-support-for-phylink-mac_select_pcs.patch703-10-v5.16-net-dsa-introduce-helpers-for-iterating-through-port.patch705-02-v5.19-net-dsa-mt7530-populate-supported_interfaces-and-mac.patch705-03-v5.19-net-dsa-mt7530-remove-interface-checks.patch705-04-v5.19-net-dsa-mt7530-drop-use-of-phylink_helper_basex_spee.patch705-05-v5.19-net-dsa-mt7530-only-indicate-linkmodes-that-can-be-s.patch705-06-v5.19-net-dsa-mt7530-switch-to-use-phylink_get_linkmodes.patch705-07-v5.19-net-dsa-mt7530-partially-convert-to-phylink_pcs.patch705-08-v5.19-net-dsa-mt7530-move-autoneg-handling-to-PCS-validati.patch705-09-v5.19-net-dsa-mt7530-mark-as-non-legacy.patch705-10-v5.19-net-dsa-mt753x-fix-pcs-conversion-regression.patch705-12-v6.0-net-dsa-mt7530-rework-mt753-01-_setup.patch782-v6.1-net-dsa-mt7530-add-support-for-in-band-link-status.patch
hack-5.15
259-regmap_dynamic.patch661-use_fq_codel_by_default.patch721-net-add-packet-mangeling.patch952-add-net-conntrack-events-support-multiple-registrant.patch953-net-patch-linux-kernel-to-support-shortcut-fe.patch
pending-5.15
ipq60xx/patches-5.15
0026-v6.0-arm64-dts-qcom-ipq8074-move-ARMv8-timer-out-of-SoC-n.patch0044-v6.0-PCI-qcom-Add-IPQ60xx-support.patch0111-PCI-qcom-add-IPQ8074-Gen3-support.patch0121-arm64-dts-ipq8074-add-thermal-nodes.patch0131-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch0132-arm64-dts-ipq8074-Add-WLAN-node.patch0138-arm64-dts-qcom-ipq6018-add-usb3-DT-description.patch0143-arm64-dts-qcom-ipq6018-fix-usb-reference-period.patch0144-arm64-dts-ipq6018-Use-reference-clock-to-set-dwc3-period.patch0146-arm64-dts-qcom-ipq6018-drop-the-clock-frequency-property.patch0149-arm64-dts-qcom-ipq6018-Fix-qmp-usb3-phy-node.patch0150-arm64-dts-qcom-correct-DWC3-node-names-and-unit-addresses.patch0151-arm64-dts-qcom-align-DWC3-USB-clocks-with-DT-schema.patch0153-arm64-dts-qcom-timer-should-use-only-32-bit-size.patch0155-arm64-dts-qcom-ipq6018-add-label-to-remoteproc-node.patch0158-arm64-dts-qcom-ipq6018-drop-USB-PHY-clock-index.patch0162-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC-node.patch0164-arm64-dts-qcom-ipq6018-add-MP5496-LDO2-node.patch0600-5.15-qca-nss-ecm-support-CORE.patch0602-5.15-qca-add-pppoe-offload-support.patch0603-net-core-Flag-to-identify-ingress-shaping-done-for-e.patch0606-5.15-qca-nss-ecm-bonding-add-bond_get_id.patch1001-arm64-dts-qcom-ipq6018-Add-mdio-bus-description.patch1009-ipq6018-rproc-Add-non-secure-Q6-bringup-sequence.patch
ipq807x/patches-5.15
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.15 = .112
|
||||
LINUX_KERNEL_HASH-5.15.112 = b0e8ebdba38e0c369f64ec4dc2a69ec59ffe87a64b82f940dbdf8e752b6ad651
|
||||
LINUX_VERSION-5.15 = .116
|
||||
LINUX_KERNEL_HASH-5.15.116 = f617c9d1bb5326cc93495938f43eb8cb9aea9d2f451e5a99bce2893f296e179a
|
||||
|
@ -336,7 +336,7 @@ SVN-Revision: 35130
|
||||
#endif /* _LINUX_TYPES_H */
|
||||
--- a/net/ipv4/af_inet.c
|
||||
+++ b/net/ipv4/af_inet.c
|
||||
@@ -1475,8 +1475,8 @@ struct sk_buff *inet_gro_receive(struct
|
||||
@@ -1477,8 +1477,8 @@ struct sk_buff *inet_gro_receive(struct
|
||||
if (unlikely(ip_fast_csum((u8 *)iph, 5)))
|
||||
goto out_unlock;
|
||||
|
||||
|
@ -9,7 +9,7 @@ Subject: [PATCH] Added Device IDs for August DVB-T 205
|
||||
|
||||
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
|
||||
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
|
||||
@@ -1944,6 +1944,10 @@ static const struct usb_device_id rtl28x
|
||||
@@ -1964,6 +1964,10 @@ static const struct usb_device_id rtl28x
|
||||
&rtl28xxu_props, "Compro VideoMate U650F", NULL) },
|
||||
{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394,
|
||||
&rtl28xxu_props, "MaxMedia HU394-T", NULL) },
|
||||
|
@ -106,7 +106,7 @@ configfs: New of_overlay API
|
||||
+++ b/drivers/of/Makefile
|
||||
@@ -1,6 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-y = base.o device.o module.o platform.o property.o
|
||||
obj-y = base.o device.o platform.o property.o
|
||||
obj-$(CONFIG_OF_KOBJ) += kobj.o
|
||||
+obj-$(CONFIG_OF_CONFIGFS) += configfs.o
|
||||
obj-$(CONFIG_OF_DYNAMIC) += dynamic.o
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/* Disable rate control for now */
|
||||
bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
|
||||
TDMA_FLOW_PERIOD);
|
||||
@@ -4083,9 +4083,12 @@ static int bcmgenet_probe(struct platfor
|
||||
@@ -4084,9 +4084,12 @@ static int bcmgenet_probe(struct platfor
|
||||
netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
|
||||
|
||||
/* Set default coalescing parameters */
|
||||
|
@ -70,7 +70,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
* @dev: the device whose endpoint is being disabled
|
||||
--- a/include/linux/usb.h
|
||||
+++ b/include/linux/usb.h
|
||||
@@ -1845,6 +1845,8 @@ extern int usb_clear_halt(struct usb_dev
|
||||
@@ -1850,6 +1850,8 @@ extern int usb_clear_halt(struct usb_dev
|
||||
extern int usb_reset_configuration(struct usb_device *dev);
|
||||
extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate);
|
||||
extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr);
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||
|
||||
@@ -1316,6 +1319,9 @@
|
||||
@@ -1317,6 +1320,9 @@
|
||||
#define USB_VENDOR_ID_XAT 0x2505
|
||||
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
||||
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
|
||||
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -17541,6 +17541,14 @@ T: git git://linuxtv.org/media_tree.git
|
||||
@@ -17521,6 +17521,14 @@ T: git git://linuxtv.org/media_tree.git
|
||||
F: Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml
|
||||
F: drivers/media/i2c/imx412.c
|
||||
|
||||
|
@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
/* Reinitialize TDMA and RDMA and SW housekeeping */
|
||||
ret = bcmgenet_init_dma(priv);
|
||||
@@ -4212,7 +4220,7 @@ static int bcmgenet_resume(struct device
|
||||
@@ -4213,7 +4221,7 @@ static int bcmgenet_resume(struct device
|
||||
bcmgenet_hfb_create_rxnfc_filter(priv, rule);
|
||||
|
||||
/* Disable RX/TX DMA and flush TX queues */
|
||||
|
@ -132,7 +132,7 @@ Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
|
||||
+...
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -17555,6 +17555,7 @@ M: Raspberry Pi Kernel Maintenance <kern
|
||||
@@ -17535,6 +17535,7 @@ M: Raspberry Pi Kernel Maintenance <kern
|
||||
L: linux-media@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://linuxtv.org/media_tree.git
|
||||
|
@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -677,9 +677,9 @@ deq_found:
|
||||
@@ -697,9 +697,9 @@ deq_found:
|
||||
}
|
||||
|
||||
if ((ep->ep_state & SET_DEQ_PENDING)) {
|
||||
|
@ -132,7 +132,7 @@ Signed-off-by: Lee Jackson <info@arducam.com>
|
||||
+...
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -17559,6 +17559,14 @@ F: Documentation/devicetree/bindings/med
|
||||
@@ -17539,6 +17539,14 @@ F: Documentation/devicetree/bindings/med
|
||||
F: Documentation/devicetree/bindings/media/i2c/imx477.yaml
|
||||
F: drivers/media/i2c/imx477.c
|
||||
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -296,6 +296,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -297,6 +297,7 @@ static void xhci_pci_quirks(struct devic
|
||||
if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) {
|
||||
xhci->quirks |= XHCI_LPM_SUPPORT;
|
||||
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -667,6 +667,15 @@ static int xhci_move_dequeue_past_td(str
|
||||
@@ -687,6 +687,15 @@ static int xhci_move_dequeue_past_td(str
|
||||
} while (!cycle_found || !td_last_trb_found);
|
||||
|
||||
deq_found:
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -289,6 +289,12 @@ static inline int room_on_ring(struct xh
|
||||
@@ -309,6 +309,12 @@ static inline int room_on_ring(struct xh
|
||||
return 0;
|
||||
|
||||
if (ring->type != TYPE_COMMAND && ring->type != TYPE_EVENT) {
|
||||
|
@ -205,7 +205,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
xhci_err(xhci, "Tried to move enqueue past ring segment\n");
|
||||
return;
|
||||
}
|
||||
@@ -3162,7 +3165,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
|
||||
@@ -3189,7 +3192,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
|
||||
* that clears the EHB.
|
||||
*/
|
||||
while (xhci_handle_event(xhci) > 0) {
|
||||
@ -214,7 +214,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
continue;
|
||||
xhci_update_erst_dequeue(xhci, event_ring_deq);
|
||||
event_ring_deq = xhci->event_ring->dequeue;
|
||||
@@ -3304,7 +3307,8 @@ static int prepare_ring(struct xhci_hcd
|
||||
@@ -3331,7 +3334,8 @@ static int prepare_ring(struct xhci_hcd
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
cycle_state, type, max_packet, flags);
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -297,6 +297,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -298,6 +298,7 @@ static void xhci_pci_quirks(struct devic
|
||||
xhci->quirks |= XHCI_LPM_SUPPORT;
|
||||
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
|
||||
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
|
||||
|
@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -298,6 +298,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -299,6 +299,7 @@ static void xhci_pci_quirks(struct devic
|
||||
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
|
||||
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
|
||||
xhci->quirks |= XHCI_VLI_TRB_CACHE_BUG;
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -3617,14 +3617,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3644,14 +3644,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
unsigned int num_trbs;
|
||||
unsigned int start_cycle, num_sgs = 0;
|
||||
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
||||
@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
full_len = urb->transfer_buffer_length;
|
||||
/* If we have scatter/gather list, we use it. */
|
||||
if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) {
|
||||
@@ -3661,6 +3662,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3688,6 +3689,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
start_cycle = ring->cycle_state;
|
||||
send_addr = addr;
|
||||
|
||||
@ -72,7 +72,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
/* Queue the TRBs, even if they are zero-length */
|
||||
for (enqd_len = 0; first_trb || enqd_len < full_len;
|
||||
enqd_len += trb_buff_len) {
|
||||
@@ -3673,6 +3685,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3700,6 +3712,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
if (enqd_len + trb_buff_len > full_len)
|
||||
trb_buff_len = full_len - enqd_len;
|
||||
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -3617,7 +3617,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3644,7 +3644,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
unsigned int num_trbs;
|
||||
unsigned int start_cycle, num_sgs = 0;
|
||||
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
||||
@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
u32 field, length_field, remainder, maxpacket;
|
||||
u64 addr, send_addr;
|
||||
|
||||
@@ -3663,14 +3663,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3690,14 +3690,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
send_addr = addr;
|
||||
|
||||
if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG &&
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
}
|
||||
|
||||
/* Queue the TRBs, even if they are zero-length */
|
||||
@@ -3685,7 +3680,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3712,7 +3707,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
if (enqd_len + trb_buff_len > full_len)
|
||||
trb_buff_len = full_len - enqd_len;
|
||||
|
||||
|
@ -40,7 +40,7 @@ it on BCM4708 family.
|
||||
/* called during probe() after chip reset completes */
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -157,6 +157,49 @@ int xhci_start(struct xhci_hcd *xhci)
|
||||
@@ -158,6 +158,49 @@ int xhci_start(struct xhci_hcd *xhci)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ it on BCM4708 family.
|
||||
/*
|
||||
* Reset a halted HC.
|
||||
*
|
||||
@@ -607,10 +650,20 @@ static int xhci_init(struct usb_hcd *hcd
|
||||
@@ -611,10 +654,20 @@ static int xhci_init(struct usb_hcd *hcd
|
||||
|
||||
static int xhci_run_finished(struct xhci_hcd *xhci)
|
||||
{
|
||||
@ -114,7 +114,7 @@ it on BCM4708 family.
|
||||
xhci->shared_hcd->state = HC_STATE_RUNNING;
|
||||
xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
|
||||
|
||||
@@ -620,6 +673,10 @@ static int xhci_run_finished(struct xhci
|
||||
@@ -624,6 +677,10 @@ static int xhci_run_finished(struct xhci
|
||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||
"Finished xhci_run for USB3 roothub");
|
||||
return 0;
|
||||
|
@ -1,17 +1,17 @@
|
||||
From cf908990d4a8ccdb73ee4484aa8cadad379ca314 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Gorski <jogo@openwrt.org>
|
||||
Date: Sun, 30 Nov 2014 14:54:27 +0100
|
||||
Subject: [PATCH 2/5] irqchip: add support for bcm6345-style external
|
||||
interrupt controller
|
||||
Subject: [PATCH] irqchip: add support for bcm6345-style external interrupt
|
||||
controller
|
||||
|
||||
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
---
|
||||
.../interrupt-controller/brcm,bcm6345-ext-intc.txt | 29 ++
|
||||
drivers/irqchip/Kconfig | 4 +
|
||||
drivers/irqchip/Makefile | 1 +
|
||||
drivers/irqchip/irq-bcm6345-ext.c | 287 ++++++++++++++++++++
|
||||
include/linux/irqchip/irq-bcm6345-ext.h | 14 +
|
||||
5 files changed, 335 insertions(+)
|
||||
.../brcm,bcm6345-ext-intc.txt | 29 ++
|
||||
drivers/irqchip/Kconfig | 4 +
|
||||
drivers/irqchip/Makefile | 1 +
|
||||
drivers/irqchip/irq-bcm6345-ext.c | 280 ++++++++++++++++++
|
||||
include/linux/irqchip/irq-bcm6345-ext.h | 14 +
|
||||
5 files changed, 328 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/brcm,bcm6345-ext-intc.txt
|
||||
create mode 100644 drivers/irqchip/irq-bcm6345-ext.c
|
||||
create mode 100644 include/linux/irqchip/irq-bcm6345-ext.h
|
||||
@ -73,7 +73,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
obj-$(CONFIG_BCM7120_L2_IRQ) += irq-bcm7120-l2.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/irqchip/irq-bcm6345-ext.c
|
||||
@@ -0,0 +1,299 @@
|
||||
@@ -0,0 +1,280 @@
|
||||
+/*
|
||||
+ * This file is subject to the terms and conditions of the GNU General Public
|
||||
+ * License. See the file "COPYING" in the main directory of this archive
|
||||
@ -94,14 +94,6 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/spinlock.h>
|
||||
+
|
||||
+#ifdef CONFIG_BCM63XX
|
||||
+#include <asm/mach-bcm63xx/bcm63xx_irq.h>
|
||||
+
|
||||
+#define VIRQ_BASE IRQ_EXTERNAL_BASE
|
||||
+#else
|
||||
+#define VIRQ_BASE 0
|
||||
+#endif
|
||||
+
|
||||
+#define MAX_IRQS 4
|
||||
+
|
||||
+#define EXTIRQ_CFG_SENSE 0
|
||||
@ -271,7 +263,6 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
+{
|
||||
+ struct intc_data *data;
|
||||
+ unsigned int i;
|
||||
+ int start = VIRQ_BASE;
|
||||
+
|
||||
+ data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||
+ if (!data)
|
||||
@ -296,17 +287,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
+ data->chip.irq_unmask = bcm6345_ext_intc_irq_unmask;
|
||||
+ data->chip.irq_set_type = bcm6345_ext_intc_set_type;
|
||||
+
|
||||
+ /*
|
||||
+ * If we have less than 4 irqs, this is the second controller on
|
||||
+ * bcm63xx. So increase the VIRQ start to not overlap with the first
|
||||
+ * one, but only do so if we actually use a non-zero start.
|
||||
+ *
|
||||
+ * This can be removed when bcm63xx has no legacy users anymore.
|
||||
+ */
|
||||
+ if (start && num_irqs < 4)
|
||||
+ start += 4;
|
||||
+
|
||||
+ data->domain = irq_domain_add_simple(node, num_irqs, start,
|
||||
+ data->domain = irq_domain_add_linear(node, num_irqs,
|
||||
+ &bcm6345_ext_domain_ops, data);
|
||||
+ if (!data->domain) {
|
||||
+ kfree(data);
|
||||
|
@ -1,35 +0,0 @@
|
||||
From 5a079515cb3066aeb658634301a98871b47c2af4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Thu, 25 Feb 2021 19:44:22 +0100
|
||||
Subject: [PATCH 1/4] mips: bmips: add BCM63268 timer clock definitions
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Add missing timer clock definitions for BCM63268.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
include/dt-bindings/clock/bcm63268-clock.h | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
--- a/include/dt-bindings/clock/bcm63268-clock.h
|
||||
+++ b/include/dt-bindings/clock/bcm63268-clock.h
|
||||
@@ -27,4 +27,17 @@
|
||||
#define BCM63268_CLK_TBUS 27
|
||||
#define BCM63268_CLK_ROBOSW250 31
|
||||
|
||||
+#define BCM63268_TCLK_EPHY1 0
|
||||
+#define BCM63268_TCLK_EPHY2 1
|
||||
+#define BCM63268_TCLK_EPHY3 2
|
||||
+#define BCM63268_TCLK_GPHY1 3
|
||||
+#define BCM63268_TCLK_DSL 4
|
||||
+#define BCM63268_TCLK_WAKEON_EPHY 6
|
||||
+#define BCM63268_TCLK_WAKEON_DSL 7
|
||||
+#define BCM63268_TCLK_FAP1 11
|
||||
+#define BCM63268_TCLK_FAP2 15
|
||||
+#define BCM63268_TCLK_UTO_50 16
|
||||
+#define BCM63268_TCLK_UTO_EXTIN 17
|
||||
+#define BCM63268_TCLK_USB_REF 18
|
||||
+
|
||||
#endif /* __DT_BINDINGS_CLOCK_BCM63268_H */
|
@ -1,26 +0,0 @@
|
||||
From 3327df17635dd9d24a855ac6b7247fac381514cf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Thu, 25 Feb 2021 19:45:04 +0100
|
||||
Subject: [PATCH 2/4] mips: bmips: add BCM63268 timer reset definitions
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Add missing timer reset definitions for BCM63268.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
include/dt-bindings/reset/bcm63268-reset.h | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/include/dt-bindings/reset/bcm63268-reset.h
|
||||
+++ b/include/dt-bindings/reset/bcm63268-reset.h
|
||||
@@ -23,4 +23,8 @@
|
||||
#define BCM63268_RST_PCIE_HARD 17
|
||||
#define BCM63268_RST_GPHY 18
|
||||
|
||||
+#define BCM63268_TRST_SW 29
|
||||
+#define BCM63268_TRST_HW 30
|
||||
+#define BCM63268_TRST_POR 31
|
||||
+
|
||||
#endif /* __DT_BINDINGS_RESET_BCM63268_H */
|
@ -1,59 +0,0 @@
|
||||
From c17702bad18a085ae913752b45bcc20c2cea879e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Thu, 25 Feb 2021 19:53:08 +0100
|
||||
Subject: [PATCH 3/4] dt-bindings: clock: Add BCM63268 timer binding
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Document the Broadcom BCM63268 Clock and Reset controller.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
.../clock/brcm,bcm63268-timer-clocks.yaml | 40 +++++++++++++++++++
|
||||
1 file changed, 40 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/clock/brcm,bcm63268-timer-clocks.yaml
|
||||
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/clock/brcm,bcm63268-timer-clocks.yaml
|
||||
@@ -0,0 +1,40 @@
|
||||
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
+%YAML 1.2
|
||||
+---
|
||||
+$id: http://devicetree.org/schemas/clock/brcm,bcm63268-timer-clocks.yaml#
|
||||
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
+
|
||||
+title: Broadcom BCM63268 Timer Clock and Reset Device Tree Bindings
|
||||
+
|
||||
+maintainers:
|
||||
+ - Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
+
|
||||
+properties:
|
||||
+ compatible:
|
||||
+ const: brcm,bcm63268-timer-clocks
|
||||
+
|
||||
+ reg:
|
||||
+ maxItems: 1
|
||||
+
|
||||
+ "#clock-cells":
|
||||
+ const: 1
|
||||
+
|
||||
+ "#reset-cells":
|
||||
+ const: 1
|
||||
+
|
||||
+required:
|
||||
+ - compatible
|
||||
+ - reg
|
||||
+ - "#clock-cells"
|
||||
+ - "#reset-cells"
|
||||
+
|
||||
+additionalProperties: false
|
||||
+
|
||||
+examples:
|
||||
+ - |
|
||||
+ timer_clk: clock-controller@100000ac {
|
||||
+ compatible = "brcm,bcm63268-timer-clocks";
|
||||
+ reg = <0x100000ac 0x4>;
|
||||
+ #clock-cells = <1>;
|
||||
+ #reset-cells = <1>;
|
||||
+ };
|
@ -1,281 +0,0 @@
|
||||
From 3c8dd9d0937a19f3f20f28ba0b0b64f448d50dd4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Thu, 25 Feb 2021 19:54:04 +0100
|
||||
Subject: [PATCH 4/4] clk: bcm: Add BCM63268 timer clock and reset driver
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Add driver for BCM63268 timer clock and reset controller.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/clk/bcm/Kconfig | 9 ++
|
||||
drivers/clk/bcm/Makefile | 1 +
|
||||
drivers/clk/bcm/clk-bcm63268-timer.c | 232 +++++++++++++++++++++++++++
|
||||
3 files changed, 242 insertions(+)
|
||||
create mode 100644 drivers/clk/bcm/clk-bcm63268-timer.c
|
||||
|
||||
--- a/drivers/clk/bcm/Kconfig
|
||||
+++ b/drivers/clk/bcm/Kconfig
|
||||
@@ -37,6 +37,15 @@ config CLK_BCM_63XX_GATE
|
||||
Enable common clock framework support for Broadcom BCM63xx DSL SoCs
|
||||
based on the MIPS architecture
|
||||
|
||||
+config CLK_BCM63268_TIMER
|
||||
+ bool "Broadcom BCM63268 timer clock and reset support"
|
||||
+ depends on BMIPS_GENERIC || COMPILE_TEST
|
||||
+ default BMIPS_GENERIC
|
||||
+ select RESET_CONTROLLER
|
||||
+ help
|
||||
+ Enable timer clock and reset support for Broadcom BCM63268 DSL SoCs
|
||||
+ based on the MIPS architecture.
|
||||
+
|
||||
config CLK_BCM_KONA
|
||||
bool "Broadcom Kona CCU clock support"
|
||||
depends on ARCH_BCM_MOBILE || COMPILE_TEST
|
||||
--- a/drivers/clk/bcm/Makefile
|
||||
+++ b/drivers/clk/bcm/Makefile
|
||||
@@ -1,6 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-$(CONFIG_CLK_BCM_63XX) += clk-bcm63xx.o
|
||||
obj-$(CONFIG_CLK_BCM_63XX_GATE) += clk-bcm63xx-gate.o
|
||||
+obj-$(CONFIG_CLK_BCM63268_TIMER) += clk-bcm63268-timer.o
|
||||
obj-$(CONFIG_CLK_BCM_KONA) += clk-kona.o
|
||||
obj-$(CONFIG_CLK_BCM_KONA) += clk-kona-setup.o
|
||||
obj-$(CONFIG_CLK_BCM_KONA) += clk-bcm281xx.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/clk/bcm/clk-bcm63268-timer.c
|
||||
@@ -0,0 +1,232 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * BCM63268 Timer Clock and Reset Controller Driver
|
||||
+ *
|
||||
+ * Copyright (C) 2021 Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
+ */
|
||||
+
|
||||
+#include <linux/clk-provider.h>
|
||||
+#include <linux/delay.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/of.h>
|
||||
+#include <linux/of_device.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/reset-controller.h>
|
||||
+
|
||||
+#include <dt-bindings/clock/bcm63268-clock.h>
|
||||
+
|
||||
+#define BCM63268_TIMER_RESET_SLEEP_MIN_US 10000
|
||||
+#define BCM63268_TIMER_RESET_SLEEP_MAX_US 20000
|
||||
+
|
||||
+struct bcm63268_tclkrst_hw {
|
||||
+ void __iomem *regs;
|
||||
+ spinlock_t lock;
|
||||
+
|
||||
+ struct reset_controller_dev rcdev;
|
||||
+ struct clk_hw_onecell_data data;
|
||||
+};
|
||||
+
|
||||
+struct bcm63268_tclk_table_entry {
|
||||
+ const char * const name;
|
||||
+ u8 bit;
|
||||
+ unsigned long flags;
|
||||
+};
|
||||
+
|
||||
+static const struct bcm63268_tclk_table_entry bcm63268_timer_clocks[] = {
|
||||
+ {
|
||||
+ .name = "ephy1",
|
||||
+ .bit = BCM63268_TCLK_EPHY1,
|
||||
+ }, {
|
||||
+ .name = "ephy2",
|
||||
+ .bit = BCM63268_TCLK_EPHY2,
|
||||
+ }, {
|
||||
+ .name = "ephy3",
|
||||
+ .bit = BCM63268_TCLK_EPHY3,
|
||||
+ }, {
|
||||
+ .name = "gphy1",
|
||||
+ .bit = BCM63268_TCLK_GPHY1,
|
||||
+ }, {
|
||||
+ .name = "dsl",
|
||||
+ .bit = BCM63268_TCLK_DSL,
|
||||
+ }, {
|
||||
+ .name = "wakeon_ephy",
|
||||
+ .bit = BCM63268_TCLK_WAKEON_EPHY,
|
||||
+ }, {
|
||||
+ .name = "wakeon_dsl",
|
||||
+ .bit = BCM63268_TCLK_WAKEON_DSL,
|
||||
+ }, {
|
||||
+ .name = "fap1_pll",
|
||||
+ .bit = BCM63268_TCLK_FAP1,
|
||||
+ }, {
|
||||
+ .name = "fap2_pll",
|
||||
+ .bit = BCM63268_TCLK_FAP2,
|
||||
+ }, {
|
||||
+ .name = "uto_50",
|
||||
+ .bit = BCM63268_TCLK_UTO_50,
|
||||
+ }, {
|
||||
+ .name = "uto_extin",
|
||||
+ .bit = BCM63268_TCLK_UTO_EXTIN,
|
||||
+ }, {
|
||||
+ .name = "usb_ref",
|
||||
+ .bit = BCM63268_TCLK_USB_REF,
|
||||
+ }, {
|
||||
+ /* sentinel */
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+static inline struct bcm63268_tclkrst_hw *
|
||||
+to_bcm63268_timer_reset(struct reset_controller_dev *rcdev)
|
||||
+{
|
||||
+ return container_of(rcdev, struct bcm63268_tclkrst_hw, rcdev);
|
||||
+}
|
||||
+
|
||||
+static int bcm63268_timer_reset_update(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id, bool assert)
|
||||
+{
|
||||
+ struct bcm63268_tclkrst_hw *reset = to_bcm63268_timer_reset(rcdev);
|
||||
+ unsigned long flags;
|
||||
+ uint32_t val;
|
||||
+
|
||||
+ spin_lock_irqsave(&reset->lock, flags);
|
||||
+ val = __raw_readl(reset->regs);
|
||||
+ if (assert)
|
||||
+ val &= ~BIT(id);
|
||||
+ else
|
||||
+ val |= BIT(id);
|
||||
+ __raw_writel(val, reset->regs);
|
||||
+ spin_unlock_irqrestore(&reset->lock, flags);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int bcm63268_timer_reset_assert(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ return bcm63268_timer_reset_update(rcdev, id, true);
|
||||
+}
|
||||
+
|
||||
+static int bcm63268_timer_reset_deassert(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ return bcm63268_timer_reset_update(rcdev, id, false);
|
||||
+}
|
||||
+
|
||||
+static int bcm63268_timer_reset_reset(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ bcm63268_timer_reset_update(rcdev, id, true);
|
||||
+ usleep_range(BCM63268_TIMER_RESET_SLEEP_MIN_US,
|
||||
+ BCM63268_TIMER_RESET_SLEEP_MAX_US);
|
||||
+
|
||||
+ bcm63268_timer_reset_update(rcdev, id, false);
|
||||
+ /*
|
||||
+ * Ensure component is taken out reset state by sleeping also after
|
||||
+ * deasserting the reset. Otherwise, the component may not be ready
|
||||
+ * for operation.
|
||||
+ */
|
||||
+ usleep_range(BCM63268_TIMER_RESET_SLEEP_MIN_US,
|
||||
+ BCM63268_TIMER_RESET_SLEEP_MAX_US);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int bcm63268_timer_reset_status(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ struct bcm63268_tclkrst_hw *reset = to_bcm63268_timer_reset(rcdev);
|
||||
+
|
||||
+ return !(__raw_readl(reset->regs) & BIT(id));
|
||||
+}
|
||||
+
|
||||
+static struct reset_control_ops bcm63268_timer_reset_ops = {
|
||||
+ .assert = bcm63268_timer_reset_assert,
|
||||
+ .deassert = bcm63268_timer_reset_deassert,
|
||||
+ .reset = bcm63268_timer_reset_reset,
|
||||
+ .status = bcm63268_timer_reset_status,
|
||||
+};
|
||||
+
|
||||
+static int bcm63268_tclk_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct device *dev = &pdev->dev;
|
||||
+ const struct bcm63268_tclk_table_entry *entry, *table;
|
||||
+ struct bcm63268_tclkrst_hw *hw;
|
||||
+ u8 maxbit = 0;
|
||||
+ int i, ret;
|
||||
+
|
||||
+ table = of_device_get_match_data(dev);
|
||||
+ if (!table)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ for (entry = table; entry->name; entry++)
|
||||
+ maxbit = max_t(u8, maxbit, entry->bit);
|
||||
+ maxbit++;
|
||||
+
|
||||
+ hw = devm_kzalloc(&pdev->dev, struct_size(hw, data.hws, maxbit),
|
||||
+ GFP_KERNEL);
|
||||
+ if (!hw)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ platform_set_drvdata(pdev, hw);
|
||||
+
|
||||
+ spin_lock_init(&hw->lock);
|
||||
+
|
||||
+ hw->data.num = maxbit;
|
||||
+ for (i = 0; i < maxbit; i++)
|
||||
+ hw->data.hws[i] = ERR_PTR(-ENODEV);
|
||||
+
|
||||
+ hw->regs = devm_platform_ioremap_resource(pdev, 0);
|
||||
+ if (IS_ERR(hw->regs))
|
||||
+ return PTR_ERR(hw->regs);
|
||||
+
|
||||
+ for (entry = table; entry->name; entry++) {
|
||||
+ struct clk_hw *clk;
|
||||
+
|
||||
+ clk = clk_hw_register_gate(dev, entry->name, NULL,
|
||||
+ entry->flags, hw->regs, entry->bit,
|
||||
+ CLK_GATE_BIG_ENDIAN, &hw->lock);
|
||||
+ if (IS_ERR(clk)) {
|
||||
+ ret = PTR_ERR(clk);
|
||||
+ goto out_err;
|
||||
+ }
|
||||
+
|
||||
+ hw->data.hws[entry->bit] = clk;
|
||||
+ }
|
||||
+
|
||||
+ ret = of_clk_add_hw_provider(dev->of_node, of_clk_hw_onecell_get,
|
||||
+ &hw->data);
|
||||
+ if (!ret)
|
||||
+ return 0;
|
||||
+
|
||||
+ hw->rcdev.of_node = dev->of_node;
|
||||
+ hw->rcdev.ops = &bcm63268_timer_reset_ops;
|
||||
+
|
||||
+ ret = devm_reset_controller_register(dev, &hw->rcdev);
|
||||
+ if (ret)
|
||||
+ dev_err(dev, "Failed to register reset controller\n");
|
||||
+
|
||||
+out_err:
|
||||
+ for (i = 0; i < hw->data.num; i++) {
|
||||
+ if (!IS_ERR(hw->data.hws[i]))
|
||||
+ clk_hw_unregister_gate(hw->data.hws[i]);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id bcm63268_tclk_dt_ids[] = {
|
||||
+ {
|
||||
+ .compatible = "brcm,bcm63268-timer-clocks",
|
||||
+ .data = &bcm63268_timer_clocks,
|
||||
+ }, {
|
||||
+ /* sentinel */
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+static struct platform_driver bcm63268_tclk = {
|
||||
+ .probe = bcm63268_tclk_probe,
|
||||
+ .driver = {
|
||||
+ .name = "bcm63268-timer-clock",
|
||||
+ .of_match_table = bcm63268_tclk_dt_ids,
|
||||
+ },
|
||||
+};
|
||||
+builtin_platform_driver(bcm63268_tclk);
|
@ -1,7 +1,7 @@
|
||||
From 0377ad93031d3e51c2afe44231241185f684b6af Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Fri, 5 Mar 2021 15:14:32 +0100
|
||||
Subject: [PATCH 1/2] mips: bmips: automatically detect CPU frequency
|
||||
Subject: [PATCH] mips: bmips: automatically detect CPU frequency
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -10,12 +10,12 @@ Some BCM63xx SoCs support multiple CPU frequencies depending on HW config.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
arch/mips/bmips/setup.c | 198 ++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 191 insertions(+), 7 deletions(-)
|
||||
arch/mips/bmips/setup.c | 197 ++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 190 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/arch/mips/bmips/setup.c
|
||||
+++ b/arch/mips/bmips/setup.c
|
||||
@@ -31,11 +31,51 @@
|
||||
@@ -31,13 +31,52 @@
|
||||
|
||||
#define RELO_NORMAL_VEC BIT(18)
|
||||
|
||||
@ -55,7 +55,8 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
+#define REG_BCM63268_MISC_SB ((void __iomem *)CKSEG1ADDR(0x10001814))
|
||||
+#define BCM63268_FCVO_SHIFT 21
|
||||
+#define BCM63268_FCVO_MASK (0xf << BCM63268_FCVO_SHIFT)
|
||||
+
|
||||
|
||||
extern bool bmips_rac_flush_disable;
|
||||
|
||||
static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000;
|
||||
|
||||
@ -67,7 +68,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
struct bmips_quirk {
|
||||
const char *compatible;
|
||||
void (*quirk_fn)(void);
|
||||
@@ -134,17 +174,161 @@ const char *get_system_type(void)
|
||||
@@ -142,17 +181,161 @@ const char *get_system_type(void)
|
||||
return "Generic BMIPS kernel";
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f9ee3f28ecb979c77423be965ef9dd313bdb9e9b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Mon, 8 Mar 2021 16:58:34 +0100
|
||||
Subject: [PATCH 2/2] mips: bmips: automatically detect RAM size
|
||||
Subject: [PATCH] mips: bmips: automatically detect RAM size
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -10,8 +10,8 @@ Some devices have different amounts of RAM installed depending on HW revision.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
arch/mips/bmips/setup.c | 118 ++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 118 insertions(+)
|
||||
arch/mips/bmips/setup.c | 119 ++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 119 insertions(+)
|
||||
|
||||
--- a/arch/mips/bmips/setup.c
|
||||
+++ b/arch/mips/bmips/setup.c
|
||||
@ -50,12 +50,12 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
#define REG_BCM6368_DDR_PLLC ((void __iomem *)CKSEG1ADDR(0x100012a0))
|
||||
#define BCM6368_PLLC_P1_SHIFT 0
|
||||
#define BCM6368_PLLC_P1_MASK (0xf << BCM6368_PLLC_P1_SHIFT)
|
||||
@@ -67,7 +73,21 @@
|
||||
@@ -67,6 +73,21 @@
|
||||
#define REG_BCM63268_MISC_SB ((void __iomem *)CKSEG1ADDR(0x10001814))
|
||||
#define BCM63268_FCVO_SHIFT 21
|
||||
#define BCM63268_FCVO_MASK (0xf << BCM63268_FCVO_SHIFT)
|
||||
+#define BCM63268_MEMC_ADDR ((void __iomem *)CKSEG1ADDR(0x10003000))
|
||||
|
||||
+
|
||||
+#define SDRAM_CFG_REG 0x0
|
||||
+#define SDRAM_SPACE_SHIFT 4
|
||||
+#define SDRAM_SPACE_MASK (0xf << SDRAM_SPACE_SHIFT)
|
||||
@ -70,9 +70,9 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
+
|
||||
+#define DDR_CSEND_REG 0x8
|
||||
|
||||
static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000;
|
||||
extern bool bmips_rac_flush_disable;
|
||||
|
||||
@@ -76,6 +96,11 @@ struct bmips_cpufreq {
|
||||
@@ -77,6 +98,11 @@ struct bmips_cpufreq {
|
||||
u32 (*cpu_freq)(void);
|
||||
};
|
||||
|
||||
@ -84,7 +84,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
struct bmips_quirk {
|
||||
const char *compatible;
|
||||
void (*quirk_fn)(void);
|
||||
@@ -333,9 +358,90 @@ void __init plat_time_init(void)
|
||||
@@ -340,9 +366,90 @@ void __init plat_time_init(void)
|
||||
mips_hpt_frequency = freq;
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
const struct bmips_quirk *q;
|
||||
|
||||
set_io_port_base(0);
|
||||
@@ -353,6 +459,18 @@ void __init plat_mem_setup(void)
|
||||
@@ -360,6 +467,18 @@ void __init plat_mem_setup(void)
|
||||
|
||||
__dt_setup_arch(dtb);
|
||||
|
||||
|
@ -1,94 +0,0 @@
|
||||
From 84c06b4a1dfa3e021fdbcafaff8cebfdec462402 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Tue, 23 Feb 2021 10:39:48 +0100
|
||||
Subject: [PATCH] mips: bmips: BCM6358: disable ARCH_HAS_SYNC_DMA_FOR_CPU_ALL
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Enabling this option causes kernel panics on BCM6358 with EHCI/OHCI:
|
||||
[ 3.881739] usb 1-1: new high-speed USB device number 2 using ehci-platform
|
||||
[ 3.895011] Reserved instruction in kernel code[#1]:
|
||||
[ 3.900113] CPU: 0 PID: 1 Comm: init Not tainted 5.10.16 #0
|
||||
[ 3.905829] $ 0 : 00000000 10008700 00000000 77d94060
|
||||
[ 3.911238] $ 4 : 7fd1f088 00000000 81431cac 81431ca0
|
||||
[ 3.916641] $ 8 : 00000000 ffffefff 8075cd34 00000000
|
||||
[ 3.922043] $12 : 806f8d40 f3e812b7 00000000 000d9aaa
|
||||
[ 3.927446] $16 : 7fd1f068 7fd1f080 7ff559b8 81428470
|
||||
[ 3.932848] $20 : 00000000 00000000 55590000 77d70000
|
||||
[ 3.938251] $24 : 00000018 00000010
|
||||
[ 3.943655] $28 : 81430000 81431e60 81431f28 800157fc
|
||||
[ 3.949058] Hi : 00000000
|
||||
[ 3.952013] Lo : 00000000
|
||||
[ 3.955019] epc : 80015808 setup_sigcontext+0x54/0x24c
|
||||
[ 3.960464] ra : 800157fc setup_sigcontext+0x48/0x24c
|
||||
[ 3.965913] Status: 10008703 KERNEL EXL IE
|
||||
[ 3.970216] Cause : 00800028 (ExcCode 0a)
|
||||
[ 3.974340] PrId : 0002a010 (Broadcom BMIPS4350)
|
||||
[ 3.979170] Modules linked in: ohci_platform ohci_hcd fsl_mph_dr_of ehci_platform ehci_fsl ehci_hcd gpio_button_hotplug usbcore nls_base usb_common
|
||||
[ 3.992907] Process init (pid: 1, threadinfo=(ptrval), task=(ptrval), tls=77e22ec8)
|
||||
[ 4.000776] Stack : 81431ef4 7fd1f080 81431f28 81428470 7fd1f068 81431edc 7ff559b8 81428470
|
||||
[ 4.009467] 81431f28 7fd1f080 55590000 77d70000 77d5498c 80015c70 806f0000 8063ae74
|
||||
[ 4.018149] 08100002 81431f28 0000000a 08100002 81431f28 0000000a 77d6b418 00000003
|
||||
[ 4.026831] ffffffff 80016414 80080734 81431ecc 81431ecc 00000001 00000000 04000000
|
||||
[ 4.035512] 77d54874 00000000 00000000 00000000 00000000 00000012 00000002 00000000
|
||||
[ 4.044196] ...
|
||||
[ 4.046706] Call Trace:
|
||||
[ 4.049238] [<80015808>] setup_sigcontext+0x54/0x24c
|
||||
[ 4.054356] [<80015c70>] setup_frame+0xdc/0x124
|
||||
[ 4.059015] [<80016414>] do_notify_resume+0x1dc/0x288
|
||||
[ 4.064207] [<80011b50>] work_notifysig+0x10/0x18
|
||||
[ 4.069036]
|
||||
[ 4.070538] Code: 8fc300b4 00001025 26240008 <ac820000> ac830004 3c048063 0c0228aa 24846a00 26240010
|
||||
[ 4.080686]
|
||||
[ 4.082517] ---[ end trace 22a8edb41f5f983b ]---
|
||||
[ 4.087374] Kernel panic - not syncing: Fatal exception
|
||||
[ 4.092753] Rebooting in 1 seconds..
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
arch/mips/bmips/dma.c
|
||||
arch/mips/bmips/setup.c
|
||||
|
||||
--- a/arch/mips/bmips/dma.c
|
||||
+++ b/arch/mips/bmips/dma.c
|
||||
@@ -19,6 +19,8 @@
|
||||
#include <linux/types.h>
|
||||
#include <asm/bmips.h>
|
||||
|
||||
+int bmips_dma_sync_enabled = 1;
|
||||
+
|
||||
/*
|
||||
* BCM338x has configurable address translation windows which allow the
|
||||
* peripherals' DMA addresses to be different from the Zephyr-visible
|
||||
@@ -69,6 +71,9 @@ void arch_sync_dma_for_cpu_all(void)
|
||||
void __iomem *cbr = BMIPS_GET_CBR();
|
||||
u32 cfg;
|
||||
|
||||
+ if (!bmips_dma_sync_enabled)
|
||||
+ return;
|
||||
+
|
||||
if (boot_cpu_type() != CPU_BMIPS3300 &&
|
||||
boot_cpu_type() != CPU_BMIPS4350 &&
|
||||
boot_cpu_type() != CPU_BMIPS4380)
|
||||
--- a/arch/mips/bmips/setup.c
|
||||
+++ b/arch/mips/bmips/setup.c
|
||||
@@ -89,6 +89,8 @@
|
||||
|
||||
#define DDR_CSEND_REG 0x8
|
||||
|
||||
+extern int bmips_dma_sync_enabled;
|
||||
+
|
||||
static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000;
|
||||
|
||||
struct bmips_cpufreq {
|
||||
@@ -168,6 +170,9 @@ static void bcm6358_quirks(void)
|
||||
* disable SMP for now
|
||||
*/
|
||||
bmips_smp_enabled = 0;
|
||||
+
|
||||
+ /* ARCH_HAS_SYNC_DMA_FOR_CPU_ALL causes kernel panics on BCM6358 */
|
||||
+ bmips_dma_sync_enabled = 0;
|
||||
}
|
||||
|
||||
static void bcm6368_quirks(void)
|
@ -0,0 +1,42 @@
|
||||
From 20a4b57c0fafd23ae0f6bcab5b5adf4af4c80280 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Thu, 16 Mar 2023 19:31:21 +0100
|
||||
Subject: [PATCH] mips: bmips: tweak Kconfig options
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
arch/mips/Kconfig | 7 +------
|
||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -274,25 +274,20 @@ config BMIPS_GENERIC
|
||||
select SYNC_R4K
|
||||
select COMMON_CLK
|
||||
select BCM6345_L1_IRQ
|
||||
- select BCM7038_L1_IRQ
|
||||
- select BCM7120_L2_IRQ
|
||||
- select BRCMSTB_L2_IRQ
|
||||
select IRQ_MIPS_CPU
|
||||
select DMA_NONCOHERENT
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
- select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
select SYS_SUPPORTS_BIG_ENDIAN
|
||||
- select SYS_SUPPORTS_HIGHMEM
|
||||
select SYS_HAS_CPU_BMIPS32_3300
|
||||
select SYS_HAS_CPU_BMIPS4350
|
||||
select SYS_HAS_CPU_BMIPS4380
|
||||
- select SYS_HAS_CPU_BMIPS5000
|
||||
select SWAP_IO_SPACE
|
||||
select USB_EHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
|
||||
select USB_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
|
||||
select USB_OHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
|
||||
select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
|
||||
select HARDIRQS_SW_RESEND
|
||||
+ select MIPS_L1_CACHE_SHIFT_4
|
||||
help
|
||||
Build a generic DT-based kernel image that boots on select
|
||||
BCM33xx cable modem chips, BCM63xx DSL chips, and BCM7xxx set-top
|
@ -0,0 +1,114 @@
|
||||
From 5a37811de679bff03e9c5a746f75574910ede964 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Wed, 22 Mar 2023 20:52:13 +0100
|
||||
Subject: [PATCH] Revert "mtd: rawnand: Macronix: Add support for block
|
||||
protection"
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This reverts commit 03a539c7a118427a6609a26461358c56ac8f3a06.
|
||||
|
||||
Macronix block protection doesn't seem to be supported on Sercomm H-500s
|
||||
devices since it hangs the device.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/mtd/nand/raw/nand_macronix.c | 72 ----------------------------
|
||||
1 file changed, 72 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/nand/raw/nand_macronix.c
|
||||
+++ b/drivers/mtd/nand/raw/nand_macronix.c
|
||||
@@ -12,10 +12,6 @@
|
||||
#define MACRONIX_READ_RETRY_BIT BIT(0)
|
||||
#define MACRONIX_NUM_READ_RETRY_MODES 6
|
||||
|
||||
-#define ONFI_FEATURE_ADDR_MXIC_PROTECTION 0xA0
|
||||
-#define MXIC_BLOCK_PROTECTION_ALL_LOCK 0x38
|
||||
-#define MXIC_BLOCK_PROTECTION_ALL_UNLOCK 0x0
|
||||
-
|
||||
#define ONFI_FEATURE_ADDR_MXIC_RANDOMIZER 0xB0
|
||||
#define MACRONIX_RANDOMIZER_BIT BIT(1)
|
||||
#define MACRONIX_RANDOMIZER_ENPGM BIT(0)
|
||||
@@ -179,73 +175,6 @@ static void macronix_nand_fix_broken_get
|
||||
ONFI_FEATURE_ADDR_TIMING_MODE, 1);
|
||||
}
|
||||
|
||||
-/*
|
||||
- * Macronix NAND supports Block Protection by Protectoin(PT) pin;
|
||||
- * active high at power-on which protects the entire chip even the #WP is
|
||||
- * disabled. Lock/unlock protection area can be partition according to
|
||||
- * protection bits, i.e. upper 1/2 locked, upper 1/4 locked and so on.
|
||||
- */
|
||||
-static int mxic_nand_lock(struct nand_chip *chip, loff_t ofs, uint64_t len)
|
||||
-{
|
||||
- u8 feature[ONFI_SUBFEATURE_PARAM_LEN];
|
||||
- int ret;
|
||||
-
|
||||
- feature[0] = MXIC_BLOCK_PROTECTION_ALL_LOCK;
|
||||
- nand_select_target(chip, 0);
|
||||
- ret = nand_set_features(chip, ONFI_FEATURE_ADDR_MXIC_PROTECTION,
|
||||
- feature);
|
||||
- nand_deselect_target(chip);
|
||||
- if (ret)
|
||||
- pr_err("%s all blocks failed\n", __func__);
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static int mxic_nand_unlock(struct nand_chip *chip, loff_t ofs, uint64_t len)
|
||||
-{
|
||||
- u8 feature[ONFI_SUBFEATURE_PARAM_LEN];
|
||||
- int ret;
|
||||
-
|
||||
- feature[0] = MXIC_BLOCK_PROTECTION_ALL_UNLOCK;
|
||||
- nand_select_target(chip, 0);
|
||||
- ret = nand_set_features(chip, ONFI_FEATURE_ADDR_MXIC_PROTECTION,
|
||||
- feature);
|
||||
- nand_deselect_target(chip);
|
||||
- if (ret)
|
||||
- pr_err("%s all blocks failed\n", __func__);
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static void macronix_nand_block_protection_support(struct nand_chip *chip)
|
||||
-{
|
||||
- u8 feature[ONFI_SUBFEATURE_PARAM_LEN];
|
||||
- int ret;
|
||||
-
|
||||
- bitmap_set(chip->parameters.get_feature_list,
|
||||
- ONFI_FEATURE_ADDR_MXIC_PROTECTION, 1);
|
||||
-
|
||||
- feature[0] = MXIC_BLOCK_PROTECTION_ALL_UNLOCK;
|
||||
- nand_select_target(chip, 0);
|
||||
- ret = nand_get_features(chip, ONFI_FEATURE_ADDR_MXIC_PROTECTION,
|
||||
- feature);
|
||||
- nand_deselect_target(chip);
|
||||
- if (ret || feature[0] != MXIC_BLOCK_PROTECTION_ALL_LOCK) {
|
||||
- if (ret)
|
||||
- pr_err("Block protection check failed\n");
|
||||
-
|
||||
- bitmap_clear(chip->parameters.get_feature_list,
|
||||
- ONFI_FEATURE_ADDR_MXIC_PROTECTION, 1);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- bitmap_set(chip->parameters.set_feature_list,
|
||||
- ONFI_FEATURE_ADDR_MXIC_PROTECTION, 1);
|
||||
-
|
||||
- chip->ops.lock_area = mxic_nand_lock;
|
||||
- chip->ops.unlock_area = mxic_nand_unlock;
|
||||
-}
|
||||
-
|
||||
static int nand_power_down_op(struct nand_chip *chip)
|
||||
{
|
||||
int ret;
|
||||
@@ -323,7 +252,6 @@ static int macronix_nand_init(struct nan
|
||||
|
||||
macronix_nand_fix_broken_get_timings(chip);
|
||||
macronix_nand_onfi_init(chip);
|
||||
- macronix_nand_block_protection_support(chip);
|
||||
macronix_nand_deep_power_down_support(chip);
|
||||
|
||||
return 0;
|
@ -1,7 +1,7 @@
|
||||
From 590b60fb08cb1e70fe02d3f407c6b3dbe9ad06ff Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Mon, 1 Mar 2021 07:34:39 +0100
|
||||
Subject: [PATCH 3/4] net: broadcom: add BCM6368 enetsw controller driver
|
||||
Subject: [PATCH] net: broadcom: add BCM6368 enetsw controller driver
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -11,11 +11,9 @@ SoCs.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/net/ethernet/broadcom/Kconfig | 8 +
|
||||
drivers/net/ethernet/broadcom/Makefile | 1 +
|
||||
.../net/ethernet/broadcom/bcm6368-enetsw.c | 1111 +++++++++++++++++
|
||||
3 files changed, 1120 insertions(+)
|
||||
create mode 100644 drivers/net/ethernet/broadcom/bcm6368-enetsw.c
|
||||
drivers/net/ethernet/broadcom/Kconfig | 8 ++++++++
|
||||
drivers/net/ethernet/broadcom/Makefile | 1 +
|
||||
2 files changed, 9 insertions(+)
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/Kconfig
|
||||
+++ b/drivers/net/ethernet/broadcom/Kconfig
|
||||
|
@ -0,0 +1,43 @@
|
||||
From 590b60fb08cb1e70fe02d3f407c6b3dbe9ad06ff Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Mon, 1 Mar 2021 07:34:39 +0100
|
||||
Subject: [PATCH] net: broadcom: add BCM6348 enetsw controller driver
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This controller is present on BCM6338, BCM6348 and BCM6358 SoCs.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/net/ethernet/broadcom/Kconfig | 8 ++++++++
|
||||
drivers/net/ethernet/broadcom/Makefile | 1 +
|
||||
2 files changed, 9 insertions(+)
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/Kconfig
|
||||
+++ b/drivers/net/ethernet/broadcom/Kconfig
|
||||
@@ -68,6 +68,14 @@ config BCM63XX_ENET
|
||||
This driver supports the ethernet MACs in the Broadcom 63xx
|
||||
MIPS chipset family (BCM63XX).
|
||||
|
||||
+config BCM6348_ENET
|
||||
+ tristate "Broadcom BCM6348 internal mac support"
|
||||
+ depends on BMIPS_GENERIC || COMPILE_TEST
|
||||
+ default y
|
||||
+ help
|
||||
+ This driver supports Ethernet controller integrated into Broadcom
|
||||
+ BCM6348 family SoCs.
|
||||
+
|
||||
config BCM6368_ENETSW
|
||||
tristate "Broadcom BCM6368 internal mac support"
|
||||
depends on BMIPS_GENERIC || COMPILE_TEST
|
||||
--- a/drivers/net/ethernet/broadcom/Makefile
|
||||
+++ b/drivers/net/ethernet/broadcom/Makefile
|
||||
@@ -6,6 +6,7 @@
|
||||
obj-$(CONFIG_B44) += b44.o
|
||||
obj-$(CONFIG_BCM4908_ENET) += bcm4908_enet.o
|
||||
obj-$(CONFIG_BCM63XX_ENET) += bcm63xx_enet.o
|
||||
+obj-$(CONFIG_BCM6348_ENET) += bcm6348-enet.o
|
||||
obj-$(CONFIG_BCM6368_ENETSW) += bcm6368-enetsw.o
|
||||
obj-$(CONFIG_BCMGENET) += genet/
|
||||
obj-$(CONFIG_BNX2) += bnx2.o
|
@ -1,11 +0,0 @@
|
||||
--- a/drivers/net/dsa/b53/b53_mmap.c
|
||||
+++ b/drivers/net/dsa/b53/b53_mmap.c
|
||||
@@ -263,7 +263,7 @@ static int b53_mmap_probe_of(struct plat
|
||||
if (of_property_read_u32(of_port, "reg", ®))
|
||||
continue;
|
||||
|
||||
- if (reg < B53_CPU_PORT)
|
||||
+ if (reg <= B53_CPU_PORT)
|
||||
pdata->enabled_ports |= BIT(reg);
|
||||
}
|
||||
|
@ -0,0 +1,23 @@
|
||||
From 21145a89c79a22c4fb719cce5a2f4e3373d39756 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Wed, 17 May 2023 18:16:46 +0200
|
||||
Subject: [PATCH] net: mdio: mux-bcm6368: allow disabling for bmips
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/net/mdio/Kconfig | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/mdio/Kconfig
|
||||
+++ b/drivers/net/mdio/Kconfig
|
||||
@@ -219,7 +219,6 @@ config MDIO_BUS_MUX_BCM6368
|
||||
tristate "Broadcom BCM6368 MDIO bus multiplexers"
|
||||
depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST)
|
||||
select MDIO_BUS_MUX
|
||||
- default BMIPS_GENERIC
|
||||
help
|
||||
This module provides a driver for MDIO bus multiplexers found in
|
||||
BCM6368 based Broadcom SoCs. This multiplexer connects one of several
|
@ -1,72 +0,0 @@
|
||||
From 32cf73d8c6485b7b97aca7e377a68436d09b7022 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Sun, 14 Mar 2021 20:03:44 +0100
|
||||
Subject: [PATCH] net: dsa: b53: add support for BCM63xx RGMIIs
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/net/dsa/b53/b53_common.c | 37 ++++++++++++++++++++++++++++++++
|
||||
1 file changed, 37 insertions(+)
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -1209,6 +1209,36 @@ static void b53_force_port_config(struct
|
||||
b53_write8(dev, B53_CTRL_PAGE, off, reg);
|
||||
}
|
||||
|
||||
+static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port,
|
||||
+ phy_interface_t interface)
|
||||
+{
|
||||
+ struct b53_device *dev = ds->priv;
|
||||
+ u8 rgmii_ctrl = 0, off;
|
||||
+
|
||||
+ if (port == 8)
|
||||
+ off = B53_RGMII_CTRL_IMP;
|
||||
+ else
|
||||
+ off = B53_RGMII_CTRL_P(port);
|
||||
+
|
||||
+ b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl);
|
||||
+
|
||||
+ rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
|
||||
+ if (interface == PHY_INTERFACE_MODE_RGMII_ID)
|
||||
+ rgmii_ctrl |= (RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
|
||||
+ else if (interface == PHY_INTERFACE_MODE_RGMII_RXID)
|
||||
+ rgmii_ctrl |= RGMII_CTRL_DLL_RXC;
|
||||
+ else if (interface == PHY_INTERFACE_MODE_RGMII_TXID)
|
||||
+ rgmii_ctrl |= RGMII_CTRL_DLL_TXC;
|
||||
+
|
||||
+ if (port != B53_CPU_PORT)
|
||||
+ rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
|
||||
+
|
||||
+ b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
|
||||
+
|
||||
+ dev_info(ds->dev, "Configured port %d for %s\n", port,
|
||||
+ phy_modes(interface));
|
||||
+}
|
||||
+
|
||||
static void b53_adjust_link(struct dsa_switch *ds, int port,
|
||||
struct phy_device *phydev)
|
||||
{
|
||||
@@ -1235,6 +1265,9 @@ static void b53_adjust_link(struct dsa_s
|
||||
tx_pause, rx_pause);
|
||||
b53_force_link(dev, port, phydev->link);
|
||||
|
||||
+ if (is63xx(dev))
|
||||
+ b53_adjust_63xx_rgmii(ds, port, phydev->interface);
|
||||
+
|
||||
if (is531x5(dev) && phy_interface_is_rgmii(phydev)) {
|
||||
if (port == dev->imp_port)
|
||||
off = B53_RGMII_CTRL_IMP;
|
||||
@@ -1419,6 +1452,9 @@ void b53_phylink_mac_link_up(struct dsa_
|
||||
{
|
||||
struct b53_device *dev = ds->priv;
|
||||
|
||||
+ if (is63xx(dev) && port >= 4)
|
||||
+ b53_adjust_63xx_rgmii(ds, port, interface);
|
||||
+
|
||||
if (mode == MLO_AN_PHY)
|
||||
return;
|
||||
|
@ -1,9 +1,23 @@
|
||||
From 7742c1ba191a005a1356ff89b5fe2279d6f0ec4d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Wed, 17 May 2023 18:18:43 +0200
|
||||
Subject: [PATCH] mips: bmips: add PCI support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
arch/mips/Kconfig | 1 +
|
||||
arch/mips/pci/Makefile | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -277,6 +277,7 @@ config BMIPS_GENERIC
|
||||
select BCM7038_L1_IRQ
|
||||
select BCM7120_L2_IRQ
|
||||
select BRCMSTB_L2_IRQ
|
||||
@@ -274,6 +274,7 @@ config BMIPS_GENERIC
|
||||
select SYNC_R4K
|
||||
select COMMON_CLK
|
||||
select BCM6345_L1_IRQ
|
||||
+ select HAVE_PCI
|
||||
select IRQ_MIPS_CPU
|
||||
select DMA_NONCOHERENT
|
||||
|
@ -1,3 +1,17 @@
|
||||
From 49133041e0a5770decf1a25f575764d13a0d425c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Wed, 17 May 2023 18:20:10 +0200
|
||||
Subject: [PATCH] pci: add bcm6328-pcie support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/pci/controller/Kconfig | 5 +++++
|
||||
drivers/pci/controller/Makefile | 1 +
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
--- a/drivers/pci/controller/Kconfig
|
||||
+++ b/drivers/pci/controller/Kconfig
|
||||
@@ -3,6 +3,11 @@
|
||||
|
@ -1,3 +1,17 @@
|
||||
From cc3c30bdc98eabbaa07c64302eb5124a0f4a74f0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Wed, 17 May 2023 18:20:46 +0200
|
||||
Subject: [PATCH] pci: add bcm6318-pcie support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/pci/controller/Kconfig | 5 +++++
|
||||
drivers/pci/controller/Makefile | 1 +
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
--- a/drivers/pci/controller/Kconfig
|
||||
+++ b/drivers/pci/controller/Kconfig
|
||||
@@ -3,6 +3,11 @@
|
||||
|
@ -1,3 +1,17 @@
|
||||
From 5e7813e5725d79d00e0988472c306490fc48b3e1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Wed, 17 May 2023 18:21:19 +0200
|
||||
Subject: [PATCH] pci: add bcm6348-pci support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/pci/controller/Kconfig | 5 +++++
|
||||
drivers/pci/controller/Makefile | 1 +
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
--- a/drivers/pci/controller/Kconfig
|
||||
+++ b/drivers/pci/controller/Kconfig
|
||||
@@ -3,6 +3,11 @@
|
||||
|
@ -1,6 +0,0 @@
|
||||
--- a/arch/mips/bmips/Makefile
|
||||
+++ b/arch/mips/bmips/Makefile
|
||||
@@ -1,2 +1,3 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-y += setup.o irq.o dma.o
|
||||
+obj-y += ath9k-fixup.o b43-sprom.o
|
@ -0,0 +1,45 @@
|
||||
From 1a5f2263d388016c88d39e141c7eb8085c9313fc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Wed, 5 Apr 2023 08:07:00 +0200
|
||||
Subject: [PATCH] leds: add support for Sercomm MSP430 LED controller
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Sercomm added an external MSP430G2513 for controlling LEDs through SPI on some
|
||||
boards.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
drivers/leds/Kconfig | 9 +++++++++
|
||||
drivers/leds/Makefile | 1 +
|
||||
2 files changed, 10 insertions(+)
|
||||
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -288,6 +288,15 @@ config LEDS_COBALT_RAQ
|
||||
help
|
||||
This option enables support for the Cobalt Raq series LEDs.
|
||||
|
||||
+config LEDS_SERCOMM_MSP430
|
||||
+ tristate "LED support for Sercomm MSP430 SPI LED controllers"
|
||||
+ depends on LEDS_CLASS
|
||||
+ depends on SPI
|
||||
+ depends on OF
|
||||
+ help
|
||||
+ This option enables support for the Sercomm MSP430G2513 SPI LED
|
||||
+ controllers.
|
||||
+
|
||||
config LEDS_SUNFIRE
|
||||
tristate "LED support for SunFire servers."
|
||||
depends on LEDS_CLASS
|
||||
--- a/drivers/leds/Makefile
|
||||
+++ b/drivers/leds/Makefile
|
||||
@@ -77,6 +77,7 @@ obj-$(CONFIG_LEDS_PWM) += leds-pwm.o
|
||||
obj-$(CONFIG_LEDS_REGULATOR) += leds-regulator.o
|
||||
obj-$(CONFIG_LEDS_S3C24XX) += leds-s3c24xx.o
|
||||
obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o
|
||||
+obj-$(CONFIG_LEDS_SERCOMM_MSP430) += leds-sercomm-msp430.o
|
||||
obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o
|
||||
obj-$(CONFIG_LEDS_SYSCON) += leds-syscon.o
|
||||
obj-$(CONFIG_LEDS_TCA6507) += leds-tca6507.o
|
@ -83,9 +83,9 @@ Date: Tue Mar 1 23:55:47 2022 -0800
|
||||
help
|
||||
--- a/net/core/page_pool.c
|
||||
+++ b/net/core/page_pool.c
|
||||
@@ -26,6 +26,13 @@
|
||||
|
||||
#define BIAS_MAX LONG_MAX
|
||||
@@ -49,6 +49,13 @@ static void page_pool_producer_unlock(st
|
||||
spin_unlock_bh(&pool->ring.producer_lock);
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_PAGE_POOL_STATS
|
||||
+/* alloc_stat_inc is intended to be used in softirq context */
|
||||
@ -97,7 +97,7 @@ Date: Tue Mar 1 23:55:47 2022 -0800
|
||||
static int page_pool_init(struct page_pool *pool,
|
||||
const struct page_pool_params *params)
|
||||
{
|
||||
@@ -117,8 +124,10 @@ static struct page *page_pool_refill_all
|
||||
@@ -140,8 +147,10 @@ static struct page *page_pool_refill_all
|
||||
int pref_nid; /* preferred NUMA node */
|
||||
|
||||
/* Quicker fallback, avoid locks when ring is empty */
|
||||
@ -109,7 +109,7 @@ Date: Tue Mar 1 23:55:47 2022 -0800
|
||||
|
||||
/* Softirq guarantee CPU and thus NUMA node is stable. This,
|
||||
* assumes CPU refilling driver RX-ring will also run RX-NAPI.
|
||||
@@ -148,14 +157,17 @@ static struct page *page_pool_refill_all
|
||||
@@ -171,14 +180,17 @@ static struct page *page_pool_refill_all
|
||||
* This limit stress on page buddy alloactor.
|
||||
*/
|
||||
page_pool_return_page(pool, page);
|
||||
@ -128,7 +128,7 @@ Date: Tue Mar 1 23:55:47 2022 -0800
|
||||
|
||||
spin_unlock(&r->consumer_lock);
|
||||
return page;
|
||||
@@ -170,6 +182,7 @@ static struct page *__page_pool_get_cach
|
||||
@@ -193,6 +205,7 @@ static struct page *__page_pool_get_cach
|
||||
if (likely(pool->alloc.count)) {
|
||||
/* Fast-path */
|
||||
page = pool->alloc.cache[--pool->alloc.count];
|
||||
@ -136,7 +136,7 @@ Date: Tue Mar 1 23:55:47 2022 -0800
|
||||
} else {
|
||||
page = page_pool_refill_alloc_cache(pool);
|
||||
}
|
||||
@@ -241,6 +254,7 @@ static struct page *__page_pool_alloc_pa
|
||||
@@ -264,6 +277,7 @@ static struct page *__page_pool_alloc_pa
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -144,7 +144,7 @@ Date: Tue Mar 1 23:55:47 2022 -0800
|
||||
page_pool_set_pp_info(pool, page);
|
||||
|
||||
/* Track how many pages are held 'in-flight' */
|
||||
@@ -295,10 +309,12 @@ static struct page *__page_pool_alloc_pa
|
||||
@@ -318,10 +332,12 @@ static struct page *__page_pool_alloc_pa
|
||||
}
|
||||
|
||||
/* Return last page */
|
||||
|
@ -50,7 +50,7 @@ Date: Tue Mar 1 23:55:48 2022 -0800
|
||||
/* A page_pool is strictly tied to a single RX-queue being
|
||||
--- a/net/core/page_pool.c
|
||||
+++ b/net/core/page_pool.c
|
||||
@@ -29,8 +29,15 @@
|
||||
@@ -52,8 +52,15 @@ static void page_pool_producer_unlock(st
|
||||
#ifdef CONFIG_PAGE_POOL_STATS
|
||||
/* alloc_stat_inc is intended to be used in softirq context */
|
||||
#define alloc_stat_inc(pool, __stat) (pool->alloc_stats.__stat++)
|
||||
@ -66,7 +66,7 @@ Date: Tue Mar 1 23:55:48 2022 -0800
|
||||
#endif
|
||||
|
||||
static int page_pool_init(struct page_pool *pool,
|
||||
@@ -80,6 +87,12 @@ static int page_pool_init(struct page_po
|
||||
@@ -103,6 +110,12 @@ static int page_pool_init(struct page_po
|
||||
pool->p.flags & PP_FLAG_PAGE_FRAG)
|
||||
return -EINVAL;
|
||||
|
||||
@ -79,7 +79,7 @@ Date: Tue Mar 1 23:55:48 2022 -0800
|
||||
if (ptr_ring_init(&pool->ring, ring_qsize, GFP_KERNEL) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -412,7 +425,12 @@ static bool page_pool_recycle_in_ring(st
|
||||
@@ -435,7 +448,12 @@ static bool page_pool_recycle_in_ring(st
|
||||
else
|
||||
ret = ptr_ring_produce_bh(&pool->ring, page);
|
||||
|
||||
@ -93,7 +93,7 @@ Date: Tue Mar 1 23:55:48 2022 -0800
|
||||
}
|
||||
|
||||
/* Only allow direct recycling in special circumstances, into the
|
||||
@@ -423,11 +441,14 @@ static bool page_pool_recycle_in_ring(st
|
||||
@@ -446,11 +464,14 @@ static bool page_pool_recycle_in_ring(st
|
||||
static bool page_pool_recycle_in_cache(struct page *page,
|
||||
struct page_pool *pool)
|
||||
{
|
||||
@ -109,7 +109,7 @@ Date: Tue Mar 1 23:55:48 2022 -0800
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -482,6 +503,7 @@ __page_pool_put_page(struct page_pool *p
|
||||
@@ -505,6 +526,7 @@ __page_pool_put_page(struct page_pool *p
|
||||
* doing refcnt based recycle tricks, meaning another process
|
||||
* will be invoking put_page.
|
||||
*/
|
||||
@ -117,7 +117,7 @@ Date: Tue Mar 1 23:55:48 2022 -0800
|
||||
/* Do not replace this with page_pool_return_page() */
|
||||
page_pool_release_page(pool, page);
|
||||
put_page(page);
|
||||
@@ -495,6 +517,7 @@ void page_pool_put_page(struct page_pool
|
||||
@@ -518,6 +540,7 @@ void page_pool_put_page(struct page_pool
|
||||
page = __page_pool_put_page(pool, page, dma_sync_size, allow_direct);
|
||||
if (page && !page_pool_recycle_in_ring(pool, page)) {
|
||||
/* Cache full, fallback to free pages */
|
||||
@ -125,7 +125,7 @@ Date: Tue Mar 1 23:55:48 2022 -0800
|
||||
page_pool_return_page(pool, page);
|
||||
}
|
||||
}
|
||||
@@ -641,6 +664,9 @@ static void page_pool_free(struct page_p
|
||||
@@ -665,6 +688,9 @@ static void page_pool_free(struct page_p
|
||||
if (pool->p.flags & PP_FLAG_DMA_MAP)
|
||||
put_device(pool->p.dev);
|
||||
|
||||
|
@ -40,7 +40,7 @@ Date: Tue Mar 1 23:55:49 2022 -0800
|
||||
struct page_pool {
|
||||
--- a/net/core/page_pool.c
|
||||
+++ b/net/core/page_pool.c
|
||||
@@ -35,6 +35,31 @@
|
||||
@@ -58,6 +58,31 @@ static void page_pool_producer_unlock(st
|
||||
struct page_pool_recycle_stats __percpu *s = pool->recycle_stats; \
|
||||
this_cpu_inc(s->__stat); \
|
||||
} while (0)
|
||||
|
@ -14,7 +14,7 @@ Date: Mon Apr 11 16:05:26 2022 +0200
|
||||
|
||||
--- a/net/core/page_pool.c
|
||||
+++ b/net/core/page_pool.c
|
||||
@@ -36,6 +36,12 @@
|
||||
@@ -59,6 +59,12 @@ static void page_pool_producer_unlock(st
|
||||
this_cpu_inc(s->__stat); \
|
||||
} while (0)
|
||||
|
||||
@ -27,7 +27,7 @@ Date: Mon Apr 11 16:05:26 2022 +0200
|
||||
bool page_pool_get_stats(struct page_pool *pool,
|
||||
struct page_pool_stats *stats)
|
||||
{
|
||||
@@ -63,6 +69,7 @@ EXPORT_SYMBOL(page_pool_get_stats);
|
||||
@@ -86,6 +92,7 @@ EXPORT_SYMBOL(page_pool_get_stats);
|
||||
#else
|
||||
#define alloc_stat_inc(pool, __stat)
|
||||
#define recycle_stat_inc(pool, __stat)
|
||||
@ -35,9 +35,9 @@ Date: Mon Apr 11 16:05:26 2022 +0200
|
||||
#endif
|
||||
|
||||
static int page_pool_init(struct page_pool *pool,
|
||||
@@ -569,9 +576,13 @@ void page_pool_put_page_bulk(struct page
|
||||
@@ -593,9 +600,13 @@ void page_pool_put_page_bulk(struct page
|
||||
/* Bulk producer into ptr_ring page_pool cache */
|
||||
page_pool_ring_lock(pool);
|
||||
in_softirq = page_pool_producer_lock(pool);
|
||||
for (i = 0; i < bulk_len; i++) {
|
||||
- if (__ptr_ring_produce(&pool->ring, data[i]))
|
||||
- break; /* ring full */
|
||||
@ -48,6 +48,6 @@ Date: Mon Apr 11 16:05:26 2022 +0200
|
||||
+ }
|
||||
}
|
||||
+ recycle_stat_add(pool, ring, i);
|
||||
page_pool_ring_unlock(pool);
|
||||
page_pool_producer_unlock(pool, in_softirq);
|
||||
|
||||
/* Hopefully all pages was return into ptr_ring */
|
||||
|
@ -59,7 +59,7 @@ Date: Tue Apr 12 18:31:58 2022 +0200
|
||||
|
||||
#include <trace/events/page_pool.h>
|
||||
|
||||
@@ -42,6 +43,20 @@
|
||||
@@ -65,6 +66,20 @@ static void page_pool_producer_unlock(st
|
||||
this_cpu_add(s->__stat, val); \
|
||||
} while (0)
|
||||
|
||||
@ -80,7 +80,7 @@ Date: Tue Apr 12 18:31:58 2022 +0200
|
||||
bool page_pool_get_stats(struct page_pool *pool,
|
||||
struct page_pool_stats *stats)
|
||||
{
|
||||
@@ -50,7 +65,13 @@ bool page_pool_get_stats(struct page_poo
|
||||
@@ -73,7 +88,13 @@ bool page_pool_get_stats(struct page_poo
|
||||
if (!stats)
|
||||
return false;
|
||||
|
||||
@ -95,7 +95,7 @@ Date: Tue Apr 12 18:31:58 2022 +0200
|
||||
|
||||
for_each_possible_cpu(cpu) {
|
||||
const struct page_pool_recycle_stats *pcpu =
|
||||
@@ -66,6 +87,46 @@ bool page_pool_get_stats(struct page_poo
|
||||
@@ -89,6 +110,46 @@ bool page_pool_get_stats(struct page_poo
|
||||
return true;
|
||||
}
|
||||
EXPORT_SYMBOL(page_pool_get_stats);
|
||||
|
@ -45,7 +45,7 @@ Date: Fri Jan 21 11:09:50 2022 +0100
|
||||
int xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq,
|
||||
--- a/net/core/xdp.c
|
||||
+++ b/net/core/xdp.c
|
||||
@@ -376,12 +376,38 @@ static void __xdp_return(void *data, str
|
||||
@@ -409,12 +409,38 @@ static void __xdp_return(void *data, str
|
||||
|
||||
void xdp_return_frame(struct xdp_frame *xdpf)
|
||||
{
|
||||
@ -84,7 +84,7 @@ Date: Fri Jan 21 11:09:50 2022 +0100
|
||||
__xdp_return(xdpf->data, &xdpf->mem, true, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(xdp_return_frame_rx_napi);
|
||||
@@ -417,7 +443,7 @@ void xdp_return_frame_bulk(struct xdp_fr
|
||||
@@ -450,7 +476,7 @@ void xdp_return_frame_bulk(struct xdp_fr
|
||||
struct xdp_mem_allocator *xa;
|
||||
|
||||
if (mem->type != MEM_TYPE_PAGE_POOL) {
|
||||
@ -93,7 +93,7 @@ Date: Fri Jan 21 11:09:50 2022 +0100
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -436,12 +462,38 @@ void xdp_return_frame_bulk(struct xdp_fr
|
||||
@@ -469,12 +495,38 @@ void xdp_return_frame_bulk(struct xdp_fr
|
||||
bq->xa = rhashtable_lookup(mem_id_ht, &mem->id, mem_id_rht_params);
|
||||
}
|
||||
|
||||
|
@ -1,56 +0,0 @@
|
||||
From: Qingfang DENG <qingfang.deng@siflower.com.cn>
|
||||
Date: Fri, 3 Feb 2023 09:16:11 +0800
|
||||
Subject: [PATCH] net: page_pool: use in_softirq() instead
|
||||
|
||||
We use BH context only for synchronization, so we don't care if it's
|
||||
actually serving softirq or not.
|
||||
|
||||
As a side node, in case of threaded NAPI, in_serving_softirq() will
|
||||
return false because it's in process context with BH off, making
|
||||
page_pool_recycle_in_cache() unreachable.
|
||||
|
||||
Signed-off-by: Qingfang DENG <qingfang.deng@siflower.com.cn>
|
||||
---
|
||||
|
||||
--- a/include/net/page_pool.h
|
||||
+++ b/include/net/page_pool.h
|
||||
@@ -357,7 +357,7 @@ static inline void page_pool_nid_changed
|
||||
static inline void page_pool_ring_lock(struct page_pool *pool)
|
||||
__acquires(&pool->ring.producer_lock)
|
||||
{
|
||||
- if (in_serving_softirq())
|
||||
+ if (in_softirq())
|
||||
spin_lock(&pool->ring.producer_lock);
|
||||
else
|
||||
spin_lock_bh(&pool->ring.producer_lock);
|
||||
@@ -366,7 +366,7 @@ static inline void page_pool_ring_lock(s
|
||||
static inline void page_pool_ring_unlock(struct page_pool *pool)
|
||||
__releases(&pool->ring.producer_lock)
|
||||
{
|
||||
- if (in_serving_softirq())
|
||||
+ if (in_softirq())
|
||||
spin_unlock(&pool->ring.producer_lock);
|
||||
else
|
||||
spin_unlock_bh(&pool->ring.producer_lock);
|
||||
--- a/net/core/page_pool.c
|
||||
+++ b/net/core/page_pool.c
|
||||
@@ -512,8 +512,8 @@ static void page_pool_return_page(struct
|
||||
static bool page_pool_recycle_in_ring(struct page_pool *pool, struct page *page)
|
||||
{
|
||||
int ret;
|
||||
- /* BH protection not needed if current is serving softirq */
|
||||
- if (in_serving_softirq())
|
||||
+ /* BH protection not needed if current is softirq */
|
||||
+ if (in_softirq())
|
||||
ret = ptr_ring_produce(&pool->ring, page);
|
||||
else
|
||||
ret = ptr_ring_produce_bh(&pool->ring, page);
|
||||
@@ -576,7 +576,7 @@ __page_pool_put_page(struct page_pool *p
|
||||
page_pool_dma_sync_for_device(pool, page,
|
||||
dma_sync_size);
|
||||
|
||||
- if (allow_direct && in_serving_softirq() &&
|
||||
+ if (allow_direct && in_softirq() &&
|
||||
page_pool_recycle_in_cache(page, pool))
|
||||
return NULL;
|
||||
|
@ -94,7 +94,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/*
|
||||
* Configuration data for this switch.
|
||||
*/
|
||||
@@ -584,6 +589,13 @@ struct dsa_switch_ops {
|
||||
@@ -612,6 +617,13 @@ struct dsa_switch_ops {
|
||||
enum dsa_tag_protocol mprot);
|
||||
int (*change_tag_protocol)(struct dsa_switch *ds, int port,
|
||||
enum dsa_tag_protocol proto);
|
||||
|
@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/include/net/dsa.h
|
||||
+++ b/include/net/dsa.h
|
||||
@@ -626,6 +626,8 @@ struct dsa_switch_ops {
|
||||
@@ -654,6 +654,8 @@ struct dsa_switch_ops {
|
||||
/*
|
||||
* PHYLINK integration
|
||||
*/
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/include/net/dsa.h
|
||||
+++ b/include/net/dsa.h
|
||||
@@ -626,8 +626,8 @@ struct dsa_switch_ops {
|
||||
@@ -654,8 +654,8 @@ struct dsa_switch_ops {
|
||||
/*
|
||||
* PHYLINK integration
|
||||
*/
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/include/net/dsa.h
|
||||
+++ b/include/net/dsa.h
|
||||
@@ -631,6 +631,9 @@ struct dsa_switch_ops {
|
||||
@@ -659,6 +659,9 @@ struct dsa_switch_ops {
|
||||
void (*phylink_validate)(struct dsa_switch *ds, int port,
|
||||
unsigned long *supported,
|
||||
struct phylink_link_state *state);
|
||||
|
@ -1,68 +0,0 @@
|
||||
From 82b318983c515f29b8b3a0dad9f6a5fe8a68a7f4 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Wed, 20 Oct 2021 20:49:49 +0300
|
||||
Subject: [PATCH] net: dsa: introduce helpers for iterating through ports using
|
||||
dp
|
||||
|
||||
Since the DSA conversion from the ds->ports array into the dst->ports
|
||||
list, the DSA API has encouraged driver writers, as well as the core
|
||||
itself, to write inefficient code.
|
||||
|
||||
Currently, code that wants to filter by a specific type of port when
|
||||
iterating, like {!unused, user, cpu, dsa}, uses the dsa_is_*_port helper.
|
||||
Under the hood, this uses dsa_to_port which iterates again through
|
||||
dst->ports. But the driver iterates through the port list already, so
|
||||
the complexity is quadratic for the typical case of a single-switch
|
||||
tree.
|
||||
|
||||
This patch introduces some iteration helpers where the iterator is
|
||||
already a struct dsa_port *dp, so that the other variant of the
|
||||
filtering functions, dsa_port_is_{unused,user,cpu_dsa}, can be used
|
||||
directly on the iterator. This eliminates the second lookup.
|
||||
|
||||
These functions can be used both by the core and by drivers.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
include/net/dsa.h | 28 ++++++++++++++++++++++++++++
|
||||
1 file changed, 28 insertions(+)
|
||||
|
||||
--- a/include/net/dsa.h
|
||||
+++ b/include/net/dsa.h
|
||||
@@ -476,6 +476,34 @@ static inline bool dsa_is_user_port(stru
|
||||
return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_USER;
|
||||
}
|
||||
|
||||
+#define dsa_tree_for_each_user_port(_dp, _dst) \
|
||||
+ list_for_each_entry((_dp), &(_dst)->ports, list) \
|
||||
+ if (dsa_port_is_user((_dp)))
|
||||
+
|
||||
+#define dsa_switch_for_each_port(_dp, _ds) \
|
||||
+ list_for_each_entry((_dp), &(_ds)->dst->ports, list) \
|
||||
+ if ((_dp)->ds == (_ds))
|
||||
+
|
||||
+#define dsa_switch_for_each_port_safe(_dp, _next, _ds) \
|
||||
+ list_for_each_entry_safe((_dp), (_next), &(_ds)->dst->ports, list) \
|
||||
+ if ((_dp)->ds == (_ds))
|
||||
+
|
||||
+#define dsa_switch_for_each_port_continue_reverse(_dp, _ds) \
|
||||
+ list_for_each_entry_continue_reverse((_dp), &(_ds)->dst->ports, list) \
|
||||
+ if ((_dp)->ds == (_ds))
|
||||
+
|
||||
+#define dsa_switch_for_each_available_port(_dp, _ds) \
|
||||
+ dsa_switch_for_each_port((_dp), (_ds)) \
|
||||
+ if (!dsa_port_is_unused((_dp)))
|
||||
+
|
||||
+#define dsa_switch_for_each_user_port(_dp, _ds) \
|
||||
+ dsa_switch_for_each_port((_dp), (_ds)) \
|
||||
+ if (dsa_port_is_user((_dp)))
|
||||
+
|
||||
+#define dsa_switch_for_each_cpu_port(_dp, _ds) \
|
||||
+ dsa_switch_for_each_port((_dp), (_ds)) \
|
||||
+ if (dsa_port_is_cpu((_dp)))
|
||||
+
|
||||
static inline u32 dsa_user_ports(struct dsa_switch *ds)
|
||||
{
|
||||
u32 mask = 0;
|
@ -23,7 +23,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2412,6 +2412,32 @@ mt7531_setup(struct dsa_switch *ds)
|
||||
@@ -2444,6 +2444,32 @@ mt7531_setup(struct dsa_switch *ds)
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static bool
|
||||
mt7530_phy_mode_supported(struct dsa_switch *ds, int port,
|
||||
const struct phylink_link_state *state)
|
||||
@@ -2448,6 +2474,37 @@ static bool mt7531_is_rgmii_port(struct
|
||||
@@ -2480,6 +2506,37 @@ static bool mt7531_is_rgmii_port(struct
|
||||
return (port == 5) && (priv->p5_intf_sel != P5_INTF_SEL_GMAC5_SGMII);
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static bool
|
||||
mt7531_phy_mode_supported(struct dsa_switch *ds, int port,
|
||||
const struct phylink_link_state *state)
|
||||
@@ -2924,6 +2981,18 @@ mt7531_cpu_port_config(struct dsa_switch
|
||||
@@ -2956,6 +3013,18 @@ mt7531_cpu_port_config(struct dsa_switch
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -113,7 +113,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static void
|
||||
mt7530_mac_port_validate(struct dsa_switch *ds, int port,
|
||||
unsigned long *supported)
|
||||
@@ -3159,6 +3228,7 @@ static const struct dsa_switch_ops mt753
|
||||
@@ -3191,6 +3260,7 @@ static const struct dsa_switch_ops mt753
|
||||
.port_vlan_del = mt7530_port_vlan_del,
|
||||
.port_mirror_add = mt753x_port_mirror_add,
|
||||
.port_mirror_del = mt753x_port_mirror_del,
|
||||
@ -121,7 +121,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.phylink_validate = mt753x_phylink_validate,
|
||||
.phylink_mac_link_state = mt753x_phylink_mac_link_state,
|
||||
.phylink_mac_config = mt753x_phylink_mac_config,
|
||||
@@ -3176,6 +3246,7 @@ static const struct mt753x_info mt753x_t
|
||||
@@ -3208,6 +3278,7 @@ static const struct mt753x_info mt753x_t
|
||||
.phy_read = mt7530_phy_read,
|
||||
.phy_write = mt7530_phy_write,
|
||||
.pad_setup = mt7530_pad_clk_setup,
|
||||
@ -129,7 +129,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.phy_mode_supported = mt7530_phy_mode_supported,
|
||||
.mac_port_validate = mt7530_mac_port_validate,
|
||||
.mac_port_get_state = mt7530_phylink_mac_link_state,
|
||||
@@ -3187,6 +3258,7 @@ static const struct mt753x_info mt753x_t
|
||||
@@ -3219,6 +3290,7 @@ static const struct mt753x_info mt753x_t
|
||||
.phy_read = mt7530_phy_read,
|
||||
.phy_write = mt7530_phy_write,
|
||||
.pad_setup = mt7530_pad_clk_setup,
|
||||
@ -137,7 +137,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.phy_mode_supported = mt7530_phy_mode_supported,
|
||||
.mac_port_validate = mt7530_mac_port_validate,
|
||||
.mac_port_get_state = mt7530_phylink_mac_link_state,
|
||||
@@ -3199,6 +3271,7 @@ static const struct mt753x_info mt753x_t
|
||||
@@ -3231,6 +3303,7 @@ static const struct mt753x_info mt753x_t
|
||||
.phy_write = mt7531_ind_phy_write,
|
||||
.pad_setup = mt7531_pad_setup,
|
||||
.cpu_port_config = mt7531_cpu_port_config,
|
||||
@ -145,7 +145,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.phy_mode_supported = mt7531_phy_mode_supported,
|
||||
.mac_port_validate = mt7531_mac_port_validate,
|
||||
.mac_port_get_state = mt7531_phylink_mac_link_state,
|
||||
@@ -3261,6 +3334,7 @@ mt7530_probe(struct mdio_device *mdiodev
|
||||
@@ -3293,6 +3366,7 @@ mt7530_probe(struct mdio_device *mdiodev
|
||||
*/
|
||||
if (!priv->info->sw_setup || !priv->info->pad_setup ||
|
||||
!priv->info->phy_read || !priv->info->phy_write ||
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2438,37 +2438,6 @@ static void mt7530_mac_port_get_caps(str
|
||||
@@ -2470,37 +2470,6 @@ static void mt7530_mac_port_get_caps(str
|
||||
}
|
||||
}
|
||||
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static bool mt7531_is_rgmii_port(struct mt7530_priv *priv, u32 port)
|
||||
{
|
||||
return (port == 5) && (priv->p5_intf_sel != P5_INTF_SEL_GMAC5_SGMII);
|
||||
@@ -2505,44 +2474,6 @@ static void mt7531_mac_port_get_caps(str
|
||||
@@ -2537,44 +2506,6 @@ static void mt7531_mac_port_get_caps(str
|
||||
}
|
||||
}
|
||||
|
||||
@ -104,7 +104,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static int
|
||||
mt753x_pad_setup(struct dsa_switch *ds, const struct phylink_link_state *state)
|
||||
{
|
||||
@@ -2797,9 +2728,6 @@ mt753x_phylink_mac_config(struct dsa_swi
|
||||
@@ -2829,9 +2760,6 @@ mt753x_phylink_mac_config(struct dsa_swi
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
u32 mcr_cur, mcr_new;
|
||||
|
||||
@ -114,7 +114,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
switch (port) {
|
||||
case 0 ... 4: /* Internal phy */
|
||||
if (state->interface != PHY_INTERFACE_MODE_GMII)
|
||||
@@ -3015,12 +2943,6 @@ mt753x_phylink_validate(struct dsa_switc
|
||||
@@ -3047,12 +2975,6 @@ mt753x_phylink_validate(struct dsa_switc
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
|
||||
@ -127,7 +127,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
phylink_set_port_modes(mask);
|
||||
|
||||
if (state->interface != PHY_INTERFACE_MODE_TRGMII &&
|
||||
@@ -3247,7 +3169,6 @@ static const struct mt753x_info mt753x_t
|
||||
@@ -3279,7 +3201,6 @@ static const struct mt753x_info mt753x_t
|
||||
.phy_write = mt7530_phy_write,
|
||||
.pad_setup = mt7530_pad_clk_setup,
|
||||
.mac_port_get_caps = mt7530_mac_port_get_caps,
|
||||
@ -135,7 +135,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.mac_port_validate = mt7530_mac_port_validate,
|
||||
.mac_port_get_state = mt7530_phylink_mac_link_state,
|
||||
.mac_port_config = mt7530_mac_config,
|
||||
@@ -3259,7 +3180,6 @@ static const struct mt753x_info mt753x_t
|
||||
@@ -3291,7 +3212,6 @@ static const struct mt753x_info mt753x_t
|
||||
.phy_write = mt7530_phy_write,
|
||||
.pad_setup = mt7530_pad_clk_setup,
|
||||
.mac_port_get_caps = mt7530_mac_port_get_caps,
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.mac_port_validate = mt7530_mac_port_validate,
|
||||
.mac_port_get_state = mt7530_phylink_mac_link_state,
|
||||
.mac_port_config = mt7530_mac_config,
|
||||
@@ -3272,7 +3192,6 @@ static const struct mt753x_info mt753x_t
|
||||
@@ -3304,7 +3224,6 @@ static const struct mt753x_info mt753x_t
|
||||
.pad_setup = mt7531_pad_setup,
|
||||
.cpu_port_config = mt7531_cpu_port_config,
|
||||
.mac_port_get_caps = mt7531_mac_port_get_caps,
|
||||
@ -151,7 +151,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.mac_port_validate = mt7531_mac_port_validate,
|
||||
.mac_port_get_state = mt7531_phylink_mac_link_state,
|
||||
.mac_port_config = mt7531_mac_config,
|
||||
@@ -3335,7 +3254,6 @@ mt7530_probe(struct mdio_device *mdiodev
|
||||
@@ -3367,7 +3286,6 @@ mt7530_probe(struct mdio_device *mdiodev
|
||||
if (!priv->info->sw_setup || !priv->info->pad_setup ||
|
||||
!priv->info->phy_read || !priv->info->phy_write ||
|
||||
!priv->info->mac_port_get_caps ||
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2967,11 +2967,6 @@ mt753x_phylink_validate(struct dsa_switc
|
||||
@@ -2999,11 +2999,6 @@ mt753x_phylink_validate(struct dsa_switc
|
||||
|
||||
linkmode_and(supported, supported, mask);
|
||||
linkmode_and(state->advertising, state->advertising, mask);
|
||||
|
@ -23,7 +23,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2545,12 +2545,13 @@ static int mt7531_rgmii_setup(struct mt7
|
||||
@@ -2577,12 +2577,13 @@ static int mt7531_rgmii_setup(struct mt7
|
||||
}
|
||||
|
||||
static void mt7531_sgmii_validate(struct mt7530_priv *priv, int port,
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
phylink_set(supported, 2500baseX_Full);
|
||||
phylink_set(supported, 2500baseT_Full);
|
||||
}
|
||||
@@ -2923,16 +2924,18 @@ static void mt753x_phylink_get_caps(stru
|
||||
@@ -2955,16 +2956,18 @@ static void mt753x_phylink_get_caps(stru
|
||||
|
||||
static void
|
||||
mt7530_mac_port_validate(struct dsa_switch *ds, int port,
|
||||
@ -58,7 +58,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2955,12 +2958,13 @@ mt753x_phylink_validate(struct dsa_switc
|
||||
@@ -2987,12 +2990,13 @@ mt753x_phylink_validate(struct dsa_switc
|
||||
}
|
||||
|
||||
/* This switch only supports 1G full-duplex. */
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2544,19 +2544,6 @@ static int mt7531_rgmii_setup(struct mt7
|
||||
@@ -2576,19 +2576,6 @@ static int mt7531_rgmii_setup(struct mt7
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static void
|
||||
mt7531_sgmii_link_up_force(struct dsa_switch *ds, int port,
|
||||
unsigned int mode, phy_interface_t interface,
|
||||
@@ -2923,51 +2910,21 @@ static void mt753x_phylink_get_caps(stru
|
||||
@@ -2955,51 +2942,21 @@ static void mt753x_phylink_get_caps(stru
|
||||
}
|
||||
|
||||
static void
|
||||
@ -97,7 +97,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
linkmode_and(supported, supported, mask);
|
||||
linkmode_and(state->advertising, state->advertising, mask);
|
||||
@@ -3168,7 +3125,6 @@ static const struct mt753x_info mt753x_t
|
||||
@@ -3200,7 +3157,6 @@ static const struct mt753x_info mt753x_t
|
||||
.phy_write = mt7530_phy_write,
|
||||
.pad_setup = mt7530_pad_clk_setup,
|
||||
.mac_port_get_caps = mt7530_mac_port_get_caps,
|
||||
@ -105,7 +105,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.mac_port_get_state = mt7530_phylink_mac_link_state,
|
||||
.mac_port_config = mt7530_mac_config,
|
||||
},
|
||||
@@ -3179,7 +3135,6 @@ static const struct mt753x_info mt753x_t
|
||||
@@ -3211,7 +3167,6 @@ static const struct mt753x_info mt753x_t
|
||||
.phy_write = mt7530_phy_write,
|
||||
.pad_setup = mt7530_pad_clk_setup,
|
||||
.mac_port_get_caps = mt7530_mac_port_get_caps,
|
||||
@ -113,7 +113,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.mac_port_get_state = mt7530_phylink_mac_link_state,
|
||||
.mac_port_config = mt7530_mac_config,
|
||||
},
|
||||
@@ -3191,7 +3146,6 @@ static const struct mt753x_info mt753x_t
|
||||
@@ -3223,7 +3178,6 @@ static const struct mt753x_info mt753x_t
|
||||
.pad_setup = mt7531_pad_setup,
|
||||
.cpu_port_config = mt7531_cpu_port_config,
|
||||
.mac_port_get_caps = mt7531_mac_port_get_caps,
|
||||
@ -121,7 +121,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.mac_port_get_state = mt7531_phylink_mac_link_state,
|
||||
.mac_port_config = mt7531_mac_config,
|
||||
.mac_pcs_an_restart = mt7531_sgmii_restart_an,
|
||||
@@ -3253,7 +3207,6 @@ mt7530_probe(struct mdio_device *mdiodev
|
||||
@@ -3285,7 +3239,6 @@ mt7530_probe(struct mdio_device *mdiodev
|
||||
if (!priv->info->sw_setup || !priv->info->pad_setup ||
|
||||
!priv->info->phy_read || !priv->info->phy_write ||
|
||||
!priv->info->mac_port_get_caps ||
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
/* String, offset, and register size in bytes if different from 4 bytes */
|
||||
static const struct mt7530_mib_desc mt7530_mib[] = {
|
||||
MIB_DESC(1, 0x00, "TxDrop"),
|
||||
@@ -2544,12 +2549,11 @@ static int mt7531_rgmii_setup(struct mt7
|
||||
@@ -2576,12 +2581,11 @@ static int mt7531_rgmii_setup(struct mt7
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
unsigned int val;
|
||||
|
||||
/* For adjusting speed and duplex of SGMII force mode. */
|
||||
@@ -2575,6 +2579,9 @@ mt7531_sgmii_link_up_force(struct dsa_sw
|
||||
@@ -2607,6 +2611,9 @@ mt7531_sgmii_link_up_force(struct dsa_sw
|
||||
|
||||
/* MT7531 SGMII 1G force mode can only work in full duplex mode,
|
||||
* no matter MT7531_SGMII_FORCE_HALF_DUPLEX is set or not.
|
||||
@ -60,7 +60,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
*/
|
||||
if ((speed == SPEED_10 || speed == SPEED_100) &&
|
||||
duplex != DUPLEX_FULL)
|
||||
@@ -2650,9 +2657,10 @@ static int mt7531_sgmii_setup_mode_an(st
|
||||
@@ -2682,9 +2689,10 @@ static int mt7531_sgmii_setup_mode_an(st
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -73,7 +73,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
u32 val;
|
||||
|
||||
/* Only restart AN when AN is enabled */
|
||||
@@ -2709,6 +2717,24 @@ mt753x_mac_config(struct dsa_switch *ds,
|
||||
@@ -2741,6 +2749,24 @@ mt753x_mac_config(struct dsa_switch *ds,
|
||||
return priv->info->mac_port_config(ds, port, mode, state->interface);
|
||||
}
|
||||
|
||||
@ -98,7 +98,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static void
|
||||
mt753x_phylink_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
|
||||
const struct phylink_link_state *state)
|
||||
@@ -2770,17 +2796,6 @@ unsupported:
|
||||
@@ -2802,17 +2828,6 @@ unsupported:
|
||||
mt7530_write(priv, MT7530_PMCR_P(port), mcr_new);
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static void mt753x_phylink_mac_link_down(struct dsa_switch *ds, int port,
|
||||
unsigned int mode,
|
||||
phy_interface_t interface)
|
||||
@@ -2790,16 +2805,13 @@ static void mt753x_phylink_mac_link_down
|
||||
@@ -2822,16 +2837,13 @@ static void mt753x_phylink_mac_link_down
|
||||
mt7530_clear(priv, MT7530_PMCR_P(port), PMCR_LINK_SETTINGS_MASK);
|
||||
}
|
||||
|
||||
@ -139,7 +139,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
}
|
||||
|
||||
static void mt753x_phylink_mac_link_up(struct dsa_switch *ds, int port,
|
||||
@@ -2812,8 +2824,6 @@ static void mt753x_phylink_mac_link_up(s
|
||||
@@ -2844,8 +2856,6 @@ static void mt753x_phylink_mac_link_up(s
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
u32 mcr;
|
||||
|
||||
@ -148,7 +148,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
mcr = PMCR_RX_EN | PMCR_TX_EN | PMCR_FORCE_LNK;
|
||||
|
||||
/* MT753x MAC works in 1G full duplex mode for all up-clocked
|
||||
@@ -2891,6 +2901,8 @@ mt7531_cpu_port_config(struct dsa_switch
|
||||
@@ -2923,6 +2933,8 @@ mt7531_cpu_port_config(struct dsa_switch
|
||||
return ret;
|
||||
mt7530_write(priv, MT7530_PMCR_P(port),
|
||||
PMCR_CPU_PORT_SETTING(priv->id));
|
||||
@ -157,7 +157,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
mt753x_phylink_mac_link_up(ds, port, MLO_AN_FIXED, interface, NULL,
|
||||
speed, DUPLEX_FULL, true, true);
|
||||
|
||||
@@ -2930,16 +2942,13 @@ mt753x_phylink_validate(struct dsa_switc
|
||||
@@ -2962,16 +2974,13 @@ mt753x_phylink_validate(struct dsa_switc
|
||||
linkmode_and(state->advertising, state->advertising, mask);
|
||||
}
|
||||
|
||||
@ -178,7 +178,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
pmsr = mt7530_read(priv, MT7530_PMSR_P(port));
|
||||
|
||||
state->link = (pmsr & PMSR_LINK);
|
||||
@@ -2966,8 +2975,6 @@ mt7530_phylink_mac_link_state(struct dsa
|
||||
@@ -2998,8 +3007,6 @@ mt7530_phylink_mac_link_state(struct dsa
|
||||
state->pause |= MLO_PAUSE_RX;
|
||||
if (pmsr & PMSR_TX_FC)
|
||||
state->pause |= MLO_PAUSE_TX;
|
||||
@ -187,7 +187,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -3009,32 +3016,49 @@ mt7531_sgmii_pcs_get_state_an(struct mt7
|
||||
@@ -3041,32 +3048,49 @@ mt7531_sgmii_pcs_get_state_an(struct mt7
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -249,7 +249,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
@@ -3047,6 +3071,13 @@ mt753x_setup(struct dsa_switch *ds)
|
||||
@@ -3079,6 +3103,13 @@ mt753x_setup(struct dsa_switch *ds)
|
||||
if (ret && priv->irq)
|
||||
mt7530_free_irq_common(priv);
|
||||
|
||||
@ -263,7 +263,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -3108,9 +3139,8 @@ static const struct dsa_switch_ops mt753
|
||||
@@ -3140,9 +3171,8 @@ static const struct dsa_switch_ops mt753
|
||||
.port_mirror_del = mt753x_port_mirror_del,
|
||||
.phylink_get_caps = mt753x_phylink_get_caps,
|
||||
.phylink_validate = mt753x_phylink_validate,
|
||||
@ -274,7 +274,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.phylink_mac_link_down = mt753x_phylink_mac_link_down,
|
||||
.phylink_mac_link_up = mt753x_phylink_mac_link_up,
|
||||
.get_mac_eee = mt753x_get_mac_eee,
|
||||
@@ -3120,36 +3150,34 @@ static const struct dsa_switch_ops mt753
|
||||
@@ -3152,36 +3182,34 @@ static const struct dsa_switch_ops mt753
|
||||
static const struct mt753x_info mt753x_table[] = {
|
||||
[ID_MT7621] = {
|
||||
.id = ID_MT7621,
|
||||
@ -314,7 +314,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
},
|
||||
};
|
||||
|
||||
@@ -3207,7 +3235,7 @@ mt7530_probe(struct mdio_device *mdiodev
|
||||
@@ -3239,7 +3267,7 @@ mt7530_probe(struct mdio_device *mdiodev
|
||||
if (!priv->info->sw_setup || !priv->info->pad_setup ||
|
||||
!priv->info->phy_read || !priv->info->phy_write ||
|
||||
!priv->info->mac_port_get_caps ||
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2921,25 +2921,16 @@ static void mt753x_phylink_get_caps(stru
|
||||
@@ -2953,25 +2953,16 @@ static void mt753x_phylink_get_caps(stru
|
||||
priv->info->mac_port_get_caps(ds, port, config);
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
}
|
||||
|
||||
static void mt7530_pcs_get_state(struct phylink_pcs *pcs,
|
||||
@@ -3041,12 +3032,14 @@ static void mt7530_pcs_an_restart(struct
|
||||
@@ -3073,12 +3064,14 @@ static void mt7530_pcs_an_restart(struct
|
||||
}
|
||||
|
||||
static const struct phylink_pcs_ops mt7530_pcs_ops = {
|
||||
@ -70,7 +70,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
.pcs_get_state = mt7531_pcs_get_state,
|
||||
.pcs_config = mt753x_pcs_config,
|
||||
.pcs_an_restart = mt7531_pcs_an_restart,
|
||||
@@ -3138,7 +3131,6 @@ static const struct dsa_switch_ops mt753
|
||||
@@ -3170,7 +3163,6 @@ static const struct dsa_switch_ops mt753
|
||||
.port_mirror_add = mt753x_port_mirror_add,
|
||||
.port_mirror_del = mt753x_port_mirror_del,
|
||||
.phylink_get_caps = mt753x_phylink_get_caps,
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2918,6 +2918,12 @@ static void mt753x_phylink_get_caps(stru
|
||||
@@ -2950,6 +2950,12 @@ static void mt753x_phylink_get_caps(stru
|
||||
config->mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
|
||||
MAC_10 | MAC_100 | MAC_1000FD;
|
||||
|
||||
|
@ -81,7 +81,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -3056,9 +3056,16 @@ static int
|
||||
@@ -3088,9 +3088,16 @@ static int
|
||||
mt753x_setup(struct dsa_switch *ds)
|
||||
{
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
@ -100,7 +100,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -3070,13 +3077,6 @@ mt753x_setup(struct dsa_switch *ds)
|
||||
@@ -3102,13 +3109,6 @@ mt753x_setup(struct dsa_switch *ds)
|
||||
if (ret && priv->irq)
|
||||
mt7530_free_irq_common(priv);
|
||||
|
||||
|
@ -1,75 +0,0 @@
|
||||
From 1f0dfd443eea7fc3e818e96f7c8264913ba41859 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Fri, 10 Jun 2022 19:05:38 +0200
|
||||
Subject: [PATCH 12/13] net: dsa: mt7530: rework mt753[01]_setup
|
||||
|
||||
Enumerate available cpu-ports instead of using hardcoded constant.
|
||||
|
||||
Suggested-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
|
||||
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
||||
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/mt7530.c | 25 +++++++++++++++++++++----
|
||||
1 file changed, 21 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2101,11 +2101,12 @@ static int
|
||||
mt7530_setup(struct dsa_switch *ds)
|
||||
{
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
+ struct device_node *dn = NULL;
|
||||
struct device_node *phy_node;
|
||||
struct device_node *mac_np;
|
||||
struct mt7530_dummy_poll p;
|
||||
phy_interface_t interface;
|
||||
- struct device_node *dn;
|
||||
+ struct dsa_port *cpu_dp;
|
||||
u32 id, val;
|
||||
int ret, i;
|
||||
|
||||
@@ -2113,7 +2114,19 @@ mt7530_setup(struct dsa_switch *ds)
|
||||
* controller also is the container for two GMACs nodes representing
|
||||
* as two netdev instances.
|
||||
*/
|
||||
- dn = dsa_to_port(ds, MT7530_CPU_PORT)->master->dev.of_node->parent;
|
||||
+ dsa_switch_for_each_cpu_port(cpu_dp, ds) {
|
||||
+ dn = cpu_dp->master->dev.of_node->parent;
|
||||
+ /* It doesn't matter which CPU port is found first,
|
||||
+ * their masters should share the same parent OF node
|
||||
+ */
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (!dn) {
|
||||
+ dev_err(ds->dev, "parent OF node of DSA master not found");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
ds->assisted_learning_on_cpu_port = true;
|
||||
ds->mtu_enforcement_ingress = true;
|
||||
|
||||
@@ -2286,6 +2299,7 @@ mt7531_setup(struct dsa_switch *ds)
|
||||
{
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
struct mt7530_dummy_poll p;
|
||||
+ struct dsa_port *cpu_dp;
|
||||
u32 val, id;
|
||||
int ret, i;
|
||||
|
||||
@@ -2360,8 +2374,11 @@ mt7531_setup(struct dsa_switch *ds)
|
||||
CORE_PLL_GROUP4, val);
|
||||
|
||||
/* BPDU to CPU port */
|
||||
- mt7530_rmw(priv, MT7531_CFC, MT7531_CPU_PMAP_MASK,
|
||||
- BIT(MT7530_CPU_PORT));
|
||||
+ dsa_switch_for_each_cpu_port(cpu_dp, ds) {
|
||||
+ mt7530_rmw(priv, MT7531_CFC, MT7531_CPU_PMAP_MASK,
|
||||
+ BIT(cpu_dp->index));
|
||||
+ break;
|
||||
+ }
|
||||
mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK,
|
||||
MT753X_BPDU_CPU_ONLY);
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2721,9 +2721,6 @@ mt7531_mac_config(struct dsa_switch *ds,
|
||||
@@ -2736,9 +2736,6 @@ mt7531_mac_config(struct dsa_switch *ds,
|
||||
case PHY_INTERFACE_MODE_NA:
|
||||
case PHY_INTERFACE_MODE_1000BASEX:
|
||||
case PHY_INTERFACE_MODE_2500BASEX:
|
||||
@ -29,7 +29,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return mt7531_sgmii_setup_mode_force(priv, port, interface);
|
||||
default:
|
||||
return -EINVAL;
|
||||
@@ -2799,13 +2796,6 @@ unsupported:
|
||||
@@ -2814,13 +2811,6 @@ unsupported:
|
||||
return;
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mcr_cur = mt7530_read(priv, MT7530_PMCR_P(port));
|
||||
mcr_new = mcr_cur;
|
||||
mcr_new &= ~PMCR_LINK_SETTINGS_MASK;
|
||||
@@ -2942,6 +2932,9 @@ static void mt753x_phylink_get_caps(stru
|
||||
@@ -2957,6 +2947,9 @@ static void mt753x_phylink_get_caps(stru
|
||||
config->mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
|
||||
MAC_10 | MAC_100 | MAC_1000FD;
|
||||
|
||||
@ -53,7 +53,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* This driver does not make use of the speed, duplex, pause or the
|
||||
* advertisement in its mac_config, so it is safe to mark this driver
|
||||
* as non-legacy.
|
||||
@@ -3007,6 +3000,7 @@ mt7531_sgmii_pcs_get_state_an(struct mt7
|
||||
@@ -3022,6 +3015,7 @@ mt7531_sgmii_pcs_get_state_an(struct mt7
|
||||
|
||||
status = mt7530_read(priv, MT7531_PCS_CONTROL_1(port));
|
||||
state->link = !!(status & MT7531_SGMII_LINK_STATUS);
|
||||
@ -61,7 +61,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (state->interface == PHY_INTERFACE_MODE_SGMII &&
|
||||
(status & MT7531_SGMII_AN_ENABLE)) {
|
||||
val = mt7530_read(priv, MT7531_PCS_SPEED_ABILITY(port));
|
||||
@@ -3037,16 +3031,44 @@ mt7531_sgmii_pcs_get_state_an(struct mt7
|
||||
@@ -3052,16 +3046,44 @@ mt7531_sgmii_pcs_get_state_an(struct mt7
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
static int mt753x_pcs_config(struct phylink_pcs *pcs, unsigned int mode,
|
||||
@@ -3087,6 +3109,8 @@ mt753x_setup(struct dsa_switch *ds)
|
||||
@@ -3102,6 +3124,8 @@ mt753x_setup(struct dsa_switch *ds)
|
||||
priv->pcs[i].pcs.ops = priv->info->pcs_ops;
|
||||
priv->pcs[i].priv = priv;
|
||||
priv->pcs[i].port = i;
|
||||
|
@ -125,7 +125,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/property.h>
|
||||
@@ -3341,3 +3342,5 @@ static int __init regmap_initcall(void)
|
||||
@@ -3343,3 +3344,5 @@ static int __init regmap_initcall(void)
|
||||
return 0;
|
||||
}
|
||||
postcore_initcall(regmap_initcall);
|
||||
|
@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
device, it has to decide which ones to send first, which ones to
|
||||
--- a/net/sched/sch_api.c
|
||||
+++ b/net/sched/sch_api.c
|
||||
@@ -2291,7 +2291,7 @@ static int __init pktsched_init(void)
|
||||
@@ -2305,7 +2305,7 @@ static int __init pktsched_init(void)
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
help
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3590,6 +3590,11 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3592,6 +3592,11 @@ static int xmit_one(struct sk_buff *skb,
|
||||
if (dev_nit_active(dev))
|
||||
dev_queue_xmit_nit(skb, dev);
|
||||
|
||||
|
@ -306,7 +306,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
|
||||
struct nf_conn *ct = item->ct;
|
||||
struct sk_buff *skb;
|
||||
unsigned int type;
|
||||
@@ -3769,11 +3776,17 @@ static int ctnetlink_stat_exp_cpu(struct
|
||||
@@ -3765,11 +3772,17 @@ static int ctnetlink_stat_exp_cpu(struct
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NF_CONNTRACK_EVENTS
|
||||
@ -324,7 +324,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
|
||||
|
||||
static const struct nfnl_callback ctnl_cb[IPCTNL_MSG_MAX] = {
|
||||
[IPCTNL_MSG_CT_NEW] = {
|
||||
@@ -3872,8 +3885,12 @@ static int __net_init ctnetlink_net_init
|
||||
@@ -3868,8 +3881,12 @@ static int __net_init ctnetlink_net_init
|
||||
static void ctnetlink_net_pre_exit(struct net *net)
|
||||
{
|
||||
#ifdef CONFIG_NF_CONNTRACK_EVENTS
|
||||
|
@ -92,7 +92,7 @@
|
||||
struct net_bridge_port *p;
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3586,9 +3586,17 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3588,9 +3588,17 @@ static int xmit_one(struct sk_buff *skb,
|
||||
{
|
||||
unsigned int len;
|
||||
int rc;
|
||||
@ -111,7 +111,7 @@
|
||||
|
||||
#ifdef CONFIG_ETHERNET_PACKET_MANGLE
|
||||
if (dev->eth_mangle_tx && !(skb = dev->eth_mangle_tx(dev, skb)))
|
||||
@@ -5217,6 +5225,11 @@ void netdev_rx_handler_unregister(struct
|
||||
@@ -5219,6 +5227,11 @@ void netdev_rx_handler_unregister(struct
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
|
||||
|
||||
@ -123,7 +123,7 @@
|
||||
/*
|
||||
* Limit the use of PFMEMALLOC reserves to those protocols that implement
|
||||
* the special handling of PFMEMALLOC skbs.
|
||||
@@ -5265,6 +5278,10 @@ static int __netif_receive_skb_core(stru
|
||||
@@ -5267,6 +5280,10 @@ static int __netif_receive_skb_core(stru
|
||||
int ret = NET_RX_DROP;
|
||||
__be16 type;
|
||||
|
||||
@ -134,7 +134,7 @@
|
||||
net_timestamp_check(!READ_ONCE(netdev_tstamp_prequeue), skb);
|
||||
|
||||
trace_netif_receive_skb(skb);
|
||||
@@ -5302,6 +5319,15 @@ another_round:
|
||||
@@ -5304,6 +5321,15 @@ another_round:
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
goto out;
|
||||
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
@@ -2093,12 +2095,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
@@ -2091,12 +2093,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
unsigned int snaplen, res;
|
||||
bool is_drop_n_account = false;
|
||||
|
||||
@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -2224,12 +2226,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
@@ -2222,12 +2224,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
||||
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__u8 inner_protocol_type:1;
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -6065,6 +6065,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -6067,6 +6067,9 @@ static enum gro_result dev_gro_receive(s
|
||||
int same_flow;
|
||||
int grow;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (netif_elide_gro(skb->dev))
|
||||
goto normal;
|
||||
|
||||
@@ -8079,6 +8082,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -8081,6 +8084,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info,
|
||||
@@ -8130,6 +8175,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -8132,6 +8177,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
@@ -8226,6 +8272,7 @@ static void __netdev_upper_dev_unlink(st
|
||||
@@ -8228,6 +8274,7 @@ static void __netdev_upper_dev_unlink(st
|
||||
|
||||
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
|
||||
@@ -9045,6 +9092,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -9047,6 +9094,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
@ -161,7 +161,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
struct rtnl_link {
|
||||
rtnl_doit_func doit;
|
||||
@@ -4700,7 +4700,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
|
||||
@@ -4706,7 +4706,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
|
||||
brport_nla_put_flag(skb, flags, mask,
|
||||
IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) ||
|
||||
brport_nla_put_flag(skb, flags, mask,
|
||||
|
@ -10,12 +10,21 @@ The datasheet [1] explicit describes it as requirement for a reset.
|
||||
|
||||
Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
|
||||
---
|
||||
drivers/net/dsa/mt7530.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
drivers/net/dsa/mt7530.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2346,6 +2346,10 @@ mt7531_setup(struct dsa_switch *ds)
|
||||
@@ -2371,7 +2371,7 @@ mt7531_setup(struct dsa_switch *ds)
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
struct mt7530_dummy_poll p;
|
||||
u32 val, id;
|
||||
- int ret;
|
||||
+ int ret, i;
|
||||
|
||||
/* Reset whole chip through gpio pin or memory-mapped registers for
|
||||
* different type of hardware
|
||||
@@ -2403,6 +2403,10 @@ mt7531_setup(struct dsa_switch *ds)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -4574,7 +4574,7 @@ static int rps_ipi_queued(struct softnet
|
||||
@@ -4576,7 +4576,7 @@ static int rps_ipi_queued(struct softnet
|
||||
#ifdef CONFIG_RPS
|
||||
struct softnet_data *mysd = this_cpu_ptr(&softnet_data);
|
||||
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
sd->rps_ipi_next = mysd->rps_ipi_list;
|
||||
mysd->rps_ipi_list = sd;
|
||||
|
||||
@@ -5755,6 +5755,8 @@ static DEFINE_PER_CPU(struct work_struct
|
||||
@@ -5757,6 +5757,8 @@ static DEFINE_PER_CPU(struct work_struct
|
||||
/* Network device is going away, flush any packets still pending */
|
||||
static void flush_backlog(struct work_struct *work)
|
||||
{
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct sk_buff *skb, *tmp;
|
||||
struct softnet_data *sd;
|
||||
|
||||
@@ -5770,9 +5772,18 @@ static void flush_backlog(struct work_st
|
||||
@@ -5772,9 +5774,18 @@ static void flush_backlog(struct work_st
|
||||
input_queue_head_incr(sd);
|
||||
}
|
||||
}
|
||||
@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
|
||||
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
|
||||
__skb_unlink(skb, &sd->process_queue);
|
||||
@@ -5780,7 +5791,18 @@ static void flush_backlog(struct work_st
|
||||
@@ -5782,7 +5793,18 @@ static void flush_backlog(struct work_st
|
||||
input_queue_head_incr(sd);
|
||||
}
|
||||
}
|
||||
@ -86,7 +86,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
static bool flush_required(int cpu)
|
||||
@@ -6463,6 +6485,7 @@ static int process_backlog(struct napi_s
|
||||
@@ -6465,6 +6487,7 @@ static int process_backlog(struct napi_s
|
||||
|
||||
local_irq_disable();
|
||||
rps_lock(sd);
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (skb_queue_empty(&sd->input_pkt_queue)) {
|
||||
/*
|
||||
* Inline a custom version of __napi_complete().
|
||||
@@ -6472,7 +6495,8 @@ static int process_backlog(struct napi_s
|
||||
@@ -6474,7 +6497,8 @@ static int process_backlog(struct napi_s
|
||||
* We can use a plain write instead of clear_bit(),
|
||||
* and we dont need an smp_mb() memory barrier.
|
||||
*/
|
||||
@ -104,7 +104,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
again = false;
|
||||
} else {
|
||||
skb_queue_splice_tail_init(&sd->input_pkt_queue,
|
||||
@@ -6889,6 +6913,57 @@ int dev_set_threaded(struct net_device *
|
||||
@@ -6891,6 +6915,57 @@ int dev_set_threaded(struct net_device *
|
||||
}
|
||||
EXPORT_SYMBOL(dev_set_threaded);
|
||||
|
||||
@ -162,7 +162,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
|
||||
int (*poll)(struct napi_struct *, int), int weight)
|
||||
{
|
||||
@@ -11367,6 +11442,9 @@ static int dev_cpu_dead(unsigned int old
|
||||
@@ -11369,6 +11444,9 @@ static int dev_cpu_dead(unsigned int old
|
||||
raise_softirq_irqoff(NET_TX_SOFTIRQ);
|
||||
local_irq_enable();
|
||||
|
||||
@ -172,7 +172,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#ifdef CONFIG_RPS
|
||||
remsd = oldsd->rps_ipi_list;
|
||||
oldsd->rps_ipi_list = NULL;
|
||||
@@ -11706,6 +11784,7 @@ static int __init net_dev_init(void)
|
||||
@@ -11708,6 +11786,7 @@ static int __init net_dev_init(void)
|
||||
sd->cpu = i;
|
||||
#endif
|
||||
|
||||
|
@ -36,7 +36,7 @@ Link: https://lore.kernel.org/r/20220704113318.623102-1-robimarko@gmail.com
|
||||
watchdog: watchdog@b017000 {
|
||||
compatible = "qcom,kpss-wdt";
|
||||
reg = <0xb017000 0x1000>;
|
||||
@@ -857,4 +849,12 @@
|
||||
@@ -853,4 +845,12 @@
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
@ -64,7 +64,7 @@ Signed-off-by: Baruch Siach <baruch.siach@siklu.com>
|
||||
};
|
||||
|
||||
struct qcom_pcie;
|
||||
@@ -1276,6 +1286,121 @@ static void qcom_pcie_post_deinit_2_7_0(
|
||||
@@ -1274,6 +1284,121 @@ static void qcom_pcie_post_deinit_2_7_0(
|
||||
clk_disable_unprepare(res->pipe_clk);
|
||||
}
|
||||
|
||||
@ -186,7 +186,7 @@ Signed-off-by: Baruch Siach <baruch.siach@siklu.com>
|
||||
static int qcom_pcie_link_up(struct dw_pcie *pci)
|
||||
{
|
||||
u16 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
|
||||
@@ -1467,6 +1592,15 @@ static const struct qcom_pcie_ops ops_1_
|
||||
@@ -1465,6 +1590,15 @@ static const struct qcom_pcie_ops ops_1_
|
||||
.config_sid = qcom_pcie_config_sid_sm8250,
|
||||
};
|
||||
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Baruch Siach <baruch.siach@siklu.com>
|
||||
static const struct dw_pcie_ops dw_pcie_ops = {
|
||||
.link_up = qcom_pcie_link_up,
|
||||
.start_link = qcom_pcie_start_link,
|
||||
@@ -1565,6 +1699,7 @@ static const struct of_device_id qcom_pc
|
||||
@@ -1563,6 +1697,7 @@ static const struct of_device_id qcom_pc
|
||||
{ .compatible = "qcom,pcie-qcs404", .data = &ops_2_4_0 },
|
||||
{ .compatible = "qcom,pcie-sdm845", .data = &ops_2_7_0 },
|
||||
{ .compatible = "qcom,pcie-sm8250", .data = &ops_1_9_0 },
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
struct reset_control *rst;
|
||||
};
|
||||
|
||||
@@ -1296,8 +1296,10 @@ static int qcom_pcie_get_resources_2_9_0
|
||||
@@ -1294,8 +1294,10 @@ static int qcom_pcie_get_resources_2_9_0
|
||||
res->clks[0].id = "iface";
|
||||
res->clks[1].id = "axi_m";
|
||||
res->clks[2].id = "axi_s";
|
||||
@ -35,7 +35,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
|
||||
ret = devm_clk_bulk_get(dev, ARRAY_SIZE(res->clks), res->clks);
|
||||
if (ret < 0)
|
||||
@@ -1700,6 +1702,7 @@ static const struct of_device_id qcom_pc
|
||||
@@ -1698,6 +1700,7 @@ static const struct of_device_id qcom_pc
|
||||
{ .compatible = "qcom,pcie-sdm845", .data = &ops_2_7_0 },
|
||||
{ .compatible = "qcom,pcie-sm8250", .data = &ops_1_9_0 },
|
||||
{ .compatible = "qcom,pcie-ipq6018", .data = &ops_2_9_0 },
|
||||
|
@ -38,7 +38,7 @@ Changes in v5:
|
||||
cryptobam: dma-controller@704000 {
|
||||
compatible = "qcom,bam-v1.7.0";
|
||||
reg = <0x00704000 0x20000>;
|
||||
@@ -914,4 +924,90 @@
|
||||
@@ -910,4 +920,90 @@
|
||||
<GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
};
|
||||
|
@ -61,7 +61,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
spmi_bus: spmi@200f000 {
|
||||
compatible = "qcom,spmi-pmic-arb";
|
||||
reg = <0x0200f000 0x001000>,
|
||||
@@ -928,6 +959,56 @@
|
||||
@@ -924,6 +955,56 @@
|
||||
"axi_s_sticky";
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||
@@ -1009,6 +1009,117 @@
|
||||
@@ -1005,6 +1005,117 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/ebc2d340d566fa2d43127e253d5b8b134a87a78e.1630389
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -671,6 +671,89 @@
|
||||
@@ -669,6 +669,89 @@
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/4f4df55cf44cd0fd7d773aca171d4f48662fb1a5.1642704
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -749,7 +749,7 @@
|
||||
@@ -747,7 +747,7 @@
|
||||
snps,hird-threshold = /bits/ 8 <0x0>;
|
||||
snps,dis_u2_susphy_quirk;
|
||||
snps,dis_u3_susphy_quirk;
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -744,12 +744,13 @@
|
||||
@@ -742,12 +742,13 @@
|
||||
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
|
||||
phys = <&qusb_phy_0>, <&usb0_ssphy>;
|
||||
phy-names = "usb2-phy", "usb3-phy";
|
||||
|
@ -16,7 +16,7 @@ Link: https://lore.kernel.org/r/1643819709-5410-3-git-send-email-quic_kathirav@q
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -530,7 +530,6 @@
|
||||
@@ -528,7 +528,6 @@
|
||||
ranges;
|
||||
compatible = "arm,armv7-timer-mem";
|
||||
reg = <0x0 0x0b120000 0x0 0x1000>;
|
||||
|
@ -23,7 +23,7 @@ Link: https://lore.kernel.org/r/20220228123019.382037-7-bhupesh.sharma@linaro.or
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -683,7 +683,6 @@
|
||||
@@ -681,7 +681,6 @@
|
||||
reg = <0x0 0x78000 0x0 0x1C4>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
@ -31,7 +31,7 @@ Link: https://lore.kernel.org/r/20220228123019.382037-7-bhupesh.sharma@linaro.or
|
||||
ranges;
|
||||
|
||||
clocks = <&gcc GCC_USB0_AUX_CLK>,
|
||||
@@ -695,12 +694,13 @@
|
||||
@@ -693,12 +692,13 @@
|
||||
reset-names = "phy","common";
|
||||
status = "disabled";
|
||||
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -643,7 +643,7 @@
|
||||
@@ -641,7 +641,7 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
|
||||
reg = <0x0 0x070F8800 0x0 0x400>;
|
||||
#address-cells = <2>;
|
||||
@@ -720,7 +720,7 @@
|
||||
@@ -718,7 +718,7 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
|
||||
reg = <0x0 0x8AF8800 0x0 0x400>;
|
||||
#address-cells = <2>;
|
||||
@@ -746,7 +746,7 @@
|
||||
@@ -744,7 +744,7 @@
|
||||
resets = <&gcc GCC_USB0_BCR>;
|
||||
status = "disabled";
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -652,7 +652,7 @@
|
||||
@@ -650,7 +650,7 @@
|
||||
clocks = <&gcc GCC_USB1_MASTER_CLK>,
|
||||
<&gcc GCC_USB1_SLEEP_CLK>,
|
||||
<&gcc GCC_USB1_MOCK_UTMI_CLK>;
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
"sleep",
|
||||
"mock_utmi";
|
||||
|
||||
@@ -731,8 +731,8 @@
|
||||
@@ -729,8 +729,8 @@
|
||||
<&gcc GCC_USB0_MASTER_CLK>,
|
||||
<&gcc GCC_USB0_SLEEP_CLK>,
|
||||
<&gcc GCC_USB0_MOCK_UTMI_CLK>;
|
||||
|
@ -21,7 +21,7 @@ Link: https://lore.kernel.org/r/20220626105800.35586-1-david@ixit.cz
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -525,9 +525,9 @@
|
||||
@@ -523,9 +523,9 @@
|
||||
};
|
||||
|
||||
timer@b120000 {
|
||||
@ -34,7 +34,7 @@ Link: https://lore.kernel.org/r/20220626105800.35586-1-david@ixit.cz
|
||||
compatible = "arm,armv7-timer-mem";
|
||||
reg = <0x0 0x0b120000 0x0 0x1000>;
|
||||
|
||||
@@ -535,49 +535,49 @@
|
||||
@@ -533,49 +533,49 @@
|
||||
frame-number = <0>;
|
||||
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -16,7 +16,7 @@ Link: https://lore.kernel.org/r/20220517070113.18023-10-krzysztof.kozlowski@lina
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -621,6 +621,7 @@
|
||||
@@ -619,6 +619,7 @@
|
||||
|
||||
glink-edge {
|
||||
interrupts = <GIC_SPI 321 IRQ_TYPE_EDGE_RISING>;
|
||||
|
@ -16,7 +16,7 @@ Link: https://lore.kernel.org/r/20220705114032.22787-4-johan+linaro@kernel.org
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -701,7 +701,7 @@
|
||||
@@ -699,7 +699,7 @@
|
||||
<0x0 0x00078800 0x0 0x1F8>, /* PCS */
|
||||
<0x0 0x00078600 0x0 0x044>; /* PCS misc */
|
||||
#phy-cells = <0>;
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -511,14 +511,6 @@
|
||||
@@ -509,14 +509,6 @@
|
||||
clock-names = "xo";
|
||||
};
|
||||
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
timer@b120000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
@@ -760,6 +752,14 @@
|
||||
@@ -758,6 +750,14 @@
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -12,7 +12,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -817,6 +817,12 @@
|
||||
@@ -815,6 +815,12 @@
|
||||
regulator-max-microvolt = <1062500>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
@ -86,7 +86,7 @@
|
||||
__be16 vlan_proto, u16 vlan_id)
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -2857,6 +2857,10 @@ enum netdev_cmd {
|
||||
@@ -2858,6 +2858,10 @@ enum netdev_cmd {
|
||||
NETDEV_CVLAN_FILTER_DROP_INFO,
|
||||
NETDEV_SVLAN_FILTER_PUSH_INFO,
|
||||
NETDEV_SVLAN_FILTER_DROP_INFO,
|
||||
|
@ -480,7 +480,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
|
||||
#endif /* !(__LINUX_IF_PPPOX_H) */
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -1682,6 +1682,24 @@ enum netdev_extra_priv_flags {
|
||||
@@ -1683,6 +1683,24 @@ enum netdev_extra_priv_flags {
|
||||
IFF_NO_IP_ALIGN = 1<<0,
|
||||
};
|
||||
|
||||
@ -505,7 +505,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
|
||||
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
||||
#define IFF_EBRIDGE IFF_EBRIDGE
|
||||
#define IFF_BONDING IFF_BONDING
|
||||
@@ -2017,6 +2035,7 @@ struct net_device {
|
||||
@@ -2018,6 +2036,7 @@ struct net_device {
|
||||
unsigned int flags;
|
||||
unsigned int priv_flags;
|
||||
unsigned int extra_priv_flags;
|
||||
|
@ -14,7 +14,7 @@ variable names created with 603.
|
||||
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -688,6 +688,7 @@ typedef unsigned char *sk_buff_data_t;
|
||||
@@ -689,6 +689,7 @@ typedef unsigned char *sk_buff_data_t;
|
||||
* @offload_fwd_mark: Packet was L2-forwarded in hardware
|
||||
* @offload_l3_fwd_mark: Packet was L3-forwarded in hardware
|
||||
* @tc_skip_classify: do not classify packet. set by IFB device
|
||||
@ -22,7 +22,7 @@ variable names created with 603.
|
||||
* @tc_at_ingress: used within tc_classify to distinguish in/egress
|
||||
* @redirected: packet was redirected by packet classifier
|
||||
* @from_ingress: packet was redirected from the ingress path
|
||||
@@ -904,6 +905,7 @@ struct sk_buff {
|
||||
@@ -905,6 +906,7 @@ struct sk_buff {
|
||||
#ifdef CONFIG_NET_CLS_ACT
|
||||
__u8 tc_skip_classify:1;
|
||||
__u8 tc_at_ingress:1;
|
||||
|
@ -10,7 +10,7 @@
|
||||
static struct flow_dissector flow_keys_bonding __read_mostly;
|
||||
|
||||
/*-------------------------- Forward declarations ---------------------------*/
|
||||
@@ -4099,6 +4102,23 @@ static int bond_get_lowest_level_rcu(str
|
||||
@@ -4104,6 +4107,23 @@ static int bond_get_lowest_level_rcu(str
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
static void bond_get_stats(struct net_device *bond_dev,
|
||||
struct rtnl_link_stats64 *stats)
|
||||
{
|
||||
@@ -5431,6 +5451,10 @@ static void bond_destructor(struct net_d
|
||||
@@ -5436,6 +5456,10 @@ static void bond_destructor(struct net_d
|
||||
|
||||
if (bond->rr_tx_counter)
|
||||
free_percpu(bond->rr_tx_counter);
|
||||
@ -45,7 +45,7 @@
|
||||
}
|
||||
|
||||
void bond_setup(struct net_device *bond_dev)
|
||||
@@ -5999,7 +6023,14 @@ int bond_create(struct net *net, const c
|
||||
@@ -6007,7 +6031,14 @@ int bond_create(struct net *net, const c
|
||||
|
||||
bond_work_init_all(bond);
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
|
||||
--- a/include/net/bonding.h
|
||||
+++ b/include/net/bonding.h
|
||||
@@ -255,6 +255,7 @@ struct bonding {
|
||||
@@ -257,6 +257,7 @@ struct bonding {
|
||||
spinlock_t ipsec_lock;
|
||||
#endif /* CONFIG_XFRM_OFFLOAD */
|
||||
struct bpf_prog *xdp_prog;
|
||||
@ -71,7 +71,7 @@
|
||||
};
|
||||
|
||||
#define bond_slave_get_rcu(dev) \
|
||||
@@ -629,6 +630,7 @@ struct bond_net {
|
||||
@@ -631,6 +632,7 @@ struct bond_net {
|
||||
|
||||
int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond, struct slave *slave);
|
||||
netdev_tx_t bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev);
|
||||
|
@ -16,7 +16,7 @@ Link: https://lore.kernel.org/r/ef01a79ccc6ef86dc3a10d0fa3331794d49e9859.1646031
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -671,6 +671,16 @@
|
||||
@@ -669,6 +669,16 @@
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
|
||||
|
||||
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
|
||||
@@ -665,8 +665,24 @@
|
||||
@@ -663,8 +663,24 @@
|
||||
"wcss_reset",
|
||||
"wcss_q6_reset";
|
||||
|
||||
|
@ -72,7 +72,7 @@ Link: https://lore.kernel.org/r/20210929034253.24570-4-shawn.guo@linaro.org
|
||||
clock-output-names = "pcie_0_pipe_clk_src";
|
||||
clocks = <&gcc GCC_PCIE_0_PIPE_CLK>;
|
||||
clock-names = "pipe0";
|
||||
@@ -2603,7 +2603,6 @@
|
||||
@@ -2606,7 +2606,6 @@
|
||||
usb3phy: phy@7410000 {
|
||||
compatible = "qcom,msm8996-qmp-usb3-phy";
|
||||
reg = <0x07410000 0x1c4>;
|
||||
@ -80,7 +80,7 @@ Link: https://lore.kernel.org/r/20210929034253.24570-4-shawn.guo@linaro.org
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
@@ -2624,6 +2623,7 @@
|
||||
@@ -2627,6 +2626,7 @@
|
||||
<0x07410600 0x1a8>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
|
@ -64,7 +64,7 @@ Signed-off-by: Baruch Siach <baruch.siach@siklu.com>
|
||||
};
|
||||
|
||||
struct qcom_pcie;
|
||||
@@ -1276,6 +1286,121 @@ static void qcom_pcie_post_deinit_2_7_0(
|
||||
@@ -1274,6 +1284,121 @@ static void qcom_pcie_post_deinit_2_7_0(
|
||||
clk_disable_unprepare(res->pipe_clk);
|
||||
}
|
||||
|
||||
@ -186,7 +186,7 @@ Signed-off-by: Baruch Siach <baruch.siach@siklu.com>
|
||||
static int qcom_pcie_link_up(struct dw_pcie *pci)
|
||||
{
|
||||
u16 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
|
||||
@@ -1467,6 +1592,15 @@ static const struct qcom_pcie_ops ops_1_
|
||||
@@ -1465,6 +1590,15 @@ static const struct qcom_pcie_ops ops_1_
|
||||
.config_sid = qcom_pcie_config_sid_sm8250,
|
||||
};
|
||||
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Baruch Siach <baruch.siach@siklu.com>
|
||||
static const struct dw_pcie_ops dw_pcie_ops = {
|
||||
.link_up = qcom_pcie_link_up,
|
||||
.start_link = qcom_pcie_start_link,
|
||||
@@ -1565,6 +1699,7 @@ static const struct of_device_id qcom_pc
|
||||
@@ -1563,6 +1697,7 @@ static const struct of_device_id qcom_pc
|
||||
{ .compatible = "qcom,pcie-qcs404", .data = &ops_2_4_0 },
|
||||
{ .compatible = "qcom,pcie-sdm845", .data = &ops_2_7_0 },
|
||||
{ .compatible = "qcom,pcie-sm8250", .data = &ops_1_9_0 },
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
struct reset_control *rst;
|
||||
};
|
||||
|
||||
@@ -1296,8 +1296,10 @@ static int qcom_pcie_get_resources_2_9_0
|
||||
@@ -1294,8 +1294,10 @@ static int qcom_pcie_get_resources_2_9_0
|
||||
res->clks[0].id = "iface";
|
||||
res->clks[1].id = "axi_m";
|
||||
res->clks[2].id = "axi_s";
|
||||
@ -35,7 +35,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
|
||||
ret = devm_clk_bulk_get(dev, ARRAY_SIZE(res->clks), res->clks);
|
||||
if (ret < 0)
|
||||
@@ -1700,6 +1702,7 @@ static const struct of_device_id qcom_pc
|
||||
@@ -1698,6 +1700,7 @@ static const struct of_device_id qcom_pc
|
||||
{ .compatible = "qcom,pcie-sdm845", .data = &ops_2_7_0 },
|
||||
{ .compatible = "qcom,pcie-sm8250", .data = &ops_1_9_0 },
|
||||
{ .compatible = "qcom,pcie-ipq6018", .data = &ops_2_9_0 },
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user