#include <subdev/clk.h>
#include <subdev/volt.h>
#include <subdev/timer.h>
#include <core/device.h>
#include <core/tegra.h>
#include "priv.h"
#include "gk20a.h"
#define GPCPLL_CFG_SYNC_MODE …
#define BYPASSCTRL_SYS …
#define BYPASSCTRL_SYS_GPCPLL_SHIFT …
#define BYPASSCTRL_SYS_GPCPLL_WIDTH …
#define GPCPLL_CFG2_SDM_DIN_SHIFT …
#define GPCPLL_CFG2_SDM_DIN_WIDTH …
#define GPCPLL_CFG2_SDM_DIN_MASK …
#define GPCPLL_CFG2_SDM_DIN_NEW_SHIFT …
#define GPCPLL_CFG2_SDM_DIN_NEW_WIDTH …
#define GPCPLL_CFG2_SDM_DIN_NEW_MASK …
#define GPCPLL_CFG2_SETUP2_SHIFT …
#define GPCPLL_CFG2_PLL_STEPA_SHIFT …
#define GPCPLL_DVFS0 …
#define GPCPLL_DVFS0_DFS_COEFF_SHIFT …
#define GPCPLL_DVFS0_DFS_COEFF_WIDTH …
#define GPCPLL_DVFS0_DFS_COEFF_MASK …
#define GPCPLL_DVFS0_DFS_DET_MAX_SHIFT …
#define GPCPLL_DVFS0_DFS_DET_MAX_WIDTH …
#define GPCPLL_DVFS0_DFS_DET_MAX_MASK …
#define GPCPLL_DVFS1 …
#define GPCPLL_DVFS1_DFS_EXT_DET_SHIFT …
#define GPCPLL_DVFS1_DFS_EXT_DET_WIDTH …
#define GPCPLL_DVFS1_DFS_EXT_STRB_SHIFT …
#define GPCPLL_DVFS1_DFS_EXT_STRB_WIDTH …
#define GPCPLL_DVFS1_DFS_EXT_CAL_SHIFT …
#define GPCPLL_DVFS1_DFS_EXT_CAL_WIDTH …
#define GPCPLL_DVFS1_DFS_EXT_SEL_SHIFT …
#define GPCPLL_DVFS1_DFS_EXT_SEL_WIDTH …
#define GPCPLL_DVFS1_DFS_CTRL_SHIFT …
#define GPCPLL_DVFS1_DFS_CTRL_WIDTH …
#define GPCPLL_DVFS1_EN_SDM_SHIFT …
#define GPCPLL_DVFS1_EN_SDM_WIDTH …
#define GPCPLL_DVFS1_EN_SDM_BIT …
#define GPCPLL_DVFS1_EN_DFS_SHIFT …
#define GPCPLL_DVFS1_EN_DFS_WIDTH …
#define GPCPLL_DVFS1_EN_DFS_BIT …
#define GPCPLL_DVFS1_EN_DFS_CAL_SHIFT …
#define GPCPLL_DVFS1_EN_DFS_CAL_WIDTH …
#define GPCPLL_DVFS1_EN_DFS_CAL_BIT …
#define GPCPLL_DVFS1_DFS_CAL_DONE_SHIFT …
#define GPCPLL_DVFS1_DFS_CAL_DONE_WIDTH …
#define GPCPLL_DVFS1_DFS_CAL_DONE_BIT …
#define GPC_BCAST_GPCPLL_DVFS2 …
#define GPC_BCAST_GPCPLL_DVFS2_DFS_EXT_STROBE_BIT …
#define GPCPLL_CFG3_PLL_DFS_TESTOUT_SHIFT …
#define GPCPLL_CFG3_PLL_DFS_TESTOUT_WIDTH …
#define DFS_DET_RANGE …
#define SDM_DIN_RANGE …
struct gm20b_clk_dvfs_params { … };
static const struct gm20b_clk_dvfs_params gm20b_dvfs_params = …;
struct gm20b_pll { … };
struct gm20b_clk_dvfs { … };
struct gm20b_clk { … };
#define gm20b_clk(p) …
static u32 pl_to_div(u32 pl)
{ … }
static u32 div_to_pl(u32 div)
{ … }
static const struct gk20a_clk_pllg_params gm20b_pllg_params = …;
static void
gm20b_pllg_read_mnp(struct gm20b_clk *clk, struct gm20b_pll *pll)
{ … }
static void
gm20b_pllg_write_mnp(struct gm20b_clk *clk, const struct gm20b_pll *pll)
{ … }
static void
gm20b_dvfs_calc_det_coeff(struct gm20b_clk *clk, s32 uv,
struct gm20b_clk_dvfs *dvfs)
{ … }
static void
gm20b_dvfs_calc_ndiv(struct gm20b_clk *clk, u32 n_eff, u32 *n_int, u32 *sdm_din)
{ … }
static int
gm20b_pllg_slide(struct gm20b_clk *clk, u32 n)
{ … }
static int
gm20b_pllg_enable(struct gm20b_clk *clk)
{ … }
static void
gm20b_pllg_disable(struct gm20b_clk *clk)
{ … }
static int
gm20b_pllg_program_mnp(struct gm20b_clk *clk, const struct gk20a_pll *pll)
{ … }
static int
gm20b_pllg_program_mnp_slide(struct gm20b_clk *clk, const struct gk20a_pll *pll)
{ … }
static int
gm20b_clk_calc(struct nvkm_clk *base, struct nvkm_cstate *cstate)
{ … }
static void
gm20b_dvfs_calc_safe_pll(struct gm20b_clk *clk, struct gk20a_pll *pll)
{ … }
static void
gm20b_dvfs_program_coeff(struct gm20b_clk *clk, u32 coeff)
{ … }
static void
gm20b_dvfs_program_ext_cal(struct gm20b_clk *clk, u32 dfs_det_cal)
{ … }
static void
gm20b_dvfs_program_dfs_detection(struct gm20b_clk *clk,
struct gm20b_clk_dvfs *dvfs)
{ … }
static int
gm20b_clk_prog(struct nvkm_clk *base)
{ … }
static struct nvkm_pstate
gm20b_pstates[] = …;
static void
gm20b_clk_fini(struct nvkm_clk *base)
{ … }
static int
gm20b_clk_init_dvfs(struct gm20b_clk *clk)
{ … }
static const struct nvkm_clk_func gm20b_clk;
static int
gm20b_clk_init(struct nvkm_clk *base)
{ … }
static const struct nvkm_clk_func
gm20b_clk_speedo0 = …;
static const struct nvkm_clk_func
gm20b_clk = …;
static int
gm20b_clk_new_speedo0(struct nvkm_device *device, enum nvkm_subdev_type type, int inst,
struct nvkm_clk **pclk)
{ … }
#define FUSE_RESERVED_CALIB0 …
#define FUSE_RESERVED_CALIB0_INTERCEPT_FRAC_SHIFT …
#define FUSE_RESERVED_CALIB0_INTERCEPT_FRAC_WIDTH …
#define FUSE_RESERVED_CALIB0_INTERCEPT_INT_SHIFT …
#define FUSE_RESERVED_CALIB0_INTERCEPT_INT_WIDTH …
#define FUSE_RESERVED_CALIB0_SLOPE_FRAC_SHIFT …
#define FUSE_RESERVED_CALIB0_SLOPE_FRAC_WIDTH …
#define FUSE_RESERVED_CALIB0_SLOPE_INT_SHIFT …
#define FUSE_RESERVED_CALIB0_SLOPE_INT_WIDTH …
#define FUSE_RESERVED_CALIB0_FUSE_REV_SHIFT …
#define FUSE_RESERVED_CALIB0_FUSE_REV_WIDTH …
static int
gm20b_clk_init_fused_params(struct gm20b_clk *clk)
{ … }
static int
gm20b_clk_init_safe_fmax(struct gm20b_clk *clk)
{ … }
int
gm20b_clk_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst,
struct nvkm_clk **pclk)
{ … }