linux/drivers/i2c
Camel Guo 8c906cc0ae i2c: exynos5: Calculate t_scl_l, t_scl_h according to i2c spec
Previously the duty cycle was divided equally into h_scl_l, t_scl_h.
This makes the low period of the SCL clock in Fast Mode is only 1.25us
which is way lower than the minimal value (1.3) specified in i2c
specification. In order to make sure t_scl_l, t_scl_h always fullfill
i2c specification, this commit calculates t_scl_l using this formula:

t_scl_l = clk_cycle *
    ((t_low_min + (scl_clock - t_low_min - t_high_min) / 2) / scl_clock)

where:
t_low_min is the minimal value of low period of the SCL clock in us;
t_high_min is the minimal value of high period of the SCL clock in us;
scl_clock is converted from SCL clock frequency into us.

Signed-off-by: Camel Guo <camel.guo@axis.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
2023-10-23 17:11:40 +02:00
..
algos i2c: algo: bit: allow getsda to be NULL 2023-01-23 23:15:49 +01:00
busses i2c: exynos5: Calculate t_scl_l, t_scl_h according to i2c spec 2023-10-23 17:11:40 +02:00
muxes i2c: mux: demux-pinctrl: Annotate struct i2c_demux_pinctrl_priv with __counted_by 2023-09-24 22:49:13 +02:00
i2c-atr.c i2c: Annotate struct i2c_atr with __counted_by 2023-09-24 22:50:25 +02:00
i2c-boardinfo.c i2c: Remove support for dangling device properties 2021-04-10 21:43:02 +02:00
i2c-core-acpi.c i2c: add fwnode APIs 2023-01-17 09:29:59 +01:00
i2c-core-base.c i2c: Add i2c_get_match_data() 2023-06-09 17:30:47 +02:00
i2c-core-of.c Char/Misc drivers for 6.4-rc1 2023-04-27 12:07:50 -07:00
i2c-core-slave.c i2c: add tracepoints for I2C slave events 2022-03-20 00:11:05 +01:00
i2c-core-smbus.c i2c: smbus: Check for parent device before dereference 2022-02-19 12:37:20 +01:00
i2c-core.h i2c: core: Run atomic i2c xfer when !preemptible 2023-07-28 11:33:02 +01:00
i2c-dev.c i2c: dev: make i2c_dev_class a static const structure 2023-09-19 22:09:58 +02:00
i2c-mux.c i2c: mux: harden i2c_mux_alloc() against integer overflows 2022-09-21 22:12:06 +02:00
i2c-slave-eeprom.c i2c: Convert drivers to new .probe() callback 2023-03-09 21:59:30 +01:00
i2c-slave-testunit.c i2c: Convert drivers to new .probe() callback 2023-03-09 21:59:30 +01:00
i2c-smbus.c i2c: Convert drivers to new .probe() callback 2023-03-09 21:59:30 +01:00
i2c-stub.c i2c: stub: remove definition of DEBUG 2021-01-17 13:00:10 +01:00
Kconfig i2c: Make I2C_ATR invisible 2023-09-13 10:56:00 +02:00
Makefile media: i2c: add I2C Address Translator (ATR) support 2023-07-14 13:11:44 +02:00