usb: gadget: dfu: add functional descriptor in descriptor set
The "DFU descriptor set" must contain the "DFU functional descriptor" but it is missing today in U-Boot code (cf: DFU spec 1.1, chapter 4.2 DFU Mode Descriptor Set) This patch only allocate buffer and copy DFU functional descriptor after interfaces. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Signed-off-by: Patrick Delaunay <patrick.delaunay73@gmail.com>
This commit is contained in:
parent
282b72082f
commit
8987012fe5
|
@ -654,7 +654,7 @@ static int dfu_prepare_function(struct f_dfu *f_dfu, int n)
|
||||||
struct usb_interface_descriptor *d;
|
struct usb_interface_descriptor *d;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
f_dfu->function = calloc(sizeof(struct usb_descriptor_header *), n + 1);
|
f_dfu->function = calloc(sizeof(struct usb_descriptor_header *), n + 2);
|
||||||
if (!f_dfu->function)
|
if (!f_dfu->function)
|
||||||
goto enomem;
|
goto enomem;
|
||||||
|
|
||||||
|
@ -673,6 +673,14 @@ static int dfu_prepare_function(struct f_dfu *f_dfu, int n)
|
||||||
|
|
||||||
f_dfu->function[i] = (struct usb_descriptor_header *)d;
|
f_dfu->function[i] = (struct usb_descriptor_header *)d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* add DFU Functional Descriptor */
|
||||||
|
f_dfu->function[i] = calloc(sizeof(dfu_func), 1);
|
||||||
|
if (!f_dfu->function[i])
|
||||||
|
goto enomem;
|
||||||
|
memcpy(f_dfu->function[i], &dfu_func, sizeof(dfu_func));
|
||||||
|
|
||||||
|
i++;
|
||||||
f_dfu->function[i] = NULL;
|
f_dfu->function[i] = NULL;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue