ARM: tegra: clock: Update GPU clock sysfs nodes
Alex Frid [Sat, 28 Sep 2013 06:23:05 +0000 (23:23 -0700)]
On Tegra12 for clarity renamed limits nodes in /sys/kernel/tegra_gpu/
directory: "gpu_cap_level" to "gpu_cap_rate" and "gpu_floor_level" to
"gpu_floor_rate". This directory was just recently introduced, and the
respective nodes are not used by user space power management, yet.
List of all tegra_gpu/ nodes after re-naming:

/sys/kernel/tegra_gpu/gpu_available_rates
/sys/kernel/tegra_gpu/gpu_cap_rate
/sys/kernel/tegra_gpu/gpu_cap_state
/sys/kernel/tegra_gpu/gpu_floor_rate
/sys/kernel/tegra_gpu/gpu_floor_state
/sys/kernel/tegra_gpu/gpu_rate

On Tegra11 added /sys/kernel/tegra_gpu/ directory with only 2 nodes:

/sys/kernel/tegra_gpu/gpu_available_rates
/sys/kernel/tegra_gpu/gpu_rate

Change-Id: I04596c7bffef8d589a09644b2882b02860c8a4fc
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/280086
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Ilan Aelion <iaelion@nvidia.com>
Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
(cherry picked from commit e63c8e496a63043f4a40e28f9e4ab61909b6eca7)
Signed-off-by: Ajay Nandakumar <anandakumarm@nvidia.com>

arch/arm/mach-tegra/tegra11_dvfs.c
arch/arm/mach-tegra/tegra12_dvfs.c

index 6bd0ce1..42e30f0 100644 (file)
@@ -878,6 +878,7 @@ int tegra_dvfs_rail_post_enable(struct dvfs_rail *rail)
 /* Core voltage and bus cap object and tables */
 static struct kobject *cap_kobj;
 static struct kobject *floor_kobj;
+static struct kobject *gpu_kobj;
 
 static struct core_dvfs_cap_table tegra11_core_cap_table[] = {
 #ifdef CONFIG_TEGRA_DUAL_CBUS
@@ -931,6 +932,13 @@ static struct core_bus_limit_table tegra11_bus_floor_table[] = {
 #endif
 };
 
+static struct core_bus_rates_table tegra11_gpu_rates_sysfs = {
+       .bus_clk_name = "c2bus",
+       .rate_attr = {.attr = {.name = "gpu_rate", .mode = 0444} },
+       .available_rates_attr = {
+               .attr = {.name = "gpu_available_rates", .mode = 0444} },
+};
+
 static int __init tegra11_dvfs_init_core_limits(void)
 {
        int ret;
@@ -980,6 +988,22 @@ static int __init tegra11_dvfs_init_core_limits(void)
        }
        pr_info("tegra dvfs: tegra sysfs floor interface is initialized\n");
 
+       gpu_kobj = kobject_create_and_add("tegra_gpu", kernel_kobj);
+       if (!gpu_kobj) {
+               pr_err("tegra11_dvfs: failed to create sysfs gpu object\n");
+               return 0;
+       }
+
+       ret = tegra_init_sysfs_shared_bus_rate(&tegra11_gpu_rates_sysfs,
+                                              1, gpu_kobj);
+       if (ret) {
+               pr_err("tegra11_dvfs: failed to init gpu rates interface (%d)\n",
+                      ret);
+               kobject_del(gpu_kobj);
+               return 0;
+       }
+       pr_info("tegra dvfs: tegra sysfs gpu interface is initialized\n");
+
        return 0;
 }
 late_initcall(tegra11_dvfs_init_core_limits);
index 1d7af28..7530d35 100644 (file)
@@ -975,14 +975,14 @@ static struct core_dvfs_cap_table tegra12_core_cap_table[] = {
 static struct core_bus_limit_table tegra12_gpu_cap_syfs = {
        .limit_clk_name = "cap.profile.gbus",
        .refcnt_attr = {.attr = {.name = "gpu_cap_state", .mode = 0644} },
-       .level_attr  = {.attr = {.name = "gpu_cap_level", .mode = 0644} },
+       .level_attr  = {.attr = {.name = "gpu_cap_rate", .mode = 0644} },
        .pm_qos_class = PM_QOS_GPU_FREQ_MAX,
 };
 
 static struct core_bus_limit_table tegra12_gpu_floor_sysfs = {
        .limit_clk_name = "floor.profile.gbus",
        .refcnt_attr = {.attr = {.name = "gpu_floor_state", .mode = 0644} },
-       .level_attr  = {.attr = {.name = "gpu_floor_level", .mode = 0644} },
+       .level_attr  = {.attr = {.name = "gpu_floor_rate", .mode = 0644} },
        .pm_qos_class = PM_QOS_GPU_FREQ_MIN,
 };