Thread (23 messages) 23 messages, 5 authors, 2022-03-07

Re: [PATCH v6 6/9] misc: smpro-errmon: Add Ampere's SMpro error monitor driver

From: Mark Brown <broonie@kernel.org>
Date: 2021-12-24 13:29:09
Also in: linux-aspeed, linux-devicetree, linux-hwmon, lkml, openbmc

On Fri, Dec 24, 2021 at 11:13:49AM +0700, Quan Nguyen wrote:
+static int read_i2c_block_data(struct i2c_client *client, u16 address, u16 length, u8 *data)
+{
+	unsigned char outbuf[MAX_READ_BLOCK_LENGTH];
+	unsigned char inbuf[2];
+	struct i2c_msg msgs[2];
+	ssize_t ret;
+
+	inbuf[0] = (address & 0xff);
+	inbuf[1] = length;
+
+	msgs[0].addr = client->addr;
+	msgs[0].flags = client->flags & I2C_M_TEN;
+	msgs[0].len = 2;
+	msgs[0].buf = inbuf;
+
+	msgs[1].addr = client->addr;
+	msgs[1].flags = (client->flags  & I2C_M_TEN) | I2C_M_RD;
+	msgs[1].len = length;
+	msgs[1].buf = outbuf;
+
+	ret = i2c_transfer(client->adapter, msgs, NUM_I2C_MESSAGES);
+	if (ret < 0)
regmap already supports bulk data access so it's not clear why we
would open code this.  Given that this is a single I2C transfer
it's also unclear why we'd need to export the regmap lock - a
single I2C transfer is atomic at the bus level so the regmap lock
isn't providing any additional concurrency protection.

Attachments

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