mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 15:11:31 +00:00
media fixes for v3.17-rc6
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJUHt1nAAoJEAhfPr2O5OEVnXoP/0Jc0wZmu69tQgMCMsQg0Tbl dGPECmIm42ZFCIk4+GkLl5YiRH/pPyOoGl2Td/ribPzDpO5zTB5ZN9OA86nGCwEr uselgxPU6s+dIIFwIcltL5P+jUTzEBWpIS20SCY4ntwafcKB1WCcdO6HJo2lpMj0 7+JUPUh5oe4oK9teqhHftfseA3v0S/iIKNhZRQPfHbJyQWYbw9GnKqPkMg35qXnI rB8p6AEmFuL4Oy/uQdQbh+/EtgblhIShpiBsqnm1m6iQGXmDVCzOzZ2quz9IQ2fa OuLkkLcZxBrMBkqnx9s1WZh1Otcej4LfLSr8nULorHOXir96BaKA9ecoeq5gB1CR C2OMuNHq3qFywBDbCqEEUUN6ZBRJ9rByeD+bsNPc6h3krAMpfzZ6Q5g7iFwxlUy6 7/fUdAZTJtf1OzPmS2w4KV9pifoFDK20NNhcjChaf746wv4wu/kXz0PwtBv9QXP4 GKY10psVQbAEAQLqEUgTcSa33lIezlLrTsJW258rwLoH4SxQP970sb6CoBBmxiaB iSbUd2R4f6Bqnq4gX9YkgTPRxOy4amwxGNInu7o54SIKypMZCRMrT3g1SZxfFkg9 mDychCYaunPZ1a35ZejRii1Dr8uC4Nf3Or9B5fpb+3L9e6wo1PxIoMZqlqXSo9H5 HOE6sap0kQay9BHvpLcR =tsEN -----END PGP SIGNATURE----- Merge tag 'media-v3.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media fixes from Mauro Carvalho Chehab: "some media bug fixes: - a Kconfig dependency issue - some fixes for af9033/it913x demod to be more reliable and address a performance regression - cx18: fix an oops on devices with tda8290 tuner - two new USB IDs for af9035 - a couple fixes on smapp driver" * tag 'media-v3.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: [media] af9035: new IDs: add support for PCTV 78e and PCTV 79e [media] af9033: feed clock to RF tuner [media] it913x: init tuner on attach [media] af9033: update IT9135 tuner inittabs [media] Kconfig: do not select SPI bus on sub-driver auto-select [media] cx18: fix kernel oops with tda8290 tuner [media] smiapp: Set sub-device owner [media] smiapp: Fix power count handling
This commit is contained in:
commit
c1f03b4864
@ -182,7 +182,6 @@ config MEDIA_SUBDRV_AUTOSELECT
|
||||
depends on HAS_IOMEM
|
||||
select I2C
|
||||
select I2C_MUX
|
||||
select SPI
|
||||
default y
|
||||
help
|
||||
By default, a media driver auto-selects all possible ancillary
|
||||
|
@ -280,6 +280,8 @@
|
||||
#define USB_PID_PCTV_400E 0x020f
|
||||
#define USB_PID_PCTV_450E 0x0222
|
||||
#define USB_PID_PCTV_452E 0x021f
|
||||
#define USB_PID_PCTV_78E 0x025a
|
||||
#define USB_PID_PCTV_79E 0x0262
|
||||
#define USB_PID_REALTEK_RTL2831U 0x2831
|
||||
#define USB_PID_REALTEK_RTL2832U 0x2832
|
||||
#define USB_PID_TECHNOTREND_CONNECT_S2_3600 0x3007
|
||||
|
@ -314,6 +314,19 @@ static int af9033_init(struct dvb_frontend *fe)
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* feed clock to RF tuner */
|
||||
switch (state->cfg.tuner) {
|
||||
case AF9033_TUNER_IT9135_38:
|
||||
case AF9033_TUNER_IT9135_51:
|
||||
case AF9033_TUNER_IT9135_52:
|
||||
case AF9033_TUNER_IT9135_60:
|
||||
case AF9033_TUNER_IT9135_61:
|
||||
case AF9033_TUNER_IT9135_62:
|
||||
ret = af9033_wr_reg(state, 0x80fba8, 0x00);
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* settings for TS interface */
|
||||
if (state->cfg.ts_mode == AF9033_TS_MODE_USB) {
|
||||
ret = af9033_wr_reg_mask(state, 0x80f9a5, 0x00, 0x01);
|
||||
|
@ -1418,7 +1418,7 @@ static const struct reg_val tuner_init_it9135_60[] = {
|
||||
{ 0x800068, 0x0a },
|
||||
{ 0x80006a, 0x03 },
|
||||
{ 0x800070, 0x0a },
|
||||
{ 0x800071, 0x05 },
|
||||
{ 0x800071, 0x0a },
|
||||
{ 0x800072, 0x02 },
|
||||
{ 0x800075, 0x8c },
|
||||
{ 0x800076, 0x8c },
|
||||
@ -1484,7 +1484,6 @@ static const struct reg_val tuner_init_it9135_60[] = {
|
||||
{ 0x800104, 0x02 },
|
||||
{ 0x800105, 0xbe },
|
||||
{ 0x800106, 0x00 },
|
||||
{ 0x800109, 0x02 },
|
||||
{ 0x800115, 0x0a },
|
||||
{ 0x800116, 0x03 },
|
||||
{ 0x80011a, 0xbe },
|
||||
@ -1510,7 +1509,6 @@ static const struct reg_val tuner_init_it9135_60[] = {
|
||||
{ 0x80014b, 0x8c },
|
||||
{ 0x80014d, 0xac },
|
||||
{ 0x80014e, 0xc6 },
|
||||
{ 0x80014f, 0x03 },
|
||||
{ 0x800151, 0x1e },
|
||||
{ 0x800153, 0xbc },
|
||||
{ 0x800178, 0x09 },
|
||||
@ -1522,9 +1520,10 @@ static const struct reg_val tuner_init_it9135_60[] = {
|
||||
{ 0x80018d, 0x5f },
|
||||
{ 0x80018f, 0xa0 },
|
||||
{ 0x800190, 0x5a },
|
||||
{ 0x80ed02, 0xff },
|
||||
{ 0x80ee42, 0xff },
|
||||
{ 0x80ee82, 0xff },
|
||||
{ 0x800191, 0x00 },
|
||||
{ 0x80ed02, 0x40 },
|
||||
{ 0x80ee42, 0x40 },
|
||||
{ 0x80ee82, 0x40 },
|
||||
{ 0x80f000, 0x0f },
|
||||
{ 0x80f01f, 0x8c },
|
||||
{ 0x80f020, 0x00 },
|
||||
@ -1699,7 +1698,6 @@ static const struct reg_val tuner_init_it9135_61[] = {
|
||||
{ 0x800104, 0x02 },
|
||||
{ 0x800105, 0xc8 },
|
||||
{ 0x800106, 0x00 },
|
||||
{ 0x800109, 0x02 },
|
||||
{ 0x800115, 0x0a },
|
||||
{ 0x800116, 0x03 },
|
||||
{ 0x80011a, 0xc6 },
|
||||
@ -1725,7 +1723,6 @@ static const struct reg_val tuner_init_it9135_61[] = {
|
||||
{ 0x80014b, 0x8c },
|
||||
{ 0x80014d, 0xa8 },
|
||||
{ 0x80014e, 0xc6 },
|
||||
{ 0x80014f, 0x03 },
|
||||
{ 0x800151, 0x28 },
|
||||
{ 0x800153, 0xcc },
|
||||
{ 0x800178, 0x09 },
|
||||
@ -1737,9 +1734,10 @@ static const struct reg_val tuner_init_it9135_61[] = {
|
||||
{ 0x80018d, 0x5f },
|
||||
{ 0x80018f, 0xfb },
|
||||
{ 0x800190, 0x5c },
|
||||
{ 0x80ed02, 0xff },
|
||||
{ 0x80ee42, 0xff },
|
||||
{ 0x80ee82, 0xff },
|
||||
{ 0x800191, 0x00 },
|
||||
{ 0x80ed02, 0x40 },
|
||||
{ 0x80ee42, 0x40 },
|
||||
{ 0x80ee82, 0x40 },
|
||||
{ 0x80f000, 0x0f },
|
||||
{ 0x80f01f, 0x8c },
|
||||
{ 0x80f020, 0x00 },
|
||||
|
@ -1282,19 +1282,12 @@ static int smiapp_set_power(struct v4l2_subdev *subdev, int on)
|
||||
|
||||
mutex_lock(&sensor->power_mutex);
|
||||
|
||||
/*
|
||||
* If the power count is modified from 0 to != 0 or from != 0
|
||||
* to 0, update the power state.
|
||||
*/
|
||||
if (!sensor->power_count == !on)
|
||||
goto out;
|
||||
|
||||
if (on) {
|
||||
if (on && !sensor->power_count) {
|
||||
/* Power on and perform initialisation. */
|
||||
ret = smiapp_power_on(sensor);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
} else {
|
||||
} else if (!on && sensor->power_count == 1) {
|
||||
smiapp_power_off(sensor);
|
||||
}
|
||||
|
||||
@ -2572,7 +2565,7 @@ static int smiapp_registered(struct v4l2_subdev *subdev)
|
||||
|
||||
this->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
|
||||
this->sd.internal_ops = &smiapp_internal_ops;
|
||||
this->sd.owner = NULL;
|
||||
this->sd.owner = THIS_MODULE;
|
||||
v4l2_set_subdevdata(&this->sd, client);
|
||||
|
||||
rval = media_entity_init(&this->sd.entity,
|
||||
|
@ -1091,6 +1091,7 @@ static int cx18_probe(struct pci_dev *pci_dev,
|
||||
setup.addr = ADDR_UNSET;
|
||||
setup.type = cx->options.tuner;
|
||||
setup.mode_mask = T_ANALOG_TV; /* matches TV tuners */
|
||||
setup.config = NULL;
|
||||
if (cx->options.radio > 0)
|
||||
setup.mode_mask |= T_RADIO;
|
||||
setup.tuner_callback = (setup.type == TUNER_XC2028) ?
|
||||
|
@ -396,6 +396,7 @@ struct dvb_frontend *it913x_attach(struct dvb_frontend *fe,
|
||||
struct i2c_adapter *i2c_adap, u8 i2c_addr, u8 config)
|
||||
{
|
||||
struct it913x_state *state = NULL;
|
||||
int ret;
|
||||
|
||||
/* allocate memory for the internal state */
|
||||
state = kzalloc(sizeof(struct it913x_state), GFP_KERNEL);
|
||||
@ -425,6 +426,11 @@ struct dvb_frontend *it913x_attach(struct dvb_frontend *fe,
|
||||
state->tuner_type = config;
|
||||
state->firmware_ver = 1;
|
||||
|
||||
/* tuner RF initial */
|
||||
ret = it913x_wr_reg(state, PRO_DMOD, 0xec4c, 0x68);
|
||||
if (ret < 0)
|
||||
goto error;
|
||||
|
||||
fe->tuner_priv = state;
|
||||
memcpy(&fe->ops.tuner_ops, &it913x_tuner_ops,
|
||||
sizeof(struct dvb_tuner_ops));
|
||||
|
@ -1575,6 +1575,10 @@ static const struct usb_device_id af9035_id_table[] = {
|
||||
&af9035_props, "Leadtek WinFast DTV Dongle Dual", NULL) },
|
||||
{ DVB_USB_DEVICE(USB_VID_HAUPPAUGE, 0xf900,
|
||||
&af9035_props, "Hauppauge WinTV-MiniStick 2", NULL) },
|
||||
{ DVB_USB_DEVICE(USB_VID_PCTV, USB_PID_PCTV_78E,
|
||||
&af9035_props, "PCTV 78e", RC_MAP_IT913X_V1) },
|
||||
{ DVB_USB_DEVICE(USB_VID_PCTV, USB_PID_PCTV_79E,
|
||||
&af9035_props, "PCTV 79e", RC_MAP_IT913X_V2) },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, af9035_id_table);
|
||||
|
Loading…
Reference in New Issue
Block a user