Message ID | cover.1706601050.git.siyanteng@loongson.cn (mailing list archive) |
---|---|
Headers | show |
Series | stmmac: Add Loongson platform support | expand |
Hi Yanteng On Tue, Jan 30, 2024 at 04:43:20PM +0800, Yanteng Si wrote: > v8: > * The biggest change is according to Serge's comment in the previous > edition: > Seeing the patch in the current state would overcomplicate the generic > code and the only functions you need to update are > dwmac_dma_interrupt() > dwmac1000_dma_init_channel() > you can have these methods re-defined with all the Loongson GNET > specifics in the low-level platform driver (dwmac-loongson.c). After > that you can just override the mac_device_info.dma pointer with a > fixed stmmac_dma_ops descriptor. Here is what should be done for that: > > 1. Keep the Patch 4/9 with my comments fixed. First it will be partly > useful for your GNET device. Second in general it's a correct > implementation of the normal DW GMAC v3.x multi-channels feature and > will be useful for the DW GMACs with that feature enabled. > > 2. Create the Loongson GNET-specific > stmmac_dma_ops.dma_interrupt() > stmmac_dma_ops.init_chan() > methods in the dwmac-loongson.c driver. Don't forget to move all the > Loongson-specific macros from dwmac_dma.h to dwmac-loongson.c. > > 3. Create a Loongson GNET-specific platform setup method with the next > semantics: > + allocate stmmac_dma_ops instance and initialize it with > dwmac1000_dma_ops. > + override the stmmac_dma_ops.{dma_interrupt, init_chan} with > the pointers to the methods defined in 2. > + allocate mac_device_info instance and initialize the > mac_device_info.dma field with a pointer to the new > stmmac_dma_ops instance. > + call dwmac1000_setup() or initialize mac_device_info in a way > it's done in dwmac1000_setup() (the later might be better so you > wouldn't need to export the dwmac1000_setup() function). > + override stmmac_priv.synopsys_id with a correct value. > > 4. Initialize plat_stmmacenet_data.setup() with the pointer to the > method created in 3. > > * Others: > Re-split the patch. > Passed checkpatch.pl test. Thanks for the updated series. I'll have a look at it later on this week or early on the next one. -Serge(y) > > v7: > * Refer to andrew's suggestion: > - Add DMA_INTR_ENA_NIE_RX and DMA_INTR_ENA_NIE_TX #define's, etc. > > * Others: > - Using --subject-prefix="PATCH net-next vN" to indicate that the > patches are for the networking tree. > - Rebase to the latest networking tree: > <git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git> > > > v6: > > * Refer to Serge's suggestion: > - Add new platform feature flag: > include/linux/stmmac.h: > +#define STMMAC_FLAG_HAS_LGMAC BIT(13) > > - Add the IRQs macros specific to the Loongson Multi-channels GMAC: > drivers/net/ethernet/stmicro/stmmac/dwmac_dma.h: > +#define DMA_INTR_ENA_NIE_LOONGSON 0x00060000 /* ...*/ > #define DMA_INTR_ENA_NIE 0x00010000 /* Normal Summary */ > ... > > - Drop all of redundant changes that don't require the > prototypes being converted to accepting the stmmac_priv > pointer. > > * Refer to andrew's suggestion: > - Drop white space changes. > - break patch up into lots of smaller parts. > Some small patches have been put into another series as a preparation > see <https://lore.kernel.org/loongarch/cover.1702289232.git.siyanteng@loongson.cn/T/#t> > > *note* : This series of patches relies on the three small patches above. > * others > - Drop irq_flags changes. > - Changed patch order. > > > v4 -> v5: > > * Remove an ugly and useless patch (fix channel number). > * Remove the non-standard dma64 driver code, and also remove > the HWIF entries, since the associated custom callbacks no > longer exist. > * Refer to Serge's suggestion: Update the dwmac1000_dma.c to > support the multi-DMA-channels controller setup. > > See: > v4: <https://lore.kernel.org/loongarch/cover.1692696115.git.chenfeiyang@loongson.cn/> > v3: <https://lore.kernel.org/loongarch/cover.1691047285.git.chenfeiyang@loongson.cn/> > v2: <https://lore.kernel.org/loongarch/cover.1690439335.git.chenfeiyang@loongson.cn/> > v1: <https://lore.kernel.org/loongarch/cover.1689215889.git.chenfeiyang@loongson.cn/> > > > Yanteng Si (11): > net: stmmac: Add multi-channel support > net: stmmac: dwmac-loongson: Refactor code for loongson_dwmac_probe() > net: stmmac: dwmac-loongson: Add full PCI support > net: stmmac: dwmac-loongson: Move irq config to loongson_gmac_config > net: stmmac: dwmac-loongson: Add Loongson-specific register > definitions > net: stmmac: dwmac-loongson: Add GNET support > net: stmmac: dwmac-loongson: Add multi-channel supports for loongson > net: stmmac: dwmac-loongson: Fix MAC speed for GNET > net: stmmac: dwmac-loongson: Fix half duplex > net: stmmac: dwmac-loongson: Disable flow control for GMAC > net: stmmac: dwmac-loongson: Disable coe for some Loongson GNET > > .../ethernet/stmicro/stmmac/dwmac-loongson.c | 561 ++++++++++++++++-- > .../net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 2 +- > .../ethernet/stmicro/stmmac/dwmac1000_dma.c | 36 +- > .../net/ethernet/stmicro/stmmac/dwmac_dma.h | 19 +- > .../net/ethernet/stmicro/stmmac/dwmac_lib.c | 32 +- > drivers/net/ethernet/stmicro/stmmac/hwif.h | 2 +- > .../ethernet/stmicro/stmmac/stmmac_ethtool.c | 6 + > .../net/ethernet/stmicro/stmmac/stmmac_main.c | 15 +- > include/linux/stmmac.h | 3 + > 9 files changed, 582 insertions(+), 94 deletions(-) > > -- > 2.31.4 >
On Tue, 30 Jan 2024 16:43:20 +0800 Yanteng Si wrote: > * The biggest change is according to Serge's comment in the previous > edition: Looks like there's a trivial build issue here: ERROR: modpost: "dwmac1000_dma_ops" [drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.ko] undefined! Please wait for Serge's review before posting v9.
在 2024/1/31 10:10, Jakub Kicinski 写道: > On Tue, 30 Jan 2024 16:43:20 +0800 Yanteng Si wrote: >> * The biggest change is according to Serge's comment in the previous >> edition: > Looks like there's a trivial build issue here: > > ERROR: modpost: "dwmac1000_dma_ops" > [drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.ko] undefined! > > Please wait for Serge's review before posting v9. OK! Will fix with: diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c index 5f7b82ad3ec2..0323f0a5049c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c @@ -296,3 +296,4 @@ const struct stmmac_dma_ops dwmac1000_dma_ops = { .get_hw_feature = dwmac1000_get_hw_feature, .rx_watchdog = dwmac1000_rx_watchdog, }; +EXPORT_SYMBOL_GPL(dwmac1000_dma_ops); Thanks, Yanteng