Drivers: clean up direct setting of the name of a kset
[cascardo/linux.git] / drivers / edac / edac_mc_sysfs.c
index cd090b0..3706b2b 100644 (file)
@@ -122,6 +122,23 @@ static ssize_t memctrl_int_store(void *ptr, const char *buffer, size_t count)
        return count;
 }
 
+/*
+ * mc poll_msec time value
+ */
+static ssize_t poll_msec_int_store(void *ptr, const char *buffer, size_t count)
+{
+       int *value = (int *)ptr;
+
+       if (isdigit(*buffer)) {
+               *value = simple_strtoul(buffer, NULL, 0);
+
+               /* notify edac_mc engine to reset the poll period */
+               edac_mc_reset_delay_period(*value);
+       }
+
+       return count;
+}
+
 
 /* EDAC sysfs CSROW data structures and methods
  */
@@ -704,7 +721,7 @@ MEMCTRL_ATTR(edac_mc_log_ce,
        S_IRUGO | S_IWUSR, memctrl_int_show, memctrl_int_store);
 
 MEMCTRL_ATTR(edac_mc_poll_msec,
-       S_IRUGO | S_IWUSR, memctrl_int_show, memctrl_int_store);
+       S_IRUGO | S_IWUSR, memctrl_int_show, poll_msec_int_store);
 
 /* Base Attributes of the memory ECC object */
 static struct memctrl_dev_attribute *memctrl_attr[] = {
@@ -726,7 +743,7 @@ static struct kobj_type ktype_mc_set_attribs = {
  *     /sys/devices/system/edac/mc
  */
 static struct kset mc_kset = {
-       .kobj = {.name = "mc", .ktype = &ktype_mc_set_attribs },
+       .kobj = {.ktype = &ktype_mc_set_attribs },
        .ktype = &ktype_mci,
 };
 
@@ -993,6 +1010,7 @@ int edac_sysfs_setup_mc_kset(void)
        }
 
        /* Init the MC's kobject */
+       kobject_set_name(&mc_kset.kobj, "mc");
        mc_kset.kobj.parent = &edac_class->kset.kobj;
 
        /* register the mc_kset */