Lines Matching refs:gi

241 	struct gadget_info *gi = to_gadget_info(item);
245 mutex_lock(&gi->lock);
246 udc_name = gi->composite.gadget_driver.udc_name;
248 mutex_unlock(&gi->lock);
253 static int unregister_gadget(struct gadget_info *gi)
257 if (!gi->composite.gadget_driver.udc_name)
260 ret = usb_gadget_unregister_driver(&gi->composite.gadget_driver);
263 kfree(gi->composite.gadget_driver.udc_name);
264 gi->composite.gadget_driver.udc_name = NULL;
271 struct gadget_info *gi = to_gadget_info(item);
284 mutex_lock(&gi->lock);
287 ret = unregister_gadget(gi);
292 if (gi->composite.gadget_driver.udc_name) {
296 gi->composite.gadget_driver.udc_name = name;
297 ret = usb_gadget_register_driver(&gi->composite.gadget_driver);
299 gi->composite.gadget_driver.udc_name = NULL;
303 mutex_unlock(&gi->lock);
307 mutex_unlock(&gi->lock);
322 struct gadget_info *gi = to_gadget_info(item);
324 mutex_lock(&gi->lock);
327 if (gi->composite.gadget_driver.udc_name)
331 gi->composite.max_speed = USB_SPEED_SUPER_PLUS;
333 gi->composite.max_speed = USB_SPEED_SUPER;
335 gi->composite.max_speed = USB_SPEED_HIGH;
337 gi->composite.max_speed = USB_SPEED_FULL;
339 gi->composite.max_speed = USB_SPEED_LOW;
343 gi->composite.gadget_driver.max_speed = gi->composite.max_speed;
345 mutex_unlock(&gi->lock);
348 mutex_unlock(&gi->lock);
399 struct gadget_info *gi = to_gadget_info(item);
401 WARN_ON(!list_empty(&gi->cdev.configs));
402 WARN_ON(!list_empty(&gi->string_list));
403 WARN_ON(!list_empty(&gi->available_func));
404 kfree(gi->composite.gadget_driver.function);
405 kfree(gi->composite.gadget_driver.driver.name);
406 kfree(gi);
428 struct gadget_info *gi = cfg_to_gadget_info(cfg);
436 mutex_lock(&gi->lock);
443 if (gi->composite.gadget_driver.udc_name) {
448 list_for_each_entry(iter, &gi->available_func, cfs_list) {
476 mutex_unlock(&gi->lock);
485 struct gadget_info *gi = cfg_to_gadget_info(cfg);
497 mutex_lock(&gi->lock);
498 if (gi->composite.gadget_driver.udc_name)
499 unregister_gadget(gi);
500 WARN_ON(gi->composite.gadget_driver.udc_name);
506 mutex_unlock(&gi->lock);
510 mutex_unlock(&gi->lock);
602 struct gadget_info *gi;
639 gi = container_of(group, struct gadget_info, functions_group);
641 mutex_lock(&gi->lock);
642 list_add_tail(&fi->cfs_list, &gi->available_func);
643 mutex_unlock(&gi->lock);
652 struct gadget_info *gi;
654 gi = container_of(group, struct gadget_info, functions_group);
656 mutex_lock(&gi->lock);
658 mutex_unlock(&gi->lock);
696 struct gadget_info *gi;
703 gi = container_of(group, struct gadget_info, configs_group);
745 ret = usb_add_config_only(&gi->cdev, &cfg->c);
909 struct gadget_info *gi;
925 gi = container_of(group, struct gadget_info, strings_group);
927 list_for_each_entry(gs, &gi->string_list, list) {
936 list_add_tail(&new->list, &gi->string_list);
979 struct gadget_info *gi = webusb_item_to_gadget_info(item);
987 mutex_lock(&gi->lock);
988 gi->use_webusb = use;
989 mutex_unlock(&gi->lock);
1003 struct gadget_info *gi = webusb_item_to_gadget_info(item);
1015 mutex_lock(&gi->lock);
1016 gi->bcd_webusb_version = bcdVersion;
1017 mutex_unlock(&gi->lock);
1031 struct gadget_info *gi = webusb_item_to_gadget_info(item);
1039 mutex_lock(&gi->lock);
1040 gi->b_webusb_vendor_code = b_vendor_code;
1041 mutex_unlock(&gi->lock);
1054 struct gadget_info *gi = webusb_item_to_gadget_info(item);
1063 if (l > sizeof(gi->landing_page)) {
1082 mutex_lock(&gi->lock);
1084 memcpy_and_pad(gi->landing_page, sizeof(gi->landing_page), page, l, 0);
1085 mutex_unlock(&gi->lock);
1124 struct gadget_info *gi = os_desc_item_to_gadget_info(item);
1132 mutex_lock(&gi->lock);
1133 gi->use_os_desc = use;
1134 mutex_unlock(&gi->lock);
1148 struct gadget_info *gi = os_desc_item_to_gadget_info(item);
1156 mutex_lock(&gi->lock);
1157 gi->b_vendor_code = b_vendor_code;
1158 mutex_unlock(&gi->lock);
1165 struct gadget_info *gi = os_desc_item_to_gadget_info(item);
1168 res = utf16s_to_utf8s((wchar_t *) gi->qw_sign, OS_STRING_QW_SIGN_LEN,
1178 struct gadget_info *gi = os_desc_item_to_gadget_info(item);
1185 mutex_lock(&gi->lock);
1187 UTF16_LITTLE_ENDIAN, (wchar_t *) gi->qw_sign,
1191 mutex_unlock(&gi->lock);
1210 struct gadget_info *gi = os_desc_item_to_gadget_info(os_desc_ci);
1211 struct usb_composite_dev *cdev = &gi->cdev;
1216 mutex_lock(&gi->lock);
1237 mutex_unlock(&gi->lock);
1244 struct gadget_info *gi = os_desc_item_to_gadget_info(os_desc_ci);
1245 struct usb_composite_dev *cdev = &gi->cdev;
1247 mutex_lock(&gi->lock);
1248 if (gi->composite.gadget_driver.udc_name)
1249 unregister_gadget(gi);
1251 WARN_ON(gi->composite.gadget_driver.udc_name);
1252 mutex_unlock(&gi->lock);
1569 static void purge_configs_funcs(struct gadget_info *gi)
1573 list_for_each_entry(c, &gi->cdev.configs, list) {
1583 dev_dbg(&gi->cdev.gadget->dev,
1599 configfs_attach_gadget_strings(struct gadget_info *gi)
1611 list_for_each(iter, &gi->string_list)
1623 list_for_each_entry(language, &gi->string_list, list) {
1659 us = usb_gstrings_attach(&gi->cdev, gadget_strings, nstrings);
1662 list_for_each_entry(language, &gi->string_list, list) {
1676 struct gadget_info *gi = container_of(composite,
1678 struct usb_composite_dev *cdev = &gi->cdev;
1684 /* the gi->lock is hold by the caller */
1685 gi->unbind = 0;
1694 if (list_empty(&gi->cdev.configs)) {
1696 gi->composite.name);
1701 list_for_each_entry(c, &gi->cdev.configs, list) {
1708 gi->composite.name);
1714 if (!list_empty(&gi->string_list)) {
1715 s = configfs_attach_gadget_strings(gi);
1721 gi->cdev.desc.iManufacturer = s[USB_GADGET_MANUFACTURER_IDX].id;
1722 gi->cdev.desc.iProduct = s[USB_GADGET_PRODUCT_IDX].id;
1723 gi->cdev.desc.iSerialNumber = s[USB_GADGET_SERIAL_IDX].id;
1725 gi->cdev.usb_strings = s;
1728 if (gi->use_webusb) {
1730 cdev->bcd_webusb_version = gi->bcd_webusb_version;
1731 cdev->b_webusb_vendor_code = gi->b_webusb_vendor_code;
1732 memcpy(cdev->landing_page, gi->landing_page, WEBUSB_URL_RAW_MAX_LENGTH);
1735 if (gi->use_os_desc) {
1737 cdev->b_vendor_code = gi->b_vendor_code;
1738 memcpy(cdev->qw_sign, gi->qw_sign, OS_STRING_QW_SIGN_LEN);
1755 list_for_each_entry(c, &gi->cdev.configs, list) {
1777 s = usb_gstrings_attach(&gi->cdev, cfg->gstrings, 1);
1809 purge_configs_funcs(gi);
1818 struct gadget_info *gi;
1821 /* the gi->lock is hold by the caller */
1824 gi = container_of(cdev, struct gadget_info, cdev);
1825 spin_lock_irqsave(&gi->spinlock, flags);
1826 gi->unbind = 1;
1827 spin_unlock_irqrestore(&gi->spinlock, flags);
1831 purge_configs_funcs(gi);
1834 spin_lock_irqsave(&gi->spinlock, flags);
1839 spin_unlock_irqrestore(&gi->spinlock, flags);
1846 struct gadget_info *gi;
1854 gi = container_of(cdev, struct gadget_info, cdev);
1855 spin_lock_irqsave(&gi->spinlock, flags);
1857 if (!cdev || gi->unbind) {
1858 spin_unlock_irqrestore(&gi->spinlock, flags);
1863 spin_unlock_irqrestore(&gi->spinlock, flags);
1870 struct gadget_info *gi;
1877 gi = container_of(cdev, struct gadget_info, cdev);
1878 spin_lock_irqsave(&gi->spinlock, flags);
1880 if (!cdev || gi->unbind) {
1881 spin_unlock_irqrestore(&gi->spinlock, flags);
1886 spin_unlock_irqrestore(&gi->spinlock, flags);
1892 struct gadget_info *gi;
1899 gi = container_of(cdev, struct gadget_info, cdev);
1900 spin_lock_irqsave(&gi->spinlock, flags);
1902 if (!cdev || gi->unbind) {
1903 spin_unlock_irqrestore(&gi->spinlock, flags);
1908 spin_unlock_irqrestore(&gi->spinlock, flags);
1914 struct gadget_info *gi;
1921 gi = container_of(cdev, struct gadget_info, cdev);
1922 spin_lock_irqsave(&gi->spinlock, flags);
1924 if (!cdev || gi->unbind) {
1925 spin_unlock_irqrestore(&gi->spinlock, flags);
1930 spin_unlock_irqrestore(&gi->spinlock, flags);
1936 struct gadget_info *gi;
1943 gi = container_of(cdev, struct gadget_info, cdev);
1944 spin_lock_irqsave(&gi->spinlock, flags);
1946 if (!cdev || gi->unbind) {
1947 spin_unlock_irqrestore(&gi->spinlock, flags);
1952 spin_unlock_irqrestore(&gi->spinlock, flags);
1977 struct gadget_info *gi;
1979 gi = kzalloc(sizeof(*gi), GFP_KERNEL);
1980 if (!gi)
1983 config_group_init_type_name(&gi->group, name, &gadget_root_type);
1985 config_group_init_type_name(&gi->functions_group, "functions",
1987 configfs_add_default_group(&gi->functions_group, &gi->group);
1989 config_group_init_type_name(&gi->configs_group, "configs",
1991 configfs_add_default_group(&gi->configs_group, &gi->group);
1993 config_group_init_type_name(&gi->strings_group, "strings",
1995 configfs_add_default_group(&gi->strings_group, &gi->group);
1997 config_group_init_type_name(&gi->os_desc_group, "os_desc",
1999 configfs_add_default_group(&gi->os_desc_group, &gi->group);
2001 config_group_init_type_name(&gi->webusb_group, "webusb",
2003 configfs_add_default_group(&gi->webusb_group, &gi->group);
2005 gi->composite.bind = configfs_do_nothing;
2006 gi->composite.unbind = configfs_do_nothing;
2007 gi->composite.suspend = NULL;
2008 gi->composite.resume = NULL;
2009 gi->composite.max_speed = USB_SPEED_SUPER_PLUS;
2011 spin_lock_init(&gi->spinlock);
2012 mutex_init(&gi->lock);
2013 INIT_LIST_HEAD(&gi->string_list);
2014 INIT_LIST_HEAD(&gi->available_func);
2016 composite_init_dev(&gi->cdev);
2017 gi->cdev.desc.bLength = USB_DT_DEVICE_SIZE;
2018 gi->cdev.desc.bDescriptorType = USB_DT_DEVICE;
2019 gi->cdev.desc.bcdDevice = cpu_to_le16(get_default_bcdDevice());
2021 gi->composite.gadget_driver = configfs_driver_template;
2023 gi->composite.gadget_driver.driver.name = kasprintf(GFP_KERNEL,
2025 if (!gi->composite.gadget_driver.driver.name)
2028 gi->composite.gadget_driver.function = kstrdup(name, GFP_KERNEL);
2029 gi->composite.name = gi->composite.gadget_driver.function;
2031 if (!gi->composite.gadget_driver.function)
2034 return &gi->group;
2037 kfree(gi->composite.gadget_driver.driver.name);
2039 kfree(gi);
2070 struct gadget_info *gi = to_gadget_info(item);
2072 mutex_lock(&gi->lock);
2073 unregister_gadget(gi);
2074 mutex_unlock(&gi->lock);