The patch number 12614 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:
Linux Media Mailing List <[email protected]>
------
From: Mauro Carvalho Chehab <[email protected]>
merge: http://www.linuxtv.org/hg/~hverkuil/v4l-dvb
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
linux/drivers/media/radio/si4713-i2c.c | 17 +----
linux/drivers/media/video/cx25840/cx25840-firmware.c | 35 ++++++-----
v4l/versions.txt | 19 ++++-
3 files changed, 40 insertions(+), 31 deletions(-)
diff -r be01f82499cc -r fd679bbd8bb3 linux/drivers/media/radio/si4713-i2c.c
--- a/linux/drivers/media/radio/si4713-i2c.c Mon Aug 31 23:14:06 2009 -0300
+++ b/linux/drivers/media/radio/si4713-i2c.c Tue Sep 01 10:43:46 2009 -0300
@@ -1841,15 +1841,11 @@
u16 stereo, rds;
u32 p;
- if (!sdev) {
- rval = -ENODEV;
- goto exit;
- }
+ if (!sdev)
+ return -ENODEV;
- if (vm->index > 0) {
- rval = -EINVAL;
- goto exit;
- }
+ if (vm->index > 0)
+ return -EINVAL;
/* Set audio mode: mono or stereo */
if (vm->txsubchans & V4L2_TUNER_SUB_STEREO)
@@ -1857,9 +1853,7 @@
else if (vm->txsubchans & V4L2_TUNER_SUB_MONO)
stereo = 0;
else
- rval = -EINVAL;
- if (rval < 0)
- goto exit;
+ return -EINVAL;
rds = !!(vm->txsubchans & V4L2_TUNER_SUB_RDS);
@@ -1885,7 +1879,6 @@
unlock:
mutex_unlock(&sdev->mutex);
-exit:
return rval;
}
diff -r be01f82499cc -r fd679bbd8bb3
linux/drivers/media/video/cx25840/cx25840-firmware.c
--- a/linux/drivers/media/video/cx25840/cx25840-firmware.c Mon Aug 31
23:14:06 2009 -0300
+++ b/linux/drivers/media/video/cx25840/cx25840-firmware.c Tue Sep 01
10:43:46 2009 -0300
@@ -24,10 +24,6 @@
#include "cx25840-core.h"
-#define FWFILE "v4l-cx25840.fw"
-#define FWFILE_CX23885 "v4l-cx23885-avcore-01.fw"
-#define FWFILE_CX231XX "v4l-cx231xx-avcore-01.fw"
-
/*
* Mike Isely <[email protected]> - The FWSEND parameter controls the
* size of the firmware chunks sent down the I2C bus to the chip.
@@ -41,11 +37,11 @@
#define FWDEV(x) &((x)->dev)
-static char *firmware = FWFILE;
+static char *firmware = "";
module_param(firmware, charp, 0444);
-MODULE_PARM_DESC(firmware, "Firmware image [default: " FWFILE "]");
+MODULE_PARM_DESC(firmware, "Firmware image to load");
static void start_fw_load(struct i2c_client *client)
{
@@ -66,6 +62,19 @@
cx25840_write(client, 0x803, 0x03);
}
+static const char *get_fw_name(struct i2c_client *client)
+{
+ struct cx25840_state *state = to_state(i2c_get_clientdata(client));
+
+ if (firmware[0])
+ return firmware;
+ if (state->is_cx23885)
+ return "v4l-cx23885-avcore-01.fw";
+ if (state->is_cx231xx)
+ return "v4l-cx231xx-avcore-01.fw";
+ return "v4l-cx25840.fw";
+}
+
static int check_fw_load(struct i2c_client *client, int size)
{
/* DL_ADDR_HB DL_ADDR_LB */
@@ -73,11 +82,13 @@
s |= cx25840_read(client, 0x800);
if (size != s) {
- v4l_err(client, "firmware %s load failed\n", firmware);
+ v4l_err(client, "firmware %s load failed\n",
+ get_fw_name(client));
return -EINVAL;
}
- v4l_info(client, "loaded %s firmware (%d bytes)\n", firmware, size);
+ v4l_info(client, "loaded %s firmware (%d bytes)\n",
+ get_fw_name(client), size);
return 0;
}
@@ -97,26 +108,24 @@
const struct firmware *fw = NULL;
u8 buffer[FWSEND];
const u8 *ptr;
+ const char *fwname = get_fw_name(client);
int size, retval;
int MAX_BUF_SIZE = FWSEND;
u32 gpio_oe = 0, gpio_da = 0;
if (state->is_cx23885) {
- firmware = FWFILE_CX23885;
/* Preserve the GPIO OE and output bits */
gpio_oe = cx25840_read(client, 0x160);
gpio_da = cx25840_read(client, 0x164);
}
- else if (state->is_cx231xx)
- firmware = FWFILE_CX231XX;
if ((state->is_cx231xx) && MAX_BUF_SIZE > 16) {
v4l_err(client, " Firmware download size changed to 16 bytes
max length\n");
MAX_BUF_SIZE = 16; /* cx231xx cannot accept more than 16 bytes
at a time */
}
- if (request_firmware(&fw, firmware, FWDEV(client)) != 0) {
- v4l_err(client, "unable to open firmware %s\n", firmware);
+ if (request_firmware(&fw, fwname, FWDEV(client)) != 0) {
+ v4l_err(client, "unable to open firmware %s\n", fwname);
return -EINVAL;
}
diff -r be01f82499cc -r fd679bbd8bb3 v4l/versions.txt
--- a/v4l/versions.txt Mon Aug 31 23:14:06 2009 -0300
+++ b/v4l/versions.txt Tue Sep 01 10:43:46 2009 -0300
@@ -12,6 +12,17 @@
# Needs defines that are only available from 2.6.29
VIDEO_PXA27x
+[2.6.28]
+# dev_get_drvdata switched to const struct device *
+SOC_CAMERA
+SOC_CAMERA_MT9V022
+SOC_CAMERA_MT9M001
+SOC_CAMERA_MT9M111
+SOC_CAMERA_MT9T031
+SOC_CAMERA_OV772X
+SOC_CAMERA_TW9910
+SOC_CAMERA_PLATFORM
+
[2.6.26]
# Requires struct i2c_device_id
VIDEO_TVP514X
@@ -19,12 +30,8 @@
RADIO_TEA5764
VIDEO_THS7303
VIDEO_ADV7343
-
-[2.6.25]
-# Requires gpiolib
-SOC_CAMERA
-SOC_CAMERA_MT9V022
-SOC_CAMERA_MT9M001
+RADIO_SI4713
+I2C_SI4713
[2.6.24]
# Some freezer routines
---
Patch is available at:
http://linuxtv.org/hg/v4l-dvb/rev/fd679bbd8bb351a63273c0f7c1fa9307e8e07189
_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits