Merge branch 'exec_rm_compat' of git://git.kernel.org/pub/scm/linux/kernel/git/oleg...
[pandora-kernel.git] / arch / powerpc / kernel / sysfs.c
index c0d8c20..f0f2199 100644 (file)
@@ -182,6 +182,41 @@ static SYSDEV_ATTR(mmcra, 0600, show_mmcra, store_mmcra);
 static SYSDEV_ATTR(spurr, 0600, show_spurr, NULL);
 static SYSDEV_ATTR(dscr, 0600, show_dscr, store_dscr);
 static SYSDEV_ATTR(purr, 0600, show_purr, store_purr);
+
+unsigned long dscr_default = 0;
+EXPORT_SYMBOL(dscr_default);
+
+static ssize_t show_dscr_default(struct sysdev_class *class,
+               struct sysdev_class_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%lx\n", dscr_default);
+}
+
+static ssize_t __used store_dscr_default(struct sysdev_class *class,
+               struct sysdev_class_attribute *attr, const char *buf,
+               size_t count)
+{
+       unsigned long val;
+       int ret = 0;
+       
+       ret = sscanf(buf, "%lx", &val);
+       if (ret != 1)
+               return -EINVAL;
+       dscr_default = val;
+
+       return count;
+}
+
+static SYSDEV_CLASS_ATTR(dscr_default, 0600,
+               show_dscr_default, store_dscr_default);
+
+static void sysfs_create_dscr_default(void)
+{
+       int err = 0;
+       if (cpu_has_feature(CPU_FTR_DSCR))
+               err = sysfs_create_file(&cpu_sysdev_class.kset.kobj,
+                       &attr_dscr_default.attr);
+}
 #endif /* CONFIG_PPC64 */
 
 #ifdef HAS_PPC_PMC_PA6T
@@ -617,6 +652,9 @@ static int __init topology_init(void)
                if (cpu_online(cpu))
                        register_cpu_online(cpu);
        }
+#ifdef CONFIG_PPC64
+       sysfs_create_dscr_default();
+#endif /* CONFIG_PPC64 */
 
        return 0;
 }