Re: [PATCH 4/13, revised] drivers/media/video: use USB API functions rather than constants



On Mon, 29 Dec 2008 22:49:22 +0100 (CET)
Julia Lawall <julia@xxxxxxx> wrote:

As compared to the previous version, this one takes advantage of
usb_endpoint_is_isoc_in.


From: Julia Lawall <julia@xxxxxxx>

This set of patches introduces calls to the following set of functions:

Applied, thanks.

I needed to do a manual conflict fix (applied patch enclosed), since the USB
code on em28xx were moved from em28xx-video.c into em28xx-cards.c on a patch
that I've applied before your patch.

Cheers,
Mauro

From: Julia Lawall <julia@xxxxxxx>
use USB API functions rather than constants


This set of patches introduces calls to the following set of functions:

usb_endpoint_dir_in(epd)
usb_endpoint_dir_out(epd)
usb_endpoint_is_bulk_in(epd)
usb_endpoint_is_bulk_out(epd)
usb_endpoint_is_int_in(epd)
usb_endpoint_is_int_out(epd)
usb_endpoint_is_isoc_in(epd)
usb_endpoint_is_isoc_out(epd)
usb_endpoint_num(epd)
usb_endpoint_type(epd)
usb_endpoint_xfer_bulk(epd)
usb_endpoint_xfer_control(epd)
usb_endpoint_xfer_int(epd)
usb_endpoint_xfer_isoc(epd)

In some cases, introducing one of these functions is not possible, and it
just replaces an explicit integer value by one of the following constants:

USB_ENDPOINT_XFER_BULK
USB_ENDPOINT_XFER_CONTROL
USB_ENDPOINT_XFER_INT
USB_ENDPOINT_XFER_ISOC

An extract of the semantic patch that makes these changes is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@r1@ struct usb_endpoint_descriptor *epd; @@

- ((epd->bmAttributes & \(USB_ENDPOINT_XFERTYPE_MASK\|3\)) ==
- \(USB_ENDPOINT_XFER_CONTROL\|0\))
+ usb_endpoint_xfer_control(epd)

@r5@ struct usb_endpoint_descriptor *epd; @@

- ((epd->bEndpointAddress & \(USB_ENDPOINT_DIR_MASK\|0x80\)) ==
- \(USB_DIR_IN\|0x80\))
+ usb_endpoint_dir_in(epd)
// </smpl>

Signed-off-by: Julia Lawall <julia@xxxxxxx>
Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>


---

linux/drivers/media/video/em28xx/em28xx-cards.c | 8 ++++----
linux/drivers/media/video/stk-webcam.c | 7 ++-----
linux/drivers/media/video/usbvideo/ibmcam.c | 4 ++--
linux/drivers/media/video/usbvideo/konicawc.c | 4 ++--
linux/drivers/media/video/usbvideo/quickcam_messenger.c | 7 ++-----
linux/drivers/media/video/usbvideo/ultracam.c | 4 ++--
linux/drivers/media/video/usbvideo/vicam.c | 3 +--
linux/drivers/media/video/usbvision/usbvision-video.c | 5 ++---
8 files changed, 17 insertions(+), 25 deletions(-)

diff -r 567e6e49f817 -r 333f701e1ae8 linux/drivers/media/video/em28xx/em28xx-cards.c
--- a/linux/drivers/media/video/em28xx/em28xx-cards.c Fri Dec 12 02:01:14 2008 +0000
+++ b/linux/drivers/media/video/em28xx/em28xx-cards.c Tue Dec 30 00:49:22 2008 +0000
@@ -2064,8 +2064,8 @@ static int em28xx_usb_probe(struct usb_i
endpoint = &interface->cur_altsetting->endpoint[0].desc;

/* check if the device has the iso in endpoint at the correct place */
- if ((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
- USB_ENDPOINT_XFER_ISOC &&
+ if (usb_endpoint_xfer_isoc(endpoint)
+ &&
(interface->altsetting[1].endpoint[0].desc.wMaxPacketSize == 940)) {
/* It's a newer em2874/em2875 device */
isoc_pipe = 0;
@@ -2073,11 +2073,11 @@ static int em28xx_usb_probe(struct usb_i
int check_interface = 1;
isoc_pipe = 1;
endpoint = &interface->cur_altsetting->endpoint[1].desc;
- if ((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) !=
+ if (usb_endpoint_type(endpoint) !=
USB_ENDPOINT_XFER_ISOC)
check_interface = 0;

- if ((endpoint->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)
+ if (usb_endpoint_dir_out(endpoint))
check_interface = 0;

if (!check_interface) {
diff -r 567e6e49f817 -r 333f701e1ae8 linux/drivers/media/video/stk-webcam.c
--- a/linux/drivers/media/video/stk-webcam.c Fri Dec 12 02:01:14 2008 +0000
+++ b/linux/drivers/media/video/stk-webcam.c Tue Dec 30 00:49:22 2008 +0000
@@ -1397,12 +1397,9 @@ static int stk_camera_probe(struct usb_i
endpoint = &iface_desc->endpoint[i].desc;

if (!dev->isoc_ep
- && ((endpoint->bEndpointAddress
- & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
- && ((endpoint->bmAttributes
- & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_ISOC)) {
+ && usb_endpoint_is_isoc_in(endpoint)) {
/* we found an isoc in endpoint */
- dev->isoc_ep = (endpoint->bEndpointAddress & 0xF);
+ dev->isoc_ep = usb_endpoint_num(endpoint);
break;
}
}
diff -r 567e6e49f817 -r 333f701e1ae8 linux/drivers/media/video/usbvideo/ibmcam.c
--- a/linux/drivers/media/video/usbvideo/ibmcam.c Fri Dec 12 02:01:14 2008 +0000
+++ b/linux/drivers/media/video/usbvideo/ibmcam.c Tue Dec 30 00:49:22 2008 +0000
@@ -3779,11 +3779,11 @@ static int ibmcam_probe(struct usb_inter
err("Alternate settings have different endpoint addresses!");
return -ENODEV;
}
- if ((endpoint->bmAttributes & 0x03) != 0x01) {
+ if (usb_endpoint_type(endpoint) != USB_ENDPOINT_XFER_ISOC) {
err("Interface %d. has non-ISO endpoint!", ifnum);
return -ENODEV;
}
- if ((endpoint->bEndpointAddress & 0x80) == 0) {
+ if (usb_endpoint_dir_out(endpoint)) {
err("Interface %d. has ISO OUT endpoint!", ifnum);
return -ENODEV;
}
diff -r 567e6e49f817 -r 333f701e1ae8 linux/drivers/media/video/usbvideo/konicawc.c
--- a/linux/drivers/media/video/usbvideo/konicawc.c Fri Dec 12 02:01:14 2008 +0000
+++ b/linux/drivers/media/video/usbvideo/konicawc.c Tue Dec 30 00:49:22 2008 +0000
@@ -836,12 +836,12 @@ static int konicawc_probe(struct usb_int
err("Alternate settings have different endpoint addresses!");
return -ENODEV;
}
- if ((endpoint->bmAttributes & 0x03) != 0x01) {
+ if (usb_endpoint_type(endpoint) != USB_ENDPOINT_XFER_ISOC) {
err("Interface %d. has non-ISO endpoint!",
interface->desc.bInterfaceNumber);
return -ENODEV;
}
- if ((endpoint->bEndpointAddress & 0x80) == 0) {
+ if (usb_endpoint_dir_out(endpoint)) {
err("Interface %d. has ISO OUT endpoint!",
interface->desc.bInterfaceNumber);
return -ENODEV;
diff -r 567e6e49f817 -r 333f701e1ae8 linux/drivers/media/video/usbvideo/quickcam_messenger.c
--- a/linux/drivers/media/video/usbvideo/quickcam_messenger.c Fri Dec 12 02:01:14 2008 +0000
+++ b/linux/drivers/media/video/usbvideo/quickcam_messenger.c Tue Dec 30 00:49:22 2008 +0000
@@ -972,8 +972,7 @@ static int qcm_probe(struct usb_interfac
for (j=0; j < interface->desc.bNumEndpoints; j++) {
endpoint = &interface->endpoint[j].desc;

- if ((endpoint->bEndpointAddress &
- USB_ENDPOINT_DIR_MASK) != USB_DIR_IN)
+ if (usb_endpoint_dir_out(endpoint))
continue; /* not input then not good */

buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
@@ -982,9 +981,7 @@ static int qcm_probe(struct usb_interfac
continue; /* 0 pkt size is not what we want */
}

- if ((endpoint->bmAttributes &
- USB_ENDPOINT_XFERTYPE_MASK) ==
- USB_ENDPOINT_XFER_ISOC) {
+ if (usb_endpoint_xfer_isoc(endpoint)) {
video_ep = endpoint->bEndpointAddress;
/* break out of the search */
goto good_videoep;
diff -r 567e6e49f817 -r 333f701e1ae8 linux/drivers/media/video/usbvideo/ultracam.c
--- a/linux/drivers/media/video/usbvideo/ultracam.c Fri Dec 12 02:01:14 2008 +0000
+++ b/linux/drivers/media/video/usbvideo/ultracam.c Tue Dec 30 00:49:22 2008 +0000
@@ -556,12 +556,12 @@ static int ultracam_probe(struct usb_int
err("Alternate settings have different endpoint addresses!");
return -ENODEV;
}
- if ((endpoint->bmAttributes & 0x03) != 0x01) {
+ if (usb_endpoint_type(endpoint) != USB_ENDPOINT_XFER_ISOC) {
err("Interface %d. has non-ISO endpoint!",
interface->desc.bInterfaceNumber);
return -ENODEV;
}
- if ((endpoint->bEndpointAddress & 0x80) == 0) {
+ if (usb_endpoint_dir_out(endpoint)) {
err("Interface %d. has ISO OUT endpoint!",
interface->desc.bInterfaceNumber);
return -ENODEV;
diff -r 567e6e49f817 -r 333f701e1ae8 linux/drivers/media/video/usbvideo/vicam.c
--- a/linux/drivers/media/video/usbvideo/vicam.c Fri Dec 12 02:01:14 2008 +0000
+++ b/linux/drivers/media/video/usbvideo/vicam.c Tue Dec 30 00:49:22 2008 +0000
@@ -1154,8 +1154,7 @@ vicam_probe( struct usb_interface *intf,
interface->desc.bInterfaceNumber, (unsigned) (interface->desc.bNumEndpoints));
endpoint = &interface->endpoint[0].desc;

- if ((endpoint->bEndpointAddress & 0x80) &&
- ((endpoint->bmAttributes & 3) == 0x02)) {
+ if (usb_endpoint_is_bulk_in(endpoint)) {
/* we found a bulk in endpoint */
bulkEndpoint = endpoint->bEndpointAddress;
} else {
diff -r 567e6e49f817 -r 333f701e1ae8 linux/drivers/media/video/usbvision/usbvision-video.c
--- a/linux/drivers/media/video/usbvision/usbvision-video.c Fri Dec 12 02:01:14 2008 +0000
+++ b/linux/drivers/media/video/usbvision/usbvision-video.c Tue Dec 30 00:49:22 2008 +0000
@@ -1679,7 +1679,7 @@ static int __devinit usbvision_probe(str
interface = &dev->actconfig->interface[ifnum]->altsetting[0];
}
endpoint = &interface->endpoint[1].desc;
- if ((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) !=
+ if (usb_endpoint_type(endpoint) !=
USB_ENDPOINT_XFER_ISOC) {
err("%s: interface %d. has non-ISO endpoint!",
__func__, ifnum);
@@ -1687,8 +1687,7 @@ static int __devinit usbvision_probe(str
__func__, endpoint->bmAttributes);
return -ENODEV;
}
- if ((endpoint->bEndpointAddress & USB_ENDPOINT_DIR_MASK) ==
- USB_DIR_OUT) {
+ if (usb_endpoint_dir_out(endpoint)) {
err("%s: interface %d. has ISO OUT endpoint!",
__func__, ifnum);
return -ENODEV;


---

Patch is available at: http://linuxtv.org/hg/v4l-dvb/rev/333f701e1ae886614635132dbf7527fd54dce229
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • 9_Recommended error codes (specifically return code 5)
    ... * "return code 2" indicates patches are already installed. ... * "return code 25" means a patches requires another patch that is not yet installed. ... With or without using the save option, the patch installation process ... Installing 114008-01... ...
    (SunManagers)
  • Re: [PATCH] ext4: memory leakage in ext4_mb_init()
    ... one of the important parts of a patch is that the patcher ... If you are not able to deal with all patches received, ... stock kernel, is buggy, and end users have to face panic. ... Ext4 is actually quite stable at this point. ...
    (Linux-Kernel)
  • Re: This is [Re:] How to improve the quality of the kernel[?].
    ... The -mm kernel already implements what your proposed PTS would do. ... If patch have no TS ID, ... Thus i can apply for example lguest patches and implement and test new ... How many open source projects use Bugzilla and how many use the Debian BTS? ...
    (Linux-Kernel)
  • Re: ATTACK of the WEEK-fentanyl patches
    ... FDA warns of deaths from fentanyl patch ... Some of the deaths came after doctors prescribed the patches to the ... The drug is only for chronic pain in people used to narcotics, ...
    (alt.support.chronic-pain)
  • Tru64 and OpenVMS patch announcements change after next month
    ... distribution of various patches ... OpenVMS systems with DCE and/or RPC installed. ... Update on OpenVMS and Tru64 UNIX Patches in HP ITRC ... Tru64 patch server will soon be shutdown. ...
    (Bugtraq)