Skip to contentSkip to conversation

usb/gadget: Add driver for Aspeed SoC virtual hub

PATCH Superseded Benjamin Herrenschmidt 1 participant 1 message Mar 27, 2018 USB

v7 of 8 Superseded Latest is v8 →

lore
Share & tools
lore
#0 lore raw

PATCH v7 1/1 usb/gadget: Add driver for Aspeed SoC virtual hub

Quoted 46 lines · Felipe Balbi

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.

Quoted 2 lines
$ gcc --version
gcc (Debian 7.3.0-12) 7.3.0

Hrm, no idea what to do about it short of installing myself a debian on some machine here. Is that an x86 compiler or a cross compiler ?

It really looks like a compiler bug to me...

Quoted 7 lines
Quoted 7 lines
(quoted diff) +7 -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);
Quoted 8 lines

Review

Quoted 5 lines
(quoted diff) +5 -0
+}
+
+/* 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.

Yeah I can do that, would have to pick a better name though ;-)

Quoted 5 lines

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?

An accident, not sure how those snuck in, I'll fix.

Ben.
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html