aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2010-10-18 20:10:46 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-21 09:46:49 -0400
commit10e4ebb6d5fcc60e0b78b228c2683cb6ee4543ba (patch)
tree4d19529a8facdb9f8c75d6b44f10aec8f3c6688e /drivers/media
parent56e92f60c3baa08a66a025ba4ed10c15c4a059cb (diff)
[media] cx231xx: Only register USB interface 1
Interface 0 is used by IR. The current driver starts initializing on it, finishing on interface 6. Change the logic to only handle interface 1. This allows another driver (mceusb) to take care of the IR interface. Reviewed-by: Jarod Wilson <jarod@redhat.com> Acked-by: Sri Devi <Srinivasa.Deevi@conexant.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/cx231xx/cx231xx-cards.c38
1 files changed, 8 insertions, 30 deletions
diff --git a/drivers/media/video/cx231xx/cx231xx-cards.c b/drivers/media/video/cx231xx/cx231xx-cards.c
index 28f77a7f6572..7afa034b6d19 100644
--- a/drivers/media/video/cx231xx/cx231xx-cards.c
+++ b/drivers/media/video/cx231xx/cx231xx-cards.c
@@ -793,13 +793,12 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
793 char *speed; 793 char *speed;
794 char descr[255] = ""; 794 char descr[255] = "";
795 struct usb_interface *lif = NULL; 795 struct usb_interface *lif = NULL;
796 int skip_interface = 0;
797 struct usb_interface_assoc_descriptor *assoc_desc; 796 struct usb_interface_assoc_descriptor *assoc_desc;
798 797
799 udev = usb_get_dev(interface_to_usbdev(interface)); 798 udev = usb_get_dev(interface_to_usbdev(interface));
800 ifnum = interface->altsetting[0].desc.bInterfaceNumber; 799 ifnum = interface->altsetting[0].desc.bInterfaceNumber;
801 800
802 if (!ifnum) { 801 if (ifnum == 1) {
803 /* 802 /*
804 * Interface number 0 - IR interface 803 * Interface number 0 - IR interface
805 */ 804 */
@@ -886,13 +885,6 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
886 le16_to_cpu(udev->descriptor.idVendor), 885 le16_to_cpu(udev->descriptor.idVendor),
887 le16_to_cpu(udev->descriptor.idProduct), 886 le16_to_cpu(udev->descriptor.idProduct),
888 dev->max_iad_interface_count); 887 dev->max_iad_interface_count);
889 } else {
890 /* Get dev structure first */
891 dev = usb_get_intfdata(udev->actconfig->interface[0]);
892 if (dev == NULL) {
893 cx231xx_err(DRIVER_NAME ": out of first interface!\n");
894 return -ENODEV;
895 }
896 888
897 /* store the interface 0 back */ 889 /* store the interface 0 back */
898 lif = udev->actconfig->interface[0]; 890 lif = udev->actconfig->interface[0];
@@ -903,35 +895,21 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
903 /* get device number */ 895 /* get device number */
904 nr = dev->devno; 896 nr = dev->devno;
905 897
906 /* 898 assoc_desc = udev->actconfig->intf_assoc[0];
907 * set skip interface, for all interfaces but 899 if (assoc_desc->bFirstInterface != ifnum) {
908 * interface 1 and the last one 900 cx231xx_err(DRIVER_NAME ": Not found "
909 */ 901 "matching IAD interface\n");
910 if ((ifnum != 1) && ((ifnum) 902 return -ENODEV;
911 != dev->max_iad_interface_count))
912 skip_interface = 1;
913
914 if (ifnum == 1) {
915 assoc_desc = udev->actconfig->intf_assoc[0];
916 if (assoc_desc->bFirstInterface != ifnum) {
917 cx231xx_err(DRIVER_NAME ": Not found "
918 "matching IAD interface\n");
919 return -ENODEV;
920 }
921 } 903 }
922 } 904 } else {
923
924 if (skip_interface)
925 return -ENODEV; 905 return -ENODEV;
906 }
926 907
927 cx231xx_info("registering interface %d\n", ifnum); 908 cx231xx_info("registering interface %d\n", ifnum);
928 909
929 /* save our data pointer in this interface device */ 910 /* save our data pointer in this interface device */
930 usb_set_intfdata(lif, dev); 911 usb_set_intfdata(lif, dev);
931 912
932 if ((ifnum) != dev->max_iad_interface_count)
933 return 0;
934
935 /* 913 /*
936 * AV device initialization - only done at the last interface 914 * AV device initialization - only done at the last interface
937 */ 915 */