The patch number 8419 was added via Mauro Carvalho Chehab <[EMAIL PROTECTED]> to http://linuxtv.org/hg/v4l-dvb master development tree.
Kernel patches in this development tree may be modified to be backward compatible with older kernels. Compatibility modifications will be removed before inclusion into the mainstream Kernel If anyone has any objections, please let us know by sending a message to: [EMAIL PROTECTED] ------ From: Mauro Carvalho Chehab <[EMAIL PROTECTED]> backport commit 9ad46a6ac5422882d9f9a7f0d77ca0766f56bb6e Author: David Woodhouse <[EMAIL PROTECTED]> Date: Fri May 23 23:58:24 2008 +0100 cx25840: treat firmware data as const kernel-sync: Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]> --- linux/drivers/media/video/cx25840/cx25840-firmware.c | 27 ++++------- 1 file changed, 11 insertions(+), 16 deletions(-) diff -r 0595660d059e -r 2e1b00693b1b linux/drivers/media/video/cx25840/cx25840-firmware.c --- a/linux/drivers/media/video/cx25840/cx25840-firmware.c Sat Jul 19 23:53:41 2008 -0300 +++ b/linux/drivers/media/video/cx25840/cx25840-firmware.c Sun Jul 20 00:00:30 2008 -0300 @@ -80,7 +80,7 @@ static int check_fw_load(struct i2c_clie return 0; } -static int fw_write(struct i2c_client *client, u8 *data, int size) +static int fw_write(struct i2c_client *client, const u8 *data, int size) { if (i2c_master_send(client, data, size) < size) { v4l_err(client, "firmware load i2c failure\n"); @@ -94,7 +94,8 @@ int cx25840_loadfw(struct i2c_client *cl { struct cx25840_state *state = i2c_get_clientdata(client); const struct firmware *fw = NULL; - u8 buffer[4], *ptr; + u8 buffer[FWSEND]; + const u8 *ptr; int size, retval; if (state->is_cx23885) @@ -109,29 +110,23 @@ int cx25840_loadfw(struct i2c_client *cl buffer[0] = 0x08; buffer[1] = 0x02; - buffer[2] = fw->data[0]; - buffer[3] = fw->data[1]; - retval = fw_write(client, buffer, 4); - if (retval < 0) { - release_firmware(fw); - return retval; - } - - size = fw->size - 2; + size = fw->size; ptr = fw->data; while (size > 0) { - ptr[0] = 0x08; - ptr[1] = 0x02; - retval = fw_write(client, ptr, min(FWSEND, size + 2)); + int len = min(FWSEND - 2, size); + + memcpy(buffer + 2, ptr, len); + + retval = fw_write(client, buffer, len + 2); if (retval < 0) { release_firmware(fw); return retval; } - size -= FWSEND - 2; - ptr += FWSEND - 2; + size -= len; + ptr += len; } end_fw_load(client); --- Patch is available at: http://linuxtv.org/hg/v4l-dvb/rev/2e1b00693b1b9ab3685b7793a9eaaff14f37a8ef _______________________________________________ linuxtv-commits mailing list linuxtv-commits@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits