Lines Matching refs:gi

231 	struct gadget_info *gi = to_gadget_info(item);  in gadget_dev_desc_UDC_show()  local
235 mutex_lock(&gi->lock); in gadget_dev_desc_UDC_show()
236 udc_name = gi->composite.gadget_driver.udc_name; in gadget_dev_desc_UDC_show()
238 mutex_unlock(&gi->lock); in gadget_dev_desc_UDC_show()
243 static int unregister_gadget(struct gadget_info *gi) in unregister_gadget() argument
247 if (!gi->composite.gadget_driver.udc_name) in unregister_gadget()
250 ret = usb_gadget_unregister_driver(&gi->composite.gadget_driver); in unregister_gadget()
253 kfree(gi->composite.gadget_driver.udc_name); in unregister_gadget()
254 gi->composite.gadget_driver.udc_name = NULL; in unregister_gadget()
261 struct gadget_info *gi = to_gadget_info(item); in gadget_dev_desc_UDC_store() local
274 mutex_lock(&gi->lock); in gadget_dev_desc_UDC_store()
277 ret = unregister_gadget(gi); in gadget_dev_desc_UDC_store()
282 if (gi->composite.gadget_driver.udc_name) { in gadget_dev_desc_UDC_store()
286 gi->composite.gadget_driver.udc_name = name; in gadget_dev_desc_UDC_store()
287 ret = usb_gadget_register_driver(&gi->composite.gadget_driver); in gadget_dev_desc_UDC_store()
289 gi->composite.gadget_driver.udc_name = NULL; in gadget_dev_desc_UDC_store()
293 mutex_unlock(&gi->lock); in gadget_dev_desc_UDC_store()
297 mutex_unlock(&gi->lock); in gadget_dev_desc_UDC_store()
312 struct gadget_info *gi = to_gadget_info(item); in gadget_dev_desc_max_speed_store() local
314 mutex_lock(&gi->lock); in gadget_dev_desc_max_speed_store()
317 if (gi->composite.gadget_driver.udc_name) in gadget_dev_desc_max_speed_store()
321 gi->composite.max_speed = USB_SPEED_SUPER_PLUS; in gadget_dev_desc_max_speed_store()
323 gi->composite.max_speed = USB_SPEED_SUPER; in gadget_dev_desc_max_speed_store()
325 gi->composite.max_speed = USB_SPEED_HIGH; in gadget_dev_desc_max_speed_store()
327 gi->composite.max_speed = USB_SPEED_FULL; in gadget_dev_desc_max_speed_store()
329 gi->composite.max_speed = USB_SPEED_LOW; in gadget_dev_desc_max_speed_store()
333 gi->composite.gadget_driver.max_speed = gi->composite.max_speed; in gadget_dev_desc_max_speed_store()
335 mutex_unlock(&gi->lock); in gadget_dev_desc_max_speed_store()
338 mutex_unlock(&gi->lock); in gadget_dev_desc_max_speed_store()
389 struct gadget_info *gi = to_gadget_info(item); in gadget_info_attr_release() local
391 WARN_ON(!list_empty(&gi->cdev.configs)); in gadget_info_attr_release()
392 WARN_ON(!list_empty(&gi->string_list)); in gadget_info_attr_release()
393 WARN_ON(!list_empty(&gi->available_func)); in gadget_info_attr_release()
394 kfree(gi->composite.gadget_driver.function); in gadget_info_attr_release()
395 kfree(gi); in gadget_info_attr_release()
417 struct gadget_info *gi = cfg_to_gadget_info(cfg); in config_usb_cfg_link() local
425 mutex_lock(&gi->lock); in config_usb_cfg_link()
431 list_for_each_entry(iter, &gi->available_func, cfs_list) { in config_usb_cfg_link()
459 mutex_unlock(&gi->lock); in config_usb_cfg_link()
468 struct gadget_info *gi = cfg_to_gadget_info(cfg); in config_usb_cfg_unlink() local
480 mutex_lock(&gi->lock); in config_usb_cfg_unlink()
481 if (gi->composite.gadget_driver.udc_name) in config_usb_cfg_unlink()
482 unregister_gadget(gi); in config_usb_cfg_unlink()
483 WARN_ON(gi->composite.gadget_driver.udc_name); in config_usb_cfg_unlink()
489 mutex_unlock(&gi->lock); in config_usb_cfg_unlink()
493 mutex_unlock(&gi->lock); in config_usb_cfg_unlink()
585 struct gadget_info *gi; in function_make() local
622 gi = container_of(group, struct gadget_info, functions_group); in function_make()
624 mutex_lock(&gi->lock); in function_make()
625 list_add_tail(&fi->cfs_list, &gi->available_func); in function_make()
626 mutex_unlock(&gi->lock); in function_make()
635 struct gadget_info *gi; in function_drop() local
637 gi = container_of(group, struct gadget_info, functions_group); in function_drop()
639 mutex_lock(&gi->lock); in function_drop()
641 mutex_unlock(&gi->lock); in function_drop()
679 struct gadget_info *gi; in config_desc_make() local
686 gi = container_of(group, struct gadget_info, configs_group); in config_desc_make()
728 ret = usb_add_config_only(&gi->cdev, &cfg->c); in config_desc_make()
798 struct gadget_info *gi = os_desc_item_to_gadget_info(item); in os_desc_use_store() local
802 mutex_lock(&gi->lock); in os_desc_use_store()
805 gi->use_os_desc = use; in os_desc_use_store()
808 mutex_unlock(&gi->lock); in os_desc_use_store()
822 struct gadget_info *gi = os_desc_item_to_gadget_info(item); in os_desc_b_vendor_code_store() local
826 mutex_lock(&gi->lock); in os_desc_b_vendor_code_store()
829 gi->b_vendor_code = b_vendor_code; in os_desc_b_vendor_code_store()
832 mutex_unlock(&gi->lock); in os_desc_b_vendor_code_store()
839 struct gadget_info *gi = os_desc_item_to_gadget_info(item); in os_desc_qw_sign_show() local
842 res = utf16s_to_utf8s((wchar_t *) gi->qw_sign, OS_STRING_QW_SIGN_LEN, in os_desc_qw_sign_show()
852 struct gadget_info *gi = os_desc_item_to_gadget_info(item); in os_desc_qw_sign_store() local
859 mutex_lock(&gi->lock); in os_desc_qw_sign_store()
861 UTF16_LITTLE_ENDIAN, (wchar_t *) gi->qw_sign, in os_desc_qw_sign_store()
865 mutex_unlock(&gi->lock); in os_desc_qw_sign_store()
884 struct gadget_info *gi = os_desc_item_to_gadget_info(os_desc_ci); in os_desc_link() local
885 struct usb_composite_dev *cdev = &gi->cdev; in os_desc_link()
890 mutex_lock(&gi->lock); in os_desc_link()
911 mutex_unlock(&gi->lock); in os_desc_link()
918 struct gadget_info *gi = os_desc_item_to_gadget_info(os_desc_ci); in os_desc_unlink() local
919 struct usb_composite_dev *cdev = &gi->cdev; in os_desc_unlink()
921 mutex_lock(&gi->lock); in os_desc_unlink()
922 if (gi->composite.gadget_driver.udc_name) in os_desc_unlink()
923 unregister_gadget(gi); in os_desc_unlink()
925 WARN_ON(gi->composite.gadget_driver.udc_name); in os_desc_unlink()
926 mutex_unlock(&gi->lock); in os_desc_unlink()
1245 static void purge_configs_funcs(struct gadget_info *gi) in purge_configs_funcs() argument
1249 list_for_each_entry(c, &gi->cdev.configs, list) { in purge_configs_funcs()
1259 dev_dbg(&gi->cdev.gadget->dev, in purge_configs_funcs()
1278 struct gadget_info *gi = container_of(composite, in configfs_composite_bind() local
1280 struct usb_composite_dev *cdev = &gi->cdev; in configfs_composite_bind()
1287 gi->unbind = 0; in configfs_composite_bind()
1296 if (list_empty(&gi->cdev.configs)) { in configfs_composite_bind()
1298 gi->composite.name); in configfs_composite_bind()
1303 list_for_each_entry(c, &gi->cdev.configs, list) { in configfs_composite_bind()
1310 gi->composite.name); in configfs_composite_bind()
1316 if (!list_empty(&gi->string_list)) { in configfs_composite_bind()
1320 list_for_each_entry(gs, &gi->string_list, list) { in configfs_composite_bind()
1322 gi->gstrings[i] = &gs->stringtab_dev; in configfs_composite_bind()
1330 gi->gstrings[i] = NULL; in configfs_composite_bind()
1331 s = usb_gstrings_attach(&gi->cdev, gi->gstrings, in configfs_composite_bind()
1338 gi->cdev.desc.iManufacturer = s[USB_GADGET_MANUFACTURER_IDX].id; in configfs_composite_bind()
1339 gi->cdev.desc.iProduct = s[USB_GADGET_PRODUCT_IDX].id; in configfs_composite_bind()
1340 gi->cdev.desc.iSerialNumber = s[USB_GADGET_SERIAL_IDX].id; in configfs_composite_bind()
1343 if (gi->use_os_desc) { in configfs_composite_bind()
1345 cdev->b_vendor_code = gi->b_vendor_code; in configfs_composite_bind()
1346 memcpy(cdev->qw_sign, gi->qw_sign, OS_STRING_QW_SIGN_LEN); in configfs_composite_bind()
1363 list_for_each_entry(c, &gi->cdev.configs, list) { in configfs_composite_bind()
1382 s = usb_gstrings_attach(&gi->cdev, cfg->gstrings, 1); in configfs_composite_bind()
1414 purge_configs_funcs(gi); in configfs_composite_bind()
1423 struct gadget_info *gi; in configfs_composite_unbind() local
1429 gi = container_of(cdev, struct gadget_info, cdev); in configfs_composite_unbind()
1430 spin_lock_irqsave(&gi->spinlock, flags); in configfs_composite_unbind()
1431 gi->unbind = 1; in configfs_composite_unbind()
1432 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_unbind()
1436 purge_configs_funcs(gi); in configfs_composite_unbind()
1439 spin_lock_irqsave(&gi->spinlock, flags); in configfs_composite_unbind()
1444 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_unbind()
1451 struct gadget_info *gi; in configfs_composite_setup() local
1459 gi = container_of(cdev, struct gadget_info, cdev); in configfs_composite_setup()
1460 spin_lock_irqsave(&gi->spinlock, flags); in configfs_composite_setup()
1462 if (!cdev || gi->unbind) { in configfs_composite_setup()
1463 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_setup()
1468 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_setup()
1475 struct gadget_info *gi; in configfs_composite_disconnect() local
1482 gi = container_of(cdev, struct gadget_info, cdev); in configfs_composite_disconnect()
1483 spin_lock_irqsave(&gi->spinlock, flags); in configfs_composite_disconnect()
1485 if (!cdev || gi->unbind) { in configfs_composite_disconnect()
1486 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_disconnect()
1491 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_disconnect()
1497 struct gadget_info *gi; in configfs_composite_reset() local
1504 gi = container_of(cdev, struct gadget_info, cdev); in configfs_composite_reset()
1505 spin_lock_irqsave(&gi->spinlock, flags); in configfs_composite_reset()
1507 if (!cdev || gi->unbind) { in configfs_composite_reset()
1508 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_reset()
1513 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_reset()
1519 struct gadget_info *gi; in configfs_composite_suspend() local
1526 gi = container_of(cdev, struct gadget_info, cdev); in configfs_composite_suspend()
1527 spin_lock_irqsave(&gi->spinlock, flags); in configfs_composite_suspend()
1529 if (!cdev || gi->unbind) { in configfs_composite_suspend()
1530 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_suspend()
1535 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_suspend()
1541 struct gadget_info *gi; in configfs_composite_resume() local
1548 gi = container_of(cdev, struct gadget_info, cdev); in configfs_composite_resume()
1549 spin_lock_irqsave(&gi->spinlock, flags); in configfs_composite_resume()
1551 if (!cdev || gi->unbind) { in configfs_composite_resume()
1552 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_resume()
1557 spin_unlock_irqrestore(&gi->spinlock, flags); in configfs_composite_resume()
1583 struct gadget_info *gi; in gadgets_make() local
1585 gi = kzalloc(sizeof(*gi), GFP_KERNEL); in gadgets_make()
1586 if (!gi) in gadgets_make()
1589 config_group_init_type_name(&gi->group, name, &gadget_root_type); in gadgets_make()
1591 config_group_init_type_name(&gi->functions_group, "functions", in gadgets_make()
1593 configfs_add_default_group(&gi->functions_group, &gi->group); in gadgets_make()
1595 config_group_init_type_name(&gi->configs_group, "configs", in gadgets_make()
1597 configfs_add_default_group(&gi->configs_group, &gi->group); in gadgets_make()
1599 config_group_init_type_name(&gi->strings_group, "strings", in gadgets_make()
1601 configfs_add_default_group(&gi->strings_group, &gi->group); in gadgets_make()
1603 config_group_init_type_name(&gi->os_desc_group, "os_desc", in gadgets_make()
1605 configfs_add_default_group(&gi->os_desc_group, &gi->group); in gadgets_make()
1607 gi->composite.bind = configfs_do_nothing; in gadgets_make()
1608 gi->composite.unbind = configfs_do_nothing; in gadgets_make()
1609 gi->composite.suspend = NULL; in gadgets_make()
1610 gi->composite.resume = NULL; in gadgets_make()
1611 gi->composite.max_speed = USB_SPEED_SUPER_PLUS; in gadgets_make()
1613 spin_lock_init(&gi->spinlock); in gadgets_make()
1614 mutex_init(&gi->lock); in gadgets_make()
1615 INIT_LIST_HEAD(&gi->string_list); in gadgets_make()
1616 INIT_LIST_HEAD(&gi->available_func); in gadgets_make()
1618 composite_init_dev(&gi->cdev); in gadgets_make()
1619 gi->cdev.desc.bLength = USB_DT_DEVICE_SIZE; in gadgets_make()
1620 gi->cdev.desc.bDescriptorType = USB_DT_DEVICE; in gadgets_make()
1621 gi->cdev.desc.bcdDevice = cpu_to_le16(get_default_bcdDevice()); in gadgets_make()
1623 gi->composite.gadget_driver = configfs_driver_template; in gadgets_make()
1625 gi->composite.gadget_driver.function = kstrdup(name, GFP_KERNEL); in gadgets_make()
1626 gi->composite.name = gi->composite.gadget_driver.function; in gadgets_make()
1628 if (!gi->composite.gadget_driver.function) in gadgets_make()
1631 return &gi->group; in gadgets_make()
1633 kfree(gi); in gadgets_make()
1664 struct gadget_info *gi = to_gadget_info(item); in unregister_gadget_item() local
1666 mutex_lock(&gi->lock); in unregister_gadget_item()
1667 unregister_gadget(gi); in unregister_gadget_item()
1668 mutex_unlock(&gi->lock); in unregister_gadget_item()