From: Pawel Szewczyk Date: Fri, 3 Jul 2015 09:58:36 +0000 (+0200) Subject: gadget: Add gadget disable on libusbg backend X-Git-Tag: accepted/tizen/3.0/common/20161114.110810~40 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4fddc1944570f60d0bda8280bd07192f31b41df4;p=platform%2Fupstream%2Fgt.git gadget: Add gadget disable on libusbg backend Change-Id: I6a42e3b11e50b365cac1af4b872ba693b0c02017 Signed-off-by: Pawel Szewczyk --- diff --git a/source/gadget/src/gadget_libusbg.c b/source/gadget/src/gadget_libusbg.c index c2c651c..6253527 100644 --- a/source/gadget/src/gadget_libusbg.c +++ b/source/gadget/src/gadget_libusbg.c @@ -155,13 +155,57 @@ static int enable_func(void *data) return 0; } +static int disable_func(void *data) +{ + struct gt_gadget_disable_data *dt; + + usbg_gadget *g; + usbg_udc *u; + int usbg_ret; + + dt = (struct gt_gadget_disable_data *)data; + + if (dt->gadget) { + g = usbg_get_gadget(backend_ctx.libusbg_state, dt->gadget); + if (g == NULL) { + fprintf(stderr, "Gadget '%s' not found\n", dt->gadget); + return -1; + } + } else if (dt->udc) { + u = usbg_get_udc(backend_ctx.libusbg_state, dt->udc); + if (u == NULL) { + fprintf(stderr, "UDC '%s' not found\n", dt->udc); + return -1; + } + + g = usbg_get_udc_gadget(u); + if (g == NULL) { + fprintf(stderr, "No gadget enabled on this UDC\n"); + return -1; + } + } else { + /*TODO disabling default gadget */ + fprintf(stderr, "Gadget not specified\n"); + return -1; + } + + usbg_ret = usbg_disable_gadget(g); + if (usbg_ret != USBG_SUCCESS) { + fprintf(stderr, "Error on disable gadget: %s : %s\n", + usbg_error_name(usbg_ret), usbg_strerror(usbg_ret)); + return -1; + } + + return 0; +} + struct gt_gadget_backend gt_gadget_backend_libusbg = { .create = create_func, .rm = rm_func, .get = NULL, .set = NULL, .enable = enable_func, - .disable = NULL, + .disable = disable_func, .gadget = NULL, .load = NULL, .save = NULL,