mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-23 09:57:08 +03:00
gpu: nvgpu: add APIs to export fuse offsets
Add below new APIs in common/linux/fuse.c and export them from include/nvgpu/fuse.h to read/write specific tegra fuse offsets void nvgpu_tegra_fuse_write_bypass(u32 val); void nvgpu_tegra_fuse_write_access_sw(u32 val); void nvgpu_tegra_fuse_write_opt_gpu_tpc0_disable(u32 val); void nvgpu_tegra_fuse_write_opt_gpu_tpc1_disable(u32 val); int nvgpu_tegra_fuse_read_gcplex_config_fuse(u32 *val); int nvgpu_tegra_fuse_read_reserved_calib(u32 *val); These APIs are needed to remove nvgpu's direct dependency on platform specific <soc/tegra/fuse.h> header Remove below generic APIs since they are no longer needed : nvgpu_tegra_fuse_read() nvgpu_tegra_fuse_write() Jira NVGPU-75 Change-Id: I366e6a3382f0c392b2132f4d3a7e286306bb2ec2 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1497517 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
f6c921ec97
commit
eb8db3e4df
@@ -15,17 +15,41 @@
|
|||||||
|
|
||||||
#include <nvgpu/fuse.h>
|
#include <nvgpu/fuse.h>
|
||||||
|
|
||||||
int nvgpu_tegra_fuse_read(unsigned long offset, u32 *value)
|
|
||||||
{
|
|
||||||
return tegra_fuse_readl(offset, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void nvgpu_tegra_fuse_write(u32 value, unsigned long offset)
|
|
||||||
{
|
|
||||||
tegra_fuse_control_write(value, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
int nvgpu_tegra_get_gpu_speedo_id(void)
|
int nvgpu_tegra_get_gpu_speedo_id(void)
|
||||||
{
|
{
|
||||||
return tegra_sku_info.gpu_speedo_id;
|
return tegra_sku_info.gpu_speedo_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Use tegra_fuse_control_read/write() APIs for fuse offsets upto 0x100
|
||||||
|
* Use tegra_fuse_readl/writel() APIs for fuse offsets above 0x100
|
||||||
|
*/
|
||||||
|
void nvgpu_tegra_fuse_write_bypass(u32 val)
|
||||||
|
{
|
||||||
|
tegra_fuse_control_write(val, FUSE_FUSEBYPASS_0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nvgpu_tegra_fuse_write_access_sw(u32 val)
|
||||||
|
{
|
||||||
|
tegra_fuse_control_write(val, FUSE_WRITE_ACCESS_SW_0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nvgpu_tegra_fuse_write_opt_gpu_tpc0_disable(u32 val)
|
||||||
|
{
|
||||||
|
tegra_fuse_writel(val, FUSE_OPT_GPU_TPC0_DISABLE_0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nvgpu_tegra_fuse_write_opt_gpu_tpc1_disable(u32 val)
|
||||||
|
{
|
||||||
|
tegra_fuse_writel(val, FUSE_OPT_GPU_TPC1_DISABLE_0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int nvgpu_tegra_fuse_read_gcplex_config_fuse(u32 *val)
|
||||||
|
{
|
||||||
|
return tegra_fuse_readl(FUSE_GCPLEX_CONFIG_FUSE_0, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
int nvgpu_tegra_fuse_read_reserved_calib(u32 *val)
|
||||||
|
{
|
||||||
|
return tegra_fuse_readl(FUSE_RESERVED_CALIB0_0, val);
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,9 +13,13 @@
|
|||||||
#ifndef __NVGPU_FUSE_H__
|
#ifndef __NVGPU_FUSE_H__
|
||||||
#define __NVGPU_FUSE_H__
|
#define __NVGPU_FUSE_H__
|
||||||
|
|
||||||
int nvgpu_tegra_fuse_read(unsigned long offset, u32 *value);
|
|
||||||
void nvgpu_tegra_fuse_write(u32 value, unsigned long offset);
|
|
||||||
|
|
||||||
int nvgpu_tegra_get_gpu_speedo_id(void);
|
int nvgpu_tegra_get_gpu_speedo_id(void);
|
||||||
|
|
||||||
|
void nvgpu_tegra_fuse_write_bypass(u32 val);
|
||||||
|
void nvgpu_tegra_fuse_write_access_sw(u32 val);
|
||||||
|
void nvgpu_tegra_fuse_write_opt_gpu_tpc0_disable(u32 val);
|
||||||
|
void nvgpu_tegra_fuse_write_opt_gpu_tpc1_disable(u32 val);
|
||||||
|
int nvgpu_tegra_fuse_read_gcplex_config_fuse(u32 *val);
|
||||||
|
int nvgpu_tegra_fuse_read_reserved_calib(u32 *val);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user