aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget
diff options
context:
space:
mode:
authorHeiko Stübner <heiko@sntech.de>2011-09-04 15:56:02 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-09-18 04:33:06 -0400
commitfba9e546eac984d46c4a16253344d7297c24d75c (patch)
tree987829f01db3de5f3ba0edee3001826184bb941f /drivers/usb/gadget
parente538dfdae85244fd2c4231725d82cc1f1bc4942c (diff)
s3c-hsudc: implement vbus_draw hook
When a transceiver is available use otg_set_power to submit the target current to it. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r--drivers/usb/gadget/s3c-hsudc.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/usb/gadget/s3c-hsudc.c b/drivers/usb/gadget/s3c-hsudc.c
index 25829b4398da..8d54f893cefe 100644
--- a/drivers/usb/gadget/s3c-hsudc.c
+++ b/drivers/usb/gadget/s3c-hsudc.c
@@ -1241,10 +1241,24 @@ static int s3c_hsudc_gadget_getframe(struct usb_gadget *gadget)
1241 return s3c_hsudc_read_frameno(to_hsudc(gadget)); 1241 return s3c_hsudc_read_frameno(to_hsudc(gadget));
1242} 1242}
1243 1243
1244static int s3c_hsudc_vbus_draw(struct usb_gadget *gadget, unsigned mA)
1245{
1246 struct s3c_hsudc *hsudc = the_controller;
1247
1248 if (!hsudc)
1249 return -ENODEV;
1250
1251 if (hsudc->transceiver)
1252 return otg_set_power(hsudc->transceiver, mA);
1253
1254 return -EOPNOTSUPP;
1255}
1256
1244static struct usb_gadget_ops s3c_hsudc_gadget_ops = { 1257static struct usb_gadget_ops s3c_hsudc_gadget_ops = {
1245 .get_frame = s3c_hsudc_gadget_getframe, 1258 .get_frame = s3c_hsudc_gadget_getframe,
1246 .start = s3c_hsudc_start, 1259 .start = s3c_hsudc_start,
1247 .stop = s3c_hsudc_stop, 1260 .stop = s3c_hsudc_stop,
1261 .vbus_draw = s3c_hsudc_vbus_draw,
1248}; 1262};
1249 1263
1250static int s3c_hsudc_probe(struct platform_device *pdev) 1264static int s3c_hsudc_probe(struct platform_device *pdev)