Lines Matching full:sec
108 struct vpd_section *sec = arg; in vpd_section_attrib_add() local
139 ret = sysfs_create_bin_file(sec->kobj, &info->bin_attr); in vpd_section_attrib_add()
143 list_add_tail(&info->list, &sec->attribs); in vpd_section_attrib_add()
154 static void vpd_section_attrib_destroy(struct vpd_section *sec) in vpd_section_attrib_destroy() argument
159 list_for_each_entry_safe(info, temp, &sec->attribs, list) { in vpd_section_attrib_destroy()
160 sysfs_remove_bin_file(sec->kobj, &info->bin_attr); in vpd_section_attrib_destroy()
170 struct vpd_section *sec = bin_attr->private; in vpd_section_read() local
172 return memory_read_from_buffer(buf, count, &pos, sec->baseaddr, in vpd_section_read()
173 sec->bin_attr.size); in vpd_section_read()
176 static int vpd_section_create_attribs(struct vpd_section *sec) in vpd_section_create_attribs() argument
183 ret = vpd_decode_string(sec->bin_attr.size, sec->baseaddr, in vpd_section_create_attribs()
184 &consumed, vpd_section_attrib_add, sec); in vpd_section_create_attribs()
190 static int vpd_section_init(const char *name, struct vpd_section *sec, in vpd_section_init() argument
195 sec->baseaddr = memremap(physaddr, size, MEMREMAP_WB); in vpd_section_init()
196 if (!sec->baseaddr) in vpd_section_init()
199 sec->name = name; in vpd_section_init()
202 sec->raw_name = kasprintf(GFP_KERNEL, "%s_raw", name); in vpd_section_init()
203 if (!sec->raw_name) { in vpd_section_init()
208 sysfs_bin_attr_init(&sec->bin_attr); in vpd_section_init()
209 sec->bin_attr.attr.name = sec->raw_name; in vpd_section_init()
210 sec->bin_attr.attr.mode = 0444; in vpd_section_init()
211 sec->bin_attr.size = size; in vpd_section_init()
212 sec->bin_attr.read = vpd_section_read; in vpd_section_init()
213 sec->bin_attr.private = sec; in vpd_section_init()
215 err = sysfs_create_bin_file(vpd_kobj, &sec->bin_attr); in vpd_section_init()
219 sec->kobj = kobject_create_and_add(name, vpd_kobj); in vpd_section_init()
220 if (!sec->kobj) { in vpd_section_init()
225 INIT_LIST_HEAD(&sec->attribs); in vpd_section_init()
226 vpd_section_create_attribs(sec); in vpd_section_init()
228 sec->enabled = true; in vpd_section_init()
233 sysfs_remove_bin_file(vpd_kobj, &sec->bin_attr); in vpd_section_init()
235 kfree(sec->raw_name); in vpd_section_init()
237 memunmap(sec->baseaddr); in vpd_section_init()
241 static int vpd_section_destroy(struct vpd_section *sec) in vpd_section_destroy() argument
243 if (sec->enabled) { in vpd_section_destroy()
244 vpd_section_attrib_destroy(sec); in vpd_section_destroy()
245 kobject_put(sec->kobj); in vpd_section_destroy()
246 sysfs_remove_bin_file(vpd_kobj, &sec->bin_attr); in vpd_section_destroy()
247 kfree(sec->raw_name); in vpd_section_destroy()
248 memunmap(sec->baseaddr); in vpd_section_destroy()
249 sec->enabled = false; in vpd_section_destroy()