summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
index b68073af..8eaee190 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
@@ -228,6 +228,55 @@ static DEVICE_ATTR(ptimer_scale_factor,
228 ptimer_scale_factor_show, 228 ptimer_scale_factor_show,
229 NULL); 229 NULL);
230 230
231static ssize_t ptimer_ref_freq_show(struct device *dev,
232 struct device_attribute *attr,
233 char *buf)
234{
235 struct gk20a_platform *platform = dev_get_drvdata(dev);
236 u32 src_freq_hz = platform->ptimer_src_freq;
237 ssize_t res;
238
239 if (!src_freq_hz) {
240 dev_err(dev, "reference clk_m rate is not set correctly\n");
241 return -EINVAL;
242 }
243
244 res = sprintf(buf, "%u\n", PTIMER_REF_FREQ_HZ);
245
246 return res;
247
248}
249
250static DEVICE_ATTR(ptimer_ref_freq,
251 S_IRUGO,
252 ptimer_ref_freq_show,
253 NULL);
254
255static ssize_t ptimer_src_freq_show(struct device *dev,
256 struct device_attribute *attr,
257 char *buf)
258{
259 struct gk20a_platform *platform = dev_get_drvdata(dev);
260 u32 src_freq_hz = platform->ptimer_src_freq;
261 ssize_t res;
262
263 if (!src_freq_hz) {
264 dev_err(dev, "reference clk_m rate is not set correctly\n");
265 return -EINVAL;
266 }
267
268 res = sprintf(buf, "%u\n", src_freq_hz);
269
270 return res;
271
272}
273
274static DEVICE_ATTR(ptimer_src_freq,
275 S_IRUGO,
276 ptimer_src_freq_show,
277 NULL);
278
279
231#if defined(CONFIG_PM) && defined(CONFIG_PM_GENERIC_DOMAINS) 280#if defined(CONFIG_PM) && defined(CONFIG_PM_GENERIC_DOMAINS)
232static ssize_t railgate_enable_store(struct device *dev, 281static ssize_t railgate_enable_store(struct device *dev,
233 struct device_attribute *attr, const char *buf, size_t count) 282 struct device_attribute *attr, const char *buf, size_t count)
@@ -742,6 +791,8 @@ void gk20a_remove_sysfs(struct device *dev)
742 device_remove_file(dev, &dev_attr_blcg_enable); 791 device_remove_file(dev, &dev_attr_blcg_enable);
743 device_remove_file(dev, &dev_attr_slcg_enable); 792 device_remove_file(dev, &dev_attr_slcg_enable);
744 device_remove_file(dev, &dev_attr_ptimer_scale_factor); 793 device_remove_file(dev, &dev_attr_ptimer_scale_factor);
794 device_remove_file(dev, &dev_attr_ptimer_ref_freq);
795 device_remove_file(dev, &dev_attr_ptimer_src_freq);
745 device_remove_file(dev, &dev_attr_elpg_enable); 796 device_remove_file(dev, &dev_attr_elpg_enable);
746 device_remove_file(dev, &dev_attr_emc3d_ratio); 797 device_remove_file(dev, &dev_attr_emc3d_ratio);
747 device_remove_file(dev, &dev_attr_fmax_at_vmin_safe); 798 device_remove_file(dev, &dev_attr_fmax_at_vmin_safe);
@@ -782,6 +833,8 @@ void gk20a_create_sysfs(struct device *dev)
782 error |= device_create_file(dev, &dev_attr_blcg_enable); 833 error |= device_create_file(dev, &dev_attr_blcg_enable);
783 error |= device_create_file(dev, &dev_attr_slcg_enable); 834 error |= device_create_file(dev, &dev_attr_slcg_enable);
784 error |= device_create_file(dev, &dev_attr_ptimer_scale_factor); 835 error |= device_create_file(dev, &dev_attr_ptimer_scale_factor);
836 error |= device_create_file(dev, &dev_attr_ptimer_ref_freq);
837 error |= device_create_file(dev, &dev_attr_ptimer_src_freq);
785 error |= device_create_file(dev, &dev_attr_elpg_enable); 838 error |= device_create_file(dev, &dev_attr_elpg_enable);
786 error |= device_create_file(dev, &dev_attr_emc3d_ratio); 839 error |= device_create_file(dev, &dev_attr_emc3d_ratio);
787 error |= device_create_file(dev, &dev_attr_fmax_at_vmin_safe); 840 error |= device_create_file(dev, &dev_attr_fmax_at_vmin_safe);