[kernel/f16] Add the Kernel patches that are ready for submission for 3.4
mchehab
mchehab at fedoraproject.org
Tue Apr 10 17:05:43 UTC 2012
commit 69cea03fff38b1092bc280e466c4dafaf9f1b0de
Author: Mauro Carvalho Chehab <mchehab at redhat.com>
Date: Tue Apr 10 14:01:48 2012 -0300
Add the Kernel patches that are ready for submission for 3.4
Those patches contain important fixes, expecially the one
for BZ#808871 and BZ#807052, at the DVB core.
Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
drivers-media-update.patch | 151 +++++++++++++++++++++++++++++++++++++++-----
kernel.spec | 5 +-
2 files changed, 139 insertions(+), 17 deletions(-)
---
diff --git a/drivers-media-update.patch b/drivers-media-update.patch
index d0f98a2..b24f2a0 100644
--- a/drivers-media-update.patch
+++ b/drivers-media-update.patch
@@ -2352,7 +2352,7 @@ Index: linux-3.3.x86_64/drivers/media/video/ivtv/ivtv-ioctl.c
- itv->audio_stereo_mode = iarg;
- ivtv_vapi(itv, CX2341X_DEC_SET_AUDIO_MODE, 2, itv->audio_bilingual_mode, itv->audio_stereo_mode);
- return 0;
-+ return v4l2_ctrl_s_ctrl(itv->ctrl_audio_playback, iarg);
++ return v4l2_ctrl_s_ctrl(itv->ctrl_audio_playback, iarg + 1);
case AUDIO_BILINGUAL_CHANNEL_SELECT:
IVTV_DEBUG_IOCTL("AUDIO_BILINGUAL_CHANNEL_SELECT\n");
@@ -2361,7 +2361,7 @@ Index: linux-3.3.x86_64/drivers/media/video/ivtv/ivtv-ioctl.c
- itv->audio_bilingual_mode = iarg;
- ivtv_vapi(itv, CX2341X_DEC_SET_AUDIO_MODE, 2, itv->audio_bilingual_mode, itv->audio_stereo_mode);
- return 0;
-+ return v4l2_ctrl_s_ctrl(itv->ctrl_audio_multilingual_playback, iarg);
++ return v4l2_ctrl_s_ctrl(itv->ctrl_audio_multilingual_playback, iarg + 1);
default:
return -EINVAL;
@@ -2516,7 +2516,39 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
};
struct ite_config it913x_config;
-@@ -259,15 +260,16 @@ static u32 it913x_query(struct usb_devic
+@@ -237,12 +238,27 @@ static int it913x_read_reg(struct usb_de
+
+ static u32 it913x_query(struct usb_device *udev, u8 pro)
+ {
+- int ret;
++ int ret, i;
+ u8 data[4];
+- ret = it913x_io(udev, READ_LONG, pro, CMD_DEMOD_READ,
+- 0x1222, 0, &data[0], 3);
++ u8 ver;
++
++ for (i = 0; i < 5; i++) {
++ ret = it913x_io(udev, READ_LONG, pro, CMD_DEMOD_READ,
++ 0x1222, 0, &data[0], 3);
++ ver = data[0];
++ if (ver > 0 && ver < 3)
++ break;
++ msleep(100);
++ }
+
+- it913x_config.chip_ver = data[0];
++ if (ver < 1 || ver > 2) {
++ info("Failed to identify chip version applying 1");
++ it913x_config.chip_ver = 0x1;
++ it913x_config.chip_type = 0x9135;
++ return 0;
++ }
++
++ it913x_config.chip_ver = ver;
+ it913x_config.chip_type = (u16)(data[2] << 8) + data[1];
+
+ info("Chip Version=%02x Chip Type=%04x", it913x_config.chip_ver,
+@@ -259,15 +275,16 @@ static u32 it913x_query(struct usb_devic
static int it913x_pid_filter_ctrl(struct dvb_usb_adapter *adap, int onoff)
{
@@ -2536,7 +2568,7 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
mutex_unlock(&adap->dev->i2c_mutex);
return ret;
-@@ -276,12 +278,13 @@ static int it913x_pid_filter_ctrl(struct
+@@ -276,12 +293,13 @@ static int it913x_pid_filter_ctrl(struct
static int it913x_pid_filter(struct dvb_usb_adapter *adap,
int index, u16 pid, int onoff)
{
@@ -2552,7 +2584,7 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
deb_info(1, "PID_F (%02x)", onoff);
ret = it913x_wr_reg(udev, pro, PID_LSB, (u8)(pid & 0xff));
-@@ -292,6 +295,13 @@ static int it913x_pid_filter(struct dvb_
+@@ -292,6 +310,13 @@ static int it913x_pid_filter(struct dvb_
ret |= it913x_wr_reg(udev, pro, PID_INX, (u8)(index & 0x1f));
@@ -2566,7 +2598,7 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
mutex_unlock(&adap->dev->i2c_mutex);
return 0;
}
-@@ -316,8 +326,8 @@ static int it913x_i2c_xfer(struct i2c_ad
+@@ -316,8 +341,8 @@ static int it913x_i2c_xfer(struct i2c_ad
int ret;
u32 reg;
u8 pro;
@@ -2577,7 +2609,7 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
debug_data_snipet(1, "Message out", msg[0].buf);
deb_info(2, "num of messages %d address %02x", num, msg[0].addr);
-@@ -358,8 +368,7 @@ static int it913x_rc_query(struct dvb_us
+@@ -358,8 +383,7 @@ static int it913x_rc_query(struct dvb_us
int ret;
u32 key;
/* Avoid conflict with frontends*/
@@ -2587,7 +2619,7 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
ret = it913x_io(d->udev, READ_LONG, PRO_LINK, CMD_IR_GET,
0, 0, &ibuf[0], sizeof(ibuf));
-@@ -388,19 +397,12 @@ static int ite_firmware_select(struct us
+@@ -388,19 +412,12 @@ static int ite_firmware_select(struct us
{
int sw;
/* auto switch */
@@ -2611,7 +2643,7 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
/* force switch */
if (dvb_usb_it913x_firmware != IT9135_AUTO)
-@@ -410,41 +412,103 @@ static int ite_firmware_select(struct us
+@@ -410,41 +427,103 @@ static int ite_firmware_select(struct us
case IT9135_V1_FW:
it913x_config.firmware_ver = 1;
it913x_config.adc_x2 = 1;
@@ -2724,7 +2756,7 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
if (udev->speed != USB_SPEED_HIGH) {
props->adapter[0].fe[0].pid_filter_count = 5;
-@@ -459,17 +523,6 @@ static int it913x_identify_state(struct
+@@ -459,17 +538,6 @@ static int it913x_identify_state(struct
if(props->adapter[0].fe[0].pid_filter_count == 5)
props->adapter[0].fe[0].pid_filter_count = 31;
@@ -2742,7 +2774,7 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
/* Select Stream Buffer Size and pid filter option*/
if (pid_filter) {
props->adapter[0].fe[0].stream.u.bulk.buffersize =
-@@ -490,8 +543,29 @@ static int it913x_identify_state(struct
+@@ -490,8 +558,29 @@ static int it913x_identify_state(struct
} else
props->num_adapters = 1;
@@ -2772,7 +2804,7 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
if (firm_no > 0) {
*cold = 0;
return 0;
-@@ -538,18 +612,22 @@ static int it913x_identify_state(struct
+@@ -538,18 +627,22 @@ static int it913x_identify_state(struct
static int it913x_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
{
@@ -2799,7 +2831,58 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
return ret;
}
-@@ -789,7 +867,7 @@ static struct dvb_usb_device_properties
+@@ -582,30 +675,41 @@ static int it913x_download_firmware(stru
+ if ((packet_size > min_pkt) || (i == fw->size)) {
+ fw_data = (u8 *)(fw->data + pos);
+ pos += packet_size;
+- if (packet_size > 0)
+- ret |= it913x_io(udev, WRITE_DATA,
++ if (packet_size > 0) {
++ ret = it913x_io(udev, WRITE_DATA,
+ DEV_0, CMD_SCATTER_WRITE, 0,
+ 0, fw_data, packet_size);
++ if (ret < 0)
++ break;
++ }
+ udelay(1000);
+ }
+ }
+ i++;
+ }
+
+- ret |= it913x_io(udev, WRITE_CMD, DEV_0, CMD_BOOT, 0, 0, NULL, 0);
+-
+- msleep(100);
+-
+ if (ret < 0)
+- info("FRM Firmware Download Failed (%04x)" , ret);
++ info("FRM Firmware Download Failed (%d)" , ret);
+ else
+ info("FRM Firmware Download Completed - Resetting Device");
+
+- ret |= it913x_return_status(udev);
++ msleep(30);
++
++ ret = it913x_io(udev, WRITE_CMD, DEV_0, CMD_BOOT, 0, 0, NULL, 0);
++ if (ret < 0)
++ info("FRM Device not responding to reboot");
++
++ ret = it913x_return_status(udev);
++ if (ret == 0) {
++ info("FRM Failed to reboot device");
++ return -ENODEV;
++ }
+
+ msleep(30);
+
+- ret |= it913x_wr_reg(udev, DEV_0, I2C_CLK, I2C_CLK_400);
++ ret = it913x_wr_reg(udev, DEV_0, I2C_CLK, I2C_CLK_400);
++
++ msleep(30);
+
+ /* Tuner function */
+ if (it913x_config.dual_mode)
+@@ -789,7 +893,7 @@ static struct dvb_usb_device_properties
.rc_query = it913x_rc_query,
.rc_interval = IT913X_POLL,
.allowed_protos = RC_TYPE_NEC,
@@ -2808,12 +2891,12 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-usb/it913x.c
},
.i2c_algo = &it913x_i2c_algo,
.num_device_descs = 5,
-@@ -823,5 +901,5 @@ module_usb_driver(it913x_driver);
+@@ -823,5 +927,5 @@ module_usb_driver(it913x_driver);
MODULE_AUTHOR("Malcolm Priestley <tvboxspy at gmail.com>");
MODULE_DESCRIPTION("it913x USB 2 Driver");
-MODULE_VERSION("1.22");
-+MODULE_VERSION("1.27");
++MODULE_VERSION("1.28");
MODULE_LICENSE("GPL");
Index: linux-3.3.x86_64/drivers/base/driver.c
===================================================================
@@ -10356,7 +10439,21 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-core/dvb_frontend.c
===================================================================
--- linux-3.3.x86_64.orig/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ linux-3.3.x86_64/drivers/media/dvb/dvb-core/dvb_frontend.c
-@@ -655,6 +655,8 @@ restart:
+@@ -143,10 +143,12 @@ struct dvb_frontend_private {
+ static void dvb_frontend_wakeup(struct dvb_frontend *fe);
+ static int dtv_get_frontend(struct dvb_frontend *fe,
+ struct dvb_frontend_parameters *p_out);
++static int dtv_property_legacy_params_sync(struct dvb_frontend *fe,
++ struct dvb_frontend_parameters *p);
+
+ static bool has_get_frontend(struct dvb_frontend *fe)
+ {
+- return fe->ops.get_frontend;
++ return fe->ops.get_frontend != NULL;
+ }
+
+ /*
+@@ -655,6 +657,8 @@ restart:
dprintk("%s: Retune requested, FESTATE_RETUNE\n", __func__);
re_tune = true;
fepriv->state = FESTATE_TUNED;
@@ -10365,6 +10462,28 @@ Index: linux-3.3.x86_64/drivers/media/dvb/dvb-core/dvb_frontend.c
}
if (fe->ops.tune)
+@@ -695,6 +699,7 @@ restart:
+ fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN;
+ fepriv->delay = HZ / 2;
+ }
++ dtv_property_legacy_params_sync(fe, &fepriv->parameters_out);
+ fe->ops.read_status(fe, &s);
+ if (s != fepriv->status) {
+ dvb_frontend_add_event(fe, s); /* update event list */
+@@ -1831,6 +1836,13 @@ static int dtv_set_frontend(struct dvb_f
+ return -EINVAL;
+
+ /*
++ * Initialize output parameters to match the values given by
++ * the user. FE_SET_FRONTEND triggers an initial frontend event
++ * with status = 0, which copies output parameters to userspace.
++ */
++ dtv_property_legacy_params_sync(fe, &fepriv->parameters_out);
++
++ /*
+ * Be sure that the bandwidth will be filled for all
+ * non-satellite systems, as tuners need to know what
+ * low pass/Nyquist half filter should be applied, in
Index: linux-3.3.x86_64/drivers/media/common/tuners/xc5000.c
===================================================================
--- linux-3.3.x86_64.orig/drivers/media/common/tuners/xc5000.c
diff --git a/kernel.spec b/kernel.spec
index c21dc3e..8319ecd 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -54,7 +54,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be appended after the rcX and
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
#
-%global baserelease 4
+%global baserelease 5
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@@ -2236,6 +2236,9 @@ fi
# and build.
%changelog
+* Tue Apr 10 2012 Mauro Carvalho Chehab <mchehab at redhat.com>
+- Backport dvb-core and a few driver fixes from media tree (rhbz808871)
+
* Tue Apr 10 2012 Josh Boyer <jwboyer at redhat.com>
- Backport fixes for correct register constraints in cmpxchg.h (rhbz 809014)
More information about the scm-commits
mailing list