Skip to contentSkip to conversation

usb/gadget: Add driver for Aspeed SoC virtual hub

PATCH New Felipe Balbi 1 participant 1 message Mar 27, 2018 USB

lore
Share & tools
lore
#0 lore raw

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?