• Mika Westerberg's avatar
    i2c: designware: make HCNT/LCNT values configurable · defc0b2f
    Mika Westerberg authored
    The DesignWare I2C controller has high count (HCNT) and low count (LCNT)
    registers for each of the I2C speed modes (standard and fast). These
    registers are programmed based on the input clock speed in the driver.
    
    The current code calculates these values based on the input clock speed and
    tries hard to meet the I2C bus timing requirements. This could result
    non-optimal values with regarding to the bus speed. For example on Intel
    BayTrail we get bus speed of 315.41kHz which is ~20% slower than we would
    expect (400kHz) in fast mode (even though the timing requirements are met).
    
    This patch makes it possible for the platform code to pass more optimal
    HCNT/LCNT values to the core driver if they are known beforehand. If these
    are not set we use the calculated and more conservative values.
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Acked-by: default avatarShinya Kuribayashi <skuribay@pobox.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    defc0b2f
i2c-designware-core.c 21.5 KB