Lines Matching refs:edac_dev
116 /* Function to 'show' fields from the edac_dev 'ctl_info' structure */
120 struct edac_device_ctl_info *edac_dev = to_ctl_info(kobj);
124 return ctl_info_attr->show(edac_dev, buffer);
128 /* Function to 'store' fields into the edac_dev 'ctl_info' structure */
133 struct edac_device_ctl_info *edac_dev = to_ctl_info(kobj);
137 return ctl_info_attr->store(edac_dev, buffer, count);
141 /* edac_dev file operations for an 'ctl_info' */
204 struct edac_device_ctl_info *edac_dev = to_edacdev(kobj);
206 edac_dbg(4, "control index=%d\n", edac_dev->dev_idx);
209 module_put(edac_dev->owner);
211 __edac_device_free_ctl_info(edac_dev);
229 int edac_device_register_sysfs_main_kobj(struct edac_device_ctl_info *edac_dev)
241 edac_dev->edac_subsys = edac_subsys;
244 memset(&edac_dev->kobj, 0, sizeof(struct kobject));
249 edac_dev->owner = THIS_MODULE;
251 if (!try_module_get(edac_dev->owner))
257 err = kobject_init_and_add(&edac_dev->kobj, &ktype_device_ctrl,
258 &dev_root->kobj, "%s", edac_dev->name);
263 edac_dev->name);
266 kobject_uevent(&edac_dev->kobj, KOBJ_ADD);
272 edac_dbg(4, "Registered '.../edac/%s' kobject\n", edac_dev->name);
278 kobject_put(&edac_dev->kobj);
279 module_put(edac_dev->owner);
304 /* edac_dev -> instance information */
345 /* Function to 'show' fields from the edac_dev 'instance' structure */
357 /* Function to 'store' fields into the edac_dev 'instance' structure */
370 /* edac_dev file operations for an 'instance' */
391 /* list of edac_dev 'instance' attributes */
399 /* The 'ktype' for each edac_dev 'instance' */
406 /* edac_dev -> instance -> block information */
448 /* Function to 'show' fields from the edac_dev 'block' structure */
460 /* Function to 'store' fields into the edac_dev 'block' structure */
474 /* edac_dev file operations for a 'block' */
490 /* list of edac_dev 'block' attributes */
498 /* The 'ktype' for each edac_dev 'block' */
510 static int edac_device_create_block(struct edac_device_ctl_info *edac_dev,
530 main_kobj = kobject_get(&edac_dev->kobj);
578 * edac_device_delete_block(edac_dev,block);
580 static void edac_device_delete_block(struct edac_device_ctl_info *edac_dev,
611 static int edac_device_create_instance(struct edac_device_ctl_info *edac_dev,
619 instance = &edac_dev->instances[idx];
624 instance->ctl = edac_dev;
629 main_kobj = kobject_get(&edac_dev->kobj);
637 &edac_dev->kobj, "%s", instance->name);
650 err = edac_device_create_block(edac_dev, instance,
655 edac_device_delete_block(edac_dev,
679 static void edac_device_delete_instance(struct edac_device_ctl_info *edac_dev,
685 instance = &edac_dev->instances[idx];
689 edac_device_delete_block(edac_dev, &instance->blocks[i]);
702 static int edac_device_create_instances(struct edac_device_ctl_info *edac_dev)
710 for (i = 0; i < edac_dev->nr_instances; i++) {
711 err = edac_device_create_instance(edac_dev, i);
715 edac_device_delete_instance(edac_dev, j);
724 * edac_device_delete_instances(edac_dev);
727 static void edac_device_delete_instances(struct edac_device_ctl_info *edac_dev)
732 for (i = 0; i < edac_dev->nr_instances; i++)
733 edac_device_delete_instance(edac_dev, i);
736 /* edac_dev sysfs ctor/dtor code */
743 struct edac_device_ctl_info *edac_dev)
748 sysfs_attrib = edac_dev->sysfs_attributes;
754 err = sysfs_create_file(&edac_dev->kobj,
772 struct edac_device_ctl_info *edac_dev)
780 sysfs_attrib = edac_dev->sysfs_attributes;
783 sysfs_remove_file(&edac_dev->kobj,
804 int edac_device_create_sysfs(struct edac_device_ctl_info *edac_dev)
807 struct kobject *edac_kobj = &edac_dev->kobj;
809 edac_dbg(0, "idx=%d\n", edac_dev->dev_idx);
812 err = edac_device_add_main_sysfs_attributes(edac_dev);
822 &edac_dev->dev->kobj, EDAC_DEVICE_SYMLINK);
832 err = edac_device_create_instances(edac_dev);
840 edac_dbg(4, "create-instances done, idx=%d\n", edac_dev->dev_idx);
847 sysfs_remove_link(&edac_dev->kobj, EDAC_DEVICE_SYMLINK);
850 edac_device_remove_main_sysfs_attributes(edac_dev);
861 void edac_device_remove_sysfs(struct edac_device_ctl_info *edac_dev)
866 edac_device_remove_main_sysfs_attributes(edac_dev);
869 sysfs_remove_link(&edac_dev->kobj, EDAC_DEVICE_SYMLINK);
872 edac_device_delete_instances(edac_dev);