mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 18:42:29 +03:00
gpu: nvgpu: define nvgpu_falcon_get_mem_size
Currently we have DMEM version of the API to get the size of falcon memory. Let us convert it to generic as needed at multiple places. JIRA: NVGPU-1993 Change-Id: If612b0a10e27619e4b6132773907eb21f0569a27 Signed-off-by: Sagar Kamble <skamble@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2023074 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
8765df40b0
commit
8da1bde7db
@@ -284,7 +284,6 @@ int nvgpu_falcon_copy_to_emem(struct nvgpu_falcon *flcn,
|
||||
static int falcon_memcpy_params_check(struct nvgpu_falcon *flcn,
|
||||
u32 offset, u32 size, enum falcon_mem_type mem_type)
|
||||
{
|
||||
struct nvgpu_falcon_ops *flcn_ops = &flcn->flcn_ops;
|
||||
struct gk20a *g = flcn->g;
|
||||
u32 mem_size = 0;
|
||||
int ret = -EINVAL;
|
||||
@@ -299,13 +298,11 @@ static int falcon_memcpy_params_check(struct nvgpu_falcon *flcn,
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (flcn_ops->get_mem_size == NULL) {
|
||||
nvgpu_warn(flcn->g, "Invalid op on falcon 0x%x ",
|
||||
flcn->flcn_id);
|
||||
ret = nvgpu_falcon_get_mem_size(flcn, mem_type, &mem_size);
|
||||
if (ret != 0) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
mem_size = flcn_ops->get_mem_size(flcn, mem_type);
|
||||
if (!(offset <= mem_size && (offset + size) <= mem_size)) {
|
||||
nvgpu_err(g, "flcn-id 0x%x, copy overflow ",
|
||||
flcn->flcn_id);
|
||||
@@ -628,7 +625,11 @@ int nvgpu_falcon_bl_bootstrap(struct nvgpu_falcon *flcn,
|
||||
goto exit;
|
||||
}
|
||||
|
||||
imem_size = flcn_ops->get_mem_size(flcn, MEM_IMEM);
|
||||
status = nvgpu_falcon_get_mem_size(flcn, MEM_IMEM, &imem_size);
|
||||
if (status != 0) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (bl_info->bl_size > imem_size) {
|
||||
nvgpu_err(flcn->g, "bootloader size greater than IMEM size");
|
||||
goto exit;
|
||||
@@ -658,9 +659,11 @@ void nvgpu_falcon_get_ctls(struct nvgpu_falcon *flcn, u32 *sctl, u32 *cpuctl)
|
||||
}
|
||||
}
|
||||
|
||||
int nvgpu_falcon_get_dmem_size(struct nvgpu_falcon *flcn, u32 *dmem_size)
|
||||
int nvgpu_falcon_get_mem_size(struct nvgpu_falcon *flcn,
|
||||
enum falcon_mem_type type, u32 *size)
|
||||
{
|
||||
struct nvgpu_falcon_ops *flcn_ops;
|
||||
int err = -EINVAL;
|
||||
|
||||
if (flcn == NULL) {
|
||||
return -EINVAL;
|
||||
@@ -669,13 +672,14 @@ int nvgpu_falcon_get_dmem_size(struct nvgpu_falcon *flcn, u32 *dmem_size)
|
||||
flcn_ops = &flcn->flcn_ops;
|
||||
|
||||
if (flcn_ops->get_mem_size != NULL) {
|
||||
*dmem_size = flcn_ops->get_mem_size(flcn, MEM_DMEM);
|
||||
*size = flcn_ops->get_mem_size(flcn, type);
|
||||
err = 0;
|
||||
} else {
|
||||
nvgpu_warn(flcn->g, "Invalid op on falcon 0x%x ",
|
||||
flcn->flcn_id);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return err;
|
||||
}
|
||||
|
||||
struct gk20a *nvgpu_falcon_to_gk20a(struct nvgpu_falcon *flcn)
|
||||
|
||||
@@ -65,11 +65,6 @@ struct gk20a;
|
||||
struct nvgpu_falcon;
|
||||
struct nvgpu_falcon_bl_info;
|
||||
|
||||
enum falcon_mem_type {
|
||||
MEM_DMEM = 0,
|
||||
MEM_IMEM
|
||||
};
|
||||
|
||||
/* ops which are falcon engine specific */
|
||||
struct nvgpu_falcon_engine_dependency_ops {
|
||||
int (*reset_eng)(struct gk20a *g);
|
||||
|
||||
@@ -641,7 +641,7 @@ void nvgpu_pmu_get_cmd_line_args_offset(struct gk20a *g,
|
||||
u32 dmem_size = 0;
|
||||
int err = 0;
|
||||
|
||||
err = nvgpu_falcon_get_dmem_size(pmu->flcn, &dmem_size);
|
||||
err = nvgpu_falcon_get_mem_size(pmu->flcn, MEM_DMEM, &dmem_size);
|
||||
if (err != 0) {
|
||||
nvgpu_err(g, "dmem size request failed");
|
||||
*args_offset = 0;
|
||||
|
||||
@@ -79,6 +79,11 @@
|
||||
struct gk20a;
|
||||
struct nvgpu_falcon;
|
||||
|
||||
enum falcon_mem_type {
|
||||
MEM_DMEM = 0,
|
||||
MEM_IMEM
|
||||
};
|
||||
|
||||
struct nvgpu_falcon_bl_info {
|
||||
void *bl_src;
|
||||
u8 *bl_desc;
|
||||
@@ -117,7 +122,8 @@ void nvgpu_falcon_dump_stats(struct nvgpu_falcon *flcn);
|
||||
int nvgpu_falcon_bl_bootstrap(struct nvgpu_falcon *flcn,
|
||||
struct nvgpu_falcon_bl_info *bl_info);
|
||||
void nvgpu_falcon_get_ctls(struct nvgpu_falcon *flcn, u32 *sctl, u32 *cpuctl);
|
||||
int nvgpu_falcon_get_dmem_size(struct nvgpu_falcon *flcn, u32 *dmem_size);
|
||||
int nvgpu_falcon_get_mem_size(struct nvgpu_falcon *flcn,
|
||||
enum falcon_mem_type type, u32 *size);
|
||||
struct gk20a *nvgpu_falcon_to_gk20a(struct nvgpu_falcon *flcn);
|
||||
u32 nvgpu_falcon_get_id(struct nvgpu_falcon *flcn);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user