]> www.infradead.org Git - users/jedix/linux-maple.git/commit
media: tc358746: improve calculation of the D-PHY timing registers
authorMatthias Fend <matthias.fend@emfend.at>
Tue, 7 Jan 2025 16:07:01 +0000 (17:07 +0100)
committerHans Verkuil <hverkuil@xs4all.nl>
Tue, 25 Feb 2025 08:07:25 +0000 (09:07 +0100)
commit78d7265e2e1ce349e7f3c6a085f2b66d7b73f4ca
treea227794f74cc257b52cdc888cd361d08808c2dd7
parent44967f0933f6672e07e599c0bf229a78f1dbf203
media: tc358746: improve calculation of the D-PHY timing registers

When calculating D-PHY registers, using data rates that are not multiples
of 16 can lead to precision loss in division operations. This can result in
register values that produce timing violations against the MIPI standard.

An example:
cfg->hs_clk_rate = 294MHz
hf_clk = 18

If the desired value in cfg->init is 100us, which is the minimum allowed
value, then the LINEINITCNT register is calculated as 1799. But since the
actual clock is 18.375MHz instead of 18MHz, this setting results in a time
that is shorter than 100us and thus violates the standard. The correct
value for LINEINITCNT would be 1837.

Improve the precision of calculations by using Hz instead of MHz as unit.

Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
Reviewed-by: Marco Felsch <m.felsch@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/i2c/tc358746.c