<feed xmlns='http://www.w3.org/2005/Atom'>
<title>u-boot.git/drivers/i2c, branch v2019.07-rc2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/u-boot.git/atom/drivers/i2c?h=v2019.07-rc2</id>
<link rel='self' href='http://cgit.235523.xyz/u-boot.git/atom/drivers/i2c?h=v2019.07-rc2'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/'/>
<updated>2019-05-03T18:22:23Z</updated>
<entry>
<title>Merge git://git.denx.de/u-boot-marvell</title>
<updated>2019-05-03T18:22:23Z</updated>
<author>
<name>Tom Rini</name>
<email>trini@konsulko.com</email>
</author>
<published>2019-05-03T18:22:23Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=90c2ebd2156982eee1af6faa00f6740e9f79b3c5'/>
<id>urn:sha1:90c2ebd2156982eee1af6faa00f6740e9f79b3c5</id>
<content type='text'>
- Fix in kwbimage (return code checking) (Young Xiao)
- Misc updates to Turris Omnia (Marek)
</content>
</entry>
<entry>
<title>i2c: mvtwsi: fix reading status register after interrupt</title>
<updated>2019-05-03T06:14:39Z</updated>
<author>
<name>Marek Behún</name>
<email>marek.behun@nic.cz</email>
</author>
<published>2019-05-02T14:53:38Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=d50e29662f78be5e0843ce1e0c5d818b6a74cc98'/>
<id>urn:sha1:d50e29662f78be5e0843ce1e0c5d818b6a74cc98</id>
<content type='text'>
The twsi_wait function reads the control register for interrupt flag,
and if interrupt flag is present, it immediately reads status register.

On our device this sometimes causes bad value being read from status
register, as if the value was not yet updated.

My theory is that the controller does approximately this:
  1. sets interrupt flag in control register,
  2. sets the value of status register,
  3. causes an interrupt

In U-Boot we do not use interrupts, so I think that it is possible that
sometimes the status register in the twsi_wait function is read between
points 1 and 2.

The bug does not appear if I add a small delay before reading status
register.

Wait 100ns (which in U-Boot currently means 1 us, because ndelay(i)
function calls udelay(DIV_ROUND_UP(i, 1000))) before reading the status
register.

Signed-off-by: Marek Behún &lt;marek.behun@nic.cz&gt;
Reviewed-by: Heiko Schocher &lt;hs@denx.de&gt;
Reviewed-by: Stefan Roese &lt;sr@denx.de&gt;
Cc: Mario Six &lt;mario.six@gdsys.cc&gt;
Cc: Baruch Siach &lt;baruch@tkos.co.il&gt;
Signed-off-by: Stefan Roese &lt;sr@denx.de&gt;
</content>
</entry>
<entry>
<title>rockchip: use 'arch-rockchip' as header file path</title>
<updated>2019-04-30T22:00:05Z</updated>
<author>
<name>Kever Yang</name>
<email>kever.yang@rock-chips.com</email>
</author>
<published>2019-03-28T03:01:23Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=15f09a1a834b125ed4a6102eac96186da0641541'/>
<id>urn:sha1:15f09a1a834b125ed4a6102eac96186da0641541</id>
<content type='text'>
Rockchip use 'arch-rockchip' instead of arch-$(SOC) as common
header file path, so that we can get the correct path directly.

Signed-off-by: Kever Yang &lt;kever.yang@rock-chips.com&gt;
Reviewed-by: Philipp Tomsich &lt;philipp.tomsich@theobroma-systems.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.denx.de/u-boot-socfpga</title>
<updated>2019-04-26T17:49:58Z</updated>
<author>
<name>Tom Rini</name>
<email>trini@konsulko.com</email>
</author>
<published>2019-04-26T17:49:58Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=1c64692df20c1f491ea79de3a732428611bb0ba0'/>
<id>urn:sha1:1c64692df20c1f491ea79de3a732428611bb0ba0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>i2c: designware: fix reset handling on socfpga gen5</title>
<updated>2019-04-24T22:00:49Z</updated>
<author>
<name>Simon Goldschmidt</name>
<email>simon.k.r.goldschmidt@gmail.com</email>
</author>
<published>2019-03-28T20:11:48Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=36821b3f55adc26c593520d8c207eea36c5c264a'/>
<id>urn:sha1:36821b3f55adc26c593520d8c207eea36c5c264a</id>
<content type='text'>
Using this driver on socfpga gen5 with DM_I2C enabled leads to a data abort
as the 'i2c' reset property cannot be found (the gen5 dtsi does not provide
reset-names).

The actual bug was to check 'if (&amp;priv-&gt;reset_ctl)', which is never false.

While at it, convert the driver to use 'reset_get_bulk' instead of looking
at a specific named reset and also make it release the reset on driver
remove before starting the OS.

Fixes: 622597dee4f6 ("i2c: designware: add reset ctrl to driver")
Signed-off-by: Simon Goldschmidt &lt;simon.k.r.goldschmidt@gmail.com&gt;
Reviewed-by: Heiko Schocher &lt;hs@denx.de&gt;
</content>
</entry>
<entry>
<title>Merge tag 'u-boot-amlogic-20190423' of git://git.denx.de/u-boot-amlogic</title>
<updated>2019-04-24T16:26:25Z</updated>
<author>
<name>Tom Rini</name>
<email>trini@konsulko.com</email>
</author>
<published>2019-04-24T16:26:25Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=ceb6ddbc73607e9395bb5f0ad94159755f049e77'/>
<id>urn:sha1:ceb6ddbc73607e9395bb5f0ad94159755f049e77</id>
<content type='text'>
- Add support for Amlogic p200 &amp; p201 Reference Designs
- Add Amlogic SoC information display
- Add support for the Libretech-AC AML-S805X-AC board
- Add Amlogic AXG reset compatible
- Add I2C support for Amlogic AXG
- Fix AXG PIN and BANK pinctrl definitions
- Fix regmap_read_poll_timeout warning about sandbox_timer_add_offset
- Add initial support for Amlogic G12A SoC and U200 board
- Enable PHY_REALTEK for selected boards
- Fix Khadas VIM2 README
</content>
</entry>
<entry>
<title>i2c: muxes: pca954x: support PCA9543 I2C switch</title>
<updated>2019-04-11T13:21:33Z</updated>
<author>
<name>Luca Ceresoli</name>
<email>luca@lucaceresoli.net</email>
</author>
<published>2019-04-09T06:57:43Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=9985b74bf6d6550b83370e28057f11eab2a647d7'/>
<id>urn:sha1:9985b74bf6d6550b83370e28057f11eab2a647d7</id>
<content type='text'>
The PCA9543 is a 2-channel I2C switch.

Signed-off-by: Luca Ceresoli &lt;luca@lucaceresoli.net&gt;
Reviewed-by: Heiko Schocher &lt;hs@denx.de&gt;
Acked-by: Michal Simek &lt;michal.simek@xilinx.com&gt;
Reviewed-by: Heiko Schocher&lt;hs@denx.de&gt;
</content>
</entry>
<entry>
<title>i2c: muxes: pca954x: clarify enable field</title>
<updated>2019-04-11T13:21:33Z</updated>
<author>
<name>Luca Ceresoli</name>
<email>luca@lucaceresoli.net</email>
</author>
<published>2019-04-09T06:57:42Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=5995cdb167a4e8d3049cc25ca37c13ab85a63ac0'/>
<id>urn:sha1:5995cdb167a4e8d3049cc25ca37c13ab85a63ac0</id>
<content type='text'>
The chip_desc.enable field is used only for muxes, not for switches.
Document it and remove the unused values.

Signed-off-by: Luca Ceresoli &lt;luca@lucaceresoli.net&gt;
Reviewed-by: Heiko Schocher &lt;hs@denx.de&gt;
Acked-by: Michal Simek &lt;michal.simek@xilinx.com&gt;
Reviewed-by: Heiko Schocher&lt;hs@denx.de&gt;
</content>
</entry>
<entry>
<title>i2c: muxes: pca954x: update list of supported devices</title>
<updated>2019-04-11T13:21:33Z</updated>
<author>
<name>Luca Ceresoli</name>
<email>luca@lucaceresoli.net</email>
</author>
<published>2019-04-09T06:57:41Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=4cdf4e0655823fbb0c937cab939e54a1527fa01e'/>
<id>urn:sha1:4cdf4e0655823fbb0c937cab939e54a1527fa01e</id>
<content type='text'>
The Kconfig help has not been updated while adding PCA9547 and PCA9646.

Signed-off-by: Luca Ceresoli &lt;luca@lucaceresoli.net&gt;
Acked-by: Michal Simek &lt;michal.simek@xilinx.com&gt;
Reviewed-by: Heiko Schocher&lt;hs@denx.de&gt;
</content>
</entry>
<entry>
<title>DM: I2C: Introduce 'u-boot, i2c-transaction-bytes' property</title>
<updated>2019-04-11T13:21:33Z</updated>
<author>
<name>Lukasz Majewski</name>
<email>lukma@denx.de</email>
</author>
<published>2019-04-04T10:35:34Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=a40fe217d19fdb9804fdc88342ce4bb0a0440c84'/>
<id>urn:sha1:a40fe217d19fdb9804fdc88342ce4bb0a0440c84</id>
<content type='text'>
The 'u-boot,i2c-transaction-bytes' device tree property provides
information regarding number of bytes transferred by a device in a
single transaction.

This change is necessary to avoid hanging devices after soft reset.
One notable example is communication with MC34708 device:

1. Reset when communicating with MC34708 via I2C.

2. The u-boot (after reboot -f) tries to setup the I2C and then calls
force_idle_bus. In the same time MC34708 still has some data to be sent
(as it transfers data in 24 bits chunks).

3. The force_idle_bus() is not able to make the bus idle as 8 SCL
clocks may be not enough to have the full transmission.

4. We end up with I2C inconsistency with MC34708.

This PMIC device requires 24+ SCL cycles to make finish any pending I2C
transmission.

Signed-off-by: Lukasz Majewski &lt;lukma@denx.de&gt;
</content>
</entry>
</feed>
