summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h1
-rw-r--r--drivers/gpu/nvgpu/gk20a/pmu_gk20a.c21
2 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index 9e0dd64a..b955a84a 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -593,6 +593,7 @@ struct gpu_ops {
593 int (*get_internal_sensor_curr_temp)(struct gk20a *g, u32 *temp_f24_8); 593 int (*get_internal_sensor_curr_temp)(struct gk20a *g, u32 *temp_f24_8);
594 void (*get_internal_sensor_limits)(s32 *max_24_8, 594 void (*get_internal_sensor_limits)(s32 *max_24_8,
595 s32 *min_24_8); 595 s32 *min_24_8);
596 u32 (*configure_therm_alert)(struct gk20a *g, s32 curr_warn_temp);
596 } therm; 597 } therm;
597 struct { 598 struct {
598 bool (*is_pmu_supported)(struct gk20a *g); 599 bool (*is_pmu_supported)(struct gk20a *g);
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
index 56ebda1a..58dd6f43 100644
--- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
@@ -4029,6 +4029,24 @@ static int pmu_handle_perfmon_event(struct pmu_gk20a *pmu,
4029} 4029}
4030 4030
4031 4031
4032static int pmu_handle_therm_event(struct pmu_gk20a *pmu,
4033 struct nv_pmu_therm_msg *msg)
4034{
4035 gk20a_dbg_fn("");
4036
4037 switch (msg->msg_type) {
4038 case NV_PMU_THERM_MSG_ID_EVENT_HW_SLOWDOWN_NOTIFICATION:
4039 gk20a_dbg_pmu("received asserted event mask %d",
4040 msg->hw_slct_msg.mask);
4041 break;
4042 default:
4043 gk20a_dbg_pmu("unkown therm event received %d", msg->msg_type);
4044 break;
4045 }
4046
4047 return 0;
4048}
4049
4032static int pmu_handle_event(struct pmu_gk20a *pmu, struct pmu_msg *msg) 4050static int pmu_handle_event(struct pmu_gk20a *pmu, struct pmu_msg *msg)
4033{ 4051{
4034 int err = 0; 4052 int err = 0;
@@ -4048,6 +4066,9 @@ static int pmu_handle_event(struct pmu_gk20a *pmu, struct pmu_msg *msg)
4048 WARN_ON(1); 4066 WARN_ON(1);
4049 } 4067 }
4050 break; 4068 break;
4069 case PMU_UNIT_THERM:
4070 err = pmu_handle_therm_event(pmu, &msg->msg.therm);
4071 break;
4051 default: 4072 default:
4052 break; 4073 break;
4053 } 4074 }