Commit 4063987c authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Mauro Carvalho Chehab

[media] cx231xx-i2c: reduce stack size in bus scan

The cx231xx_do_i2c_scan function needs a lot of stack because
it puts an i2c_client structure on it:

drivers/media/usb/cx231xx/cx231xx-i2c.c: In function 'cx231xx_do_i2c_scan':
drivers/media/usb/cx231xx/cx231xx-i2c.c:518:1: error: the frame size of 1248 bytes is larger than 1152 bytes [-Werror=frame-larger-than=]

This changes it to call i2c_transfer() directly instead, avoiding the
need for the structure.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 6830733d
...@@ -491,20 +491,24 @@ void cx231xx_do_i2c_scan(struct cx231xx *dev, int i2c_port) ...@@ -491,20 +491,24 @@ void cx231xx_do_i2c_scan(struct cx231xx *dev, int i2c_port)
{ {
unsigned char buf; unsigned char buf;
int i, rc; int i, rc;
struct i2c_client client; struct i2c_adapter *adap;
struct i2c_msg msg = {
.flags = I2C_M_RD,
.len = 1,
.buf = &buf,
};
if (!i2c_scan) if (!i2c_scan)
return; return;
/* Don't generate I2C errors during scan */ /* Don't generate I2C errors during scan */
dev->i2c_scan_running = true; dev->i2c_scan_running = true;
adap = cx231xx_get_i2c_adap(dev, i2c_port);
memset(&client, 0, sizeof(client));
client.adapter = cx231xx_get_i2c_adap(dev, i2c_port);
for (i = 0; i < 128; i++) { for (i = 0; i < 128; i++) {
client.addr = i; msg.addr = i;
rc = i2c_master_recv(&client, &buf, 0); rc = i2c_transfer(adap, &msg, 1);
if (rc < 0) if (rc < 0)
continue; continue;
dev_info(dev->dev, dev_info(dev->dev,
......
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