• Lukasz Majewski's avatar
    net: dsa: microchip: KSZ9477 register regmap alignment to 32 bit boundaries · 8d7ae22a
    Lukasz Majewski authored
    The commit (SHA1: 5c844d57) 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 accesses 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 KSZ9477 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.
    Signed-off-by: default avatarLukasz Majewski <lukma@denx.de>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8d7ae22a
ksz_common.c 96.3 KB