i2c-imx: fix clear IFF race condition
During i2c read the original pattern was:

1. write i2c slave address
2. wait for transmit complete + clear IIF
3. wait for receive acknowledge
4. wait for IIF interrupt

Due to the clear of the I2SR register, the IIF flag was cleared, too. So
in step 4 the Interrupt wasn't detected. To fix this problem, we move
the clean of IIF before the writing of the slave address. So that it
looks this way:

0. clear IIF
1. write i2c slave address
2. wait for transmit complete
3. wait for receive acknowledge
4. wait for IIF interrupt

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
WIP_next-LS master next stable/v2013.05 stable/v2013.06 stable/v2013.07 stable/v2013.08 stable/v2013.10 stable/v2014.05 stable/v2014.06 stable/v2014.07 stable/v2014.08 stable/v2014.09 stable/v2014.10 stable/v2014.11 stable/v2014.12 stable/v2015.01 stable/v2015.02 stable/v2017.05 stable/v2017.06 stable/v2017.07 stable/v2017.11 stable/v2018.07 stable/v2018.09 stable/v2018.12 v2011.03-stable work/fit-support v2020.07.0 v2020.06.0 v2020.05.0 v2020.04.0 v2020.03.0 v2020.02.0 v2020.01.0 v2019.12.0 v2019.11.0 v2019.10.0 v2019.09.0 v2019.08.1 v2019.08.0 v2019.07.0 v2019.06.1 v2019.06.0 v2019.05.0 v2019.04.0 v2019.03.0 v2019.02.0 v2019.01.0 v2018.12.0 v2018.11.0 v2018.10.0 v2018.09.1 v2018.09.0 v2018.08.1 v2018.08.0 v2018.07.2 v2018.07.1 v2018.07.0 v2018.06.0 v2018.05.0 v2018.04.0 v2018.03.0 v2018.02.0 v2018.01.0 v2017.12.0 v2017.11.0 v2017.10.0 v2017.09.0 v2017.08.0 v2017.07.1 v2017.07.0 v2017.06.2 v2017.06.1 v2017.06.0 v2017.05.4 v2017.05.3 v2017.05.2 v2017.05.1 v2017.05.0 v2017.04.0 v2017.03.0 v2017.02.0 v2017.01.0 v2016.11.0 v2016.10.0 v2016.09.0 v2016.08.0 v2016.07.0 v2016.06.0 v2016.05.0 v2016.04.0 v2016.03.0 v2016.02.0 v2016.01.0 v2015.12.0 v2015.11.0 v2015.10.0 v2015.09.0 v2015.08.0 v2015.07.0 v2015.06.0 v2015.05.0 v2015.04.0 v2015.03.0 v2015.02.0 v2015.01.0 v2014.12.0 v2014.11.0 v2014.10.0 v2014.09.0 v2014.08.0 v2014.07.0 v2014.06.0 v2014.05.0 v2014.04.0 v2014.03.0 v2014.02.0 v2014.01.0 v2013.12.0 v2013.11.0 v2013.10.1 v2013.10.0 v2013.09.0 v2013.08.1 v2013.08.0 v2013.07.0 v2013.06.1 v2013.06.0 v2013.05.1 v2013.05.0 v2013.04.0 v2013.03.0 v2013.02.0 v2013.01.0 v2012.12.1 v2012.12.0 v2012.11.0 v2012.10.0 v2012.09.0 v2012.08.0 v2012.07.0 v2012.06.0 v2012.05.0 v2012.04.0 v2012.03.0 v2012.02.0 v2012.01.0 v2011.12.0 v2011.11.0 v2011.10.0 v2011.09.0 v2011.08.0 v2011.07.0 v2011.06.0 v2011.05.0 v2011.04.0-phytec-pcm049 v2011.04.0 v2011.03.1 v2011.03.0 v2011.02.0 v2011.01.0 v2010.12.0 v2010.11.0 v2010.10.0 v2010.09.0 v2010.08.0 v2010.07.0 v2010.06.0 v2010.05.0 v2010.04.0 v2010.03.0 v2010.02.0 v2009.12.0 v2.0.0-rc10-ptx-pdk6 v2.0.0-rc10-ptx-pdk5
1 parent ed85e6d commit 6d34576586ecf894d0cb3bd0021d48b41c2a8b88
@Marc Kleine-Budde Marc Kleine-Budde authored on 9 Dec 2009
Showing 1 changed file
View
drivers/i2c/i2c-imx.c