usb/gadget: Add driver for Aspeed SoC virtual hub
PATCH v7 1/1 usb/gadget: Add driver for Aspeed SoC virtual hub
Hi,
Benjamin Herrenschmidt <[email protected]> writes:
<snip>
Quoted 27 lines
(quoted diff) +27
-0+static int ast_vhub_rep_desc(struct ast_vhub_ep *ep, + u8 desc_type, u16 len) +{ + const void *desc; + size_t dsize; + + EPDBG(ep, "GET_DESCRIPTOR(type:%d)\n", desc_type); + switch(desc_type) { + case USB_DT_DEVICE: + desc = &ast_vhub_dev_desc; + dsize = USB_DT_DEVICE_SIZE; + break; + case USB_DT_CONFIG: + desc = &ast_vhub_conf_desc; + dsize = AST_VHUB_CONF_DESC_SIZE; + break; + case USB_DT_HUB: + desc = &ast_vhub_hub_desc; + dsize = AST_VHUB_HUB_DESC_SIZE; + break; + default: + return std_req_stall; + } + if (dsize < len) + len = dsize; + /* + * This is our limit for hub replies in our current
Review
Quoted 10 lines
(quoted diff) +10
-0+ * implementation, keeps things simpler. + */ + if (WARN_ON(len >= AST_VHUB_EP0_MAX_PACKET)) + len = AST_VHUB_EP0_MAX_PACKET - 1; + + /* + * Copy first to EP buffer and send from there, so + * we can do some in-place patching if needed + */ + memcpy(ep->buf, desc, len);
still fails to compile here the same way.
$ gcc --version gcc (Debian 7.3.0-12) 7.3.0
Review
Quoted 12 lines
(quoted diff) +12
-0+ + /* Patch it if forcing USB1 */ + if (desc_type == USB_DT_DEVICE && ep->vhub->force_usb1) + ast_vhub_patch_dev_desc_usb1(ep->buf); + + /* Shoot it from the EP buffer */ + return ast_vhub_reply(ep, NULL, len); +} + +/* copied from hdc.c */ +static unsigned +ascii2desc(char const *s, u8 *buf, unsigned len)
seems it would be best to move this helper to usb common, or something like that. Copying is not a good idea.
Review
Quoted 3 lines
(quoted diff) +3
-0+static int ast_vhub_rep_string(struct ast_vhub_ep *ep, + u8 string_id, u16 lang_id, + u16 len)
spaces for indentation?