summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/boardobj/boardobjgrp.h
diff options
context:
space:
mode:
authorMahantesh Kumbar <mkumbar@nvidia.com>2018-02-13 02:18:58 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-03-08 02:27:52 -0500
commitb94770dc4d2d96b80b14b9942595d3e7fc2bbf6c (patch)
tree845bbf88392ed4014e6518c1767e9985e1840729 /drivers/gpu/nvgpu/boardobj/boardobjgrp.h
parentcc4b9f540f66abc9f60cf9f8e2217ff17349bc77 (diff)
gpu: nvgpu: boardobj update for gv10x branch
- Created ops for below boardobj methods to support gp10x & gv10x branch boardobj changes, and defined methods for gv10x with postfix _v1 with below names boardobjgrp_pmucmd_construct_impl boardobjgrp_pmuset_impl boardobjgrp_pmugetstatus_impl is_boardobjgrp_pmucmd_id_valid - These ops are assigned based on PMU version to respective chip. - Modified BOARDOBJGRP_PMU_CMD_GRP_SET_CONSTRUCT & BOARDOBJGRP_PMU_CMD_GRP_GET_STATUS_CONSTRUCT to support gp10x & gv10x branch changes - Updated struct boardobjgrp_pmu_cmd to include members needed for gv10x boardobj changes - Created "struct nv_pmu_rpc_struct_board_obj_grp_cmd" to execute BOARD_OBJ_GRP_CMD using RPC. - Defined method boardobjgrp_pmucmdsend_rpc() to send BOARD_OBJ_GRP_CMD to PMU. Change-Id: If2551bdda80e897e7b21d2966881586f3bbc7a9b Signed-off-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1656511 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/boardobj/boardobjgrp.h')
-rw-r--r--drivers/gpu/nvgpu/boardobj/boardobjgrp.h44
1 files changed, 31 insertions, 13 deletions
diff --git a/drivers/gpu/nvgpu/boardobj/boardobjgrp.h b/drivers/gpu/nvgpu/boardobj/boardobjgrp.h
index 32e92ae0..f5701293 100644
--- a/drivers/gpu/nvgpu/boardobj/boardobjgrp.h
+++ b/drivers/gpu/nvgpu/boardobj/boardobjgrp.h
@@ -123,7 +123,9 @@ struct boardobjgrp_pmu_cmd {
123 u8 msgid; 123 u8 msgid;
124 u8 hdrsize; 124 u8 hdrsize;
125 u8 entrysize; 125 u8 entrysize;
126 u16 fbsize; 126 u16 dmem_buffer_size;
127 u32 super_surface_offset;
128 u32 fbsize;
127 struct nv_pmu_boardobjgrp_super *buf; 129 struct nv_pmu_boardobjgrp_super *buf;
128 struct pmu_surface surf; 130 struct pmu_surface surf;
129}; 131};
@@ -136,6 +138,7 @@ struct boardobjgrp_pmu {
136 u8 unitid; 138 u8 unitid;
137 u8 classid; 139 u8 classid;
138 bool bset; 140 bool bset;
141 u8 rpc_func_id;
139 struct boardobjgrp_pmu_cmd set; 142 struct boardobjgrp_pmu_cmd set;
140 struct boardobjgrp_pmu_cmd getstatus; 143 struct boardobjgrp_pmu_cmd getstatus;
141}; 144};
@@ -148,7 +151,7 @@ struct boardobjgrp_pmu {
148typedef u32 boardobjgrp_pmucmd_construct(struct gk20a *g, 151typedef u32 boardobjgrp_pmucmd_construct(struct gk20a *g,
149 struct boardobjgrp *pboardobjgrp, 152 struct boardobjgrp *pboardobjgrp,
150 struct boardobjgrp_pmu_cmd *cmd, u8 id, u8 msgid, 153 struct boardobjgrp_pmu_cmd *cmd, u8 id, u8 msgid,
151 u8 hdrsize, u8 entrysize, u16 fbsize); 154 u8 hdrsize, u8 entrysize, u16 fbsize, u32 ss_offset, u8 rpc_func_id);
152 155
153/* 156/*
154* Destroys BOARDOBJGRP PMU SW state. CMD. 157* Destroys BOARDOBJGRP PMU SW state. CMD.
@@ -296,6 +299,7 @@ struct boardobjgrp {
296* are not supported. 299* are not supported.
297*/ 300*/
298#define BOARDOBJGRP_GRP_CMD_ID_INVALID 255 301#define BOARDOBJGRP_GRP_CMD_ID_INVALID 255
302#define BOARDOBJGRP_GRP_RPC_FUNC_ID_INVALID 255
299 303
300/*! 304/*!
301* Helper macro to construct a BOARDOBJGRP's PMU SW state. 305* Helper macro to construct a BOARDOBJGRP's PMU SW state.
@@ -313,29 +317,33 @@ do { \
313 NV_PMU_##_ENG##_BOARDOBJGRP_CLASS_ID_##_CLASS; \ 317 NV_PMU_##_ENG##_BOARDOBJGRP_CLASS_ID_##_CLASS; \
314} while (0) 318} while (0)
315 319
316#define BOARDOBJGRP_PMU_CMD_GRP_SET_CONSTRUCT(pgpu, pboardobjgrp, eng, ENG, \ 320#define BOARDOBJGRP_PMU_CMD_GRP_SET_CONSTRUCT(g, pboardobjgrp, eng, ENG, \
317 class, CLASS) \ 321 class, CLASS) \
318 boardobjgrp_pmucmd_construct_impl( \ 322 g->ops.pmu_ver.boardobj.boardobjgrp_pmucmd_construct_impl( \
319 pgpu, /* pgpu */ \ 323 g, /* pgpu */ \
320 pboardobjgrp, /* pboardobjgrp */ \ 324 pboardobjgrp, /* pboardobjgrp */ \
321 &((pboardobjgrp)->pmu.set), /* pcmd */ \ 325 &((pboardobjgrp)->pmu.set), /* pcmd */ \
322 NV_PMU_##ENG##_CMD_ID_BOARDOBJ_GRP_SET, /* id */ \ 326 NV_PMU_##ENG##_CMD_ID_BOARDOBJ_GRP_SET, /* id */ \
323 NV_PMU_##ENG##_MSG_ID_BOARDOBJ_GRP_SET, /* msgid */ \ 327 NV_PMU_##ENG##_MSG_ID_BOARDOBJ_GRP_SET, /* msgid */ \
324 (u32)sizeof(union nv_pmu_##eng##_##class##_boardobjgrp_set_header_aligned), \ 328 (u32)sizeof(union nv_pmu_##eng##_##class##_boardobjgrp_set_header_aligned), \
325 (u32)sizeof(union nv_pmu_##eng##_##class##_boardobj_set_union_aligned), \ 329 (u32)sizeof(union nv_pmu_##eng##_##class##_boardobj_set_union_aligned), \
326 (u32)sizeof(struct nv_pmu_##eng##_##class##_boardobj_grp_set)) 330 (u32)sizeof(struct nv_pmu_##eng##_##class##_boardobj_grp_set), \
327 331 (u32)offsetof(struct nv_pmu_super_surface, eng.class##_grp_set), \
328#define BOARDOBJGRP_PMU_CMD_GRP_GET_STATUS_CONSTRUCT(pgpu, pboardobjgrp, \ 332 NV_PMU_RPC_ID_##ENG##_BOARD_OBJ_GRP_CMD)
329 eng, ENG, class, CLASS) \ 333
330 boardobjgrp_pmucmd_construct_impl( \ 334#define BOARDOBJGRP_PMU_CMD_GRP_GET_STATUS_CONSTRUCT(g, pboardobjgrp, \
331 pgpu, /* pGpu */ \ 335 eng, ENG, class, CLASS) \
336 g->ops.pmu_ver.boardobj.boardobjgrp_pmucmd_construct_impl( \
337 g, /* pGpu */ \
332 pboardobjgrp, /* pBoardObjGrp */ \ 338 pboardobjgrp, /* pBoardObjGrp */ \
333 &((pboardobjgrp)->pmu.getstatus), /* pCmd */ \ 339 &((pboardobjgrp)->pmu.getstatus), /* pCmd */ \
334 NV_PMU_##ENG##_CMD_ID_BOARDOBJ_GRP_GET_STATUS, /* id */ \ 340 NV_PMU_##ENG##_CMD_ID_BOARDOBJ_GRP_GET_STATUS, /* id */ \
335 NV_PMU_##ENG##_MSG_ID_BOARDOBJ_GRP_GET_STATUS, /* msgid */ \ 341 NV_PMU_##ENG##_MSG_ID_BOARDOBJ_GRP_GET_STATUS, /* msgid */ \
336 (u32)sizeof(union nv_pmu_##eng##_##class##_boardobjgrp_get_status_header_aligned), \ 342 (u32)sizeof(union nv_pmu_##eng##_##class##_boardobjgrp_get_status_header_aligned), \
337 (u32)sizeof(union nv_pmu_##eng##_##class##_boardobj_get_status_union_aligned), \ 343 (u32)sizeof(union nv_pmu_##eng##_##class##_boardobj_get_status_union_aligned), \
338 (u32)sizeof(struct nv_pmu_##eng##_##class##_boardobj_grp_get_status)) 344 (u32)sizeof(struct nv_pmu_##eng##_##class##_boardobj_grp_get_status), \
345 (u32)offsetof(struct nv_pmu_super_surface, eng.class##_grp_get_status), \
346 NV_PMU_RPC_ID_##ENG##_BOARD_OBJ_GRP_CMD)
339 347
340/* ------------------------ Function Prototypes ----------------------------- */ 348/* ------------------------ Function Prototypes ----------------------------- */
341/* Constructor and destructor */ 349/* Constructor and destructor */
@@ -348,6 +356,8 @@ boardobjgrp_pmucmd_construct boardobjgrp_pmucmd_construct_impl;
348boardobjgrp_pmucmd_destroy boardobjgrp_pmucmd_destroy_impl; 356boardobjgrp_pmucmd_destroy boardobjgrp_pmucmd_destroy_impl;
349boardobjgrp_pmucmd_pmuinithandle boardobjgrp_pmucmd_pmuinithandle_impl; 357boardobjgrp_pmucmd_pmuinithandle boardobjgrp_pmucmd_pmuinithandle_impl;
350 358
359boardobjgrp_pmucmd_construct boardobjgrp_pmucmd_construct_impl_v1;
360
351/* BOARDOBJGRP interfaces */ 361/* BOARDOBJGRP interfaces */
352boardobjgrp_pmuinithandle boardobjgrp_pmuinithandle_impl; 362boardobjgrp_pmuinithandle boardobjgrp_pmuinithandle_impl;
353boardobjgrp_pmuhdrdatainit boardobjgrp_pmuhdrdatainit_super; 363boardobjgrp_pmuhdrdatainit boardobjgrp_pmuhdrdatainit_super;
@@ -356,6 +366,8 @@ boardobjgrp_pmudatainit boardobjgrp_pmudatainit_super;
356boardobjgrp_pmudatainit boardobjgrp_pmudatainit_legacy; 366boardobjgrp_pmudatainit boardobjgrp_pmudatainit_legacy;
357boardobjgrp_pmuset boardobjgrp_pmuset_impl; 367boardobjgrp_pmuset boardobjgrp_pmuset_impl;
358boardobjgrp_pmugetstatus boardobjgrp_pmugetstatus_impl; 368boardobjgrp_pmugetstatus boardobjgrp_pmugetstatus_impl;
369boardobjgrp_pmuset boardobjgrp_pmuset_impl_v1;
370boardobjgrp_pmugetstatus boardobjgrp_pmugetstatus_impl_v1;
359 371
360void boardobjgrpe32hdrset(struct nv_pmu_boardobjgrp *hdr, u32 objmask); 372void boardobjgrpe32hdrset(struct nv_pmu_boardobjgrp *hdr, u32 objmask);
361 373
@@ -413,4 +425,10 @@ boardobjgrp_from_node(struct nvgpu_list_node *node)
413 ((uintptr_t)node - offsetof(struct boardobjgrp, node)); 425 ((uintptr_t)node - offsetof(struct boardobjgrp, node));
414}; 426};
415 427
428int is_boardobjgrp_pmucmd_id_valid_v0(struct gk20a *g,
429 struct boardobjgrp *pboardobjgrp,
430 struct boardobjgrp_pmu_cmd *cmd);
431int is_boardobjgrp_pmucmd_id_valid_v1(struct gk20a *g,
432 struct boardobjgrp *pboardobjgrp,
433 struct boardobjgrp_pmu_cmd *cmd);
416#endif 434#endif