diff options
Diffstat (limited to 'target/linux/ramips/patches-5.15')
3 files changed, 61 insertions, 22 deletions
diff --git a/target/linux/ramips/patches-5.15/100-PCI-mt7621-Add-MediaTek-MT7621-PCIe-host-controller-.patch b/target/linux/ramips/patches-5.15/100-PCI-mt7621-Add-MediaTek-MT7621-PCIe-host-controller-.patch index 5aa69421b9..1c8c7cd3d0 100644 --- a/target/linux/ramips/patches-5.15/100-PCI-mt7621-Add-MediaTek-MT7621-PCIe-host-controller-.patch +++ b/target/linux/ramips/patches-5.15/100-PCI-mt7621-Add-MediaTek-MT7621-PCIe-host-controller-.patch @@ -211,7 +211,7 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - --- a/drivers/staging/mt7621-pci/pci-mt7621.c +++ /dev/null -@@ -1,600 +0,0 @@ +@@ -1,601 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0+ -/* - * BRIEF MODULE DESCRIPTION @@ -307,8 +307,8 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - * reset lines are inverted. - */ -struct mt7621_pcie { -- void __iomem *base; - struct device *dev; +- void __iomem *base; - struct list_head ports; - bool resets_inverted; -}; @@ -343,7 +343,7 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - writel_relaxed(val, port->base + reg); -} - --static inline u32 mt7621_pci_get_cfgaddr(unsigned int bus, unsigned int slot, +-static inline u32 mt7621_pcie_get_cfgaddr(unsigned int bus, unsigned int slot, - unsigned int func, unsigned int where) -{ - return (((where & 0xF00) >> 8) << 24) | (bus << 16) | (slot << 11) | @@ -354,7 +354,7 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - unsigned int devfn, int where) -{ - struct mt7621_pcie *pcie = bus->sysdata; -- u32 address = mt7621_pci_get_cfgaddr(bus->number, PCI_SLOT(devfn), +- u32 address = mt7621_pcie_get_cfgaddr(bus->number, PCI_SLOT(devfn), - PCI_FUNC(devfn), where); - - writel_relaxed(address, pcie->base + RALINK_PCI_CONFIG_ADDR); @@ -362,7 +362,7 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - return pcie->base + RALINK_PCI_CONFIG_DATA + (where & 3); -} - --struct pci_ops mt7621_pci_ops = { +-struct pci_ops mt7621_pcie_ops = { - .map_bus = mt7621_pcie_map_bus, - .read = pci_generic_config_read, - .write = pci_generic_config_write, @@ -370,7 +370,7 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - -static u32 read_config(struct mt7621_pcie *pcie, unsigned int dev, u32 reg) -{ -- u32 address = mt7621_pci_get_cfgaddr(0, dev, 0, reg); +- u32 address = mt7621_pcie_get_cfgaddr(0, dev, 0, reg); - - pcie_write(pcie, address, RALINK_PCI_CONFIG_ADDR); - return pcie_read(pcie, RALINK_PCI_CONFIG_DATA); @@ -379,7 +379,7 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -static void write_config(struct mt7621_pcie *pcie, unsigned int dev, - u32 reg, u32 val) -{ -- u32 address = mt7621_pci_get_cfgaddr(0, dev, 0, reg); +- u32 address = mt7621_pcie_get_cfgaddr(0, dev, 0, reg); - - pcie_write(pcie, address, RALINK_PCI_CONFIG_ADDR); - pcie_write(pcie, val, RALINK_PCI_CONFIG_DATA); @@ -719,16 +719,17 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -{ - struct mt7621_pcie *pcie = pci_host_bridge_priv(host); - -- host->ops = &mt7621_pci_ops; +- host->ops = &mt7621_pcie_ops; - host->sysdata = pcie; - return pci_host_probe(host); -} - --static const struct soc_device_attribute mt7621_pci_quirks_match[] = { -- { .soc_id = "mt7621", .revision = "E2" } +-static const struct soc_device_attribute mt7621_pcie_quirks_match[] = { +- { .soc_id = "mt7621", .revision = "E2" }, +- { /* sentinel */ } -}; - --static int mt7621_pci_probe(struct platform_device *pdev) +-static int mt7621_pcie_probe(struct platform_device *pdev) -{ - struct device *dev = &pdev->dev; - const struct soc_device_attribute *attr; @@ -749,7 +750,7 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - platform_set_drvdata(pdev, pcie); - INIT_LIST_HEAD(&pcie->ports); - -- attr = soc_device_match(mt7621_pci_quirks_match); +- attr = soc_device_match(mt7621_pcie_quirks_match); - if (attr) - pcie->resets_inverted = true; - @@ -786,7 +787,7 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - return err; -} - --static int mt7621_pci_remove(struct platform_device *pdev) +-static int mt7621_pcie_remove(struct platform_device *pdev) -{ - struct mt7621_pcie *pcie = platform_get_drvdata(pdev); - struct mt7621_pcie_port *port; @@ -797,21 +798,21 @@ Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - return 0; -} - --static const struct of_device_id mt7621_pci_ids[] = { +-static const struct of_device_id mt7621_pcie_ids[] = { - { .compatible = "mediatek,mt7621-pci" }, - {}, -}; --MODULE_DEVICE_TABLE(of, mt7621_pci_ids); +-MODULE_DEVICE_TABLE(of, mt7621_pcie_ids); - --static struct platform_driver mt7621_pci_driver = { -- .probe = mt7621_pci_probe, -- .remove = mt7621_pci_remove, +-static struct platform_driver mt7621_pcie_driver = { +- .probe = mt7621_pcie_probe, +- .remove = mt7621_pcie_remove, - .driver = { - .name = "mt7621-pci", -- .of_match_table = of_match_ptr(mt7621_pci_ids), +- .of_match_table = of_match_ptr(mt7621_pcie_ids), - }, -}; --builtin_platform_driver(mt7621_pci_driver); +-builtin_platform_driver(mt7621_pcie_driver); --- /dev/null +++ b/drivers/pci/controller/pcie-mt7621.c @@ -0,0 +1,600 @@ diff --git a/target/linux/ramips/patches-5.15/103-PCI-mt7621-Move-MIPS-setup-to-pcibios_root_bridge_pr.patch b/target/linux/ramips/patches-5.15/103-PCI-mt7621-Move-MIPS-setup-to-pcibios_root_bridge_pr.patch index 3162ff8107..4b46b3e3f6 100644 --- a/target/linux/ramips/patches-5.15/103-PCI-mt7621-Move-MIPS-setup-to-pcibios_root_bridge_pr.patch +++ b/target/linux/ramips/patches-5.15/103-PCI-mt7621-Move-MIPS-setup-to-pcibios_root_bridge_pr.patch @@ -28,9 +28,9 @@ Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> # arch/mips #include <asm/bootinfo.h> #include <asm/mipsregs.h> -@@ -24,6 +26,35 @@ - +@@ -25,6 +27,35 @@ static u32 detect_magic __initdata; + static struct ralink_soc_info *soc_info_ptr; +int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) +{ diff --git a/target/linux/ramips/patches-5.15/107-PCI-mt7621-Add-sentinel-to-quirks-table.patch b/target/linux/ramips/patches-5.15/107-PCI-mt7621-Add-sentinel-to-quirks-table.patch new file mode 100644 index 0000000000..c055f0096d --- /dev/null +++ b/target/linux/ramips/patches-5.15/107-PCI-mt7621-Add-sentinel-to-quirks-table.patch @@ -0,0 +1,38 @@ +From 19098934f910b4d47cb30251dd39ffa57bef9523 Mon Sep 17 00:00:00 2001 +From: John Thomson <git@johnthomson.fastmail.com.au> +Date: Tue, 6 Dec 2022 06:46:45 +1000 +Subject: [PATCH] PCI: mt7621: Add sentinel to quirks table + +Current driver is missing a sentinel in the struct soc_device_attribute +array, which causes an oops when assessed by the +soc_device_match(mt7621_pcie_quirks_match) call. + +This was only exposed once the CONFIG_SOC_MT7621 mt7621 soc_dev_attr +was fixed to register the SOC as a device, in: + +commit 7c18b64bba3b ("mips: ralink: mt7621: do not use kzalloc too early") + +Fix it by adding the required sentinel. + +Link: https://lore.kernel.org/lkml/26ebbed1-0fe9-4af9-8466-65f841d0b382@app.fastmail.com +Link: https://lore.kernel.org/r/20221205204645.301301-1-git@johnthomson.fastmail.com.au +Fixes: b483b4e4d3f6 ("staging: mt7621-pci: add quirks for 'E2' revision using 'soc_device_attribute'") +Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au> +Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org> +Acked-by: Sergio Paracuellos <sergio.paracuellos@gmail.com> +--- + drivers/pci/controller/pcie-mt7621.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/pci/controller/pcie-mt7621.c ++++ b/drivers/pci/controller/pcie-mt7621.c +@@ -471,7 +471,8 @@ static int mt7621_pcie_register_host(str + } + + static const struct soc_device_attribute mt7621_pcie_quirks_match[] = { +- { .soc_id = "mt7621", .revision = "E2" } ++ { .soc_id = "mt7621", .revision = "E2" }, ++ { /* sentinel */ } + }; + + static int mt7621_pcie_probe(struct platform_device *pdev) |