Lines Matching refs:gi

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