From 378a0e4ba89892f78fcab64f03f57f99714a1914 Mon Sep 17 00:00:00 2001 From: Moses Christopher Bollavarapu Date: Thu, 17 Mar 2022 14:47:14 +0000 Subject: media: ov7640: Use ARRAY_SIZE instead of manual checking Currently, the driver ends the reg-val list with a 0xFF as a check to stop the loop. Instead an array of reg-vals can be used to avoid this check, by using the ARRAY_SIZE(arr) macro to obtain the length of the array and iterate over it. Signed-off-by: Moses Christopher Bollavarapu Signed-off-by: Sakari Ailus Signed-off-by: Mauro Carvalho Chehab --- drivers/media/i2c/ov7640.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'drivers/media/i2c/ov7640.c') diff --git a/drivers/media/i2c/ov7640.c b/drivers/media/i2c/ov7640.c index 010803d58ce8..977cd2d8ad33 100644 --- a/drivers/media/i2c/ov7640.c +++ b/drivers/media/i2c/ov7640.c @@ -13,23 +13,28 @@ MODULE_DESCRIPTION("OmniVision ov7640 sensor driver"); MODULE_LICENSE("GPL v2"); -static const u8 initial_registers[] = { - 0x12, 0x80, - 0x12, 0x54, - 0x14, 0x24, - 0x15, 0x01, - 0x28, 0x20, - 0x75, 0x82, - 0xFF, 0xFF, /* Terminator (reg 0xFF is unused) */ +struct reg_val { + u8 reg; + u8 val; }; -static int write_regs(struct i2c_client *client, const u8 *regs) -{ - int i; +static const struct reg_val regval_init[] = { + {0x12, 0x80}, + {0x12, 0x54}, + {0x14, 0x24}, + {0x15, 0x01}, + {0x28, 0x20}, + {0x75, 0x82}, +}; - for (i = 0; regs[i] != 0xFF; i += 2) - if (i2c_smbus_write_byte_data(client, regs[i], regs[i + 1]) < 0) +static int write_regs(struct i2c_client *client, + const struct reg_val *rv, int len) +{ + while (--len >= 0) { + if (i2c_smbus_write_byte_data(client, rv->reg, rv->val) < 0) return -1; + rv++; + } return 0; } @@ -56,7 +61,7 @@ static int ov7640_probe(struct i2c_client *client, v4l_info(client, "chip found @ 0x%02x (%s)\n", client->addr << 1, client->adapter->name); - if (write_regs(client, initial_registers) < 0) { + if (write_regs(client, regval_init, ARRAY_SIZE(regval_init)) < 0) { v4l_err(client, "error initializing OV7640\n"); return -ENODEV; } -- cgit v1.2.3