diff options
author | Mahantesh Kumbar <mkumbar@nvidia.com> | 2018-02-13 02:18:58 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-03-08 02:27:52 -0500 |
commit | b94770dc4d2d96b80b14b9942595d3e7fc2bbf6c (patch) | |
tree | 845bbf88392ed4014e6518c1767e9985e1840729 /drivers/gpu/nvgpu/boardobj/boardobjgrp.h | |
parent | cc4b9f540f66abc9f60cf9f8e2217ff17349bc77 (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.h | 44 |
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 { | |||
148 | typedef u32 boardobjgrp_pmucmd_construct(struct gk20a *g, | 151 | typedef 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; | |||
348 | boardobjgrp_pmucmd_destroy boardobjgrp_pmucmd_destroy_impl; | 356 | boardobjgrp_pmucmd_destroy boardobjgrp_pmucmd_destroy_impl; |
349 | boardobjgrp_pmucmd_pmuinithandle boardobjgrp_pmucmd_pmuinithandle_impl; | 357 | boardobjgrp_pmucmd_pmuinithandle boardobjgrp_pmucmd_pmuinithandle_impl; |
350 | 358 | ||
359 | boardobjgrp_pmucmd_construct boardobjgrp_pmucmd_construct_impl_v1; | ||
360 | |||
351 | /* BOARDOBJGRP interfaces */ | 361 | /* BOARDOBJGRP interfaces */ |
352 | boardobjgrp_pmuinithandle boardobjgrp_pmuinithandle_impl; | 362 | boardobjgrp_pmuinithandle boardobjgrp_pmuinithandle_impl; |
353 | boardobjgrp_pmuhdrdatainit boardobjgrp_pmuhdrdatainit_super; | 363 | boardobjgrp_pmuhdrdatainit boardobjgrp_pmuhdrdatainit_super; |
@@ -356,6 +366,8 @@ boardobjgrp_pmudatainit boardobjgrp_pmudatainit_super; | |||
356 | boardobjgrp_pmudatainit boardobjgrp_pmudatainit_legacy; | 366 | boardobjgrp_pmudatainit boardobjgrp_pmudatainit_legacy; |
357 | boardobjgrp_pmuset boardobjgrp_pmuset_impl; | 367 | boardobjgrp_pmuset boardobjgrp_pmuset_impl; |
358 | boardobjgrp_pmugetstatus boardobjgrp_pmugetstatus_impl; | 368 | boardobjgrp_pmugetstatus boardobjgrp_pmugetstatus_impl; |
369 | boardobjgrp_pmuset boardobjgrp_pmuset_impl_v1; | ||
370 | boardobjgrp_pmugetstatus boardobjgrp_pmugetstatus_impl_v1; | ||
359 | 371 | ||
360 | void boardobjgrpe32hdrset(struct nv_pmu_boardobjgrp *hdr, u32 objmask); | 372 | void 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 | ||
428 | int is_boardobjgrp_pmucmd_id_valid_v0(struct gk20a *g, | ||
429 | struct boardobjgrp *pboardobjgrp, | ||
430 | struct boardobjgrp_pmu_cmd *cmd); | ||
431 | int is_boardobjgrp_pmucmd_id_valid_v1(struct gk20a *g, | ||
432 | struct boardobjgrp *pboardobjgrp, | ||
433 | struct boardobjgrp_pmu_cmd *cmd); | ||
416 | #endif | 434 | #endif |