Răsfoiți Sursa

usb: renesas_usbhs: add basic USB_REQ_SET_FEATURE support

This patch adds basic set-feature support for chapter 9 test.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Kuninori Morimoto 13 ani în urmă
părinte
comite
ced6e09e6e
1 a modificat fișierele cu 26 adăugiri și 0 ștergeri
  1. 26 0
      drivers/usb/renesas_usbhs/mod_gadget.c

+ 26 - 0
drivers/usb/renesas_usbhs/mod_gadget.c

@@ -281,6 +281,29 @@ struct usbhsg_recip_handle req_clear_feature = {
 	.endpoint	= usbhsg_recip_handler_std_clear_endpoint,
 };
 
+/*
+ *		USB_TYPE_STANDARD / set feature functions
+ */
+static int usbhsg_recip_handler_std_set_endpoint(struct usbhs_priv *priv,
+						 struct usbhsg_uep *uep,
+						 struct usb_ctrlrequest *ctrl)
+{
+	struct usbhs_pipe *pipe = usbhsg_uep_to_pipe(uep);
+
+	usbhs_pipe_stall(pipe);
+
+	usbhsg_recip_handler_std_control_done(priv, uep, ctrl);
+
+	return 0;
+}
+
+struct usbhsg_recip_handle req_set_feature = {
+	.name		= "set feature",
+	.device		= usbhsg_recip_handler_std_control_done,
+	.interface	= usbhsg_recip_handler_std_control_done,
+	.endpoint	= usbhsg_recip_handler_std_set_endpoint,
+};
+
 /*
  *		USB_TYPE handler
  */
@@ -405,6 +428,9 @@ static int usbhsg_irq_ctrl_stage(struct usbhs_priv *priv,
 		case USB_REQ_CLEAR_FEATURE:
 			recip_handler = &req_clear_feature;
 			break;
+		case USB_REQ_SET_FEATURE:
+			recip_handler = &req_set_feature;
+			break;
 		}
 	}