Lines Matching refs:gi

233 	struct gadget_info *gi = to_gadget_info(item);
237 mutex_lock(&gi->lock);
238 udc_name = gi->composite.gadget_driver.udc_name;
240 mutex_unlock(&gi->lock);
245 static int unregister_gadget(struct gadget_info *gi)
249 if (!gi->composite.gadget_driver.udc_name)
252 ret = usb_gadget_unregister_driver(&gi->composite.gadget_driver);
255 kfree(gi->composite.gadget_driver.udc_name);
256 gi->composite.gadget_driver.udc_name = NULL;
263 struct gadget_info *gi = to_gadget_info(item);
276 mutex_lock(&gi->lock);
279 ret = unregister_gadget(gi);
284 if (gi->composite.gadget_driver.udc_name) {
288 gi->composite.gadget_driver.udc_name = name;
289 ret = usb_gadget_probe_driver(&gi->composite.gadget_driver);
291 gi->composite.gadget_driver.udc_name = NULL;
295 mutex_unlock(&gi->lock);
299 mutex_unlock(&gi->lock);
314 struct gadget_info *gi = to_gadget_info(item);
316 mutex_lock(&gi->lock);
319 if (gi->composite.gadget_driver.udc_name)
323 gi->composite.max_speed = USB_SPEED_SUPER_PLUS;
325 gi->composite.max_speed = USB_SPEED_SUPER;
327 gi->composite.max_speed = USB_SPEED_HIGH;
329 gi->composite.max_speed = USB_SPEED_FULL;
331 gi->composite.max_speed = USB_SPEED_LOW;
335 gi->composite.gadget_driver.max_speed = gi->composite.max_speed;
337 mutex_unlock(&gi->lock);
340 mutex_unlock(&gi->lock);
391 struct gadget_info *gi = to_gadget_info(item);
393 WARN_ON(!list_empty(&gi->cdev.configs));
394 WARN_ON(!list_empty(&gi->string_list));
395 WARN_ON(!list_empty(&gi->available_func));
396 kfree(gi->composite.gadget_driver.function);
397 kfree(gi);
420 struct gadget_info *gi = container_of(cdev, struct gadget_info, cdev);
429 mutex_lock(&gi->lock);
435 list_for_each_entry(a_fi, &gi->available_func, cfs_list) {
461 mutex_unlock(&gi->lock);
471 struct gadget_info *gi = container_of(cdev, struct gadget_info, cdev);
484 mutex_lock(&gi->lock);
485 if (gi->composite.gadget_driver.udc_name)
486 unregister_gadget(gi);
487 WARN_ON(gi->composite.gadget_driver.udc_name);
493 mutex_unlock(&gi->lock);
497 mutex_unlock(&gi->lock);
584 struct gadget_info *gi;
621 gi = container_of(group, struct gadget_info, functions_group);
623 mutex_lock(&gi->lock);
624 list_add_tail(&fi->cfs_list, &gi->available_func);
625 mutex_unlock(&gi->lock);
634 struct gadget_info *gi;
636 gi = container_of(group, struct gadget_info, functions_group);
638 mutex_lock(&gi->lock);
640 mutex_unlock(&gi->lock);
678 struct gadget_info *gi;
685 gi = container_of(group, struct gadget_info, configs_group);
727 ret = usb_add_config_only(&gi->cdev, &cfg->c);
801 struct gadget_info *gi = os_desc_item_to_gadget_info(item);
805 mutex_lock(&gi->lock);
808 gi->use_os_desc = use;
811 mutex_unlock(&gi->lock);
825 struct gadget_info *gi = os_desc_item_to_gadget_info(item);
829 mutex_lock(&gi->lock);
832 gi->b_vendor_code = b_vendor_code;
835 mutex_unlock(&gi->lock);
842 struct gadget_info *gi = os_desc_item_to_gadget_info(item);
845 res = utf16s_to_utf8s((wchar_t *) gi->qw_sign, OS_STRING_QW_SIGN_LEN,
855 struct gadget_info *gi = os_desc_item_to_gadget_info(item);
862 mutex_lock(&gi->lock);
864 UTF16_LITTLE_ENDIAN, (wchar_t *) gi->qw_sign,
868 mutex_unlock(&gi->lock);
893 struct gadget_info *gi = container_of(to_config_group(os_desc_ci),
895 struct usb_composite_dev *cdev = &gi->cdev;
902 mutex_lock(&gi->lock);
921 mutex_unlock(&gi->lock);
928 struct gadget_info *gi = container_of(to_config_group(os_desc_ci),
930 struct usb_composite_dev *cdev = &gi->cdev;
932 mutex_lock(&gi->lock);
933 if (gi->composite.gadget_driver.udc_name)
934 unregister_gadget(gi);
936 WARN_ON(gi->composite.gadget_driver.udc_name);
937 mutex_unlock(&gi->lock);
1257 static void purge_configs_funcs(struct gadget_info *gi)
1261 list_for_each_entry(c, &gi->cdev.configs, list) {
1271 dev_dbg(&gi->cdev.gadget->dev,
1290 struct gadget_info *gi = container_of(composite,
1292 struct usb_composite_dev *cdev = &gi->cdev;
1298 /* the gi->lock is hold by the caller */
1299 gi->unbind = 0;
1308 if (list_empty(&gi->cdev.configs)) {
1310 gi->composite.name);
1315 list_for_each_entry(c, &gi->cdev.configs, list) {
1322 gi->composite.name);
1328 if (!list_empty(&gi->string_list)) {
1332 list_for_each_entry(gs, &gi->string_list, list) {
1334 gi->gstrings[i] = &gs->stringtab_dev;
1342 gi->gstrings[i] = NULL;
1343 s = usb_gstrings_attach(&gi->cdev, gi->gstrings,
1350 gi->cdev.desc.iManufacturer = s[USB_GADGET_MANUFACTURER_IDX].id;
1351 gi->cdev.desc.iProduct = s[USB_GADGET_PRODUCT_IDX].id;
1352 gi->cdev.desc.iSerialNumber = s[USB_GADGET_SERIAL_IDX].id;
1355 if (gi->use_os_desc) {
1357 cdev->b_vendor_code = gi->b_vendor_code;
1358 memcpy(cdev->qw_sign, gi->qw_sign, OS_STRING_QW_SIGN_LEN);
1375 list_for_each_entry(c, &gi->cdev.configs, list) {
1394 s = usb_gstrings_attach(&gi->cdev, cfg->gstrings, 1);
1422 purge_configs_funcs(gi);
1431 struct gadget_info *gi;
1434 /* the gi->lock is hold by the caller */
1437 gi = container_of(cdev, struct gadget_info, cdev);
1438 spin_lock_irqsave(&gi->spinlock, flags);
1439 gi->unbind = 1;
1440 spin_unlock_irqrestore(&gi->spinlock, flags);
1444 purge_configs_funcs(gi);
1447 spin_lock_irqsave(&gi->spinlock, flags);
1452 spin_unlock_irqrestore(&gi->spinlock, flags);
1459 struct gadget_info *gi;
1467 gi = container_of(cdev, struct gadget_info, cdev);
1468 spin_lock_irqsave(&gi->spinlock, flags);
1470 if (!cdev || gi->unbind) {
1471 spin_unlock_irqrestore(&gi->spinlock, flags);
1476 spin_unlock_irqrestore(&gi->spinlock, flags);
1483 struct gadget_info *gi;
1490 gi = container_of(cdev, struct gadget_info, cdev);
1491 spin_lock_irqsave(&gi->spinlock, flags);
1493 if (!cdev || gi->unbind) {
1494 spin_unlock_irqrestore(&gi->spinlock, flags);
1499 spin_unlock_irqrestore(&gi->spinlock, flags);
1505 struct gadget_info *gi;
1512 gi = container_of(cdev, struct gadget_info, cdev);
1513 spin_lock_irqsave(&gi->spinlock, flags);
1515 if (!cdev || gi->unbind) {
1516 spin_unlock_irqrestore(&gi->spinlock, flags);
1521 spin_unlock_irqrestore(&gi->spinlock, flags);
1527 struct gadget_info *gi;
1534 gi = container_of(cdev, struct gadget_info, cdev);
1535 spin_lock_irqsave(&gi->spinlock, flags);
1537 if (!cdev || gi->unbind) {
1538 spin_unlock_irqrestore(&gi->spinlock, flags);
1543 spin_unlock_irqrestore(&gi->spinlock, flags);
1569 struct gadget_info *gi;
1571 gi = kzalloc(sizeof(*gi), GFP_KERNEL);
1572 if (!gi)
1575 config_group_init_type_name(&gi->group, name, &gadget_root_type);
1577 config_group_init_type_name(&gi->functions_group, "functions",
1579 configfs_add_default_group(&gi->functions_group, &gi->group);
1581 config_group_init_type_name(&gi->configs_group, "configs",
1583 configfs_add_default_group(&gi->configs_group, &gi->group);
1585 config_group_init_type_name(&gi->strings_group, "strings",
1587 configfs_add_default_group(&gi->strings_group, &gi->group);
1589 config_group_init_type_name(&gi->os_desc_group, "os_desc",
1591 configfs_add_default_group(&gi->os_desc_group, &gi->group);
1593 gi->composite.bind = configfs_do_nothing;
1594 gi->composite.unbind = configfs_do_nothing;
1595 gi->composite.suspend = NULL;
1596 gi->composite.resume = NULL;
1597 gi->composite.max_speed = USB_SPEED_SUPER_PLUS;
1599 spin_lock_init(&gi->spinlock);
1600 mutex_init(&gi->lock);
1601 INIT_LIST_HEAD(&gi->string_list);
1602 INIT_LIST_HEAD(&gi->available_func);
1604 composite_init_dev(&gi->cdev);
1605 gi->cdev.desc.bLength = USB_DT_DEVICE_SIZE;
1606 gi->cdev.desc.bDescriptorType = USB_DT_DEVICE;
1607 gi->cdev.desc.bcdDevice = cpu_to_le16(get_default_bcdDevice());
1609 gi->composite.gadget_driver = configfs_driver_template;
1611 gi->composite.gadget_driver.function = kstrdup(name, GFP_KERNEL);
1612 gi->composite.name = gi->composite.gadget_driver.function;
1614 if (!gi->composite.gadget_driver.function)
1617 return &gi->group;
1619 kfree(gi);
1650 struct gadget_info *gi = to_gadget_info(item);
1652 mutex_lock(&gi->lock);
1653 unregister_gadget(gi);
1654 mutex_unlock(&gi->lock);