Commit 378a0e4b authored by Moses Christopher Bollavarapu's avatar Moses Christopher Bollavarapu Committed by Mauro Carvalho Chehab

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: default avatarMoses Christopher Bollavarapu <mosescb.dev@gmail.com>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 7dd0f93a
...@@ -13,23 +13,28 @@ ...@@ -13,23 +13,28 @@
MODULE_DESCRIPTION("OmniVision ov7640 sensor driver"); MODULE_DESCRIPTION("OmniVision ov7640 sensor driver");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
static const u8 initial_registers[] = { struct reg_val {
0x12, 0x80, u8 reg;
0x12, 0x54, u8 val;
0x14, 0x24,
0x15, 0x01,
0x28, 0x20,
0x75, 0x82,
0xFF, 0xFF, /* Terminator (reg 0xFF is unused) */
}; };
static int write_regs(struct i2c_client *client, const u8 *regs) static const struct reg_val regval_init[] = {
{ {0x12, 0x80},
int i; {0x12, 0x54},
{0x14, 0x24},
{0x15, 0x01},
{0x28, 0x20},
{0x75, 0x82},
};
for (i = 0; regs[i] != 0xFF; i += 2) static int write_regs(struct i2c_client *client,
if (i2c_smbus_write_byte_data(client, regs[i], regs[i + 1]) < 0) const struct reg_val *rv, int len)
{
while (--len >= 0) {
if (i2c_smbus_write_byte_data(client, rv->reg, rv->val) < 0)
return -1; return -1;
rv++;
}
return 0; return 0;
} }
...@@ -56,7 +61,7 @@ static int ov7640_probe(struct i2c_client *client, ...@@ -56,7 +61,7 @@ static int ov7640_probe(struct i2c_client *client,
v4l_info(client, "chip found @ 0x%02x (%s)\n", v4l_info(client, "chip found @ 0x%02x (%s)\n",
client->addr << 1, client->adapter->name); 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"); v4l_err(client, "error initializing OV7640\n");
return -ENODEV; return -ENODEV;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment