Lines Matching refs:sec

101 	struct vpd_section *sec = arg;  in vpd_section_attrib_add()  local
132 ret = sysfs_create_bin_file(sec->kobj, &info->bin_attr); in vpd_section_attrib_add()
136 list_add_tail(&info->list, &sec->attribs); in vpd_section_attrib_add()
147 static void vpd_section_attrib_destroy(struct vpd_section *sec) in vpd_section_attrib_destroy() argument
152 list_for_each_entry_safe(info, temp, &sec->attribs, list) { in vpd_section_attrib_destroy()
153 sysfs_remove_bin_file(sec->kobj, &info->bin_attr); in vpd_section_attrib_destroy()
163 struct vpd_section *sec = bin_attr->private; in vpd_section_read() local
165 return memory_read_from_buffer(buf, count, &pos, sec->baseaddr, in vpd_section_read()
166 sec->bin_attr.size); in vpd_section_read()
169 static int vpd_section_create_attribs(struct vpd_section *sec) in vpd_section_create_attribs() argument
176 ret = vpd_decode_string(sec->bin_attr.size, sec->baseaddr, in vpd_section_create_attribs()
177 &consumed, vpd_section_attrib_add, sec); in vpd_section_create_attribs()
183 static int vpd_section_init(const char *name, struct vpd_section *sec, in vpd_section_init() argument
188 sec->baseaddr = memremap(physaddr, size, MEMREMAP_WB); in vpd_section_init()
189 if (!sec->baseaddr) in vpd_section_init()
192 sec->name = name; in vpd_section_init()
195 sec->raw_name = kasprintf(GFP_KERNEL, "%s_raw", name); in vpd_section_init()
196 if (!sec->raw_name) { in vpd_section_init()
201 sysfs_bin_attr_init(&sec->bin_attr); in vpd_section_init()
202 sec->bin_attr.attr.name = sec->raw_name; in vpd_section_init()
203 sec->bin_attr.attr.mode = 0444; in vpd_section_init()
204 sec->bin_attr.size = size; in vpd_section_init()
205 sec->bin_attr.read = vpd_section_read; in vpd_section_init()
206 sec->bin_attr.private = sec; in vpd_section_init()
208 err = sysfs_create_bin_file(vpd_kobj, &sec->bin_attr); in vpd_section_init()
212 sec->kobj = kobject_create_and_add(name, vpd_kobj); in vpd_section_init()
213 if (!sec->kobj) { in vpd_section_init()
218 INIT_LIST_HEAD(&sec->attribs); in vpd_section_init()
219 vpd_section_create_attribs(sec); in vpd_section_init()
221 sec->enabled = true; in vpd_section_init()
226 sysfs_remove_bin_file(vpd_kobj, &sec->bin_attr); in vpd_section_init()
228 kfree(sec->raw_name); in vpd_section_init()
230 memunmap(sec->baseaddr); in vpd_section_init()
234 static int vpd_section_destroy(struct vpd_section *sec) in vpd_section_destroy() argument
236 if (sec->enabled) { in vpd_section_destroy()
237 vpd_section_attrib_destroy(sec); in vpd_section_destroy()
238 kobject_put(sec->kobj); in vpd_section_destroy()
239 sysfs_remove_bin_file(vpd_kobj, &sec->bin_attr); in vpd_section_destroy()
240 kfree(sec->raw_name); in vpd_section_destroy()
241 memunmap(sec->baseaddr); in vpd_section_destroy()
242 sec->enabled = false; in vpd_section_destroy()