diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2011-11-25 02:27:50 +0100 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2011-12-12 10:45:16 +0100 |
commit | ced6e09e6ec4f52c9bd76d6b8debd67517fdcc1c (patch) | |
tree | f46d864de03eb79656c898a09343826071591729 /drivers/usb | |
parent | usb: renesas_usbhs: add usbhs_pipe_is_stall() (diff) | |
download | linux-ced6e09e6ec4f52c9bd76d6b8debd67517fdcc1c.tar.xz linux-ced6e09e6ec4f52c9bd76d6b8debd67517fdcc1c.zip |
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>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/renesas_usbhs/mod_gadget.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c index 9a9e36378e87..3130089eacff 100644 --- a/drivers/usb/renesas_usbhs/mod_gadget.c +++ b/drivers/usb/renesas_usbhs/mod_gadget.c @@ -282,6 +282,29 @@ struct usbhsg_recip_handle req_clear_feature = { }; /* + * 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 */ static int usbhsg_recip_run_handle(struct usbhs_priv *priv, @@ -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; } } |