usb: gadget: uvc: configfs: Add bFrameIndex attributes
authorJoel Pepper <joel.pepper@rwth-aachen.de>
Tue, 29 May 2018 19:02:13 +0000 (21:02 +0200)
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 24 Sep 2018 16:00:35 +0000 (19:00 +0300)
commitb206548be6459ea5ffa82b9f1175915b225a89a1
treea4829236755de0f970f8bae416cad8ee5742dbe6
parent61ff10e0ea0cb39c737eab7e4fc5f0ae4d0fff33
usb: gadget: uvc: configfs: Add bFrameIndex attributes

- Add bFrameIndex as a UVCG_FRAME_ATTR_RO for each frame size.
- Automatically assign ascending bFrameIndex to each frame in a format.

Before all "bFrameindex" attributes were set to "1" with no way to
configure the gadget otherwise. This resulted in the host always
negotiating for bFrameIndex 1 (i.e. the first frame size of the gadget).
After the negotiation the host driver will set the user or application
selected frame size, while the gadget is actually set to the first frame
size.

Now, when the containing format is linked into the streaming header,
iterate over all child frame descriptors and assign ascending indices.
The automatically assigned indices can be read from the new read only
bFrameIndex configfs attribute in each frame descriptor item.

Signed-off-by: Joel Pepper <joel.pepper@rwth-aachen.de>
[Simplified documentation, renamed function, blank space update]
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Documentation/ABI/testing/configfs-usb-gadget-uvc
drivers/usb/gadget/function/uvc_configfs.c