summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/common/linux/fuse.c36
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/fuse.h10
2 files changed, 37 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/fuse.c b/drivers/gpu/nvgpu/common/linux/fuse.c
index 5c832a2a..993cbc5a 100644
--- a/drivers/gpu/nvgpu/common/linux/fuse.c
+++ b/drivers/gpu/nvgpu/common/linux/fuse.c
@@ -15,17 +15,41 @@
15 15
16#include <nvgpu/fuse.h> 16#include <nvgpu/fuse.h>
17 17
18int nvgpu_tegra_fuse_read(unsigned long offset, u32 *value) 18int nvgpu_tegra_get_gpu_speedo_id(void)
19{ 19{
20 return tegra_fuse_readl(offset, value); 20 return tegra_sku_info.gpu_speedo_id;
21} 21}
22 22
23void nvgpu_tegra_fuse_write(u32 value, unsigned long offset) 23/*
24 * Use tegra_fuse_control_read/write() APIs for fuse offsets upto 0x100
25 * Use tegra_fuse_readl/writel() APIs for fuse offsets above 0x100
26 */
27void nvgpu_tegra_fuse_write_bypass(u32 val)
24{ 28{
25 tegra_fuse_control_write(value, offset); 29 tegra_fuse_control_write(val, FUSE_FUSEBYPASS_0);
26} 30}
27 31
28int nvgpu_tegra_get_gpu_speedo_id(void) 32void nvgpu_tegra_fuse_write_access_sw(u32 val)
29{ 33{
30 return tegra_sku_info.gpu_speedo_id; 34 tegra_fuse_control_write(val, FUSE_WRITE_ACCESS_SW_0);
35}
36
37void nvgpu_tegra_fuse_write_opt_gpu_tpc0_disable(u32 val)
38{
39 tegra_fuse_writel(val, FUSE_OPT_GPU_TPC0_DISABLE_0);
40}
41
42void nvgpu_tegra_fuse_write_opt_gpu_tpc1_disable(u32 val)
43{
44 tegra_fuse_writel(val, FUSE_OPT_GPU_TPC1_DISABLE_0);
45}
46
47int nvgpu_tegra_fuse_read_gcplex_config_fuse(u32 *val)
48{
49 return tegra_fuse_readl(FUSE_GCPLEX_CONFIG_FUSE_0, val);
50}
51
52int nvgpu_tegra_fuse_read_reserved_calib(u32 *val)
53{
54 return tegra_fuse_readl(FUSE_RESERVED_CALIB0_0, val);
31} 55}
diff --git a/drivers/gpu/nvgpu/include/nvgpu/fuse.h b/drivers/gpu/nvgpu/include/nvgpu/fuse.h
index 1e306b2d..3650fd58 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/fuse.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/fuse.h
@@ -13,9 +13,13 @@
13#ifndef __NVGPU_FUSE_H__ 13#ifndef __NVGPU_FUSE_H__
14#define __NVGPU_FUSE_H__ 14#define __NVGPU_FUSE_H__
15 15
16int nvgpu_tegra_fuse_read(unsigned long offset, u32 *value);
17void nvgpu_tegra_fuse_write(u32 value, unsigned long offset);
18
19int nvgpu_tegra_get_gpu_speedo_id(void); 16int nvgpu_tegra_get_gpu_speedo_id(void);
20 17
18void nvgpu_tegra_fuse_write_bypass(u32 val);
19void nvgpu_tegra_fuse_write_access_sw(u32 val);
20void nvgpu_tegra_fuse_write_opt_gpu_tpc0_disable(u32 val);
21void nvgpu_tegra_fuse_write_opt_gpu_tpc1_disable(u32 val);
22int nvgpu_tegra_fuse_read_gcplex_config_fuse(u32 *val);
23int nvgpu_tegra_fuse_read_reserved_calib(u32 *val);
24
21#endif 25#endif