The patch number 9585 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: Devin Heitmueller  <[EMAIL PROTECTED]>
Skip reading eeprom in newer Empia devices


Skip reading eeprom in newer Empia devices


Empia switched to a 16-bit addressable eeprom in newer devices.  While we
could certainly write a routine to read the eeprom, there is nothing of use
in there that cannot be accessed through registers, and there is the risk that
we could corrupt the eeprom (since a 16-bit read call is interpreted as a
write call by 8-bit eeproms).  So just be safe and bail out of the function.

Thanks for Ray Lu from Empia for providing the em2874 datasheet.

Signed-off-by: Devin Heitmueller <[EMAIL PROTECTED]>
Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>


---

 linux/drivers/media/video/em28xx/em28xx-i2c.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff -r 6941f46ad815 -r 3c9853f2e924 
linux/drivers/media/video/em28xx/em28xx-i2c.c
--- a/linux/drivers/media/video/em28xx/em28xx-i2c.c     Wed Nov 12 05:05:06 
2008 +0000
+++ b/linux/drivers/media/video/em28xx/em28xx-i2c.c     Wed Nov 12 05:05:10 
2008 +0000
@@ -332,6 +332,17 @@ static int em28xx_i2c_eeprom(struct em28
        struct em28xx_eeprom *em_eeprom = (void *)eedata;
        int i, err, size = len, block;
 
+       if (dev->chip_id == CHIP_ID_EM2874) {
+               /* Empia switched to a 16-bit addressable eeprom in newer
+                  devices.  While we could certainly write a routine to read
+                  the eeprom, there is nothing of use in there that cannot be
+                  accessed through registers, and there is the risk that we
+                  could corrupt the eeprom (since a 16-bit read call is
+                  interpreted as a write call by 8-bit eeproms).
+               */
+               return 0;
+       }
+
        dev->i2c_client.addr = 0xa0 >> 1;
 
        /* Check if board has eeprom */


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/3c9853f2e924729f7a5f6b9daa019f5ccb75887d

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to