• Suneel Garapati's avatar
    i2c: thunderx: Support for High speed mode · 03240f82
    Suneel Garapati authored
    To support bus operations for high speed bus frequencies greater than
    400KHZ following control bits need to be setup accordingly
     - hs_mode (bit 0) field in Mode register to switch controller
       between low-speed and high-speed frequency operating mode.
     - Setup clock divisors for desired TWSI bus frequency using
       FOSCL output frequency divisor (D):
       0 - sets the divisor to 10 for low speed mode
       1 - sets the divisor to 15 for high speed mode.
    The TWSI bus output frequency, in master mode is based on:
                    TCLK = 100MHz / (THP + 2)
                    FOSCL = FSAMP / (M+1)×D = TCLK / (2 ^ N × (M + 1) × 15)
                    FSAMP = TCLK / 2 ^ N
    where,
            N is <2:0> and M is <6:3> of TWSI Clock Control Register
            D is 10 for low speed or 15 for HS_MODE
    
    With high speed mode support, HLC mode usage is limited to
    low speed frequency (<=400KHz) bus transfers in hardware.
    Signed-off-by: default avatarSuneel Garapati <sgarapati@marvell.com>
    Signed-off-by: default avatarPiyush Malgujar <pmalgujar@marvell.com>
    Signed-off-by: default avatarAndi Shyti <andi.shyti@kernel.org>
    03240f82
i2c-thunderx-pcidrv.c 6.46 KB