* linux-next: manual merge of the usb tree with the v4l-dvb tree
@ 2012-05-21 6:06 Stephen Rothwell
2012-05-23 6:22 ` Greg KH
0 siblings, 1 reply; 16+ messages in thread
From: Stephen Rothwell @ 2012-05-21 6:06 UTC (permalink / raw)
To: Greg KH
Cc: linux-next, linux-kernel, Mauro Carvalho Chehab,
"Ezequiel García"
[-- Attachment #1: Type: text/plain, Size: 6919 bytes --]
Hi Greg,
Today's linux-next merge of the usb tree got a conflict in
drivers/staging/media/easycap/easycap_main.c between various commits from
the v4l-dvb tree and commit 5df773120477 ("USB: Staging: media: easycap:
remove err() usage") from the usb tree.
I fixed it up (I think - see below) and can carry the fix as necessary.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
diff --cc drivers/staging/media/easycap/easycap_main.c
index aed9537,6f83d36..0000000
--- a/drivers/staging/media/easycap/easycap_main.c
+++ b/drivers/staging/media/easycap/easycap_main.c
@@@ -3401,176 -3126,6 +3401,175 @@@ static void config_easycap(struct easyc
}
}
}
+}
+
+/*
+ * This function is called from within easycap_usb_disconnect() and is
+ * protected by semaphores set and cleared by easycap_usb_disconnect().
+ * By this stage the device has already been physically unplugged,
+ * so peasycap->pusb_device is no longer valid.
+ */
+static void easycap_delete(struct kref *pkref)
+{
+ struct easycap *peasycap;
+
+ peasycap = container_of(pkref, struct easycap, kref);
+ if (!peasycap) {
+ SAM("ERROR: peasycap is NULL: cannot perform deletions\n");
+ return;
+ }
+
+ /* Free video urbs */
+ free_video_urbs(peasycap);
+
+ /* Free video isoc buffers */
+ free_isocbuffers(peasycap);
+
+ /* Free video field buffers */
+ free_fieldbuffers(peasycap);
+
+ /* Free video frame buffers */
+ free_framebuffers(peasycap);
+
+ /* Free audio urbs */
+ free_audio_urbs(peasycap);
+
+ /* Free audio isoc buffers */
+ free_audio_buffers(peasycap);
+
+ free_easycap(peasycap);
+
+ JOT(4, "ending.\n");
+}
+
+static const struct v4l2_file_operations v4l2_fops = {
+ .owner = THIS_MODULE,
+ .open = easycap_open_noinode,
+ .unlocked_ioctl = easycap_unlocked_ioctl,
+ .poll = easycap_poll,
+ .mmap = easycap_mmap,
+};
+
+static int easycap_register_video(struct easycap *peasycap)
+{
+ /*
+ * FIXME: This is believed to be harmless,
+ * but may well be unnecessary or wrong.
+ */
+ peasycap->video_device.v4l2_dev = NULL;
+
+ strcpy(&peasycap->video_device.name[0], "easycapdc60");
+ peasycap->video_device.fops = &v4l2_fops;
+ peasycap->video_device.minor = -1;
+ peasycap->video_device.release = (void *)(&videodev_release);
+
+ video_set_drvdata(&(peasycap->video_device), (void *)peasycap);
+
+ if (0 != (video_register_device(&(peasycap->video_device),
+ VFL_TYPE_GRABBER, -1))) {
- err("Not able to register with videodev");
+ videodev_release(&(peasycap->video_device));
+ return -ENODEV;
+ }
+
+ peasycap->registered_video++;
+
+ SAM("registered with videodev: %i=minor\n",
+ peasycap->video_device.minor);
+ peasycap->minor = peasycap->video_device.minor;
+
+ return 0;
+}
+
+/*
+ * When the device is plugged, this function is called three times,
+ * one for each interface.
+ */
+static int easycap_usb_probe(struct usb_interface *intf,
+ const struct usb_device_id *id)
+{
+ struct usb_device *usbdev;
+ struct usb_host_interface *alt;
+ struct usb_endpoint_descriptor *ep;
+ struct usb_interface_descriptor *interface;
+ struct easycap *peasycap;
+ int i, j, rc;
+ u8 bInterfaceNumber;
+ u8 bInterfaceClass;
+ u8 bInterfaceSubClass;
+ int okalt[8], isokalt;
+ int okepn[8];
+ int okmps[8];
+ int maxpacketsize;
+
+ usbdev = interface_to_usbdev(intf);
+
+ alt = usb_altnum_to_altsetting(intf, 0);
+ if (!alt) {
+ SAY("ERROR: usb_host_interface not found\n");
+ return -EFAULT;
+ }
+
+ interface = &alt->desc;
+ if (!interface) {
+ SAY("ERROR: intf_descriptor is NULL\n");
+ return -EFAULT;
+ }
+
+ /* Get properties of probed interface */
+ bInterfaceNumber = interface->bInterfaceNumber;
+ bInterfaceClass = interface->bInterfaceClass;
+ bInterfaceSubClass = interface->bInterfaceSubClass;
+
+ JOT(4, "intf[%i]: num_altsetting=%i\n",
+ bInterfaceNumber, intf->num_altsetting);
+ JOT(4, "intf[%i]: cur_altsetting - altsetting=%li\n",
+ bInterfaceNumber,
+ (long int)(intf->cur_altsetting - intf->altsetting));
+ JOT(4, "intf[%i]: bInterfaceClass=0x%02X bInterfaceSubClass=0x%02X\n",
+ bInterfaceNumber, bInterfaceClass, bInterfaceSubClass);
+
+ /*
+ * A new struct easycap is always allocated when interface 0 is probed.
+ * It is not possible here to free any existing struct easycap.
+ * This should have been done by easycap_delete() when the device was
+ * physically unplugged.
+ * The allocated struct easycap is saved for later usage when
+ * interfaces 1 and 2 are probed.
+ */
+ if (0 == bInterfaceNumber) {
+ /*
+ * Alloc structure and save it in a free slot in
+ * easycapdc60_dongle array
+ */
+ peasycap = alloc_easycap(bInterfaceNumber);
+ if (!peasycap)
+ return -ENOMEM;
+
+ /* Perform basic struct initialization */
+ init_easycap(peasycap, usbdev, intf, bInterfaceNumber);
+
+ /* Dynamically fill in the available formats */
+ rc = easycap_video_fillin_formats();
+ if (0 > rc) {
+ SAM("ERROR: fillin_formats() rc = %i\n", rc);
+ return -EFAULT;
+ }
+ JOM(4, "%i formats available\n", rc);
+
+ /* Populate easycap.inputset[] */
+ rc = populate_inputset(peasycap);
+ if (rc < 0)
+ return rc;
+ JOM(4, "finished initialization\n");
+ } else {
+ peasycap = get_easycap(usbdev, bInterfaceNumber);
+ if (!peasycap)
+ return -ENODEV;
+ }
+
+ config_easycap(peasycap, bInterfaceNumber,
+ bInterfaceClass,
+ bInterfaceSubClass);
/*
* Investigate all altsettings. This is done in detail
@@@ -3854,9 -3562,33 +3853,12 @@@
JOM(4, "registered device instance: %s\n",
peasycap->v4l2_device.name);
- /*
- * FIXME: This is believed to be harmless,
- * but may well be unnecessary or wrong.
- */
- peasycap->video_device.v4l2_dev = NULL;
-
-
- strcpy(&peasycap->video_device.name[0], "easycapdc60");
- peasycap->video_device.fops = &v4l2_fops;
- peasycap->video_device.minor = -1;
- peasycap->video_device.release = (void *)(&videodev_release);
-
- video_set_drvdata(&(peasycap->video_device), (void *)peasycap);
-
- if (0 != (video_register_device(&(peasycap->video_device),
- VFL_TYPE_GRABBER, -1))) {
+ rc = easycap_register_video(peasycap);
- if (rc < 0)
++ if (rc < 0) {
+ dev_err(&intf->dev,
+ "Not able to register with videodev\n");
- videodev_release(&(peasycap->video_device));
return -ENODEV;
+ }
-
- peasycap->registered_video++;
- SAM("registered with videodev: %i=minor\n",
- peasycap->video_device.minor);
- peasycap->minor = peasycap->video_device.minor;
-
break;
}
/* 1: Audio control */
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2012-05-21 6:06 linux-next: manual merge of the usb tree with the v4l-dvb tree Stephen Rothwell
@ 2012-05-23 6:22 ` Greg KH
0 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2012-05-23 6:22 UTC (permalink / raw)
To: Stephen Rothwell
Cc: linux-next, linux-kernel, Mauro Carvalho Chehab,
"Ezequiel García"
On Mon, May 21, 2012 at 04:06:24PM +1000, Stephen Rothwell wrote:
> Hi Greg,
>
> Today's linux-next merge of the usb tree got a conflict in
> drivers/staging/media/easycap/easycap_main.c between various commits from
> the v4l-dvb tree and commit 5df773120477 ("USB: Staging: media: easycap:
> remove err() usage") from the usb tree.
>
> I fixed it up (I think - see below) and can carry the fix as necessary.
This looks correct, thanks.
greg k-h
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-26 14:01 ` Mauro Carvalho Chehab
@ 2010-07-26 21:42 ` Greg KH
0 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2010-07-26 21:42 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Laurent Pinchart, Stephen Rothwell, linux-next, linux-kernel
On Mon, Jul 26, 2010 at 11:01:35AM -0300, Mauro Carvalho Chehab wrote:
> Em 26-07-2010 05:24, Laurent Pinchart escreveu:
> > Hi Mauro,
> >
> > On Saturday 24 July 2010 17:32:54 Mauro Carvalho Chehab wrote:
> >> Em 13-07-2010 14:23, Laurent Pinchart escreveu:
> >>> On Tuesday 13 July 2010 17:34:02 Mauro Carvalho Chehab wrote:
> >>>> Em 07-07-2010 12:13, Greg KH escreveu:
> >>>>> On Tue, Jul 06, 2010 at 09:34:51AM -0300, Mauro Carvalho Chehab wrote:
> >>>>>> Em 06-07-2010 08:10, Laurent Pinchart escreveu:
> >>> [snip]
> >>>
> >>>>>>> Mauro, can the uvc-gadget patches go through the linux-media tree ?
> >>>>
> >>>> It will not be simple to fix this conflict from my tree. I tried to
> >>>> apply
> >>>>
> >>>> them against a 2.6.35-rc5, but it failed:
> >>>> |diff --git a/drivers/media/video/uvc/uvcvideo.h
> >>>> |b/drivers/media/video/uvc/uvcvideo.h index 47b20e7..ac27245 100644
> >>>> |--- a/drivers/media/video/uvc/uvcvideo.h
> >>>> |+++ b/drivers/media/video/uvc/uvcvideo.h
> >>>>
> >>>> --------------------------
> >>>> No file to patch. Skipping patch.
> >>>> 1 out of 1 hunk ignored
> >>>> can't find file to patch at input line 73
> >>>> Perhaps you used the wrong -p or --strip option?
> >>>
> >>> drivers/media/video/uvc/uvcvideo.h has been there for years. Perhaps you
> >>> used the wrong -p or --strip option? :-)
> >>
> >> Doubtful. My scripts apply the patches using -p1. Not sure what happened.
> >
> > [snip]
> >
> >> Could you please re-send the patch, being sure that it will apply against a
> >> -rc kernel?
> >
> > The patch I've sent you applies unmodified against 2.6.35-rc6. I'm pretty sure
> > you made a mistake somewhere.
>
> Likely. I've just applied it to my trees. This time, it applied fine.
Ok, I've dropped the patch from my usb tree right now.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-26 8:24 ` Laurent Pinchart
@ 2010-07-26 14:01 ` Mauro Carvalho Chehab
2010-07-26 21:42 ` Greg KH
0 siblings, 1 reply; 16+ messages in thread
From: Mauro Carvalho Chehab @ 2010-07-26 14:01 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: Greg KH, Stephen Rothwell, linux-next, linux-kernel
Em 26-07-2010 05:24, Laurent Pinchart escreveu:
> Hi Mauro,
>
> On Saturday 24 July 2010 17:32:54 Mauro Carvalho Chehab wrote:
>> Em 13-07-2010 14:23, Laurent Pinchart escreveu:
>>> On Tuesday 13 July 2010 17:34:02 Mauro Carvalho Chehab wrote:
>>>> Em 07-07-2010 12:13, Greg KH escreveu:
>>>>> On Tue, Jul 06, 2010 at 09:34:51AM -0300, Mauro Carvalho Chehab wrote:
>>>>>> Em 06-07-2010 08:10, Laurent Pinchart escreveu:
>>> [snip]
>>>
>>>>>>> Mauro, can the uvc-gadget patches go through the linux-media tree ?
>>>>
>>>> It will not be simple to fix this conflict from my tree. I tried to
>>>> apply
>>>>
>>>> them against a 2.6.35-rc5, but it failed:
>>>> |diff --git a/drivers/media/video/uvc/uvcvideo.h
>>>> |b/drivers/media/video/uvc/uvcvideo.h index 47b20e7..ac27245 100644
>>>> |--- a/drivers/media/video/uvc/uvcvideo.h
>>>> |+++ b/drivers/media/video/uvc/uvcvideo.h
>>>>
>>>> --------------------------
>>>> No file to patch. Skipping patch.
>>>> 1 out of 1 hunk ignored
>>>> can't find file to patch at input line 73
>>>> Perhaps you used the wrong -p or --strip option?
>>>
>>> drivers/media/video/uvc/uvcvideo.h has been there for years. Perhaps you
>>> used the wrong -p or --strip option? :-)
>>
>> Doubtful. My scripts apply the patches using -p1. Not sure what happened.
>
> [snip]
>
>> Could you please re-send the patch, being sure that it will apply against a
>> -rc kernel?
>
> The patch I've sent you applies unmodified against 2.6.35-rc6. I'm pretty sure
> you made a mistake somewhere.
Likely. I've just applied it to my trees. This time, it applied fine.
Cheers,
Mauro.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-24 15:32 ` Mauro Carvalho Chehab
@ 2010-07-26 8:24 ` Laurent Pinchart
2010-07-26 14:01 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 16+ messages in thread
From: Laurent Pinchart @ 2010-07-26 8:24 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Greg KH, Stephen Rothwell, linux-next, linux-kernel
Hi Mauro,
On Saturday 24 July 2010 17:32:54 Mauro Carvalho Chehab wrote:
> Em 13-07-2010 14:23, Laurent Pinchart escreveu:
> > On Tuesday 13 July 2010 17:34:02 Mauro Carvalho Chehab wrote:
> >> Em 07-07-2010 12:13, Greg KH escreveu:
> >>> On Tue, Jul 06, 2010 at 09:34:51AM -0300, Mauro Carvalho Chehab wrote:
> >>>> Em 06-07-2010 08:10, Laurent Pinchart escreveu:
> > [snip]
> >
> >>>>> Mauro, can the uvc-gadget patches go through the linux-media tree ?
> >>
> >> It will not be simple to fix this conflict from my tree. I tried to
> >> apply
> >>
> >> them against a 2.6.35-rc5, but it failed:
> >> |diff --git a/drivers/media/video/uvc/uvcvideo.h
> >> |b/drivers/media/video/uvc/uvcvideo.h index 47b20e7..ac27245 100644
> >> |--- a/drivers/media/video/uvc/uvcvideo.h
> >> |+++ b/drivers/media/video/uvc/uvcvideo.h
> >>
> >> --------------------------
> >> No file to patch. Skipping patch.
> >> 1 out of 1 hunk ignored
> >> can't find file to patch at input line 73
> >> Perhaps you used the wrong -p or --strip option?
> >
> > drivers/media/video/uvc/uvcvideo.h has been there for years. Perhaps you
> > used the wrong -p or --strip option? :-)
>
> Doubtful. My scripts apply the patches using -p1. Not sure what happened.
[snip]
> Could you please re-send the patch, being sure that it will apply against a
> -rc kernel?
The patch I've sent you applies unmodified against 2.6.35-rc6. I'm pretty sure
you made a mistake somewhere.
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-13 17:23 ` Laurent Pinchart
@ 2010-07-24 15:32 ` Mauro Carvalho Chehab
2010-07-26 8:24 ` Laurent Pinchart
0 siblings, 1 reply; 16+ messages in thread
From: Mauro Carvalho Chehab @ 2010-07-24 15:32 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: Greg KH, Stephen Rothwell, linux-next, linux-kernel
Em 13-07-2010 14:23, Laurent Pinchart escreveu:
> Hi Mauro,
>
> On Tuesday 13 July 2010 17:34:02 Mauro Carvalho Chehab wrote:
>> Em 07-07-2010 12:13, Greg KH escreveu:
>>> On Tue, Jul 06, 2010 at 09:34:51AM -0300, Mauro Carvalho Chehab wrote:
>>>> Em 06-07-2010 08:10, Laurent Pinchart escreveu:
>
> [snip]
>
>>>>> Mauro, can the uvc-gadget patches go through the linux-media tree ?
>>
>> It will not be simple to fix this conflict from my tree. I tried to apply
>> them against a 2.6.35-rc5, but it failed:
>> |diff --git a/drivers/media/video/uvc/uvcvideo.h
>> |b/drivers/media/video/uvc/uvcvideo.h index 47b20e7..ac27245 100644
>> |--- a/drivers/media/video/uvc/uvcvideo.h
>> |+++ b/drivers/media/video/uvc/uvcvideo.h
>>
>> --------------------------
>> No file to patch. Skipping patch.
>> 1 out of 1 hunk ignored
>> can't find file to patch at input line 73
>> Perhaps you used the wrong -p or --strip option?
>
> drivers/media/video/uvc/uvcvideo.h has been there for years. Perhaps you used
> the wrong -p or --strip option? :-)
Doubtful. My scripts apply the patches using -p1. Not sure what happened.
> [snip]
>
>>>>> Patch
>>>>> patches/lmml_111238_for_2_6_36_uvc_move_constants_and_structures_defin
>>>>> itions_to_linux_usb_video_h.patch doesn't apply
>>
>> It seems that the files you're patching at include/linux/usb & cia are not
>> upstream yet. So, just adding this patch won't solve it.
>>
>>>> If Greg is ok, that's fine for me.
>>>
>>> That's fine with me. Let me know when you have them and then I'll drop
>>> them from my tree.
>>
>> I'll be out for vacations for some days. Greg/Laurent, it seems that the
>> better is to keep Stephen workaround for now, eventually applying it at
>> Greg's tree.
>
> If it's not too late, can you retry with the right -p option ?
>
It were too late... I just returned from vacations, and started to dig my long
list of emails...
Could you please re-send the patch, being sure that it will apply against a
-rc kernel?
Cheers,
Mauro
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-13 15:34 ` Mauro Carvalho Chehab
@ 2010-07-13 17:23 ` Laurent Pinchart
2010-07-24 15:32 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 16+ messages in thread
From: Laurent Pinchart @ 2010-07-13 17:23 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Greg KH, Stephen Rothwell, linux-next, linux-kernel
Hi Mauro,
On Tuesday 13 July 2010 17:34:02 Mauro Carvalho Chehab wrote:
> Em 07-07-2010 12:13, Greg KH escreveu:
> > On Tue, Jul 06, 2010 at 09:34:51AM -0300, Mauro Carvalho Chehab wrote:
> >> Em 06-07-2010 08:10, Laurent Pinchart escreveu:
[snip]
> >>> Mauro, can the uvc-gadget patches go through the linux-media tree ?
>
> It will not be simple to fix this conflict from my tree. I tried to apply
> them against a 2.6.35-rc5, but it failed:
> |diff --git a/drivers/media/video/uvc/uvcvideo.h
> |b/drivers/media/video/uvc/uvcvideo.h index 47b20e7..ac27245 100644
> |--- a/drivers/media/video/uvc/uvcvideo.h
> |+++ b/drivers/media/video/uvc/uvcvideo.h
>
> --------------------------
> No file to patch. Skipping patch.
> 1 out of 1 hunk ignored
> can't find file to patch at input line 73
> Perhaps you used the wrong -p or --strip option?
drivers/media/video/uvc/uvcvideo.h has been there for years. Perhaps you used
the wrong -p or --strip option? :-)
[snip]
> >>> Patch
> >>> patches/lmml_111238_for_2_6_36_uvc_move_constants_and_structures_defin
> >>> itions_to_linux_usb_video_h.patch doesn't apply
>
> It seems that the files you're patching at include/linux/usb & cia are not
> upstream yet. So, just adding this patch won't solve it.
>
> >> If Greg is ok, that's fine for me.
> >
> > That's fine with me. Let me know when you have them and then I'll drop
> > them from my tree.
>
> I'll be out for vacations for some days. Greg/Laurent, it seems that the
> better is to keep Stephen workaround for now, eventually applying it at
> Greg's tree.
If it's not too late, can you retry with the right -p option ?
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-07 15:13 ` Greg KH
@ 2010-07-13 15:34 ` Mauro Carvalho Chehab
2010-07-13 17:23 ` Laurent Pinchart
0 siblings, 1 reply; 16+ messages in thread
From: Mauro Carvalho Chehab @ 2010-07-13 15:34 UTC (permalink / raw)
To: Greg KH; +Cc: Laurent Pinchart, Stephen Rothwell, linux-next, linux-kernel
Em 07-07-2010 12:13, Greg KH escreveu:
> On Tue, Jul 06, 2010 at 09:34:51AM -0300, Mauro Carvalho Chehab wrote:
>> Em 06-07-2010 08:10, Laurent Pinchart escreveu:
>>> Hi Stephen,
>>>
>>> On Tuesday 06 July 2010 10:51:32 Stephen Rothwell wrote:
>>>> On Tue, 6 Jul 2010 10:18:20 +0200 Laurent Pinchart wrote:
>>>>>> diff --cc include/linux/usb/video.h
>>>>>> index 2d5b7fc,429c91a..0000000
>>>>>> --- a/include/linux/usb/video.h
>>>>>> +++ b/include/linux/usb/video.h
>>>>>> @@@ -160,12 -160,402 +160,409 @@@
>>>>>
>>>>> [snip]
>>>>>
>>>>>> +/* 4.1.2. Control Capabilities */
>>>>>> +#define UVC_CONTROL_CAP_GET (1 << 0)
>>>>>> +#define UVC_CONTROL_CAP_SET (1 << 1)
>>>>>> +#define UVC_CONTROL_CAP_DISABLED (1 << 2)
>>>>>> +#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
>>>>>> +#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
>>>>>> +
>>>>>
>>>>> Can you move those to the first part of the header file, with the other
>>>>> constants ?
>>>>
>>>> Sure, I just put it there because of the section numbering in the
>>>> comments. This, of course, will not influence how the file looks after
>>>> Linus merges it - unless the conflict is fixed up by one of the
>>>> maintainers before Linus gets it.
>>>
>>> I had the impression that the conflict resolutions in linux-next would end up
>>> in mainline. I must have been wrong, sorry.
>>>
>>> Mauro, can the uvc-gadget patches go through the linux-media tree ?
It will not be simple to fix this conflict from my tree. I tried to apply them
against a 2.6.35-rc5, but it failed:
|diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h
|index 47b20e7..ac27245 100644
|--- a/drivers/media/video/uvc/uvcvideo.h
|+++ b/drivers/media/video/uvc/uvcvideo.h
--------------------------
No file to patch. Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 73
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/drivers/usb/gadget/f_uvc.c b/drivers/usb/gadget/f_uvc.c
|index fc2611f..b6aed97 100644
|--- a/drivers/usb/gadget/f_uvc.c
|+++ b/drivers/usb/gadget/f_uvc.c
--------------------------
No file to patch. Skipping patch.
5 out of 5 hunks ignored
can't find file to patch at input line 138
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/drivers/usb/gadget/f_uvc.h b/drivers/usb/gadget/f_uvc.h
|index 8a5db7c..e18a663 100644
|--- a/drivers/usb/gadget/f_uvc.h
|+++ b/drivers/usb/gadget/f_uvc.h
--------------------------
No file to patch. Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 501
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/drivers/usb/gadget/uvc.h b/drivers/usb/gadget/uvc.h
|index 0a705e6..b05bcb7 100644
|--- a/drivers/usb/gadget/uvc.h
|+++ b/drivers/usb/gadget/uvc.h
--------------------------
No file to patch. Skipping patch.
2 out of 2 hunks ignored
can't find file to patch at input line 555
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/drivers/usb/gadget/webcam.c b/drivers/usb/gadget/webcam.c
|index 417fd68..98e9c8b 100644
|--- a/drivers/usb/gadget/webcam.c
|+++ b/drivers/usb/gadget/webcam.c
--------------------------
No file to patch. Skipping patch.
12 out of 12 hunks ignored
can't find file to patch at input line 667
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/include/linux/usb/video.h b/include/linux/usb/video.h
|index 2d5b7fc..3b3b95e 100644
|--- a/include/linux/usb/video.h
|+++ b/include/linux/usb/video.h
--------------------------
No file to patch. Skipping patch.
2 out of 2 hunks ignored
>>> Patch patches/lmml_111238_for_2_6_36_uvc_move_constants_and_structures_definitions_to_linux_usb_video_h.patch doesn't apply
It seems that the files you're patching at include/linux/usb & cia are not upstream
yet. So, just adding this patch won't solve it.
>>
>> If Greg is ok, that's fine for me.
>
> That's fine with me. Let me know when you have them and then I'll drop
> them from my tree.
I'll be out for vacations for some days. Greg/Laurent, it seems that the better is
to keep Stephen workaround for now, eventually applying it at Greg's tree.
Cheers,
Mauro.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-06 12:34 ` Mauro Carvalho Chehab
@ 2010-07-07 15:13 ` Greg KH
2010-07-13 15:34 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 16+ messages in thread
From: Greg KH @ 2010-07-07 15:13 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Laurent Pinchart, Stephen Rothwell, linux-next, linux-kernel
On Tue, Jul 06, 2010 at 09:34:51AM -0300, Mauro Carvalho Chehab wrote:
> Em 06-07-2010 08:10, Laurent Pinchart escreveu:
> > Hi Stephen,
> >
> > On Tuesday 06 July 2010 10:51:32 Stephen Rothwell wrote:
> >> On Tue, 6 Jul 2010 10:18:20 +0200 Laurent Pinchart wrote:
> >>>> diff --cc include/linux/usb/video.h
> >>>> index 2d5b7fc,429c91a..0000000
> >>>> --- a/include/linux/usb/video.h
> >>>> +++ b/include/linux/usb/video.h
> >>>> @@@ -160,12 -160,402 +160,409 @@@
> >>>
> >>> [snip]
> >>>
> >>>> +/* 4.1.2. Control Capabilities */
> >>>> +#define UVC_CONTROL_CAP_GET (1 << 0)
> >>>> +#define UVC_CONTROL_CAP_SET (1 << 1)
> >>>> +#define UVC_CONTROL_CAP_DISABLED (1 << 2)
> >>>> +#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
> >>>> +#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
> >>>> +
> >>>
> >>> Can you move those to the first part of the header file, with the other
> >>> constants ?
> >>
> >> Sure, I just put it there because of the section numbering in the
> >> comments. This, of course, will not influence how the file looks after
> >> Linus merges it - unless the conflict is fixed up by one of the
> >> maintainers before Linus gets it.
> >
> > I had the impression that the conflict resolutions in linux-next would end up
> > in mainline. I must have been wrong, sorry.
> >
> > Mauro, can the uvc-gadget patches go through the linux-media tree ?
>
> If Greg is ok, that's fine for me.
That's fine with me. Let me know when you have them and then I'll drop
them from my tree.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-06 11:10 ` Laurent Pinchart
@ 2010-07-06 12:34 ` Mauro Carvalho Chehab
2010-07-07 15:13 ` Greg KH
0 siblings, 1 reply; 16+ messages in thread
From: Mauro Carvalho Chehab @ 2010-07-06 12:34 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: Stephen Rothwell, Greg KH, linux-next, linux-kernel
Em 06-07-2010 08:10, Laurent Pinchart escreveu:
> Hi Stephen,
>
> On Tuesday 06 July 2010 10:51:32 Stephen Rothwell wrote:
>> On Tue, 6 Jul 2010 10:18:20 +0200 Laurent Pinchart wrote:
>>>> diff --cc include/linux/usb/video.h
>>>> index 2d5b7fc,429c91a..0000000
>>>> --- a/include/linux/usb/video.h
>>>> +++ b/include/linux/usb/video.h
>>>> @@@ -160,12 -160,402 +160,409 @@@
>>>
>>> [snip]
>>>
>>>> +/* 4.1.2. Control Capabilities */
>>>> +#define UVC_CONTROL_CAP_GET (1 << 0)
>>>> +#define UVC_CONTROL_CAP_SET (1 << 1)
>>>> +#define UVC_CONTROL_CAP_DISABLED (1 << 2)
>>>> +#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
>>>> +#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
>>>> +
>>>
>>> Can you move those to the first part of the header file, with the other
>>> constants ?
>>
>> Sure, I just put it there because of the section numbering in the
>> comments. This, of course, will not influence how the file looks after
>> Linus merges it - unless the conflict is fixed up by one of the
>> maintainers before Linus gets it.
>
> I had the impression that the conflict resolutions in linux-next would end up
> in mainline. I must have been wrong, sorry.
>
> Mauro, can the uvc-gadget patches go through the linux-media tree ?
If Greg is ok, that's fine for me.
Cheers,
Mauro.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-06 8:51 ` Stephen Rothwell
@ 2010-07-06 11:10 ` Laurent Pinchart
2010-07-06 12:34 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 16+ messages in thread
From: Laurent Pinchart @ 2010-07-06 11:10 UTC (permalink / raw)
To: Stephen Rothwell; +Cc: Greg KH, linux-next, linux-kernel, Mauro Carvalho Chehab
Hi Stephen,
On Tuesday 06 July 2010 10:51:32 Stephen Rothwell wrote:
> On Tue, 6 Jul 2010 10:18:20 +0200 Laurent Pinchart wrote:
> > > diff --cc include/linux/usb/video.h
> > > index 2d5b7fc,429c91a..0000000
> > > --- a/include/linux/usb/video.h
> > > +++ b/include/linux/usb/video.h
> > > @@@ -160,12 -160,402 +160,409 @@@
> >
> > [snip]
> >
> > > +/* 4.1.2. Control Capabilities */
> > > +#define UVC_CONTROL_CAP_GET (1 << 0)
> > > +#define UVC_CONTROL_CAP_SET (1 << 1)
> > > +#define UVC_CONTROL_CAP_DISABLED (1 << 2)
> > > +#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
> > > +#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
> > > +
> >
> > Can you move those to the first part of the header file, with the other
> > constants ?
>
> Sure, I just put it there because of the section numbering in the
> comments. This, of course, will not influence how the file looks after
> Linus merges it - unless the conflict is fixed up by one of the
> maintainers before Linus gets it.
I had the impression that the conflict resolutions in linux-next would end up
in mainline. I must have been wrong, sorry.
Mauro, can the uvc-gadget patches go through the linux-media tree ?
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-06 8:18 ` Laurent Pinchart
@ 2010-07-06 8:51 ` Stephen Rothwell
2010-07-06 11:10 ` Laurent Pinchart
0 siblings, 1 reply; 16+ messages in thread
From: Stephen Rothwell @ 2010-07-06 8:51 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: Greg KH, linux-next, linux-kernel, Mauro Carvalho Chehab
[-- Attachment #1: Type: text/plain, Size: 1166 bytes --]
Hi Laurent,
On Tue, 6 Jul 2010 10:18:20 +0200 Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote:
>
> > diff --cc include/linux/usb/video.h
> > index 2d5b7fc,429c91a..0000000
> > --- a/include/linux/usb/video.h
> > +++ b/include/linux/usb/video.h
> > @@@ -160,12 -160,402 +160,409 @@@
>
> [snip]
>
> > +/* 4.1.2. Control Capabilities */
> > +#define UVC_CONTROL_CAP_GET (1 << 0)
> > +#define UVC_CONTROL_CAP_SET (1 << 1)
> > +#define UVC_CONTROL_CAP_DISABLED (1 << 2)
> > +#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
> > +#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
> > +
>
> Can you move those to the first part of the header file, with the other
> constants ?
Sure, I just put it there because of the section numbering in the
comments. This, of course, will not influence how the file looks after
Linus merges it - unless the conflict is fixed up by one of the
maintainers before Linus gets it.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-07-06 7:53 Stephen Rothwell
@ 2010-07-06 8:18 ` Laurent Pinchart
2010-07-06 8:51 ` Stephen Rothwell
0 siblings, 1 reply; 16+ messages in thread
From: Laurent Pinchart @ 2010-07-06 8:18 UTC (permalink / raw)
To: Stephen Rothwell; +Cc: Greg KH, linux-next, linux-kernel, Mauro Carvalho Chehab
Hi Stephen,
On Tuesday 06 July 2010 09:53:32 Stephen Rothwell wrote:
> Hi Greg,
>
> Today's linux-next merge of the usb tree got a conflict in
> drivers/media/video/uvc/uvcvideo.h include/linux/usb/video.h between
> commits c3810b43416155d040a200e7a7301f379c8ae8a0 ("V4L/DVB: uvcvideo:
> Support menu controls in the control mapping API") and
> da1df555fcbb98a9d2054304ea54545d9ff523cf ("V4L/DVB: uvcvideo: Define
> control information bits using macros") from the v4l-dvb tree and commit
> bb03b5daa9ab053adcce09e939d4115a873abf39 ("USB: uvc: Move constants and
> structures definitions to linux/usb/video.h") from the usb tree.
>
> I fixed it up (see below) and can carry the fix as necessary. Though
> moving the USB patch into the v4l-dvb tree may fix the conflicts as
> well ...
[snip]
> diff --cc include/linux/usb/video.h
> index 2d5b7fc,429c91a..0000000
> --- a/include/linux/usb/video.h
> +++ b/include/linux/usb/video.h
> @@@ -160,12 -160,402 +160,409 @@@
[snip]
> +/* 4.1.2. Control Capabilities */
> +#define UVC_CONTROL_CAP_GET (1 << 0)
> +#define UVC_CONTROL_CAP_SET (1 << 1)
> +#define UVC_CONTROL_CAP_DISABLED (1 << 2)
> +#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
> +#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
> +
Can you move those to the first part of the header file, with the other
constants ?
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 16+ messages in thread
* linux-next: manual merge of the usb tree with the v4l-dvb tree
@ 2010-07-06 7:53 Stephen Rothwell
2010-07-06 8:18 ` Laurent Pinchart
0 siblings, 1 reply; 16+ messages in thread
From: Stephen Rothwell @ 2010-07-06 7:53 UTC (permalink / raw)
To: Greg KH; +Cc: linux-next, linux-kernel, Laurent Pinchart, Mauro Carvalho Chehab
Hi Greg,
Today's linux-next merge of the usb tree got a conflict in
drivers/media/video/uvc/uvcvideo.h include/linux/usb/video.h between
commits c3810b43416155d040a200e7a7301f379c8ae8a0 ("V4L/DVB: uvcvideo:
Support menu controls in the control mapping API") and
da1df555fcbb98a9d2054304ea54545d9ff523cf ("V4L/DVB: uvcvideo: Define
control information bits using macros") from the v4l-dvb tree and commit
bb03b5daa9ab053adcce09e939d4115a873abf39 ("USB: uvc: Move constants and
structures definitions to linux/usb/video.h") from the usb tree.
I fixed it up (see below) and can carry the fix as necessary. Though
moving the USB patch into the v4l-dvb tree may fix the conflicts as
well ...
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
diff --cc drivers/media/video/uvc/uvcvideo.h
index 47b20e7,65ec0d1..0000000
--- a/drivers/media/video/uvc/uvcvideo.h
+++ b/drivers/media/video/uvc/uvcvideo.h
@@@ -196,24 -179,10 +196,6 @@@ struct uvc_device
/* TODO: Put the most frequently accessed fields at the beginning of
* structures to maximize cache efficiency.
*/
- struct uvc_streaming_control {
- __u16 bmHint;
- __u8 bFormatIndex;
- __u8 bFrameIndex;
- __u32 dwFrameInterval;
- __u16 wKeyFrameRate;
- __u16 wPFrameRate;
- __u16 wCompQuality;
- __u16 wCompWindowSize;
- __u16 wDelay;
- __u32 dwMaxVideoFrameSize;
- __u32 dwMaxPayloadTransferSize;
- __u32 dwClockFrequency;
- __u8 bmFramingInfo;
- __u8 bPreferedVersion;
- __u8 bMinVersion;
- __u8 bMaxVersion;
- };
-struct uvc_menu_info {
- __u32 value;
- __u8 name[32];
-};
struct uvc_control_info {
struct list_head list;
diff --cc include/linux/usb/video.h
index 2d5b7fc,429c91a..0000000
--- a/include/linux/usb/video.h
+++ b/include/linux/usb/video.h
@@@ -160,12 -160,402 +160,409 @@@
#define UVC_STATUS_TYPE_CONTROL 1
#define UVC_STATUS_TYPE_STREAMING 2
+ /* 2.4.3.3. Payload Header Information */
+ #define UVC_STREAM_EOH (1 << 7)
+ #define UVC_STREAM_ERR (1 << 6)
+ #define UVC_STREAM_STI (1 << 5)
+ #define UVC_STREAM_RES (1 << 4)
+ #define UVC_STREAM_SCR (1 << 3)
+ #define UVC_STREAM_PTS (1 << 2)
+ #define UVC_STREAM_EOF (1 << 1)
+ #define UVC_STREAM_FID (1 << 0)
+
+ /* ------------------------------------------------------------------------
+ * UVC structures
+ */
+
+ /* All UVC descriptors have these 3 fields at the beginning */
+ struct uvc_descriptor_header {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ } __attribute__((packed));
+
+ /* 3.7.2. Video Control Interface Header Descriptor */
+ struct uvc_header_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u16 bcdUVC;
+ __u16 wTotalLength;
+ __u32 dwClockFrequency;
+ __u8 bInCollection;
+ __u8 baInterfaceNr[];
+ } __attribute__((__packed__));
+
+ #define UVC_DT_HEADER_SIZE(n) (12+(n))
+
+ #define UVC_HEADER_DESCRIPTOR(n) \
+ uvc_header_descriptor_##n
+
+ #define DECLARE_UVC_HEADER_DESCRIPTOR(n) \
+ struct UVC_HEADER_DESCRIPTOR(n) { \
+ __u8 bLength; \
+ __u8 bDescriptorType; \
+ __u8 bDescriptorSubType; \
+ __u16 bcdUVC; \
+ __u16 wTotalLength; \
+ __u32 dwClockFrequency; \
+ __u8 bInCollection; \
+ __u8 baInterfaceNr[n]; \
+ } __attribute__ ((packed))
+
+ /* 3.7.2.1. Input Terminal Descriptor */
+ struct uvc_input_terminal_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bTerminalID;
+ __u16 wTerminalType;
+ __u8 bAssocTerminal;
+ __u8 iTerminal;
+ } __attribute__((__packed__));
+
+ #define UVC_DT_INPUT_TERMINAL_SIZE 8
+
+ /* 3.7.2.2. Output Terminal Descriptor */
+ struct uvc_output_terminal_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bTerminalID;
+ __u16 wTerminalType;
+ __u8 bAssocTerminal;
+ __u8 bSourceID;
+ __u8 iTerminal;
+ } __attribute__((__packed__));
+
+ #define UVC_DT_OUTPUT_TERMINAL_SIZE 9
+
+ /* 3.7.2.3. Camera Terminal Descriptor */
+ struct uvc_camera_terminal_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bTerminalID;
+ __u16 wTerminalType;
+ __u8 bAssocTerminal;
+ __u8 iTerminal;
+ __u16 wObjectiveFocalLengthMin;
+ __u16 wObjectiveFocalLengthMax;
+ __u16 wOcularFocalLength;
+ __u8 bControlSize;
+ __u8 bmControls[3];
+ } __attribute__((__packed__));
+
+ #define UVC_DT_CAMERA_TERMINAL_SIZE(n) (15+(n))
+
+ /* 3.7.2.4. Selector Unit Descriptor */
+ struct uvc_selector_unit_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bUnitID;
+ __u8 bNrInPins;
+ __u8 baSourceID[0];
+ __u8 iSelector;
+ } __attribute__((__packed__));
+
+ #define UVC_DT_SELECTOR_UNIT_SIZE(n) (6+(n))
+
+ #define UVC_SELECTOR_UNIT_DESCRIPTOR(n) \
+ uvc_selector_unit_descriptor_##n
+
+ #define DECLARE_UVC_SELECTOR_UNIT_DESCRIPTOR(n) \
+ struct UVC_SELECTOR_UNIT_DESCRIPTOR(n) { \
+ __u8 bLength; \
+ __u8 bDescriptorType; \
+ __u8 bDescriptorSubType; \
+ __u8 bUnitID; \
+ __u8 bNrInPins; \
+ __u8 baSourceID[n]; \
+ __u8 iSelector; \
+ } __attribute__ ((packed))
+
+ /* 3.7.2.5. Processing Unit Descriptor */
+ struct uvc_processing_unit_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bUnitID;
+ __u8 bSourceID;
+ __u16 wMaxMultiplier;
+ __u8 bControlSize;
+ __u8 bmControls[2];
+ __u8 iProcessing;
+ } __attribute__((__packed__));
+
+ #define UVC_DT_PROCESSING_UNIT_SIZE(n) (9+(n))
+
+ /* 3.7.2.6. Extension Unit Descriptor */
+ struct uvc_extension_unit_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bUnitID;
+ __u8 guidExtensionCode[16];
+ __u8 bNumControls;
+ __u8 bNrInPins;
+ __u8 baSourceID[0];
+ __u8 bControlSize;
+ __u8 bmControls[0];
+ __u8 iExtension;
+ } __attribute__((__packed__));
+
+ #define UVC_DT_EXTENSION_UNIT_SIZE(p, n) (24+(p)+(n))
+
+ #define UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) \
+ uvc_extension_unit_descriptor_##p_##n
+
+ #define DECLARE_UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) \
+ struct UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) { \
+ __u8 bLength; \
+ __u8 bDescriptorType; \
+ __u8 bDescriptorSubType; \
+ __u8 bUnitID; \
+ __u8 guidExtensionCode[16]; \
+ __u8 bNumControls; \
+ __u8 bNrInPins; \
+ __u8 baSourceID[p]; \
+ __u8 bControlSize; \
+ __u8 bmControls[n]; \
+ __u8 iExtension; \
+ } __attribute__ ((packed))
+
+ /* 3.8.2.2. Video Control Interrupt Endpoint Descriptor */
+ struct uvc_control_endpoint_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u16 wMaxTransferSize;
+ } __attribute__((__packed__));
+
+ #define UVC_DT_CONTROL_ENDPOINT_SIZE 5
+
+ /* 3.9.2.1. Input Header Descriptor */
+ struct uvc_input_header_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bNumFormats;
+ __u16 wTotalLength;
+ __u8 bEndpointAddress;
+ __u8 bmInfo;
+ __u8 bTerminalLink;
+ __u8 bStillCaptureMethod;
+ __u8 bTriggerSupport;
+ __u8 bTriggerUsage;
+ __u8 bControlSize;
+ __u8 bmaControls[];
+ } __attribute__((__packed__));
+
+ #define UVC_DT_INPUT_HEADER_SIZE(n, p) (13+(n*p))
+
+ #define UVC_INPUT_HEADER_DESCRIPTOR(n, p) \
+ uvc_input_header_descriptor_##n_##p
+
+ #define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n, p) \
+ struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) { \
+ __u8 bLength; \
+ __u8 bDescriptorType; \
+ __u8 bDescriptorSubType; \
+ __u8 bNumFormats; \
+ __u16 wTotalLength; \
+ __u8 bEndpointAddress; \
+ __u8 bmInfo; \
+ __u8 bTerminalLink; \
+ __u8 bStillCaptureMethod; \
+ __u8 bTriggerSupport; \
+ __u8 bTriggerUsage; \
+ __u8 bControlSize; \
+ __u8 bmaControls[p][n]; \
+ } __attribute__ ((packed))
+
+ /* 3.9.2.2. Output Header Descriptor */
+ struct uvc_output_header_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bNumFormats;
+ __u16 wTotalLength;
+ __u8 bEndpointAddress;
+ __u8 bTerminalLink;
+ __u8 bControlSize;
+ __u8 bmaControls[];
+ } __attribute__((__packed__));
+
+ #define UVC_DT_OUTPUT_HEADER_SIZE(n, p) (9+(n*p))
+
+ #define UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) \
+ uvc_output_header_descriptor_##n_##p
+
+ #define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) \
+ struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) { \
+ __u8 bLength; \
+ __u8 bDescriptorType; \
+ __u8 bDescriptorSubType; \
+ __u8 bNumFormats; \
+ __u16 wTotalLength; \
+ __u8 bEndpointAddress; \
+ __u8 bTerminalLink; \
+ __u8 bControlSize; \
+ __u8 bmaControls[p][n]; \
+ } __attribute__ ((packed))
+
+ /* 3.9.2.6. Color matching descriptor */
+ struct uvc_color_matching_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bColorPrimaries;
+ __u8 bTransferCharacteristics;
+ __u8 bMatrixCoefficients;
+ } __attribute__((__packed__));
+
+ #define UVC_DT_COLOR_MATCHING_SIZE 6
+
+/* 4.1.2. Control Capabilities */
+#define UVC_CONTROL_CAP_GET (1 << 0)
+#define UVC_CONTROL_CAP_SET (1 << 1)
+#define UVC_CONTROL_CAP_DISABLED (1 << 2)
+#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
+#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
+
+ /* 4.3.1.1. Video Probe and Commit Controls */
+ struct uvc_streaming_control {
+ __u16 bmHint;
+ __u8 bFormatIndex;
+ __u8 bFrameIndex;
+ __u32 dwFrameInterval;
+ __u16 wKeyFrameRate;
+ __u16 wPFrameRate;
+ __u16 wCompQuality;
+ __u16 wCompWindowSize;
+ __u16 wDelay;
+ __u32 dwMaxVideoFrameSize;
+ __u32 dwMaxPayloadTransferSize;
+ __u32 dwClockFrequency;
+ __u8 bmFramingInfo;
+ __u8 bPreferedVersion;
+ __u8 bMinVersion;
+ __u8 bMaxVersion;
+ } __attribute__((__packed__));
+
+ /* Uncompressed Payload - 3.1.1. Uncompressed Video Format Descriptor */
+ struct uvc_format_uncompressed {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bFormatIndex;
+ __u8 bNumFrameDescriptors;
+ __u8 guidFormat[16];
+ __u8 bBitsPerPixel;
+ __u8 bDefaultFrameIndex;
+ __u8 bAspectRatioX;
+ __u8 bAspectRatioY;
+ __u8 bmInterfaceFlags;
+ __u8 bCopyProtect;
+ } __attribute__((__packed__));
+
+ #define UVC_DT_FORMAT_UNCOMPRESSED_SIZE 27
+
+ /* Uncompressed Payload - 3.1.2. Uncompressed Video Frame Descriptor */
+ struct uvc_frame_uncompressed {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bFrameIndex;
+ __u8 bmCapabilities;
+ __u16 wWidth;
+ __u16 wHeight;
+ __u32 dwMinBitRate;
+ __u32 dwMaxBitRate;
+ __u32 dwMaxVideoFrameBufferSize;
+ __u32 dwDefaultFrameInterval;
+ __u8 bFrameIntervalType;
+ __u32 dwFrameInterval[];
+ } __attribute__((__packed__));
+
+ #define UVC_DT_FRAME_UNCOMPRESSED_SIZE(n) (26+4*(n))
+
+ #define UVC_FRAME_UNCOMPRESSED(n) \
+ uvc_frame_uncompressed_##n
+
+ #define DECLARE_UVC_FRAME_UNCOMPRESSED(n) \
+ struct UVC_FRAME_UNCOMPRESSED(n) { \
+ __u8 bLength; \
+ __u8 bDescriptorType; \
+ __u8 bDescriptorSubType; \
+ __u8 bFrameIndex; \
+ __u8 bmCapabilities; \
+ __u16 wWidth; \
+ __u16 wHeight; \
+ __u32 dwMinBitRate; \
+ __u32 dwMaxBitRate; \
+ __u32 dwMaxVideoFrameBufferSize; \
+ __u32 dwDefaultFrameInterval; \
+ __u8 bFrameIntervalType; \
+ __u32 dwFrameInterval[n]; \
+ } __attribute__ ((packed))
+
+ /* MJPEG Payload - 3.1.1. MJPEG Video Format Descriptor */
+ struct uvc_format_mjpeg {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bFormatIndex;
+ __u8 bNumFrameDescriptors;
+ __u8 bmFlags;
+ __u8 bDefaultFrameIndex;
+ __u8 bAspectRatioX;
+ __u8 bAspectRatioY;
+ __u8 bmInterfaceFlags;
+ __u8 bCopyProtect;
+ } __attribute__((__packed__));
+
+ #define UVC_DT_FORMAT_MJPEG_SIZE 11
+
+ /* MJPEG Payload - 3.1.2. MJPEG Video Frame Descriptor */
+ struct uvc_frame_mjpeg {
+ __u8 bLength;
+ __u8 bDescriptorType;
+ __u8 bDescriptorSubType;
+ __u8 bFrameIndex;
+ __u8 bmCapabilities;
+ __u16 wWidth;
+ __u16 wHeight;
+ __u32 dwMinBitRate;
+ __u32 dwMaxBitRate;
+ __u32 dwMaxVideoFrameBufferSize;
+ __u32 dwDefaultFrameInterval;
+ __u8 bFrameIntervalType;
+ __u32 dwFrameInterval[];
+ } __attribute__((__packed__));
+
+ #define UVC_DT_FRAME_MJPEG_SIZE(n) (26+4*(n))
+
+ #define UVC_FRAME_MJPEG(n) \
+ uvc_frame_mjpeg_##n
+
+ #define DECLARE_UVC_FRAME_MJPEG(n) \
+ struct UVC_FRAME_MJPEG(n) { \
+ __u8 bLength; \
+ __u8 bDescriptorType; \
+ __u8 bDescriptorSubType; \
+ __u8 bFrameIndex; \
+ __u8 bmCapabilities; \
+ __u16 wWidth; \
+ __u16 wHeight; \
+ __u32 dwMinBitRate; \
+ __u32 dwMaxBitRate; \
+ __u32 dwMaxVideoFrameBufferSize; \
+ __u32 dwDefaultFrameInterval; \
+ __u8 bFrameIntervalType; \
+ __u32 dwFrameInterval[n]; \
+ } __attribute__ ((packed))
+
#endif /* __LINUX_USB_VIDEO_H */
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: linux-next: manual merge of the usb tree with the v4l-dvb tree
2010-05-12 5:57 Stephen Rothwell
@ 2010-05-12 19:49 ` Greg KH
0 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2010-05-12 19:49 UTC (permalink / raw)
To: Stephen Rothwell
Cc: linux-next, linux-kernel, Jean-François Moine,
Mauro Carvalho Chehab, Daniel Mack
On Wed, May 12, 2010 at 03:57:50PM +1000, Stephen Rothwell wrote:
> Hi Greg,
>
> Today's linux-next merge of the usb tree got a conflict in
> drivers/media/video/gspca/gspca.c between commit
> 659a02869f4a8be95df9efa76af02e53e400555f ("V4L/DVB: gspca - main: Convert
> wMaxPacketSize from little endian 16 to cpu") from the v4l-dvb tree and
> commit 42b4658241d4c16c838daf9d63c0029cd7269fe0 ("USB: rename
> usb_buffer_alloc() and usb_buffer_free() users") from the usb tree.
>
> I fixed it up (see below) and can carry the fix as necessary.
The fix looks great to me, thanks.
greg k-h
^ permalink raw reply [flat|nested] 16+ messages in thread
* linux-next: manual merge of the usb tree with the v4l-dvb tree
@ 2010-05-12 5:57 Stephen Rothwell
2010-05-12 19:49 ` Greg KH
0 siblings, 1 reply; 16+ messages in thread
From: Stephen Rothwell @ 2010-05-12 5:57 UTC (permalink / raw)
To: Greg KH
Cc: linux-next, linux-kernel, "Jean-François Moine",
Mauro Carvalho Chehab, Daniel Mack
Hi Greg,
Today's linux-next merge of the usb tree got a conflict in
drivers/media/video/gspca/gspca.c between commit
659a02869f4a8be95df9efa76af02e53e400555f ("V4L/DVB: gspca - main: Convert
wMaxPacketSize from little endian 16 to cpu") from the v4l-dvb tree and
commit 42b4658241d4c16c838daf9d63c0029cd7269fe0 ("USB: rename
usb_buffer_alloc() and usb_buffer_free() users") from the usb tree.
I fixed it up (see below) and can carry the fix as necessary.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
diff --cc drivers/media/video/gspca/gspca.c
index efe6159,00713f8..0000000
--- a/drivers/media/video/gspca/gspca.c
+++ b/drivers/media/video/gspca/gspca.c
@@@ -213,7 -213,7 +213,7 @@@ static int alloc_and_submit_int_urb(str
goto error;
}
- buffer = usb_buffer_alloc(dev, buffer_len,
- buffer = usb_alloc_coherent(dev, ep->wMaxPacketSize,
++ buffer = usb_alloc_coherent(dev, buffer_len,
GFP_KERNEL, &urb->transfer_dma);
if (!buffer) {
ret = -ENOMEM;
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2012-05-23 6:22 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-21 6:06 linux-next: manual merge of the usb tree with the v4l-dvb tree Stephen Rothwell
2012-05-23 6:22 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2010-07-06 7:53 Stephen Rothwell
2010-07-06 8:18 ` Laurent Pinchart
2010-07-06 8:51 ` Stephen Rothwell
2010-07-06 11:10 ` Laurent Pinchart
2010-07-06 12:34 ` Mauro Carvalho Chehab
2010-07-07 15:13 ` Greg KH
2010-07-13 15:34 ` Mauro Carvalho Chehab
2010-07-13 17:23 ` Laurent Pinchart
2010-07-24 15:32 ` Mauro Carvalho Chehab
2010-07-26 8:24 ` Laurent Pinchart
2010-07-26 14:01 ` Mauro Carvalho Chehab
2010-07-26 21:42 ` Greg KH
2010-05-12 5:57 Stephen Rothwell
2010-05-12 19:49 ` Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).