Thread (25 messages) flat view 25 messages, 4 authors, 2017-01-13

[PATCH v8 2/5] i2c: Add STM32F4 I2C driver

From: M'boumba Cedric Madianga <hidden>
Date: 2017-01-12 11:25:36
Also in: linux-devicetree, linux-i2c, lkml

Hi Uwe,

2017-01-11 16:42 GMT+01:00 Uwe Kleine-K?nig [off-list ref]:
Hello Cedric,

On Wed, Jan 11, 2017 at 03:20:41PM +0100, M'boumba Cedric Madianga wrote:
quoted
quoted
quoted
+              */
+             reg = i2c_dev->base + STM32F4_I2C_CR1;
+             stm32f4_i2c_clr_bits(reg, STM32F4_I2C_CR1_ACK);
+             stm32f4_i2c_set_bits(reg, STM32F4_I2C_CR1_POS);
You could get rid of this, when caching the value of CR1. Would save two
register reads here. This doesn't work for all registers, but it should
be possible to apply for most of them, maybe enough to get rid of the
clr_bits and set_bits function.
I agree at many places I could save registers read by not using
clr_bits and set_bits function when the registers in question has been
already read.
But it is not enough to get rid of the clr_bits and set_bits function.
For example when calling stm32f4_i2c_terminate_xfer(), the CR1
register is never read before so set_bits function is useful.
I didn't double check the manual, but I would expect that CR1 isn't
modified by hardware. So you can cache the result in the driver data
structure and do the necessary modifications with that one.
CR1 is modified by hardware to clear some bits set by software during
the communication.
Best regards
Uwe

--
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Best regards,

Cedric
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help