diff options
| -rw-r--r-- | drivers/media/dvb/dvb-core/dvb_frontend.c | 8 | ||||
| -rw-r--r-- | drivers/media/radio/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/media/rc/mceusb.c | 9 | ||||
| -rw-r--r-- | drivers/media/rc/nuvoton-cir.c | 2 | ||||
| -rw-r--r-- | drivers/media/video/cx23885/cx23885-core.c | 9 | ||||
| -rw-r--r-- | drivers/media/video/tuner-core.c | 16 |
6 files changed, 30 insertions, 18 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c index 98278041d75f..5b6b451d4694 100644 --- a/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb/dvb-core/dvb_frontend.c | |||
| @@ -1988,6 +1988,14 @@ static int dvb_frontend_open(struct inode *inode, struct file *file) | |||
| 1988 | if (dvbdev->users == -1 && fe->ops.ts_bus_ctrl) { | 1988 | if (dvbdev->users == -1 && fe->ops.ts_bus_ctrl) { |
| 1989 | if ((ret = fe->ops.ts_bus_ctrl(fe, 1)) < 0) | 1989 | if ((ret = fe->ops.ts_bus_ctrl(fe, 1)) < 0) |
| 1990 | goto err0; | 1990 | goto err0; |
| 1991 | |||
| 1992 | /* If we took control of the bus, we need to force | ||
| 1993 | reinitialization. This is because many ts_bus_ctrl() | ||
| 1994 | functions strobe the RESET pin on the demod, and if the | ||
| 1995 | frontend thread already exists then the dvb_init() routine | ||
| 1996 | won't get called (which is what usually does initial | ||
| 1997 | register configuration). */ | ||
| 1998 | fepriv->reinitialise = 1; | ||
| 1991 | } | 1999 | } |
| 1992 | 2000 | ||
| 1993 | if ((ret = dvb_generic_open (inode, file)) < 0) | 2001 | if ((ret = dvb_generic_open (inode, file)) < 0) |
diff --git a/drivers/media/radio/Kconfig b/drivers/media/radio/Kconfig index e4c97fd6f05a..52798a111e16 100644 --- a/drivers/media/radio/Kconfig +++ b/drivers/media/radio/Kconfig | |||
| @@ -168,7 +168,7 @@ config RADIO_MAXIRADIO | |||
| 168 | 168 | ||
| 169 | config RADIO_MIROPCM20 | 169 | config RADIO_MIROPCM20 |
| 170 | tristate "miroSOUND PCM20 radio" | 170 | tristate "miroSOUND PCM20 radio" |
| 171 | depends on ISA && VIDEO_V4L2 && SND | 171 | depends on ISA && ISA_DMA_API && VIDEO_V4L2 && SND |
| 172 | select SND_ISA | 172 | select SND_ISA |
| 173 | select SND_MIRO | 173 | select SND_MIRO |
| 174 | ---help--- | 174 | ---help--- |
| @@ -201,7 +201,7 @@ config RADIO_SF16FMI | |||
| 201 | 201 | ||
| 202 | config RADIO_SF16FMR2 | 202 | config RADIO_SF16FMR2 |
| 203 | tristate "SF16FMR2 Radio" | 203 | tristate "SF16FMR2 Radio" |
| 204 | depends on ISA && VIDEO_V4L2 | 204 | depends on ISA && VIDEO_V4L2 && SND |
| 205 | ---help--- | 205 | ---help--- |
| 206 | Choose Y here if you have one of these FM radio cards. | 206 | Choose Y here if you have one of these FM radio cards. |
| 207 | 207 | ||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c index 06dfe0957b5e..ec972dc25790 100644 --- a/drivers/media/rc/mceusb.c +++ b/drivers/media/rc/mceusb.c | |||
| @@ -558,9 +558,10 @@ static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf, | |||
| 558 | inout, data1); | 558 | inout, data1); |
| 559 | break; | 559 | break; |
| 560 | case MCE_CMD_S_TIMEOUT: | 560 | case MCE_CMD_S_TIMEOUT: |
| 561 | /* value is in units of 50us, so x*50/100 or x/2 ms */ | 561 | /* value is in units of 50us, so x*50/1000 ms */ |
| 562 | dev_info(dev, "%s receive timeout of %d ms\n", | 562 | dev_info(dev, "%s receive timeout of %d ms\n", |
| 563 | inout, ((data1 << 8) | data2) / 2); | 563 | inout, |
| 564 | ((data1 << 8) | data2) * MCE_TIME_UNIT / 1000); | ||
| 564 | break; | 565 | break; |
| 565 | case MCE_CMD_G_TIMEOUT: | 566 | case MCE_CMD_G_TIMEOUT: |
| 566 | dev_info(dev, "Get receive timeout\n"); | 567 | dev_info(dev, "Get receive timeout\n"); |
| @@ -847,7 +848,7 @@ static void mceusb_handle_command(struct mceusb_dev *ir, int index) | |||
| 847 | switch (ir->buf_in[index]) { | 848 | switch (ir->buf_in[index]) { |
| 848 | /* 2-byte return value commands */ | 849 | /* 2-byte return value commands */ |
| 849 | case MCE_CMD_S_TIMEOUT: | 850 | case MCE_CMD_S_TIMEOUT: |
| 850 | ir->rc->timeout = US_TO_NS((hi << 8 | lo) / 2); | 851 | ir->rc->timeout = US_TO_NS((hi << 8 | lo) * MCE_TIME_UNIT); |
| 851 | break; | 852 | break; |
| 852 | 853 | ||
| 853 | /* 1-byte return value commands */ | 854 | /* 1-byte return value commands */ |
| @@ -1078,7 +1079,7 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir) | |||
| 1078 | rc->priv = ir; | 1079 | rc->priv = ir; |
| 1079 | rc->driver_type = RC_DRIVER_IR_RAW; | 1080 | rc->driver_type = RC_DRIVER_IR_RAW; |
| 1080 | rc->allowed_protos = RC_TYPE_ALL; | 1081 | rc->allowed_protos = RC_TYPE_ALL; |
| 1081 | rc->timeout = US_TO_NS(1000); | 1082 | rc->timeout = MS_TO_NS(100); |
| 1082 | if (!ir->flags.no_tx) { | 1083 | if (!ir->flags.no_tx) { |
| 1083 | rc->s_tx_mask = mceusb_set_tx_mask; | 1084 | rc->s_tx_mask = mceusb_set_tx_mask; |
| 1084 | rc->s_tx_carrier = mceusb_set_tx_carrier; | 1085 | rc->s_tx_carrier = mceusb_set_tx_carrier; |
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c index 565f24c20d77..ce595f9ab4c7 100644 --- a/drivers/media/rc/nuvoton-cir.c +++ b/drivers/media/rc/nuvoton-cir.c | |||
| @@ -1110,7 +1110,7 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id) | |||
| 1110 | rdev->dev.parent = &pdev->dev; | 1110 | rdev->dev.parent = &pdev->dev; |
| 1111 | rdev->driver_name = NVT_DRIVER_NAME; | 1111 | rdev->driver_name = NVT_DRIVER_NAME; |
| 1112 | rdev->map_name = RC_MAP_RC6_MCE; | 1112 | rdev->map_name = RC_MAP_RC6_MCE; |
| 1113 | rdev->timeout = US_TO_NS(1000); | 1113 | rdev->timeout = MS_TO_NS(100); |
| 1114 | /* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */ | 1114 | /* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */ |
| 1115 | rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD); | 1115 | rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD); |
| 1116 | #if 0 | 1116 | #if 0 |
diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c index 64d9b2136ff6..419777a832ee 100644 --- a/drivers/media/video/cx23885/cx23885-core.c +++ b/drivers/media/video/cx23885/cx23885-core.c | |||
| @@ -2060,12 +2060,8 @@ static int __devinit cx23885_initdev(struct pci_dev *pci_dev, | |||
| 2060 | goto fail_irq; | 2060 | goto fail_irq; |
| 2061 | } | 2061 | } |
| 2062 | 2062 | ||
| 2063 | if (!pci_enable_msi(pci_dev)) | 2063 | err = request_irq(pci_dev->irq, cx23885_irq, |
| 2064 | err = request_irq(pci_dev->irq, cx23885_irq, | 2064 | IRQF_SHARED | IRQF_DISABLED, dev->name, dev); |
| 2065 | IRQF_DISABLED, dev->name, dev); | ||
| 2066 | else | ||
| 2067 | err = request_irq(pci_dev->irq, cx23885_irq, | ||
| 2068 | IRQF_SHARED | IRQF_DISABLED, dev->name, dev); | ||
| 2069 | if (err < 0) { | 2065 | if (err < 0) { |
| 2070 | printk(KERN_ERR "%s: can't get IRQ %d\n", | 2066 | printk(KERN_ERR "%s: can't get IRQ %d\n", |
| 2071 | dev->name, pci_dev->irq); | 2067 | dev->name, pci_dev->irq); |
| @@ -2114,7 +2110,6 @@ static void __devexit cx23885_finidev(struct pci_dev *pci_dev) | |||
| 2114 | 2110 | ||
| 2115 | /* unregister stuff */ | 2111 | /* unregister stuff */ |
| 2116 | free_irq(pci_dev->irq, dev); | 2112 | free_irq(pci_dev->irq, dev); |
| 2117 | pci_disable_msi(pci_dev); | ||
| 2118 | 2113 | ||
| 2119 | cx23885_dev_unregister(dev); | 2114 | cx23885_dev_unregister(dev); |
| 2120 | v4l2_device_unregister(v4l2_dev); | 2115 | v4l2_device_unregister(v4l2_dev); |
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c index cfa9f7efe93d..a03945ab9f08 100644 --- a/drivers/media/video/tuner-core.c +++ b/drivers/media/video/tuner-core.c | |||
| @@ -714,10 +714,19 @@ static int tuner_remove(struct i2c_client *client) | |||
| 714 | * returns 0. | 714 | * returns 0. |
| 715 | * This function is needed for boards that have a separate tuner for | 715 | * This function is needed for boards that have a separate tuner for |
| 716 | * radio (like devices with tea5767). | 716 | * radio (like devices with tea5767). |
| 717 | * NOTE: mt20xx uses V4L2_TUNER_DIGITAL_TV and calls set_tv_freq to | ||
| 718 | * select a TV frequency. So, t_mode = T_ANALOG_TV could actually | ||
| 719 | * be used to represent a Digital TV too. | ||
| 717 | */ | 720 | */ |
| 718 | static inline int check_mode(struct tuner *t, enum v4l2_tuner_type mode) | 721 | static inline int check_mode(struct tuner *t, enum v4l2_tuner_type mode) |
| 719 | { | 722 | { |
| 720 | if ((1 << mode & t->mode_mask) == 0) | 723 | int t_mode; |
| 724 | if (mode == V4L2_TUNER_RADIO) | ||
| 725 | t_mode = T_RADIO; | ||
| 726 | else | ||
| 727 | t_mode = T_ANALOG_TV; | ||
| 728 | |||
| 729 | if ((t_mode & t->mode_mask) == 0) | ||
| 721 | return -EINVAL; | 730 | return -EINVAL; |
| 722 | 731 | ||
| 723 | return 0; | 732 | return 0; |
| @@ -984,7 +993,7 @@ static void tuner_status(struct dvb_frontend *fe) | |||
| 984 | case V4L2_TUNER_RADIO: | 993 | case V4L2_TUNER_RADIO: |
| 985 | p = "radio"; | 994 | p = "radio"; |
| 986 | break; | 995 | break; |
| 987 | case V4L2_TUNER_DIGITAL_TV: | 996 | case V4L2_TUNER_DIGITAL_TV: /* Used by mt20xx */ |
| 988 | p = "digital TV"; | 997 | p = "digital TV"; |
| 989 | break; | 998 | break; |
| 990 | case V4L2_TUNER_ANALOG_TV: | 999 | case V4L2_TUNER_ANALOG_TV: |
| @@ -1135,9 +1144,8 @@ static int tuner_g_tuner(struct v4l2_subdev *sd, struct v4l2_tuner *vt) | |||
| 1135 | return 0; | 1144 | return 0; |
| 1136 | if (vt->type == t->mode && analog_ops->get_afc) | 1145 | if (vt->type == t->mode && analog_ops->get_afc) |
| 1137 | vt->afc = analog_ops->get_afc(&t->fe); | 1146 | vt->afc = analog_ops->get_afc(&t->fe); |
| 1138 | if (vt->type == V4L2_TUNER_ANALOG_TV) | 1147 | if (t->mode != V4L2_TUNER_RADIO) { |
| 1139 | vt->capability |= V4L2_TUNER_CAP_NORM; | 1148 | vt->capability |= V4L2_TUNER_CAP_NORM; |
| 1140 | if (vt->type != V4L2_TUNER_RADIO) { | ||
| 1141 | vt->rangelow = tv_range[0] * 16; | 1149 | vt->rangelow = tv_range[0] * 16; |
| 1142 | vt->rangehigh = tv_range[1] * 16; | 1150 | vt->rangehigh = tv_range[1] * 16; |
| 1143 | return 0; | 1151 | return 0; |
