summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/pmu_api.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/pmu_api.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/pmu_api.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_api.h b/drivers/gpu/nvgpu/gk20a/pmu_api.h
index 2fdd1333..def7bbea 100644
--- a/drivers/gpu/nvgpu/gk20a/pmu_api.h
+++ b/drivers/gpu/nvgpu/gk20a/pmu_api.h
@@ -526,17 +526,77 @@ enum {
526}; 526};
527 527
528#define PMU_PG_PARAM_CMD_GR_INIT_PARAM 0x0 528#define PMU_PG_PARAM_CMD_GR_INIT_PARAM 0x0
529#define PMU_PG_PARAM_CMD_MS_INIT_PARAM 0x01
530#define PMU_PG_PARAM_CMD_MCLK_CHANGE 0x04
531#define PMU_PG_PARAM_CMD_POST_INIT 0x06
529 532
530#define PMU_PG_FEATURE_GR_SDIV_SLOWDOWN_ENABLED (1 << 0) 533#define PMU_PG_FEATURE_GR_SDIV_SLOWDOWN_ENABLED (1 << 0)
531#define PMU_PG_FEATURE_GR_POWER_GATING_ENABLED (1 << 2) 534#define PMU_PG_FEATURE_GR_POWER_GATING_ENABLED (1 << 2)
532#define PMU_PG_FEATURE_GR_RPPG_ENABLED (1 << 3) 535#define PMU_PG_FEATURE_GR_RPPG_ENABLED (1 << 3)
533 536
537#define NVGPU_PMU_GR_FEATURE_MASK_RPPG (1 << 3)
538#define NVGPU_PMU_GR_FEATURE_MASK_ALL \
539 ( \
540 NVGPU_PMU_GR_FEATURE_MASK_RPPG \
541 )
542
543#define NVGPU_PMU_MS_FEATURE_MASK_CLOCK_GATING (1 << 0)
544#define NVGPU_PMU_MS_FEATURE_MASK_SW_ASR (1 << 1)
545#define NVGPU_PMU_MS_FEATURE_MASK_RPPG (1 << 8)
546#define NVGPU_PMU_MS_FEATURE_MASK_FB_TRAINING (1 << 5)
547
548#define NVGPU_PMU_MS_FEATURE_MASK_ALL \
549 ( \
550 NVGPU_PMU_MS_FEATURE_MASK_CLOCK_GATING |\
551 NVGPU_PMU_MS_FEATURE_MASK_SW_ASR |\
552 NVGPU_PMU_MS_FEATURE_MASK_RPPG |\
553 NVGPU_PMU_MS_FEATURE_MASK_FB_TRAINING \
554 )
555
556#define PG_REQUEST_TYPE_GLOBAL 0x0
557#define PG_REQUEST_TYPE_PSTATE 0x1
558
534struct pmu_pg_cmd_gr_init_param { 559struct pmu_pg_cmd_gr_init_param {
535 u8 cmd_type; 560 u8 cmd_type;
536 u16 sub_cmd_id; 561 u16 sub_cmd_id;
537 u8 featuremask; 562 u8 featuremask;
538}; 563};
539 564
565struct pmu_pg_cmd_ms_init_param {
566 u8 cmd_type;
567 u16 cmd_id;
568 u8 psi;
569 u8 idle_flipped_test_enabled;
570 u16 psiSettleTimeUs;
571 u8 rsvd[2];
572 u32 support_mask;
573 u32 abort_timeout_us;
574};
575
576struct pmu_pg_cmd_mclk_change {
577 u8 cmd_type;
578 u16 cmd_id;
579 u8 rsvd;
580 u32 data;
581};
582
583#define PG_VOLT_RAIL_IDX_MAX 2
584
585struct pmu_pg_volt_rail {
586 u8 volt_rail_idx;
587 u8 sleep_volt_dev_idx;
588 u8 sleep_vfe_idx;
589 u32 sleep_voltage_uv;
590 u32 therm_vid0_cache;
591 u32 therm_vid1_cache;
592};
593
594struct pmu_pg_cmd_post_init_param {
595 u8 cmd_type;
596 u16 cmd_id;
597 struct pmu_pg_volt_rail pg_volt_rail[PG_VOLT_RAIL_IDX_MAX];
598};
599
540struct pmu_pg_cmd_stat { 600struct pmu_pg_cmd_stat {
541 u8 cmd_type; 601 u8 cmd_type;
542 u8 engine_id; 602 u8 engine_id;
@@ -553,6 +613,9 @@ struct pmu_pg_cmd {
553 struct pmu_pg_cmd_eng_buf_load_v2 eng_buf_load_v2; 613 struct pmu_pg_cmd_eng_buf_load_v2 eng_buf_load_v2;
554 struct pmu_pg_cmd_stat stat; 614 struct pmu_pg_cmd_stat stat;
555 struct pmu_pg_cmd_gr_init_param gr_init_param; 615 struct pmu_pg_cmd_gr_init_param gr_init_param;
616 struct pmu_pg_cmd_ms_init_param ms_init_param;
617 struct pmu_pg_cmd_mclk_change mclk_change;
618 struct pmu_pg_cmd_post_init_param post_init;
556 /* TBD: other pg commands */ 619 /* TBD: other pg commands */
557 union pmu_ap_cmd ap_cmd; 620 union pmu_ap_cmd ap_cmd;
558 struct nv_pmu_rppg_cmd rppg_cmd; 621 struct nv_pmu_rppg_cmd rppg_cmd;