mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-23 09:57:08 +03:00
gpu: nvgpu: Remove clk.h dependency from gk20a.h
gk20a.h depends on definition of struct clk_pmupstate. Change that to a pointer and use forward declaration, and allocation and free functions. Fix a few build breaks by adding explicit includes where previously a header file had gotten included implicitly. JIRA NVGPU-596 Change-Id: Iafe7d72a6fd31543653e0e10e2d2e552b6c3514b Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1945286 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
bca27e31e3
commit
07760eb9a1
@@ -200,7 +200,7 @@ int clk_pmu_freq_controller_load(struct gk20a *g, bool bload, u8 bit_idx)
|
|||||||
(void) memset(&rpccall, 0, sizeof(struct nv_pmu_clk_rpc));
|
(void) memset(&rpccall, 0, sizeof(struct nv_pmu_clk_rpc));
|
||||||
(void) memset(&handler, 0, sizeof(struct clkrpc_pmucmdhandler_params));
|
(void) memset(&handler, 0, sizeof(struct clkrpc_pmucmdhandler_params));
|
||||||
|
|
||||||
pclk_freq_controllers = &g->clk_pmu.clk_freq_controllers;
|
pclk_freq_controllers = &g->clk_pmu->clk_freq_controllers;
|
||||||
rpccall.function = NV_PMU_CLK_RPC_ID_LOAD;
|
rpccall.function = NV_PMU_CLK_RPC_ID_LOAD;
|
||||||
clkload = &rpccall.params.clk_load;
|
clkload = &rpccall.params.clk_load;
|
||||||
clkload->feature = NV_NV_PMU_CLK_LOAD_FEATURE_FREQ_CONTROLLER;
|
clkload->feature = NV_NV_PMU_CLK_LOAD_FEATURE_FREQ_CONTROLLER;
|
||||||
@@ -500,7 +500,7 @@ static u32 find_regime_id(struct gk20a *g, u32 domain, u16 clkmhz)
|
|||||||
{
|
{
|
||||||
struct fll_device *pflldev;
|
struct fll_device *pflldev;
|
||||||
u8 j;
|
u8 j;
|
||||||
struct clk_pmupstate *pclk = &g->clk_pmu;
|
struct clk_pmupstate *pclk = g->clk_pmu;
|
||||||
|
|
||||||
BOARDOBJGRP_FOR_EACH(&(pclk->avfs_fllobjs.super.super),
|
BOARDOBJGRP_FOR_EACH(&(pclk->avfs_fllobjs.super.super),
|
||||||
struct fll_device *, pflldev, j) {
|
struct fll_device *, pflldev, j) {
|
||||||
@@ -520,7 +520,7 @@ static int set_regime_id(struct gk20a *g, u32 domain, u32 regimeid)
|
|||||||
{
|
{
|
||||||
struct fll_device *pflldev;
|
struct fll_device *pflldev;
|
||||||
u8 j;
|
u8 j;
|
||||||
struct clk_pmupstate *pclk = &g->clk_pmu;
|
struct clk_pmupstate *pclk = g->clk_pmu;
|
||||||
|
|
||||||
BOARDOBJGRP_FOR_EACH(&(pclk->avfs_fllobjs.super.super),
|
BOARDOBJGRP_FOR_EACH(&(pclk->avfs_fllobjs.super.super),
|
||||||
struct fll_device *, pflldev, j) {
|
struct fll_device *, pflldev, j) {
|
||||||
@@ -536,7 +536,7 @@ static int get_regime_id(struct gk20a *g, u32 domain, u32 *regimeid)
|
|||||||
{
|
{
|
||||||
struct fll_device *pflldev;
|
struct fll_device *pflldev;
|
||||||
u8 j;
|
u8 j;
|
||||||
struct clk_pmupstate *pclk = &g->clk_pmu;
|
struct clk_pmupstate *pclk = g->clk_pmu;
|
||||||
|
|
||||||
BOARDOBJGRP_FOR_EACH(&(pclk->avfs_fllobjs.super.super),
|
BOARDOBJGRP_FOR_EACH(&(pclk->avfs_fllobjs.super.super),
|
||||||
struct fll_device *, pflldev, j) {
|
struct fll_device *, pflldev, j) {
|
||||||
@@ -613,7 +613,7 @@ int clk_get_fll_clks(struct gk20a *g, struct set_fll_clk *setfllclk)
|
|||||||
int status = -EINVAL;
|
int status = -EINVAL;
|
||||||
struct clk_domain *pdomain;
|
struct clk_domain *pdomain;
|
||||||
u8 i;
|
u8 i;
|
||||||
struct clk_pmupstate *pclk = &g->clk_pmu;
|
struct clk_pmupstate *pclk = g->clk_pmu;
|
||||||
u16 clkmhz = 0;
|
u16 clkmhz = 0;
|
||||||
struct clk_domain_3x_master *p3xmaster;
|
struct clk_domain_3x_master *p3xmaster;
|
||||||
struct clk_domain_3x_slave *p3xslave;
|
struct clk_domain_3x_slave *p3xslave;
|
||||||
@@ -674,7 +674,7 @@ int clk_domain_print_vf_table(struct gk20a *g, u32 clkapidomain)
|
|||||||
int status = -EINVAL;
|
int status = -EINVAL;
|
||||||
struct clk_domain *pdomain;
|
struct clk_domain *pdomain;
|
||||||
u8 i;
|
u8 i;
|
||||||
struct clk_pmupstate *pclk = &g->clk_pmu;
|
struct clk_pmupstate *pclk = g->clk_pmu;
|
||||||
u16 clkmhz = 0;
|
u16 clkmhz = 0;
|
||||||
u32 volt = 0;
|
u32 volt = 0;
|
||||||
|
|
||||||
@@ -697,7 +697,7 @@ static int clk_program_fllclks(struct gk20a *g, struct change_fll_clk *fllclk)
|
|||||||
int status = -EINVAL;
|
int status = -EINVAL;
|
||||||
struct clk_domain *pdomain;
|
struct clk_domain *pdomain;
|
||||||
u8 i;
|
u8 i;
|
||||||
struct clk_pmupstate *pclk = &g->clk_pmu;
|
struct clk_pmupstate *pclk = g->clk_pmu;
|
||||||
u16 clkmhz = 0;
|
u16 clkmhz = 0;
|
||||||
struct clk_domain_3x_master *p3xmaster;
|
struct clk_domain_3x_master *p3xmaster;
|
||||||
struct clk_domain_3x_slave *p3xslave;
|
struct clk_domain_3x_slave *p3xslave;
|
||||||
@@ -916,7 +916,7 @@ int clk_domain_get_f_or_v(
|
|||||||
int status = -EINVAL;
|
int status = -EINVAL;
|
||||||
struct clk_domain *pdomain;
|
struct clk_domain *pdomain;
|
||||||
u8 i;
|
u8 i;
|
||||||
struct clk_pmupstate *pclk = &g->clk_pmu;
|
struct clk_pmupstate *pclk = g->clk_pmu;
|
||||||
u8 rail;
|
u8 rail;
|
||||||
|
|
||||||
if ((pclkmhz == NULL) || (pvoltuv == NULL)) {
|
if ((pclkmhz == NULL) || (pvoltuv == NULL)) {
|
||||||
@@ -941,3 +941,23 @@ int clk_domain_get_f_or_v(
|
|||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int clk_init_pmupstate(struct gk20a *g)
|
||||||
|
{
|
||||||
|
/* If already allocated, do not re-allocate */
|
||||||
|
if (g->clk_pmu != NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
g->clk_pmu = nvgpu_kzalloc(g, sizeof(*g->clk_pmu));
|
||||||
|
if (g->clk_pmu == NULL) {
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void clk_free_pmupstate(struct gk20a *g)
|
||||||
|
{
|
||||||
|
nvgpu_kfree(g, g->clk_pmu);
|
||||||
|
}
|
||||||
|
|||||||
@@ -119,6 +119,8 @@ struct vbios_clocks_table_1x_hal_clock_entry {
|
|||||||
|
|
||||||
#define BOOT_GPC2CLK_MHZ 2581U
|
#define BOOT_GPC2CLK_MHZ 2581U
|
||||||
|
|
||||||
|
int clk_init_pmupstate(struct gk20a *g);
|
||||||
|
void clk_free_pmupstate(struct gk20a *g);
|
||||||
int clk_pmu_vin_load(struct gk20a *g);
|
int clk_pmu_vin_load(struct gk20a *g);
|
||||||
int clk_domain_print_vf_table(struct gk20a *g, u32 clkapidomain);
|
int clk_domain_print_vf_table(struct gk20a *g, u32 clkapidomain);
|
||||||
int clk_domain_get_f_or_v(
|
int clk_domain_get_f_or_v(
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ int clk_domain_sw_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
status = boardobjgrpconstruct_e32(g, &g->clk_pmu.clk_domainobjs.super);
|
status = boardobjgrpconstruct_e32(g, &g->clk_pmu->clk_domainobjs.super);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g,
|
nvgpu_err(g,
|
||||||
"error creating boardobjgrp for clk domain, status - 0x%x",
|
"error creating boardobjgrp for clk domain, status - 0x%x",
|
||||||
@@ -206,8 +206,8 @@ int clk_domain_sw_setup(struct gk20a *g)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.clk_domainobjs.super.super;
|
pboardobjgrp = &g->clk_pmu->clk_domainobjs.super.super;
|
||||||
pclkdomainobjs = &(g->clk_pmu.clk_domainobjs);
|
pclkdomainobjs = &(g->clk_pmu->clk_domainobjs);
|
||||||
|
|
||||||
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, CLK_DOMAIN);
|
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, CLK_DOMAIN);
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ int clk_domain_sw_setup(struct gk20a *g)
|
|||||||
(struct clk_domain_3x_slave *)pdomain;
|
(struct clk_domain_3x_slave *)pdomain;
|
||||||
pdomain_master =
|
pdomain_master =
|
||||||
(struct clk_domain_3x_master *)
|
(struct clk_domain_3x_master *)
|
||||||
(CLK_CLK_DOMAIN_GET((&g->clk_pmu),
|
(CLK_CLK_DOMAIN_GET((g->clk_pmu),
|
||||||
pdomain_slave->master_idx));
|
pdomain_slave->master_idx));
|
||||||
pdomain_master->slave_idxs_mask |= BIT(i);
|
pdomain_master->slave_idxs_mask |= BIT(i);
|
||||||
}
|
}
|
||||||
@@ -289,7 +289,7 @@ int clk_domain_pmu_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.clk_domainobjs.super.super;
|
pboardobjgrp = &g->clk_pmu->clk_domainobjs.super.super;
|
||||||
|
|
||||||
if (!pboardobjgrp->bconstructed) {
|
if (!pboardobjgrp->bconstructed) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -1070,7 +1070,7 @@ static int clk_domain_pmudatainit_35_prog(struct gk20a *g,
|
|||||||
struct clk_domain_35_prog *pclk_domain_35_prog;
|
struct clk_domain_35_prog *pclk_domain_35_prog;
|
||||||
struct clk_domain_3x_prog *pclk_domain_3x_prog;
|
struct clk_domain_3x_prog *pclk_domain_3x_prog;
|
||||||
struct nv_pmu_clk_clk_domain_35_prog_boardobj_set *pset;
|
struct nv_pmu_clk_clk_domain_35_prog_boardobj_set *pset;
|
||||||
struct clk_domains *pdomains = &(g->clk_pmu.clk_domainobjs);
|
struct clk_domains *pdomains = &(g->clk_pmu->clk_domainobjs);
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
@@ -1109,7 +1109,7 @@ static int _clk_domain_pmudatainit_3x_prog(struct gk20a *g,
|
|||||||
int status = 0;
|
int status = 0;
|
||||||
struct clk_domain_3x_prog *pclk_domain_3x_prog;
|
struct clk_domain_3x_prog *pclk_domain_3x_prog;
|
||||||
struct nv_pmu_clk_clk_domain_30_prog_boardobj_set *pset;
|
struct nv_pmu_clk_clk_domain_30_prog_boardobj_set *pset;
|
||||||
struct clk_domains *pdomains = &(g->clk_pmu.clk_domainobjs);
|
struct clk_domains *pdomains = &(g->clk_pmu->clk_domainobjs);
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
|
|||||||
@@ -128,14 +128,14 @@ int clk_fll_sw_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
status = boardobjgrpconstruct_e32(g, &g->clk_pmu.avfs_fllobjs.super);
|
status = boardobjgrpconstruct_e32(g, &g->clk_pmu->avfs_fllobjs.super);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g,
|
nvgpu_err(g,
|
||||||
"error creating boardobjgrp for fll, status - 0x%x", status);
|
"error creating boardobjgrp for fll, status - 0x%x", status);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
pfllobjs = &(g->clk_pmu.avfs_fllobjs);
|
pfllobjs = &(g->clk_pmu->avfs_fllobjs);
|
||||||
pboardobjgrp = &(g->clk_pmu.avfs_fllobjs.super.super);
|
pboardobjgrp = &(g->clk_pmu->avfs_fllobjs.super.super);
|
||||||
|
|
||||||
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, FLL_DEVICE);
|
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, FLL_DEVICE);
|
||||||
|
|
||||||
@@ -165,7 +165,7 @@ int clk_fll_sw_setup(struct gk20a *g)
|
|||||||
}
|
}
|
||||||
|
|
||||||
status = BOARDOBJGRP_PMU_CMD_GRP_GET_STATUS_CONSTRUCT(g,
|
status = BOARDOBJGRP_PMU_CMD_GRP_GET_STATUS_CONSTRUCT(g,
|
||||||
&g->clk_pmu.avfs_fllobjs.super.super,
|
&g->clk_pmu->avfs_fllobjs.super.super,
|
||||||
clk, CLK, clk_fll_device, CLK_FLL_DEVICE);
|
clk, CLK, clk_fll_device, CLK_FLL_DEVICE);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g,
|
nvgpu_err(g,
|
||||||
@@ -217,7 +217,7 @@ int clk_fll_pmu_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.avfs_fllobjs.super.super;
|
pboardobjgrp = &g->clk_pmu->avfs_fllobjs.super.super;
|
||||||
|
|
||||||
if (!pboardobjgrp->bconstructed) {
|
if (!pboardobjgrp->bconstructed) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -244,7 +244,7 @@ static int devinit_get_fll_device_table(struct gk20a *g,
|
|||||||
struct vin_device *pvin_dev;
|
struct vin_device *pvin_dev;
|
||||||
u32 desctablesize;
|
u32 desctablesize;
|
||||||
u32 vbios_domain = NV_PERF_DOMAIN_4X_CLOCK_DOMAIN_SKIP;
|
u32 vbios_domain = NV_PERF_DOMAIN_4X_CLOCK_DOMAIN_SKIP;
|
||||||
struct avfsvinobjs *pvinobjs = &g->clk_pmu.avfs_vinobjs;
|
struct avfsvinobjs *pvinobjs = &g->clk_pmu->avfs_vinobjs;
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ static int clk_get_freq_controller_table(struct gk20a *g,
|
|||||||
(u8)BIOS_GET_FIELD(entry.param0,
|
(u8)BIOS_GET_FIELD(entry.param0,
|
||||||
NV_VBIOS_FCT_1X_ENTRY_PARAM0_ID);
|
NV_VBIOS_FCT_1X_ENTRY_PARAM0_ID);
|
||||||
|
|
||||||
pclk_domain = CLK_CLK_DOMAIN_GET((&g->clk_pmu),
|
pclk_domain = CLK_CLK_DOMAIN_GET((g->clk_pmu),
|
||||||
(u32)entry.clk_domain_idx);
|
(u32)entry.clk_domain_idx);
|
||||||
freq_controller_data.freq_controller.clk_domain =
|
freq_controller_data.freq_controller.clk_domain =
|
||||||
pclk_domain->api_domain;
|
pclk_domain->api_domain;
|
||||||
@@ -332,7 +332,7 @@ int clk_freq_controller_pmu_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.clk_freq_controllers.super.super;
|
pboardobjgrp = &g->clk_pmu->clk_freq_controllers.super.super;
|
||||||
|
|
||||||
if (!pboardobjgrp->bconstructed) {
|
if (!pboardobjgrp->bconstructed) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -397,7 +397,7 @@ int clk_freq_controller_sw_setup(struct gk20a *g)
|
|||||||
int status = 0;
|
int status = 0;
|
||||||
struct boardobjgrp *pboardobjgrp = NULL;
|
struct boardobjgrp *pboardobjgrp = NULL;
|
||||||
struct clk_freq_controllers *pclk_freq_controllers;
|
struct clk_freq_controllers *pclk_freq_controllers;
|
||||||
struct avfsfllobjs *pfllobjs = &(g->clk_pmu.avfs_fllobjs);
|
struct avfsfllobjs *pfllobjs = &(g->clk_pmu->avfs_fllobjs);
|
||||||
struct fll_device *pfll;
|
struct fll_device *pfll;
|
||||||
struct clk_freq_controller *pclkfreqctrl;
|
struct clk_freq_controller *pclkfreqctrl;
|
||||||
u8 i;
|
u8 i;
|
||||||
@@ -405,7 +405,7 @@ int clk_freq_controller_sw_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
pclk_freq_controllers = &g->clk_pmu.clk_freq_controllers;
|
pclk_freq_controllers = &g->clk_pmu->clk_freq_controllers;
|
||||||
status = boardobjgrpconstruct_e32(g, &pclk_freq_controllers->super);
|
status = boardobjgrpconstruct_e32(g, &pclk_freq_controllers->super);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g,
|
nvgpu_err(g,
|
||||||
@@ -414,7 +414,7 @@ int clk_freq_controller_sw_setup(struct gk20a *g)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.clk_freq_controllers.super.super;
|
pboardobjgrp = &g->clk_pmu->clk_freq_controllers.super.super;
|
||||||
|
|
||||||
pboardobjgrp->pmudatainit = _clk_freq_controllers_pmudatainit;
|
pboardobjgrp->pmudatainit = _clk_freq_controllers_pmudatainit;
|
||||||
pboardobjgrp->pmudatainstget =
|
pboardobjgrp->pmudatainstget =
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ int clk_prog_sw_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
status = boardobjgrpconstruct_e255(g, &g->clk_pmu.clk_progobjs.super);
|
status = boardobjgrpconstruct_e255(g, &g->clk_pmu->clk_progobjs.super);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g,
|
nvgpu_err(g,
|
||||||
"error creating boardobjgrp for clk prog, status - 0x%x",
|
"error creating boardobjgrp for clk prog, status - 0x%x",
|
||||||
@@ -104,8 +104,8 @@ int clk_prog_sw_setup(struct gk20a *g)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.clk_progobjs.super.super;
|
pboardobjgrp = &g->clk_pmu->clk_progobjs.super.super;
|
||||||
pclkprogobjs = &(g->clk_pmu.clk_progobjs);
|
pclkprogobjs = &(g->clk_pmu->clk_progobjs);
|
||||||
|
|
||||||
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, CLK_PROG);
|
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, CLK_PROG);
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ int clk_prog_sw_setup(struct gk20a *g)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = clk_domain_clk_prog_link(g, &g->clk_pmu);
|
status = clk_domain_clk_prog_link(g, g->clk_pmu);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g, "error constructing VF point board objects");
|
nvgpu_err(g, "error constructing VF point board objects");
|
||||||
goto done;
|
goto done;
|
||||||
@@ -145,7 +145,7 @@ int clk_prog_pmu_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.clk_progobjs.super.super;
|
pboardobjgrp = &g->clk_pmu->clk_progobjs.super.super;
|
||||||
|
|
||||||
if (!pboardobjgrp->bconstructed) {
|
if (!pboardobjgrp->bconstructed) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -719,7 +719,7 @@ static int clk_prog_pmudatainit_1x_master(struct gk20a *g,
|
|||||||
struct clk_prog_1x_master *pclk_prog_1x_master;
|
struct clk_prog_1x_master *pclk_prog_1x_master;
|
||||||
struct nv_pmu_clk_clk_prog_1x_master_boardobj_set *pset;
|
struct nv_pmu_clk_clk_prog_1x_master_boardobj_set *pset;
|
||||||
size_t vfsize = sizeof(struct ctrl_clk_clk_prog_1x_master_vf_entry) *
|
size_t vfsize = sizeof(struct ctrl_clk_clk_prog_1x_master_vf_entry) *
|
||||||
g->clk_pmu.clk_progobjs.vf_entry_count;
|
g->clk_pmu->clk_progobjs.vf_entry_count;
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
@@ -752,7 +752,7 @@ static int clk_prog_pmudatainit_35_master(struct gk20a *g,
|
|||||||
struct nv_pmu_clk_clk_prog_35_master_boardobj_set *pset;
|
struct nv_pmu_clk_clk_prog_35_master_boardobj_set *pset;
|
||||||
size_t voltrail_sec_vfsize =
|
size_t voltrail_sec_vfsize =
|
||||||
sizeof(struct ctrl_clk_clk_prog_35_master_sec_vf_entry_voltrail)
|
sizeof(struct ctrl_clk_clk_prog_35_master_sec_vf_entry_voltrail)
|
||||||
* g->clk_pmu.clk_progobjs.vf_sec_entry_count;
|
* g->clk_pmu->clk_progobjs.vf_sec_entry_count;
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
@@ -779,7 +779,7 @@ static int clk_prog_pmudatainit_1x_master_ratio(struct gk20a *g,
|
|||||||
struct clk_prog_1x_master_ratio *pclk_prog_1x_master_ratio;
|
struct clk_prog_1x_master_ratio *pclk_prog_1x_master_ratio;
|
||||||
struct nv_pmu_clk_clk_prog_1x_master_ratio_boardobj_set *pset;
|
struct nv_pmu_clk_clk_prog_1x_master_ratio_boardobj_set *pset;
|
||||||
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
||||||
g->clk_pmu.clk_progobjs.slave_entry_count;
|
g->clk_pmu->clk_progobjs.slave_entry_count;
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
@@ -808,7 +808,7 @@ static int clk_prog_pmudatainit_35_master_ratio(struct gk20a *g,
|
|||||||
struct clk_prog_35_master_ratio *pclk_prog_35_master_ratio;
|
struct clk_prog_35_master_ratio *pclk_prog_35_master_ratio;
|
||||||
struct nv_pmu_clk_clk_prog_35_master_ratio_boardobj_set *pset;
|
struct nv_pmu_clk_clk_prog_35_master_ratio_boardobj_set *pset;
|
||||||
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
||||||
g->clk_pmu.clk_progobjs.slave_entry_count;
|
g->clk_pmu->clk_progobjs.slave_entry_count;
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
@@ -838,7 +838,7 @@ static int clk_prog_pmudatainit_1x_master_table(struct gk20a *g,
|
|||||||
struct clk_prog_1x_master_table *pclk_prog_1x_master_table;
|
struct clk_prog_1x_master_table *pclk_prog_1x_master_table;
|
||||||
struct nv_pmu_clk_clk_prog_1x_master_table_boardobj_set *pset;
|
struct nv_pmu_clk_clk_prog_1x_master_table_boardobj_set *pset;
|
||||||
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
||||||
g->clk_pmu.clk_progobjs.slave_entry_count;
|
g->clk_pmu->clk_progobjs.slave_entry_count;
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
@@ -866,7 +866,7 @@ static int clk_prog_pmudatainit_35_master_table(struct gk20a *g,
|
|||||||
struct clk_prog_35_master_table *pclk_prog_35_master_table;
|
struct clk_prog_35_master_table *pclk_prog_35_master_table;
|
||||||
struct nv_pmu_clk_clk_prog_35_master_table_boardobj_set *pset;
|
struct nv_pmu_clk_clk_prog_35_master_table_boardobj_set *pset;
|
||||||
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
||||||
g->clk_pmu.clk_progobjs.slave_entry_count;
|
g->clk_pmu->clk_progobjs.slave_entry_count;
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
@@ -1008,7 +1008,7 @@ static int clk_prog_construct_1x_master(struct gk20a *g,
|
|||||||
(struct clk_prog_1x_master *)pargs;
|
(struct clk_prog_1x_master *)pargs;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
size_t vfsize = sizeof(struct ctrl_clk_clk_prog_1x_master_vf_entry) *
|
size_t vfsize = sizeof(struct ctrl_clk_clk_prog_1x_master_vf_entry) *
|
||||||
g->clk_pmu.clk_progobjs.vf_entry_count;
|
g->clk_pmu->clk_progobjs.vf_entry_count;
|
||||||
u8 railidx;
|
u8 railidx;
|
||||||
|
|
||||||
nvgpu_log_info(g, " type - %x", BOARDOBJ_GET_TYPE(pargs));
|
nvgpu_log_info(g, " type - %x", BOARDOBJ_GET_TYPE(pargs));
|
||||||
@@ -1045,7 +1045,7 @@ static int clk_prog_construct_1x_master(struct gk20a *g,
|
|||||||
pclkprog->b_o_c_o_v_enabled = ptmpprog->b_o_c_o_v_enabled;
|
pclkprog->b_o_c_o_v_enabled = ptmpprog->b_o_c_o_v_enabled;
|
||||||
|
|
||||||
for (railidx = 0;
|
for (railidx = 0;
|
||||||
railidx < g->clk_pmu.clk_progobjs.vf_entry_count;
|
railidx < g->clk_pmu->clk_progobjs.vf_entry_count;
|
||||||
railidx++) {
|
railidx++) {
|
||||||
pclkprog->p_vf_entries[railidx].vf_point_idx_first =
|
pclkprog->p_vf_entries[railidx].vf_point_idx_first =
|
||||||
CTRL_CLK_CLK_VF_POINT_IDX_INVALID;
|
CTRL_CLK_CLK_VF_POINT_IDX_INVALID;
|
||||||
@@ -1105,7 +1105,7 @@ static int clk_prog_construct_1x_master_ratio(struct gk20a *g,
|
|||||||
(struct clk_prog_1x_master_ratio *)pargs;
|
(struct clk_prog_1x_master_ratio *)pargs;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
||||||
g->clk_pmu.clk_progobjs.slave_entry_count;
|
g->clk_pmu->clk_progobjs.slave_entry_count;
|
||||||
|
|
||||||
if (BOARDOBJ_GET_TYPE(pargs) != CTRL_CLK_CLK_PROG_TYPE_1X_MASTER_RATIO) {
|
if (BOARDOBJ_GET_TYPE(pargs) != CTRL_CLK_CLK_PROG_TYPE_1X_MASTER_RATIO) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -1148,7 +1148,7 @@ static int clk_prog_construct_35_master_ratio(struct gk20a *g,
|
|||||||
(struct clk_prog_35_master_ratio *)pargs;
|
(struct clk_prog_35_master_ratio *)pargs;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
||||||
g->clk_pmu.clk_progobjs.slave_entry_count;
|
g->clk_pmu->clk_progobjs.slave_entry_count;
|
||||||
|
|
||||||
if (BOARDOBJ_GET_TYPE(pargs) != CTRL_CLK_CLK_PROG_TYPE_35_MASTER_RATIO) {
|
if (BOARDOBJ_GET_TYPE(pargs) != CTRL_CLK_CLK_PROG_TYPE_35_MASTER_RATIO) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -1191,7 +1191,7 @@ static int clk_prog_construct_1x_master_table(struct gk20a *g,
|
|||||||
(struct clk_prog_1x_master_table *)pargs;
|
(struct clk_prog_1x_master_table *)pargs;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_ratio_slave_entry) *
|
||||||
g->clk_pmu.clk_progobjs.slave_entry_count;
|
g->clk_pmu->clk_progobjs.slave_entry_count;
|
||||||
|
|
||||||
nvgpu_log_info(g, "type - %x", BOARDOBJ_GET_TYPE(pargs));
|
nvgpu_log_info(g, "type - %x", BOARDOBJ_GET_TYPE(pargs));
|
||||||
|
|
||||||
@@ -1243,7 +1243,7 @@ static int clk_prog_construct_35_master_table(struct gk20a *g,
|
|||||||
(struct clk_prog_35_master_table *)pargs;
|
(struct clk_prog_35_master_table *)pargs;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_table_slave_entry) *
|
size_t slavesize = sizeof(struct ctrl_clk_clk_prog_1x_master_table_slave_entry) *
|
||||||
g->clk_pmu.clk_progobjs.slave_entry_count;
|
g->clk_pmu->clk_progobjs.slave_entry_count;
|
||||||
|
|
||||||
nvgpu_log_info(g, "type - %x", BOARDOBJ_GET_TYPE(pargs));
|
nvgpu_log_info(g, "type - %x", BOARDOBJ_GET_TYPE(pargs));
|
||||||
|
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ int clk_vf_point_sw_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
status = boardobjgrpconstruct_e255(g, &g->clk_pmu.clk_vf_pointobjs.super);
|
status = boardobjgrpconstruct_e255(g, &g->clk_pmu->clk_vf_pointobjs.super);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g,
|
nvgpu_err(g,
|
||||||
"error creating boardobjgrp for clk vfpoint, status - 0x%x",
|
"error creating boardobjgrp for clk vfpoint, status - 0x%x",
|
||||||
@@ -107,7 +107,7 @@ int clk_vf_point_sw_setup(struct gk20a *g)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.clk_vf_pointobjs.super.super;
|
pboardobjgrp = &g->clk_pmu->clk_vf_pointobjs.super.super;
|
||||||
|
|
||||||
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, CLK_VF_POINT);
|
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, CLK_VF_POINT);
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ int clk_vf_point_sw_setup(struct gk20a *g)
|
|||||||
}
|
}
|
||||||
|
|
||||||
status = BOARDOBJGRP_PMU_CMD_GRP_GET_STATUS_CONSTRUCT(g,
|
status = BOARDOBJGRP_PMU_CMD_GRP_GET_STATUS_CONSTRUCT(g,
|
||||||
&g->clk_pmu.clk_vf_pointobjs.super.super,
|
&g->clk_pmu->clk_vf_pointobjs.super.super,
|
||||||
clk, CLK, clk_vf_point, CLK_VF_POINT);
|
clk, CLK, clk_vf_point, CLK_VF_POINT);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g,
|
nvgpu_err(g,
|
||||||
@@ -146,7 +146,7 @@ int clk_vf_point_pmu_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.clk_vf_pointobjs.super.super;
|
pboardobjgrp = &g->clk_pmu->clk_vf_pointobjs.super.super;
|
||||||
|
|
||||||
if (!pboardobjgrp->bconstructed) {
|
if (!pboardobjgrp->bconstructed) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -402,7 +402,7 @@ int clk_vf_point_cache(struct gk20a *g)
|
|||||||
u8 index;
|
u8 index;
|
||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
pclk_vf_points = &g->clk_pmu.clk_vf_pointobjs;
|
pclk_vf_points = &g->clk_pmu->clk_vf_pointobjs;
|
||||||
pboardobjgrp = &pclk_vf_points->super.super;
|
pboardobjgrp = &pclk_vf_points->super.super;
|
||||||
pboardobjgrpmask = &pclk_vf_points->super.mask.super;
|
pboardobjgrpmask = &pclk_vf_points->super.mask.super;
|
||||||
|
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ int clk_vin_sw_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
status = boardobjgrpconstruct_e32(g, &g->clk_pmu.avfs_vinobjs.super);
|
status = boardobjgrpconstruct_e32(g, &g->clk_pmu->avfs_vinobjs.super);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g,
|
nvgpu_err(g,
|
||||||
"error creating boardobjgrp for clk vin, statu - 0x%x",
|
"error creating boardobjgrp for clk vin, statu - 0x%x",
|
||||||
@@ -196,8 +196,8 @@ int clk_vin_sw_setup(struct gk20a *g)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.avfs_vinobjs.super.super;
|
pboardobjgrp = &g->clk_pmu->avfs_vinobjs.super.super;
|
||||||
pvinobjs = &g->clk_pmu.avfs_vinobjs;
|
pvinobjs = &g->clk_pmu->avfs_vinobjs;
|
||||||
|
|
||||||
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, VIN_DEVICE);
|
BOARDOBJGRP_PMU_CONSTRUCT(pboardobjgrp, CLK, VIN_DEVICE);
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ int clk_vin_sw_setup(struct gk20a *g)
|
|||||||
pboardobjgrp->pmudatainstget = _clk_vin_devgrp_pmudata_instget;
|
pboardobjgrp->pmudatainstget = _clk_vin_devgrp_pmudata_instget;
|
||||||
pboardobjgrp->pmustatusinstget = _clk_vin_devgrp_pmustatus_instget;
|
pboardobjgrp->pmustatusinstget = _clk_vin_devgrp_pmustatus_instget;
|
||||||
|
|
||||||
status = devinit_get_vin_device_table(g, &g->clk_pmu.avfs_vinobjs);
|
status = devinit_get_vin_device_table(g, &g->clk_pmu->avfs_vinobjs);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
@@ -223,7 +223,7 @@ int clk_vin_sw_setup(struct gk20a *g)
|
|||||||
g->ops.pmu_ver.clk.clk_avfs_get_vin_cal_data(g, pvinobjs, pvindev);
|
g->ops.pmu_ver.clk.clk_avfs_get_vin_cal_data(g, pvinobjs, pvindev);
|
||||||
|
|
||||||
status = BOARDOBJGRP_PMU_CMD_GRP_GET_STATUS_CONSTRUCT(g,
|
status = BOARDOBJGRP_PMU_CMD_GRP_GET_STATUS_CONSTRUCT(g,
|
||||||
&g->clk_pmu.avfs_vinobjs.super.super,
|
&g->clk_pmu->avfs_vinobjs.super.super,
|
||||||
clk, CLK, clk_vin_device, CLK_VIN_DEVICE);
|
clk, CLK, clk_vin_device, CLK_VIN_DEVICE);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
nvgpu_err(g,
|
nvgpu_err(g,
|
||||||
@@ -244,7 +244,7 @@ int clk_vin_pmu_setup(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_info(g, " ");
|
nvgpu_log_info(g, " ");
|
||||||
|
|
||||||
pboardobjgrp = &g->clk_pmu.avfs_vinobjs.super.super;
|
pboardobjgrp = &g->clk_pmu->avfs_vinobjs.super.super;
|
||||||
|
|
||||||
if (!pboardobjgrp->bconstructed) {
|
if (!pboardobjgrp->bconstructed) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ int gp106_get_arbiter_clk_range(struct gk20a *g, u32 api_domain,
|
|||||||
enum nv_pmu_clk_clkwhich clkwhich;
|
enum nv_pmu_clk_clkwhich clkwhich;
|
||||||
struct clk_set_info *p0_info;
|
struct clk_set_info *p0_info;
|
||||||
struct clk_set_info *p5_info;
|
struct clk_set_info *p5_info;
|
||||||
struct avfsfllobjs *pfllobjs = &(g->clk_pmu.avfs_fllobjs);
|
struct avfsfllobjs *pfllobjs = &(g->clk_pmu->avfs_fllobjs);
|
||||||
|
|
||||||
u16 limit_min_mhz;
|
u16 limit_min_mhz;
|
||||||
|
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ int gp106_clk_domain_get_f_points(
|
|||||||
int status = -EINVAL;
|
int status = -EINVAL;
|
||||||
struct clk_domain *pdomain;
|
struct clk_domain *pdomain;
|
||||||
u8 i;
|
u8 i;
|
||||||
struct clk_pmupstate *pclk = &g->clk_pmu;
|
struct clk_pmupstate *pclk = g->clk_pmu;
|
||||||
|
|
||||||
if (pfpointscount == NULL) {
|
if (pfpointscount == NULL) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|||||||
@@ -3228,7 +3228,7 @@ done:
|
|||||||
|
|
||||||
void gp106_mclk_deinit(struct gk20a *g)
|
void gp106_mclk_deinit(struct gk20a *g)
|
||||||
{
|
{
|
||||||
struct clk_mclk_state *mclk = &g->clk_pmu.clk_mclk;
|
struct clk_mclk_state *mclk = &g->clk_pmu->clk_mclk;
|
||||||
|
|
||||||
nvgpu_mutex_destroy(&mclk->data_lock);
|
nvgpu_mutex_destroy(&mclk->data_lock);
|
||||||
nvgpu_mutex_destroy(&mclk->mclk_lock);
|
nvgpu_mutex_destroy(&mclk->mclk_lock);
|
||||||
@@ -3246,7 +3246,7 @@ int gp106_mclk_init(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_fn(g, " ");
|
nvgpu_log_fn(g, " ");
|
||||||
|
|
||||||
mclk = &g->clk_pmu.clk_mclk;
|
mclk = &g->clk_pmu->clk_mclk;
|
||||||
|
|
||||||
err = nvgpu_mutex_init(&mclk->mclk_lock);
|
err = nvgpu_mutex_init(&mclk->mclk_lock);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
@@ -3354,7 +3354,7 @@ int gp106_mclk_change(struct gk20a *g, u16 val)
|
|||||||
|
|
||||||
(void) memset(&payload, 0, sizeof(struct pmu_payload));
|
(void) memset(&payload, 0, sizeof(struct pmu_payload));
|
||||||
|
|
||||||
mclk = &g->clk_pmu.clk_mclk;
|
mclk = &g->clk_pmu->clk_mclk;
|
||||||
|
|
||||||
nvgpu_mutex_acquire(&mclk->mclk_lock);
|
nvgpu_mutex_acquire(&mclk->mclk_lock);
|
||||||
|
|
||||||
@@ -3483,7 +3483,7 @@ static int mclk_debug_speed_set(void *data, u64 val)
|
|||||||
struct gk20a *g = (struct gk20a *) data;
|
struct gk20a *g = (struct gk20a *) data;
|
||||||
struct clk_mclk_state *mclk;
|
struct clk_mclk_state *mclk;
|
||||||
|
|
||||||
mclk = &g->clk_pmu.clk_mclk;
|
mclk = &g->clk_pmu->clk_mclk;
|
||||||
|
|
||||||
/* This is problematic because it can interrupt the arbiter
|
/* This is problematic because it can interrupt the arbiter
|
||||||
* and send it to sleep. we need to consider removing this
|
* and send it to sleep. we need to consider removing this
|
||||||
@@ -3508,7 +3508,7 @@ static int mclk_switch_stats_show(struct seq_file *s, void *unused)
|
|||||||
u64 num;
|
u64 num;
|
||||||
s64 tmp, avg, std, max, min;
|
s64 tmp, avg, std, max, min;
|
||||||
|
|
||||||
mclk = &g->clk_pmu.clk_mclk;
|
mclk = &g->clk_pmu->clk_mclk;
|
||||||
|
|
||||||
/* Make copy of structure to reduce time with lock held */
|
/* Make copy of structure to reduce time with lock held */
|
||||||
nvgpu_mutex_acquire(&mclk->data_lock);
|
nvgpu_mutex_acquire(&mclk->data_lock);
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ struct nvgpu_gpu_ctxsw_trace_filter;
|
|||||||
#endif
|
#endif
|
||||||
struct priv_cmd_entry;
|
struct priv_cmd_entry;
|
||||||
struct nvgpu_setup_bind_args;
|
struct nvgpu_setup_bind_args;
|
||||||
|
struct clk_pmupstate;
|
||||||
|
|
||||||
#include <nvgpu/lock.h>
|
#include <nvgpu/lock.h>
|
||||||
#include <nvgpu/thread.h>
|
#include <nvgpu/thread.h>
|
||||||
@@ -74,7 +75,6 @@ struct nvgpu_setup_bind_args;
|
|||||||
#include "gk20a/clk_gk20a.h"
|
#include "gk20a/clk_gk20a.h"
|
||||||
#include "gk20a/fifo_gk20a.h"
|
#include "gk20a/fifo_gk20a.h"
|
||||||
#include "gk20a/gr_gk20a.h"
|
#include "gk20a/gr_gk20a.h"
|
||||||
#include "clk/clk.h"
|
|
||||||
#include "pmu_perf/pmu_perf.h"
|
#include "pmu_perf/pmu_perf.h"
|
||||||
#include "pmgr/pmgr.h"
|
#include "pmgr/pmgr.h"
|
||||||
#include "therm/thrm.h"
|
#include "therm/thrm.h"
|
||||||
@@ -1490,7 +1490,7 @@ struct gk20a {
|
|||||||
struct nvgpu_pmu pmu;
|
struct nvgpu_pmu pmu;
|
||||||
struct nvgpu_acr acr;
|
struct nvgpu_acr acr;
|
||||||
struct nvgpu_ecc ecc;
|
struct nvgpu_ecc ecc;
|
||||||
struct clk_pmupstate clk_pmu;
|
struct clk_pmupstate *clk_pmu;
|
||||||
struct perf_pmupstate perf_pmu;
|
struct perf_pmupstate perf_pmu;
|
||||||
struct pmgr_pmupstate pmgr_pmu;
|
struct pmgr_pmupstate pmgr_pmu;
|
||||||
struct therm_pmupstate therm_pmu;
|
struct therm_pmupstate therm_pmu;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#include <nvgpu/clk.h>
|
#include <nvgpu/clk.h>
|
||||||
|
|
||||||
#include "os_linux.h"
|
#include "os_linux.h"
|
||||||
|
#include "clk/clk.h"
|
||||||
|
|
||||||
void nvgpu_clk_arb_pstate_change_lock(struct gk20a *g, bool lock);
|
void nvgpu_clk_arb_pstate_change_lock(struct gk20a *g, bool lock);
|
||||||
|
|
||||||
@@ -41,7 +42,7 @@ static int sys_cfc_read(void *data , u64 *val)
|
|||||||
{
|
{
|
||||||
struct gk20a *g = (struct gk20a *)data;
|
struct gk20a *g = (struct gk20a *)data;
|
||||||
bool bload = boardobjgrpmask_bitget(
|
bool bload = boardobjgrpmask_bitget(
|
||||||
&g->clk_pmu.clk_freq_controllers.freq_ctrl_load_mask.super,
|
&g->clk_pmu->clk_freq_controllers.freq_ctrl_load_mask.super,
|
||||||
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_SYS);
|
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_SYS);
|
||||||
|
|
||||||
/* val = 1 implies CLFC is loaded or enabled */
|
/* val = 1 implies CLFC is loaded or enabled */
|
||||||
@@ -68,7 +69,7 @@ static int ltc_cfc_read(void *data , u64 *val)
|
|||||||
{
|
{
|
||||||
struct gk20a *g = (struct gk20a *)data;
|
struct gk20a *g = (struct gk20a *)data;
|
||||||
bool bload = boardobjgrpmask_bitget(
|
bool bload = boardobjgrpmask_bitget(
|
||||||
&g->clk_pmu.clk_freq_controllers.freq_ctrl_load_mask.super,
|
&g->clk_pmu->clk_freq_controllers.freq_ctrl_load_mask.super,
|
||||||
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_LTC);
|
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_LTC);
|
||||||
|
|
||||||
/* val = 1 implies CLFC is loaded or enabled */
|
/* val = 1 implies CLFC is loaded or enabled */
|
||||||
@@ -95,7 +96,7 @@ static int xbar_cfc_read(void *data , u64 *val)
|
|||||||
{
|
{
|
||||||
struct gk20a *g = (struct gk20a *)data;
|
struct gk20a *g = (struct gk20a *)data;
|
||||||
bool bload = boardobjgrpmask_bitget(
|
bool bload = boardobjgrpmask_bitget(
|
||||||
&g->clk_pmu.clk_freq_controllers.freq_ctrl_load_mask.super,
|
&g->clk_pmu->clk_freq_controllers.freq_ctrl_load_mask.super,
|
||||||
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_XBAR);
|
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_XBAR);
|
||||||
|
|
||||||
/* val = 1 implies CLFC is loaded or enabled */
|
/* val = 1 implies CLFC is loaded or enabled */
|
||||||
@@ -123,7 +124,7 @@ static int gpc_cfc_read(void *data , u64 *val)
|
|||||||
{
|
{
|
||||||
struct gk20a *g = (struct gk20a *)data;
|
struct gk20a *g = (struct gk20a *)data;
|
||||||
bool bload = boardobjgrpmask_bitget(
|
bool bload = boardobjgrpmask_bitget(
|
||||||
&g->clk_pmu.clk_freq_controllers.freq_ctrl_load_mask.super,
|
&g->clk_pmu->clk_freq_controllers.freq_ctrl_load_mask.super,
|
||||||
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_GPC0);
|
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_GPC0);
|
||||||
|
|
||||||
/* val = 1 implies CLFC is loaded or enabled */
|
/* val = 1 implies CLFC is loaded or enabled */
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include <nvgpu/clk.h>
|
#include <nvgpu/clk.h>
|
||||||
|
|
||||||
|
#include "clk/clk.h"
|
||||||
#include "gv100/clk_gv100.h"
|
#include "gv100/clk_gv100.h"
|
||||||
|
|
||||||
#include "os_linux.h"
|
#include "os_linux.h"
|
||||||
@@ -43,7 +44,7 @@ static int sys_cfc_read(void *data , u64 *val)
|
|||||||
{
|
{
|
||||||
struct gk20a *g = (struct gk20a *)data;
|
struct gk20a *g = (struct gk20a *)data;
|
||||||
bool bload = boardobjgrpmask_bitget(
|
bool bload = boardobjgrpmask_bitget(
|
||||||
&g->clk_pmu.clk_freq_controllers.freq_ctrl_load_mask.super,
|
&g->clk_pmu->clk_freq_controllers.freq_ctrl_load_mask.super,
|
||||||
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_SYS);
|
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_SYS);
|
||||||
|
|
||||||
/* val = 1 implies CLFC is loaded or enabled */
|
/* val = 1 implies CLFC is loaded or enabled */
|
||||||
@@ -70,7 +71,7 @@ static int ltc_cfc_read(void *data , u64 *val)
|
|||||||
{
|
{
|
||||||
struct gk20a *g = (struct gk20a *)data;
|
struct gk20a *g = (struct gk20a *)data;
|
||||||
bool bload = boardobjgrpmask_bitget(
|
bool bload = boardobjgrpmask_bitget(
|
||||||
&g->clk_pmu.clk_freq_controllers.freq_ctrl_load_mask.super,
|
&g->clk_pmu->clk_freq_controllers.freq_ctrl_load_mask.super,
|
||||||
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_LTC);
|
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_LTC);
|
||||||
|
|
||||||
/* val = 1 implies CLFC is loaded or enabled */
|
/* val = 1 implies CLFC is loaded or enabled */
|
||||||
@@ -97,7 +98,7 @@ static int xbar_cfc_read(void *data , u64 *val)
|
|||||||
{
|
{
|
||||||
struct gk20a *g = (struct gk20a *)data;
|
struct gk20a *g = (struct gk20a *)data;
|
||||||
bool bload = boardobjgrpmask_bitget(
|
bool bload = boardobjgrpmask_bitget(
|
||||||
&g->clk_pmu.clk_freq_controllers.freq_ctrl_load_mask.super,
|
&g->clk_pmu->clk_freq_controllers.freq_ctrl_load_mask.super,
|
||||||
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_XBAR);
|
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_XBAR);
|
||||||
|
|
||||||
/* val = 1 implies CLFC is loaded or enabled */
|
/* val = 1 implies CLFC is loaded or enabled */
|
||||||
@@ -125,7 +126,7 @@ static int gpc_cfc_read(void *data , u64 *val)
|
|||||||
{
|
{
|
||||||
struct gk20a *g = (struct gk20a *)data;
|
struct gk20a *g = (struct gk20a *)data;
|
||||||
bool bload = boardobjgrpmask_bitget(
|
bool bload = boardobjgrpmask_bitget(
|
||||||
&g->clk_pmu.clk_freq_controllers.freq_ctrl_load_mask.super,
|
&g->clk_pmu->clk_freq_controllers.freq_ctrl_load_mask.super,
|
||||||
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_GPC0);
|
CTRL_CLK_CLK_FREQ_CONTROLLER_ID_GPC0);
|
||||||
|
|
||||||
/* val = 1 implies CLFC is loaded or enabled */
|
/* val = 1 implies CLFC is loaded or enabled */
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
#define NVGPU_PERF_VFE_VAR_H
|
#define NVGPU_PERF_VFE_VAR_H
|
||||||
|
|
||||||
#include <nvgpu/boardobjgrp.h>
|
#include <nvgpu/boardobjgrp.h>
|
||||||
|
#include <nvgpu/boardobjgrp_e32.h>
|
||||||
|
#include <nvgpu/boardobjgrp_e255.h>
|
||||||
#include <nvgpu/pmuif/nvgpu_gpmu_cmdif.h>
|
#include <nvgpu/pmuif/nvgpu_gpmu_cmdif.h>
|
||||||
|
|
||||||
int vfe_var_sw_setup(struct gk20a *g);
|
int vfe_var_sw_setup(struct gk20a *g);
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ static int pstate_sw_setup(struct gk20a *g);
|
|||||||
|
|
||||||
void gk20a_deinit_pstate_support(struct gk20a *g)
|
void gk20a_deinit_pstate_support(struct gk20a *g)
|
||||||
{
|
{
|
||||||
|
clk_free_pmupstate(g);
|
||||||
|
|
||||||
if (g->ops.clk.mclk_deinit != NULL) {
|
if (g->ops.clk.mclk_deinit != NULL) {
|
||||||
g->ops.clk.mclk_deinit(g);
|
g->ops.clk.mclk_deinit(g);
|
||||||
}
|
}
|
||||||
@@ -50,87 +52,96 @@ int gk20a_init_pstate_support(struct gk20a *g)
|
|||||||
|
|
||||||
nvgpu_log_fn(g, " ");
|
nvgpu_log_fn(g, " ");
|
||||||
|
|
||||||
err = volt_rail_sw_setup(g);
|
err = clk_init_pmupstate(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = volt_rail_sw_setup(g);
|
||||||
|
if (err != 0) {
|
||||||
|
goto err_clk_init_pmupstate;
|
||||||
|
}
|
||||||
|
|
||||||
err = volt_dev_sw_setup(g);
|
err = volt_dev_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = volt_policy_sw_setup(g);
|
err = volt_policy_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = clk_vin_sw_setup(g);
|
err = clk_vin_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = clk_fll_sw_setup(g);
|
err = clk_fll_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = therm_domain_sw_setup(g);
|
err = therm_domain_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = vfe_var_sw_setup(g);
|
err = vfe_var_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = vfe_equ_sw_setup(g);
|
err = vfe_equ_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = clk_domain_sw_setup(g);
|
err = clk_domain_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = clk_vf_point_sw_setup(g);
|
err = clk_vf_point_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = clk_prog_sw_setup(g);
|
err = clk_prog_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = pstate_sw_setup(g);
|
err = pstate_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(g->ops.clk.support_pmgr_domain) {
|
if(g->ops.clk.support_pmgr_domain) {
|
||||||
err = pmgr_domain_sw_setup(g);
|
err = pmgr_domain_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g->ops.clk.support_clk_freq_controller) {
|
if (g->ops.clk.support_clk_freq_controller) {
|
||||||
err = clk_freq_controller_sw_setup(g);
|
err = clk_freq_controller_sw_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(g->ops.clk.support_lpwr_pg) {
|
if(g->ops.clk.support_lpwr_pg) {
|
||||||
err = nvgpu_lpwr_pg_setup(g);
|
err = nvgpu_lpwr_pg_setup(g);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return err;
|
goto err_clk_init_pmupstate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_clk_init_pmupstate:
|
||||||
|
clk_free_pmupstate(g);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,7 +339,7 @@ static int parse_pstate_entry_5x(struct gk20a *g,
|
|||||||
struct clk_domain *clk_domain;
|
struct clk_domain *clk_domain;
|
||||||
|
|
||||||
clk_domain = (struct clk_domain *)BOARDOBJGRP_OBJ_GET_BY_IDX(
|
clk_domain = (struct clk_domain *)BOARDOBJGRP_OBJ_GET_BY_IDX(
|
||||||
&g->clk_pmu.clk_domainobjs.super.super, clkidx);
|
&g->clk_pmu->clk_domainobjs.super.super, clkidx);
|
||||||
|
|
||||||
pclksetinfo = &pstate->clklist.clksetinfo[clkidx];
|
pclksetinfo = &pstate->clklist.clksetinfo[clkidx];
|
||||||
clk_entry = (struct vbios_pstate_entry_clock_5x *)p;
|
clk_entry = (struct vbios_pstate_entry_clock_5x *)p;
|
||||||
|
|||||||
Reference in New Issue
Block a user