linux/drivers/net/dsa
Jesse Van Gavere 124bedb288 net: dsa: microchip: KSZ9896 register regmap alignment to 32 bit boundaries
[ Upstream commit 5af53577c6 ]

Commit 8d7ae22ae9 ("net: dsa: microchip: KSZ9477 register regmap
alignment to 32 bit boundaries") fixed an issue whereby regmap_reg_range
did not allow writes as 32 bit words to KSZ9477 PHY registers, this fix
for KSZ9896 is adapted from there as the same errata is present in
KSZ9896C as "Module 5: Certain PHY registers must be written as pairs
instead of singly" the explanation below is likewise taken from this
commit.

The commit provided code
to apply "Module 6: Certain PHY registers must be written as pairs instead
of singly" errata for KSZ9477 as this chip for certain PHY registers
(0xN120 to 0xN13F, N=1,2,3,4,5) must be accessed as 32 bit words instead
of 16 or 8 bit access.
Otherwise, adjacent registers (no matter if reserved or not) are
overwritten with 0x0.

Without this patch some registers (e.g. 0x113c or 0x1134) required for 32
bit access are out of valid regmap ranges.

As a result, following error is observed and KSZ9896 is not properly
configured:

ksz-switch spi1.0: can't rmw 32bit reg 0x113c: -EIO
ksz-switch spi1.0: can't rmw 32bit reg 0x1134: -EIO
ksz-switch spi1.0 lan1 (uninitialized): failed to connect to PHY: -EIO
ksz-switch spi1.0 lan1 (uninitialized): error -5 setting up PHY for tree 0, switch 0, port 0

The solution is to modify regmap_reg_range to allow accesses with 4 bytes
boundaries.

Fixes: 5c844d57aa ("net: dsa: microchip: fix writes to phy registers >= 0x10")
Signed-off-by: Jesse Van Gavere <jesse.vangavere@scioteq.com>
Link: https://patch.msgid.link/20241211092932.26881-1-jesse.vangavere@scioteq.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2024-12-19 18:13:21 +01:00
..
b53 net: dsa: b53: fix jumbo frames on 10/100 ports 2024-10-08 10:42:27 +02:00
hirschmann net: Add struct kernel_ethtool_ts_info 2024-07-15 08:02:26 -07:00
microchip net: dsa: microchip: KSZ9896 register regmap alignment to 32 bit boundaries 2024-12-19 18:13:21 +01:00
mv88e6xxx net: dsa: mv88e6xxx: support 4000ps cycle counter period 2024-10-24 12:57:46 +02:00
ocelot net: dsa: felix: fix stuck CPU-injected packets with short taprio windows 2024-12-19 18:13:18 +01:00
qca dsa: qca8k: Use nested lock to avoid splat 2024-12-14 20:03:55 +01:00
realtek net: dsa: realtek: rtl8366rb: Make use of irq_get_trigger_type() 2024-09-06 18:21:43 -07:00
sja1105 net: dsa: sja1105: fix reception from VLAN-unaware bridges 2024-10-04 11:19:50 -07:00
xrs700x net: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-26 07:28:08 -07:00
bcm_sf2.c net: dsa: bcm_sf2: Fix a possible memory leak in bcm_sf2_mdio_register() 2024-08-07 20:13:13 -07:00
bcm_sf2.h net: dsa: bcm_sf2: drop priv->master_mii_dn 2024-01-05 11:56:36 +00:00
bcm_sf2_cfp.c net: dsa: Use conduit and user terms 2023-10-24 13:08:14 -07:00
bcm_sf2_regs.h net: dsa: bcm_sf2: refactor LED regs access 2021-12-30 17:28:32 -08:00
dsa_loop.c net: dsa: dsa_loop: add phylink capabilities 2023-10-11 10:06:05 +01:00
dsa_loop.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dsa_loop_bdinfo.c net: fill in MODULE_DESCRIPTION()s for dsa_loop_bdinfo 2024-02-09 14:12:02 -08:00
Kconfig net: dsa: vsc73xx: Implement the tag_8021q VLAN operations 2024-07-15 06:55:15 -07:00
lan9303-core.c net: dsa: lan9303: ensure chip reset and wait for READY status 2024-10-07 16:38:02 -07:00
lan9303.h net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
lan9303_i2c.c net: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-26 07:28:08 -07:00
lan9303_mdio.c dsa: lan9303: consistent naming for PHY address parameter 2024-07-15 08:49:59 -07:00
lantiq_gswip.c net: dsa: lantiq_gswip: Improve error message in gswip_port_fdb() 2024-06-13 17:07:11 -07:00
lantiq_pce.h net: dsa: Use the correct style for SPDX License Identifier 2019-09-22 15:25:08 -07:00
Makefile net: dsa: mt7530: introduce driver for MT7988 built-in switch 2023-04-03 10:13:01 +01:00
mt7530-mdio.c net: dsa: mt7530-mdio: read PHY address of switch from device tree 2024-04-23 10:32:40 +02:00
mt7530-mmio.c net: dsa: mt7530: Add EN7581 support 2024-08-04 15:22:31 +01:00
mt7530.c net: dsa: mt7530: Add EN7581 support 2024-08-04 15:22:31 +01:00
mt7530.h net: dsa: mt7530: Add EN7581 support 2024-08-04 15:22:31 +01:00
mv88e6060.c net: dsa: mv88e6060: add phylink_get_caps implementation 2023-08-14 18:57:17 -07:00
mv88e6060.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rzn1_a5psw.c net: dsa: rzn1_a5psw: provide own phylink MAC operations 2024-04-17 18:29:30 -07:00
rzn1_a5psw.h net: dsa: rzn1-a5psw: add vlan support 2023-08-11 11:58:36 +01:00
vitesse-vsc73xx-core.c net: dsa: vsc73xx: fix reception from VLAN-unaware bridges 2024-10-15 18:41:52 -07:00
vitesse-vsc73xx-platform.c net: dsa: vitesse-vsc73xx: Convert to platform remove callback returning void 2023-09-20 10:25:58 +01:00
vitesse-vsc73xx-spi.c net: dsa: vitesse-vsc73xx: remove unnecessary set_drvdata() 2022-09-22 19:30:39 -07:00
vitesse-vsc73xx.h net: dsa: vsc73xx: implement FDB operations 2024-09-03 10:22:58 +02:00