summaryrefslogtreecommitdiff
path: root/drivers/net
AgeCommit message (Collapse)Author
2025-03-19net: phy: ksz90x1: Simplify ksz9131_config_rgmii_delayPaul Barker
We can call phy_modify_mmd() instead of manually calling drv->readext() and drv->writeext(). Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Paul Barker <[email protected]>
2025-03-19net: phy: ksz90x1: Load skew values from device treePaul Barker
Various signal skew values may be set in the device tree for the ksz9131 Ethernet PHY. For example, the RZ/G2L board requires non-default values for rxc-skew-psec & txc-skew-psec. This is based on the ksz9131 phy driver in Linux v6.11. Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Paul Barker <[email protected]>
2025-03-19net: phy: ksz90x1: Handle ksz9131 LED errataPaul Barker
Micrel KSZ9131 PHY LED behavior is not correct when configured in Individual Mode, LED1 (Activity LED) is in the ON state when there is no-link. Workaround this by setting bit 9 of register 0x1e after verifying that the LED configuration is Individual Mode. This issue is described in KSZ9131RNX Silicon Errata DS80000693B [*] and according to that it will not be corrected in a future silicon revision. [*] https://ww1.microchip.com/downloads/en/DeviceDoc/KSZ9131RNX-Silicon-Errata-and-Data-Sheet-Clarification-80000863B.pdf Based on commit 0316c7e66bbd in the Linux kernel. Tested-by: Quentin Schulz <[email protected]> # RK3588 Tiger Signed-off-by: Paul Barker <[email protected]>
2025-03-19net: ravb: Fix error handling in ravb_probePaul Barker
In ravb_probe(), we were missing a couple of things in the error handling path: * We must unregister the MDIO bus before freeing the corresponding struct mii_dev instance to avoid the potential for use-after-free bugs. * We must free the resources acquired by clk_get_bulk() even if the clocks have not yet been enabled. Fixes: 8ae51b6f324e ("net: ravb: Add Renesas Ethernet RAVB driver") Signed-off-by: Paul Barker <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2025-03-12Merge patch series "drivers: Driver support for ADI SC5xx SoCs"Tom Rini
Greg Malysa <[email protected]> says: This series adds all of the supported peripheral drivers for the sc5xx series of SoCs from Analog Devices and other drivers that are used by the evaluation kits, such as a GPIO expander used by the EZLITE carrier boards. This series passes gitlab CI tests. Link: https://lore.kernel.org/r/[email protected]
2025-03-12net: Add support for ADI SC5xx SoCs with DWC QoS ethernetGreg Malysa
The ADI SC598 includes a Designware QoS 5.20a IP block. This commit adds support for using the existing ethernet QoS driver with the SC598 SoC. Co-developed-by: Ian Roberts <[email protected]> Signed-off-by: Ian Roberts <[email protected]> Co-developed-by: Nathan Barrett-Morrison <[email protected]> Signed-off-by: Nathan Barrett-Morrison <[email protected]> Signed-off-by: Vasileios Bimpikas <[email protected]> Signed-off-by: Utsav Agarwal <[email protected]> Signed-off-by: Arturs Artamonovs <[email protected]> Signed-off-by: Oliver Gaskell <[email protected]> Signed-off-by: Greg Malysa <[email protected]>
2025-03-11net: ravb: Fix RX frame size limitPaul Barker
The value written to the RFLR register includes the length of the CRC data at the end of each Ethernet frame. So we need to increase the value written to this register to ensure that we can receive full size frames. While we're here we can also copy the improved comment from the Linux kernel. Fixes: 8ae51b6f324e ("net: ravb: Add Renesas Ethernet RAVB driver") Signed-off-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]> # Fix comment Reviewed-by: Marek Vasut <[email protected]>
2025-03-11net: ravb: Add dependency on CONFIG_BITBANGMIIPaul Barker
The Renesas RAVB driver always requires bitbang MDIO bus support. Fixes: 8ae51b6f324e ("net: ravb: Add Renesas Ethernet RAVB driver") Signed-off-by: Paul Barker <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2025-03-11net: miiphybb: Drop bb_miiphy_alloc()/bb_miiphy_free() and struct bb_miiphy_busMarek Vasut
These functions are no longer necessary, remove them. The struct bb_miiphy_bus is no longer necessary either, remove it as well. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-11net: sh_eth: Switch back to mdio_alloc()Marek Vasut
Use mdio_alloc() again to allocate MDIO bus. This is possible because all the miiphybb parameters and ops passing is handled in at bb_miiphy_read()/bb_miiphy_write() level. This also fixes previously missed bb_miiphy_free() in .remove callback of this driver. which does not pose a problem anymore. Fixes: 08eefb5e792d ("net: sh_eth: Allocate bb_miiphy using bb_miiphy_alloc() and fill in callbacks") Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-11net: ravb: Switch back to mdio_alloc()Marek Vasut
Use mdio_alloc() again to allocate MDIO bus. This is possible because all the miiphybb parameters and ops passing is handled in at bb_miiphy_read()/bb_miiphy_write() level. This also fixes previously missed bb_miiphy_free() in .remove callback of this driver. which does not pose a problem anymore. Fixes: 079eaca6e7b4 ("net: ravb: Allocate bb_miiphy using bb_miiphy_alloc() and fill in callbacks") Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-11net: designware: Switch back to mdio_alloc()Marek Vasut
Use mdio_alloc() again to allocate MDIO bus. This is possible because all the miiphybb parameters and ops passing is handled in at bb_miiphy_read()/bb_miiphy_write() level. This also fixes previously missed bb_miiphy_free() in .remove callback of this driver. which does not pose a problem anymore. Fixes: cbb69c2fafcc ("net: designware: Allocate bb_miiphy using bb_miiphy_alloc() and fill in callbacks") Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-11net: miiphybb: Drop priv from struct bb_miiphy_busMarek Vasut
Remove the priv member from struct bb_miiphy_bus and its assignment from drivers. This turns struct bb_miiphy_bus int struct mii_dev wrapper, to be cleaned up next. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-11net: miiphybb: Pass struct mii_dev directly to bb_miiphy_read/write()Marek Vasut
Access to MDIO bus private data can be provided by both struct mii_dev .priv member and struct bb_miiphy_bus .priv member, use the former directly and remove .priv from the later. Drop unused bb_miiphy_getbus(). This removes any dependency on struct bb_miiphy_bus from the miiphybb code, except for helper functions which will be removed later. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-11net: miiphybb: Pass struct bb_miiphy_bus_ops directly to bb_miiphy_read/write()Marek Vasut
The access to struct bb_miiphy_bus_ops via ops pointer in struct bb_miiphy_bus is not necessary with wrappers added in previous patch. Pass the ops pointer directly to both bb_miiphy_read() and bb_miiphy_write() functions. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-11net: miiphybb: Wrap driver side bb_miiphy_read/write() accessorsMarek Vasut
Do not call bb_miiphy_read()/bb_miiphy_write() accessors directly in drivers, instead call them through wrapper functions. Those are meant to be used as function parameter adaptation layer between struct mii_dev callback function parameters and what the miiphybb does expect and will soon expect. This is a preparatory patch, no functional change. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-11net: miiphybb: Split off struct bb_miiphy_bus_opsMarek Vasut
Move miiphybb operations into separate struct bb_miiphy_bus_ops structure, add pointer to struct bb_miiphy_bus_ops into the base struct bb_miiphy_bus and access the ops through this pointer in miiphybb generic code. The variable reshuffling in miiphybb.c cannot be easily avoided. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-03-10Merge tag 'v2025.04-rc4' into nextTom Rini
This uses Heinrich's merge of lib/efi_loader/efi_net.c which results in no changes.
2025-03-03net: tsec: Re-arm packet buffer in error caseJ. Neuschäfer
When an error is detected in the TSEC receive path, the driver currently prints an error message, but leaves the corresponding packet descriptor in its old state (i.e. owned by the CPU side). As a result, the packet queue can be starved of available buffers if enough errors happen. To recover from errors, re-arm the packet buffer descriptor after an error has been detected. Errors can be provoked by changing a PHY with phy-mode = "rgmii-id" to phy-mode = "rgmii". Signed-off-by: J. Neuschäfer <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-03-03net: tsec: Reorder tsec_recv and tsec_free_pktJ. Neuschäfer
This is necessary for the following patch. No functional change. Signed-off-by: J. Neuschäfer <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-02-26net: miiphybb: Drop bb_miiphy_buses and bb_miiphy_buses_numMarek Vasut
Neither bb_miiphy_buses nor bb_miiphy_buses_num are used anymore. Drop both of them. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: sh_eth: Drop use of miiphy_get_dev_by_name()Marek Vasut
Instead of doing another lookup, trivially access the struct mii_dev embedded in struct bb_miiphy_bus . No functional change. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-02-26net: ravb: Drop use of miiphy_get_dev_by_name()Marek Vasut
Instead of doing another lookup, trivially access the struct mii_dev embedded in struct bb_miiphy_bus . No functional change. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: miiphybb: Drop name field from struct bb_miiphy_busMarek Vasut
The struct bb_miiphy_bus embeds struct struct mii_dev, which already contains one copy of name field. Drop the duplicate top level copy of name field. The a38x code does static assignment of disparate names, use snprintf(...) to fill in matching name in probe to avoid any breakage. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: miiphybb: Use container_of() in bb_miiphy_getbus()Marek Vasut
Replace the name based look up in bb_miiphy_getbus() with trivial container_of() call. This works because the struct bb_miiphy_bus always embeds the matching struct mii_dev . This also makes the code much simpler and more efficient. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: designware: Allocate bb_miiphy using bb_miiphy_alloc() and fill in ↵Marek Vasut
callbacks Allocate bb_miiphy using bb_miiphy_alloc() and fill in callbacks currently listed in bb_miiphy_buses[] array. This is a temporary duplication of assignment to avoid breakage, which will be removed in follow up patches. At this point, the bb_miiphy callbacks can reach these accessors by doing container_of() on struct mii_dev. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-02-26net: sh_eth: Allocate bb_miiphy using bb_miiphy_alloc() and fill in callbacksMarek Vasut
Allocate bb_miiphy using bb_miiphy_alloc() and fill in callbacks currently listed in bb_miiphy_buses[] array. This is a temporary duplication of assignment to avoid breakage, which will be removed in follow up patches. At this point, the bb_miiphy callbacks can reach these accessors by doing container_of() on struct mii_dev. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-02-26net: ravb: Allocate bb_miiphy using bb_miiphy_alloc() and fill in callbacksMarek Vasut
Allocate bb_miiphy using bb_miiphy_alloc() and fill in callbacks currently listed in bb_miiphy_buses[] array. This is a temporary duplication of assignment to avoid breakage, which will be removed in follow up patches. At this point, the bb_miiphy callbacks can reach these accessors by doing container_of() on struct mii_dev. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: miiphybb: Introduce bb_miiphy_alloc()/bb_miiphy_free() wrappersMarek Vasut
Introduce bb_miiphy_alloc()/bb_miiphy_free() wrappers to allocate and free struct bb_miiphy_bus. Make struct bb_miiphy_bus wrap struct mii_dev, which will become useful later in bb_miiphy_bus accessors, which would be able to access struct bb_miiphy_bus using container_of, even if the PHY stack only passes in the inner struct mii_dev . Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: designware: Extract bbmiiphy initialization into dedicated functionMarek Vasut
Pull the bbmiiphy initialization code from designware_eth_probe() into dedicated function, dw_bb_mdio_init(), just like all the other MDIO initialization functions. Keep check for "snps,bitbang-mii" in the designware_eth_probe(), so the driver can initialize this MDIO only in case the property is present, and initialize regular DW MDIO in case it is not present. The dw_bb_mdio_init() allocates its own MDIO instance, because thus far code gated behind "snps,bitbang-mii" did depend on allocation of MDIO bus by the other two MDIO bus options and then rewrote the newly allocated MDIO bus callbacks, which is wrong, instead allocate proper MDIO bus with the correct callbacks outright. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-02-26net: designware: Drop bus indexMarek Vasut
There is literally one single bbmiiphy bus in this driver, remove the bus index handling. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-02-26net: miiphybb: Drop bb_miiphy_init() and .init callbackMarek Vasut
The .init callback is not called by any function, drop it. There are no more users of the init callback, drop the entire mechanism. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: designware: Reorder bb_miiphy functionsMarek Vasut
Move the bb_miiphy functions before MDIO registration. This is a preparatory patch, the functions will be referenced around the MDIO registration in the follow up patches. No functional change. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-02-26net: sh_eth: Reorder bb_miiphy functionsMarek Vasut
Move the bb_miiphy functions before MDIO registration. This is a preparatory patch, the functions will be referenced around the MDIO registration in the follow up patches. No functional change. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-02-26net: ravb: Reorder bb_miiphy functionsMarek Vasut
Move the bb_miiphy functions before MDIO registration. This is a preparatory patch, the functions will be referenced around the MDIO registration in the follow up patches. No functional change. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: designware: Drop NULL priv assignmentMarek Vasut
This is unnecessary, the unset structure member is initialized to NULL by default, drop the assignment. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: sh_eth: Drop empty init callbackMarek Vasut
The init function does nothing, the bb_miiphy_init() already checks whether the .init callback is assigned, and if not, skips calling it. Remove the empty init function. The entire init callback will be removed in follow up patches. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-26net: ravb: Drop empty init callbackMarek Vasut
The init function does nothing, the bb_miiphy_init() already checks whether the .init callback is assigned, and if not, skips calling it. Remove the empty init function. The entire init callback will be removed in follow up patches. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-02-24Merge tag 'v2025.04-rc3' into nextTom Rini
Prepare v2025.04-rc3
2025-02-19net: dwc_eth_qos_rockchip: Fix disable of RX/TX delay for RK3588Jonas Karlman
When rgmii-rxid/txid/id phy-mode is used the MAC should not add RX and/or TX delay. Currently RX/TX delay is configured as enabled using zero as delay value for the rgmii-rxid/txid/id modes. Change to disable RX and/or TX delay and using zero as delay value. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-02-19net: dwc_eth_qos_rockchip: Fix disable of RX/TX delay for RK356xJonas Karlman
When rgmii-rxid/txid/id phy-mode is used the MAC should not add RX and/or TX delay. Currently RX/TX delay is configured as enabled using zero as delay value for the rgmii-rxid/txid/id modes. Change to disable RX and/or TX delay and using zero as delay value. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-02-18net: designware: Add npcm8xx sgmii pcs supportJim Liu
The PCS exists only in GMAC1 and relates to SGMII interface and is used to control the SGMII PHY. Signed-off-by: Jim Liu <[email protected]> [trini: Adjust slightly for white space and to move 'start' to within if block]
2025-02-10net: designware: support phy io micro voltage setting.Michael Chang
Support phy io micro voltage setting for NPCM8XX rgmii interface. Signed-off-by: Michael Chang <[email protected]>
2025-02-04net: miiphybb: Update debug() printMarek Vasut
Update the debug() print, use __func__ to always print matching function name, and also print bus name in case there are multiple busses. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-02-04net: miiphybb: Convert ifdef DEBUG to debug()Marek Vasut
Replace ifdeffery with plain debug() function call. No functional change. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-01-31net: mediatek: fix coding style of AN8855 switch driverWeijie Gao
This patch fixed the following coding style suggested by checkpatch.pl: 1. Use tab instead of space 2. Use BIT() instead of << 3. Use mdelay for long time delay 4. Remove useless parenthesises Signed-off-by: Weijie Gao <[email protected]>
2025-01-30net: phy: Add RGMII RX/TX delay handling to DP83822 PHYMarek Vasut
The TI DP83822 does have support for configurable RGMII RX/TX clock shift, add support for parsing DT properties which describe the RX/TX clock shift configuration and configuration of the matching bits in RCSR register. The shift is only configurable on DP83822, the other PHYs supported by this PHY driver, namely DP83825/DP83826 variants, do not implement this functionality and the RCSR bits used to configure the clock shift are missing from those PHYs. The shift is configurable separately for RX and TX path. Each path can either enable the shift or disable the shift using single bit. In case the shift is disabled, a delay of 0ns is added to the path, otherwise a delay of 3.5ns is added to the path. Note that the two RCSR bits 11 and 12 have inverted logic, RCSR bit 12 enables RX internal shift when SET, while RCSR bit 11 enables TX shift when UNSET. Signed-off-by: Marek Vasut <[email protected]>
2025-01-29net: ravb: Staticize bb_miiphy functionsMarek Vasut
These functions can be static as they are referenced only in this file. Make them static. No functional change. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-01-29net: miiphybb: configs: Drop CONFIG_BITBANGMII_MULTIMarek Vasut
It seems that every remaining system which enables BITBANGMII also enables BITBANGMII_MULTI . Remove the BITBANGMII_MULTI symbol and assume it is always enabled. This allows removal of a bit of legacy code. No functional change intended. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2025-01-27net: fsl_enetc: Enable optional ENETREF clock on i.MX95Marek Vasut
The ENETCv4 port DT nodes on i.MX95 may contain optional clock phandle to IMX95_CLK_ENETREF "ref" clock. These "ref" clock must be enabled for the ethernet to work. These "ref" clock are enabled after cold boot, but when the system booted Linux and rebooted, those "ref" clock might have been disabled in the process, which would make ethernet inoperable after reboot. Make sure those "ref" clock are always correctly enabled. Signed-off-by: Marek Vasut <[email protected]>