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

Reply via email to