summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorArto Merilainen <amerilainen@nvidia.com>2014-04-16 03:12:35 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:09:46 -0400
commit6107c44ecd16dce703e653bc6a10f950441b76d4 (patch)
tree87fd9f0a331e56b5296b2b609d5cf29cb53c53b4 /drivers
parentd224ca20089a9f05bd72d83990c190ad0c1e73c8 (diff)
gpu: nvgpu: Create sysfs symlinks
gk20a is going to be moved under platform bus, however, the sysfs interface should remain stable over the transition period. This patch adds a symlink to keep current interfaces stable. Bug 1311528 Bug 1434573 Change-Id: I951000f4b25285ff96e93eb726342d5b76cc84f1 Signed-off-by: Arto Merilainen <amerilainen@nvidia.com> Reviewed-on: http://git-master/r/396926 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
index f7e0a2b6..9ebc5bab 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
@@ -333,6 +333,8 @@ static DEVICE_ATTR(elpg_enable, ROOTRW, elpg_enable_read, elpg_enable_store);
333 333
334void gk20a_remove_sysfs(struct device *dev) 334void gk20a_remove_sysfs(struct device *dev)
335{ 335{
336 struct gk20a *g = get_gk20a(to_platform_device(dev));
337
336 device_remove_file(dev, &dev_attr_elcg_enable); 338 device_remove_file(dev, &dev_attr_elcg_enable);
337 device_remove_file(dev, &dev_attr_blcg_enable); 339 device_remove_file(dev, &dev_attr_blcg_enable);
338 device_remove_file(dev, &dev_attr_slcg_enable); 340 device_remove_file(dev, &dev_attr_slcg_enable);
@@ -343,10 +345,14 @@ void gk20a_remove_sysfs(struct device *dev)
343 device_remove_file(dev, &dev_attr_load); 345 device_remove_file(dev, &dev_attr_load);
344 device_remove_file(dev, &dev_attr_railgate_delay); 346 device_remove_file(dev, &dev_attr_railgate_delay);
345 device_remove_file(dev, &dev_attr_clockgate_delay); 347 device_remove_file(dev, &dev_attr_clockgate_delay);
348
349 if (g->host1x_dev && (dev->parent != &g->host1x_dev->dev))
350 sysfs_remove_link(&dev->kobj, dev_name(dev));
346} 351}
347 352
348void gk20a_create_sysfs(struct platform_device *dev) 353void gk20a_create_sysfs(struct platform_device *dev)
349{ 354{
355 struct gk20a *g = get_gk20a(dev);
350 int error = 0; 356 int error = 0;
351 357
352 error |= device_create_file(&dev->dev, &dev_attr_elcg_enable); 358 error |= device_create_file(&dev->dev, &dev_attr_elcg_enable);
@@ -360,6 +366,12 @@ void gk20a_create_sysfs(struct platform_device *dev)
360 error |= device_create_file(&dev->dev, &dev_attr_railgate_delay); 366 error |= device_create_file(&dev->dev, &dev_attr_railgate_delay);
361 error |= device_create_file(&dev->dev, &dev_attr_clockgate_delay); 367 error |= device_create_file(&dev->dev, &dev_attr_clockgate_delay);
362 368
369 if (g->host1x_dev && (dev->dev.parent != &g->host1x_dev->dev))
370 error |= sysfs_create_link(&g->host1x_dev->dev.kobj,
371 &dev->dev.kobj,
372 dev_name(&dev->dev));
373
363 if (error) 374 if (error)
364 dev_err(&dev->dev, "Failed to create sysfs attributes!\n"); 375 dev_err(&dev->dev, "Failed to create sysfs attributes!\n");
376
365} 377}