Lines Matching refs:ext_prop
955 static ssize_t ext_prop_type_show(struct usb_os_desc_ext_prop *ext_prop, in ext_prop_type_show() argument
958 return sprintf(page, "%d", ext_prop->type); in ext_prop_type_show()
961 static ssize_t ext_prop_type_store(struct usb_os_desc_ext_prop *ext_prop, in ext_prop_type_store() argument
964 struct usb_os_desc *desc = to_usb_os_desc(ext_prop->item.ci_parent); in ext_prop_type_store()
978 if ((ext_prop->type == USB_EXT_PROP_BINARY || in ext_prop_type_store()
979 ext_prop->type == USB_EXT_PROP_LE32 || in ext_prop_type_store()
980 ext_prop->type == USB_EXT_PROP_BE32) && in ext_prop_type_store()
984 ext_prop->data_len <<= 1; in ext_prop_type_store()
985 else if ((ext_prop->type == USB_EXT_PROP_UNICODE || in ext_prop_type_store()
986 ext_prop->type == USB_EXT_PROP_UNICODE_ENV || in ext_prop_type_store()
987 ext_prop->type == USB_EXT_PROP_UNICODE_LINK) && in ext_prop_type_store()
991 ext_prop->data_len >>= 1; in ext_prop_type_store()
992 ext_prop->type = type; in ext_prop_type_store()
1001 static ssize_t ext_prop_data_show(struct usb_os_desc_ext_prop *ext_prop, in ext_prop_data_show() argument
1004 int len = ext_prop->data_len; in ext_prop_data_show()
1006 if (ext_prop->type == USB_EXT_PROP_UNICODE || in ext_prop_data_show()
1007 ext_prop->type == USB_EXT_PROP_UNICODE_ENV || in ext_prop_data_show()
1008 ext_prop->type == USB_EXT_PROP_UNICODE_LINK) in ext_prop_data_show()
1010 memcpy(page, ext_prop->data, len); in ext_prop_data_show()
1015 static ssize_t ext_prop_data_store(struct usb_os_desc_ext_prop *ext_prop, in ext_prop_data_store() argument
1018 struct usb_os_desc *desc = to_usb_os_desc(ext_prop->item.ci_parent); in ext_prop_data_store()
1030 kfree(ext_prop->data); in ext_prop_data_store()
1031 ext_prop->data = new_data; in ext_prop_data_store()
1032 desc->ext_prop_len -= ext_prop->data_len; in ext_prop_data_store()
1033 ext_prop->data_len = len; in ext_prop_data_store()
1034 desc->ext_prop_len += ext_prop->data_len; in ext_prop_data_store()
1035 if (ext_prop->type == USB_EXT_PROP_UNICODE || in ext_prop_data_store()
1036 ext_prop->type == USB_EXT_PROP_UNICODE_ENV || in ext_prop_data_store()
1037 ext_prop->type == USB_EXT_PROP_UNICODE_LINK) { in ext_prop_data_store()
1038 desc->ext_prop_len -= ext_prop->data_len; in ext_prop_data_store()
1039 ext_prop->data_len <<= 1; in ext_prop_data_store()
1040 ext_prop->data_len += 2; in ext_prop_data_store()
1041 desc->ext_prop_len += ext_prop->data_len; in ext_prop_data_store()
1064 struct usb_os_desc_ext_prop *ext_prop = to_usb_os_desc_ext_prop(item); in usb_os_desc_ext_prop_release() local
1066 kfree(ext_prop); /* frees a whole chunk */ in usb_os_desc_ext_prop_release()
1079 struct usb_os_desc_ext_prop *ext_prop; in ext_prop_make() local
1085 vla_item(data_chunk, struct usb_os_desc_ext_prop, ext_prop, 1); in ext_prop_make()
1092 ext_prop = vla_ptr(vlabuf, data_chunk, ext_prop); in ext_prop_make()
1100 config_item_init_type_name(&ext_prop->item, name, ext_prop_type); in ext_prop_make()
1102 ext_prop->name = kstrdup(name, GFP_KERNEL); in ext_prop_make()
1103 if (!ext_prop->name) { in ext_prop_make()
1108 ext_prop->name_len = 2 * strlen(ext_prop->name) + 2; in ext_prop_make()
1111 desc->ext_prop_len += ext_prop->name_len; in ext_prop_make()
1112 list_add_tail(&ext_prop->entry, &desc->ext_prop); in ext_prop_make()
1117 return &ext_prop->item; in ext_prop_make()
1122 struct usb_os_desc_ext_prop *ext_prop = to_usb_os_desc_ext_prop(item); in ext_prop_drop() local
1127 list_del(&ext_prop->entry); in ext_prop_drop()
1129 kfree(ext_prop->name); in ext_prop_drop()
1130 desc->ext_prop_len -= (ext_prop->name_len + ext_prop->data_len + 14); in ext_prop_drop()