diff --git a/target/linux/lantiq/patches-6.18/001-MIPS-lantiq-add-pcie-driver.patch b/target/linux/lantiq/patches-6.18/001-MIPS-lantiq-add-pcie-driver.patch index e7cef44501..6cbc67e29d 100644 --- a/target/linux/lantiq/patches-6.18/001-MIPS-lantiq-add-pcie-driver.patch +++ b/target/linux/lantiq/patches-6.18/001-MIPS-lantiq-add-pcie-driver.patch @@ -4156,7 +4156,7 @@ Signed-off-by: John Crispin +#endif /* IFXMIPS_PCIE_VR9_H */ --- a/arch/mips/pci/pci-legacy.c +++ b/arch/mips/pci/pci-legacy.c -@@ -312,3 +312,30 @@ char *__init pcibios_setup(char *str) +@@ -278,3 +278,30 @@ char *__init pcibios_setup(char *str) return pcibios_plat_setup(str); return str; } @@ -5518,18 +5518,18 @@ Signed-off-by: John Crispin (transaction layer end-to-end CRC checking). --- a/include/linux/pci.h +++ b/include/linux/pci.h -@@ -1658,6 +1658,8 @@ void pci_walk_bus_locked(struct pci_bus - void *userdata); +@@ -1660,6 +1660,8 @@ void pci_walk_bus(struct pci_bus *top, i + void *userdata); int pci_cfg_space_size(struct pci_dev *dev); unsigned char pci_bus_max_busnr(struct pci_bus *bus); +int pcibios_host_nr(void); +int pcibios_1st_host_bus_nr(void); - void pci_setup_bridge(struct pci_bus *bus); resource_size_t pcibios_window_alignment(struct pci_bus *bus, unsigned long type); + --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h -@@ -1111,6 +1111,12 @@ +@@ -1114,6 +1114,12 @@ #define PCI_DEVICE_ID_SGI_IOC3 0x0003 #define PCI_DEVICE_ID_SGI_LITHIUM 0x1002 diff --git a/target/linux/lantiq/patches-6.18/004-MIPS-lantiq-add-atm-hack.patch b/target/linux/lantiq/patches-6.18/004-MIPS-lantiq-add-atm-hack.patch index 2e36b41beb..637560d516 100644 --- a/target/linux/lantiq/patches-6.18/004-MIPS-lantiq-add-atm-hack.patch +++ b/target/linux/lantiq/patches-6.18/004-MIPS-lantiq-add-atm-hack.patch @@ -431,7 +431,7 @@ Signed-off-by: John Crispin #include #include -@@ -92,6 +93,7 @@ void ltq_disable_irq(struct irq_data *d) +@@ -93,6 +94,7 @@ void ltq_disable_irq(struct irq_data *d) } raw_spin_unlock_irqrestore(<q_icu_lock, flags); } diff --git a/target/linux/lantiq/patches-6.18/028-NET-lantiq-various-etop-fixes.patch b/target/linux/lantiq/patches-6.18/028-NET-lantiq-various-etop-fixes.patch index 7987e87dff..24935b9222 100644 --- a/target/linux/lantiq/patches-6.18/028-NET-lantiq-various-etop-fixes.patch +++ b/target/linux/lantiq/patches-6.18/028-NET-lantiq-various-etop-fixes.patch @@ -152,12 +152,11 @@ Signed-off-by: John Crispin struct net_device *netdev; struct napi_struct napi; struct ltq_dma_channel dma; -@@ -89,25 +140,39 @@ struct ltq_etop_chan { +@@ -89,24 +140,38 @@ struct ltq_etop_chan { struct ltq_etop_priv { struct net_device *netdev; struct platform_device *pdev; - struct ltq_eth_data *pldata; - struct resource *res; struct mii_bus *mii_bus; @@ -195,7 +194,7 @@ Signed-off-by: John Crispin if (!ch->skb[ch->dma.desc]) return -ENOMEM; ch->dma.desc_base[ch->dma.desc].addr = -@@ -142,8 +207,11 @@ ltq_etop_hw_receive(struct ltq_etop_chan +@@ -141,8 +206,11 @@ ltq_etop_hw_receive(struct ltq_etop_chan spin_unlock_irqrestore(&priv->lock, flags); skb_put(skb, len); @@ -207,7 +206,7 @@ Signed-off-by: John Crispin } static int -@@ -151,7 +219,9 @@ ltq_etop_poll_rx(struct napi_struct *nap +@@ -150,7 +218,9 @@ ltq_etop_poll_rx(struct napi_struct *nap { struct ltq_etop_chan *ch = container_of(napi, struct ltq_etop_chan, napi); @@ -217,7 +216,7 @@ Signed-off-by: John Crispin while (work_done < budget) { struct ltq_dma_desc *desc = &ch->dma.desc_base[ch->dma.desc]; -@@ -163,7 +233,9 @@ ltq_etop_poll_rx(struct napi_struct *nap +@@ -162,7 +232,9 @@ ltq_etop_poll_rx(struct napi_struct *nap } if (work_done < budget) { napi_complete_done(&ch->napi, work_done); @@ -227,7 +226,7 @@ Signed-off-by: John Crispin } return work_done; } -@@ -175,12 +247,14 @@ ltq_etop_poll_tx(struct napi_struct *nap +@@ -174,12 +246,14 @@ ltq_etop_poll_tx(struct napi_struct *nap container_of(napi, struct ltq_etop_chan, napi); struct ltq_etop_priv *priv = netdev_priv(ch->netdev); struct netdev_queue *txq = @@ -243,7 +242,7 @@ Signed-off-by: John Crispin dev_kfree_skb_any(ch->skb[ch->tx_free]); ch->skb[ch->tx_free] = NULL; memset(&ch->dma.desc_base[ch->tx_free], 0, -@@ -193,7 +267,9 @@ ltq_etop_poll_tx(struct napi_struct *nap +@@ -192,7 +266,9 @@ ltq_etop_poll_tx(struct napi_struct *nap if (netif_tx_queue_stopped(txq)) netif_tx_start_queue(txq); napi_complete(&ch->napi); @@ -253,7 +252,7 @@ Signed-off-by: John Crispin return 1; } -@@ -201,9 +277,11 @@ static irqreturn_t +@@ -200,9 +276,11 @@ static irqreturn_t ltq_etop_dma_irq(int irq, void *_priv) { struct ltq_etop_priv *priv = _priv; @@ -267,7 +266,7 @@ Signed-off-by: John Crispin return IRQ_HANDLED; } -@@ -215,7 +293,7 @@ ltq_etop_free_channel(struct net_device +@@ -214,7 +292,7 @@ ltq_etop_free_channel(struct net_device ltq_dma_free(&ch->dma); if (ch->dma.irq) free_irq(ch->dma.irq, priv); @@ -276,7 +275,7 @@ Signed-off-by: John Crispin struct ltq_dma_channel *dma = &ch->dma; for (dma->desc = 0; dma->desc < LTQ_DESC_NUM; dma->desc++) -@@ -227,80 +305,137 @@ static void +@@ -226,80 +304,137 @@ static void ltq_etop_hw_exit(struct net_device *dev) { struct ltq_etop_priv *priv = netdev_priv(dev); @@ -463,7 +462,7 @@ Signed-off-by: John Crispin } static void -@@ -319,6 +454,39 @@ static const struct ethtool_ops ltq_etop +@@ -318,6 +453,39 @@ static const struct ethtool_ops ltq_etop }; static int @@ -503,7 +502,7 @@ Signed-off-by: John Crispin ltq_etop_mdio_wr(struct mii_bus *bus, int phy_addr, int phy_reg, u16 phy_data) { u32 val = MDIO_REQUEST | -@@ -326,9 +494,9 @@ ltq_etop_mdio_wr(struct mii_bus *bus, in +@@ -325,9 +493,9 @@ ltq_etop_mdio_wr(struct mii_bus *bus, in ((phy_reg & MDIO_REG_MASK) << MDIO_REG_OFFSET) | phy_data; @@ -515,7 +514,7 @@ Signed-off-by: John Crispin return 0; } -@@ -339,12 +507,12 @@ ltq_etop_mdio_rd(struct mii_bus *bus, in +@@ -338,12 +506,12 @@ ltq_etop_mdio_rd(struct mii_bus *bus, in ((phy_addr & MDIO_ADDR_MASK) << MDIO_ADDR_OFFSET) | ((phy_reg & MDIO_REG_MASK) << MDIO_REG_OFFSET); @@ -532,7 +531,7 @@ Signed-off-by: John Crispin return val; } -@@ -360,7 +528,10 @@ ltq_etop_mdio_probe(struct net_device *d +@@ -359,7 +527,10 @@ ltq_etop_mdio_probe(struct net_device *d struct ltq_etop_priv *priv = netdev_priv(dev); struct phy_device *phydev; @@ -544,7 +543,7 @@ Signed-off-by: John Crispin if (!phydev) { netdev_err(dev, "no PHY found\n"); -@@ -368,14 +539,17 @@ ltq_etop_mdio_probe(struct net_device *d +@@ -367,14 +538,17 @@ ltq_etop_mdio_probe(struct net_device *d } phydev = phy_connect(dev, phydev_name(phydev), @@ -564,7 +563,7 @@ Signed-off-by: John Crispin phy_attached_info(phydev); -@@ -396,8 +570,13 @@ ltq_etop_mdio_init(struct net_device *de +@@ -395,8 +569,13 @@ ltq_etop_mdio_init(struct net_device *de } priv->mii_bus->priv = dev; @@ -580,7 +579,7 @@ Signed-off-by: John Crispin priv->mii_bus->name = "ltq_mii"; snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x", priv->pdev->name, priv->pdev->id); -@@ -434,18 +613,21 @@ static int +@@ -433,18 +612,21 @@ static int ltq_etop_open(struct net_device *dev) { struct ltq_etop_priv *priv = netdev_priv(dev); @@ -612,7 +611,7 @@ Signed-off-by: John Crispin netif_tx_start_all_queues(dev); return 0; } -@@ -454,18 +636,19 @@ static int +@@ -453,18 +635,19 @@ static int ltq_etop_stop(struct net_device *dev) { struct ltq_etop_priv *priv = netdev_priv(dev); @@ -642,7 +641,7 @@ Signed-off-by: John Crispin return 0; } -@@ -475,17 +658,21 @@ ltq_etop_tx(struct sk_buff *skb, struct +@@ -474,17 +657,21 @@ ltq_etop_tx(struct sk_buff *skb, struct int queue = skb_get_queue_mapping(skb); struct netdev_queue *txq = netdev_get_tx_queue(dev, queue); struct ltq_etop_priv *priv = netdev_priv(dev); @@ -669,7 +668,7 @@ Signed-off-by: John Crispin netdev_err(dev, "tx ring full\n"); netif_tx_stop_queue(txq); return NETDEV_TX_BUSY; -@@ -493,7 +680,7 @@ ltq_etop_tx(struct sk_buff *skb, struct +@@ -492,7 +679,7 @@ ltq_etop_tx(struct sk_buff *skb, struct /* dma needs to start on a burst length value aligned address */ byte_offset = CPHYSADDR(skb->data) % (priv->tx_burst_len * 4); @@ -678,7 +677,7 @@ Signed-off-by: John Crispin netif_trans_update(dev); -@@ -504,11 +691,11 @@ ltq_etop_tx(struct sk_buff *skb, struct +@@ -503,11 +690,11 @@ ltq_etop_tx(struct sk_buff *skb, struct wmb(); desc->ctl = LTQ_DMA_OWN | LTQ_DMA_SOP | LTQ_DMA_EOP | LTQ_DMA_TX_OFFSET(byte_offset) | (len & LTQ_DMA_SIZE_MASK); @@ -693,7 +692,7 @@ Signed-off-by: John Crispin netif_tx_stop_queue(txq); return NETDEV_TX_OK; -@@ -519,11 +706,14 @@ ltq_etop_change_mtu(struct net_device *d +@@ -518,11 +705,14 @@ ltq_etop_change_mtu(struct net_device *d { struct ltq_etop_priv *priv = netdev_priv(dev); unsigned long flags; @@ -709,7 +708,7 @@ Signed-off-by: John Crispin spin_unlock_irqrestore(&priv->lock, flags); return 0; -@@ -576,6 +766,9 @@ ltq_etop_init(struct net_device *dev) +@@ -575,6 +765,9 @@ ltq_etop_init(struct net_device *dev) if (err) goto err_hw; ltq_etop_change_mtu(dev, 1500); @@ -719,7 +718,7 @@ Signed-off-by: John Crispin memcpy(&mac, &priv->pldata->mac, sizeof(struct sockaddr)); if (!is_valid_ether_addr(mac.sa_data)) { -@@ -593,9 +786,10 @@ ltq_etop_init(struct net_device *dev) +@@ -592,9 +785,10 @@ ltq_etop_init(struct net_device *dev) dev->addr_assign_type = NET_ADDR_RANDOM; ltq_etop_set_multicast_list(dev); @@ -733,7 +732,7 @@ Signed-off-by: John Crispin return 0; err_netdev: -@@ -615,6 +809,9 @@ ltq_etop_tx_timeout(struct net_device *d +@@ -614,6 +808,9 @@ ltq_etop_tx_timeout(struct net_device *d err = ltq_etop_hw_init(dev); if (err) goto err_hw; @@ -743,7 +742,7 @@ Signed-off-by: John Crispin netif_trans_update(dev); netif_wake_queue(dev); return; -@@ -638,14 +835,18 @@ static const struct net_device_ops ltq_e +@@ -637,13 +834,18 @@ static const struct net_device_ops ltq_e .ndo_tx_timeout = ltq_etop_tx_timeout, }; @@ -753,8 +752,7 @@ Signed-off-by: John Crispin { struct net_device *dev; struct ltq_etop_priv *priv; -- struct resource *res; -+ struct resource *res, *gbit_res, irqres[2]; ++ struct resource *gbit_res, irqres[2]; int err; - int i; + @@ -764,9 +762,9 @@ Signed-off-by: John Crispin + return -EINVAL; + } - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { -@@ -671,18 +872,60 @@ ltq_etop_probe(struct platform_device *p + ltq_etop_membase = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(ltq_etop_membase)) { +@@ -653,17 +855,59 @@ ltq_etop_probe(struct platform_device *p goto err_out; } @@ -795,7 +793,6 @@ Signed-off-by: John Crispin dev->netdev_ops = <q_eth_netdev_ops; - dev->ethtool_ops = <q_etop_ethtool_ops; priv = netdev_priv(dev); - priv->res = res; priv->pdev = pdev; - priv->pldata = dev_get_platdata(&pdev->dev); priv->netdev = dev; @@ -833,7 +830,7 @@ Signed-off-by: John Crispin spin_lock_init(&priv->lock); SET_NETDEV_DEV(dev, &pdev->dev); -@@ -698,15 +941,10 @@ ltq_etop_probe(struct platform_device *p +@@ -679,15 +923,10 @@ ltq_etop_probe(struct platform_device *p goto err_free; } @@ -853,7 +850,7 @@ Signed-off-by: John Crispin err = register_netdev(dev); if (err) -@@ -733,31 +971,22 @@ static void ltq_etop_remove(struct platf +@@ -714,31 +953,22 @@ static void ltq_etop_remove(struct platf } } @@ -865,7 +862,7 @@ Signed-off-by: John Crispin + static struct platform_driver ltq_mii_driver = { + .probe = ltq_etop_probe, - .remove_new = ltq_etop_remove, + .remove = ltq_etop_remove, .driver = { .name = "ltq_etop", + .of_match_table = ltq_etop_match, diff --git a/target/linux/lantiq/patches-6.18/031-I2C-MIPS-lantiq-add-FALC-ON-i2c-bus-master.patch b/target/linux/lantiq/patches-6.18/031-I2C-MIPS-lantiq-add-FALC-ON-i2c-bus-master.patch index 27159c7c50..295fa82611 100644 --- a/target/linux/lantiq/patches-6.18/031-I2C-MIPS-lantiq-add-FALC-ON-i2c-bus-master.patch +++ b/target/linux/lantiq/patches-6.18/031-I2C-MIPS-lantiq-add-FALC-ON-i2c-bus-master.patch @@ -18,7 +18,7 @@ Signed-off-by: John Crispin --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig -@@ -857,6 +857,16 @@ config I2C_MICROCHIP_CORE +@@ -889,6 +889,16 @@ config I2C_MICROCHIP_CORE This driver can also be built as a module. If so, the module will be called i2c-microchip-core. @@ -37,8 +37,8 @@ Signed-off-by: John Crispin depends on PPC --- a/drivers/i2c/busses/Makefile +++ b/drivers/i2c/busses/Makefile -@@ -78,6 +78,7 @@ obj-$(CONFIG_I2C_IOP3XX) += i2c-iop3xx.o - obj-$(CONFIG_I2C_JZ4780) += i2c-jz4780.o +@@ -78,6 +78,7 @@ obj-$(CONFIG_I2C_JZ4780) += i2c-jz4780.o + obj-$(CONFIG_I2C_K1) += i2c-k1.o obj-$(CONFIG_I2C_KEBA) += i2c-keba.o obj-$(CONFIG_I2C_KEMPLD) += i2c-kempld.o +obj-$(CONFIG_I2C_LANTIQ) += i2c-lantiq.o diff --git a/target/linux/lantiq/patches-6.18/035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch b/target/linux/lantiq/patches-6.18/035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch index 10f2d4086d..cc5b6e9465 100644 --- a/target/linux/lantiq/patches-6.18/035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch +++ b/target/linux/lantiq/patches-6.18/035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch @@ -16,9 +16,9 @@ Signed-off-by: John Crispin --- a/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h +++ b/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h -@@ -99,5 +99,8 @@ extern __iomem void *ltq_cgu_membase; - extern void ltq_pmu_enable(unsigned int module); - extern void ltq_pmu_disable(unsigned int module); +@@ -102,5 +102,8 @@ extern void ltq_pmu_disable(unsigned int + /* VMMC */ + extern unsigned int *ltq_get_cp1_base(void); +/* allow the ethernet driver to load a flash mapped mac addr */ +const u8* ltq_get_eth_mac(void); @@ -224,7 +224,7 @@ Signed-off-by: John Crispin --- a/drivers/net/ethernet/lantiq_etop.c +++ b/drivers/net/ethernet/lantiq_etop.c -@@ -770,7 +770,11 @@ ltq_etop_init(struct net_device *dev) +@@ -769,7 +769,11 @@ ltq_etop_init(struct net_device *dev) if (err) goto err_hw; diff --git a/target/linux/lantiq/patches-6.18/152-lantiq-VPE.patch b/target/linux/lantiq/patches-6.18/152-lantiq-VPE.patch index 66e1cd8ea7..959fc02a15 100644 --- a/target/linux/lantiq/patches-6.18/152-lantiq-VPE.patch +++ b/target/linux/lantiq/patches-6.18/152-lantiq-VPE.patch @@ -15,7 +15,7 @@ Signed-off-by: Stefan Koch --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -2251,6 +2251,12 @@ config MIPS_VPE_LOADER +@@ -2267,6 +2267,12 @@ config MIPS_VPE_LOADER Includes a loader for loading an elf relocatable object onto another VPE and running it. @@ -126,7 +126,7 @@ Signed-off-by: Stefan Koch +#endif --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c -@@ -49,6 +49,41 @@ struct vpe_control vpecontrol = { +@@ -50,6 +50,41 @@ struct vpe_control vpecontrol = { .tc_list = LIST_HEAD_INIT(vpecontrol.tc_list) }; diff --git a/target/linux/lantiq/patches-6.18/200-MIPS-lantiq-xway-vmmc-use-platform_get_irq-to-get-ir.patch b/target/linux/lantiq/patches-6.18/200-MIPS-lantiq-xway-vmmc-use-platform_get_irq-to-get-ir.patch index 65164f6ac2..065462ddbf 100644 --- a/target/linux/lantiq/patches-6.18/200-MIPS-lantiq-xway-vmmc-use-platform_get_irq-to-get-ir.patch +++ b/target/linux/lantiq/patches-6.18/200-MIPS-lantiq-xway-vmmc-use-platform_get_irq-to-get-ir.patch @@ -99,7 +99,7 @@ Signed-off-by: Martin Schiller gpio = devm_gpiod_get_index(&pdev->dev, --- a/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h +++ b/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h -@@ -104,6 +104,9 @@ const u8* ltq_get_eth_mac(void); +@@ -101,6 +101,9 @@ extern void ltq_pmu_disable(unsigned int /* VMMC */ extern unsigned int *ltq_get_cp1_base(void); @@ -107,5 +107,5 @@ Signed-off-by: Martin Schiller +extern unsigned int ltq_get_mps_ad1_irq(void); +extern unsigned int ltq_get_mps_vc_irq(int idx); - #endif /* CONFIG_SOC_TYPE_XWAY */ - #endif /* _LTQ_XWAY_H__ */ + /* allow the ethernet driver to load a flash mapped mac addr */ + const u8* ltq_get_eth_mac(void); diff --git a/target/linux/lantiq/patches-6.18/701-NET-lantiq-etop-of-mido.patch b/target/linux/lantiq/patches-6.18/701-NET-lantiq-etop-of-mido.patch index d4c7b4ff23..e7e1f7ec1f 100644 --- a/target/linux/lantiq/patches-6.18/701-NET-lantiq-etop-of-mido.patch +++ b/target/linux/lantiq/patches-6.18/701-NET-lantiq-etop-of-mido.patch @@ -18,7 +18,7 @@ Signed-off-by: Johann Neuhauser #include -@@ -560,7 +561,8 @@ static int +@@ -559,7 +560,8 @@ static int ltq_etop_mdio_init(struct net_device *dev) { struct ltq_etop_priv *priv = netdev_priv(dev); @@ -28,7 +28,7 @@ Signed-off-by: Johann Neuhauser priv->mii_bus = mdiobus_alloc(); if (!priv->mii_bus) { -@@ -580,7 +582,15 @@ ltq_etop_mdio_init(struct net_device *de +@@ -579,7 +581,15 @@ ltq_etop_mdio_init(struct net_device *de priv->mii_bus->name = "ltq_mii"; snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x", priv->pdev->name, priv->pdev->id);