Commit Graph

1 Commits

Author SHA1 Message Date
Debarshi Dutta
2f7a995530 gpu: nvgpu: extract out gk20a_worker into a separate unit.
Currently, both clk_arb and channels use their own implementation of
a background worker. These implementations are almost identical and can
be extracted out into a single self-contained unit name nvgpu_worker.

Another advantage of using a single worker unit is to avoid duplication
of Unit Tests for this unit in other units.

channel and clk_arb units provide their own specific implementations
via an ops interface named nvgpu_worker_ops which is a part of the
nvgpu_worker struct.

The following high level APIs are exposed by the nvgpu_worker

nvgpu_worker_should_stop
nvgpu_worker_enqueue
nvgpu_worker_init
nvgpu_worker_deinit

The nvgpu_worker_ops containg the following function pointers

pre_process
wakeup_early_exit
wakeup_post_process
wakeup_process_item
wakeup_condition
wakeup_timeout

The specific code in channel and clk_arb is changed to use the above
implementations instead of their own separate implementations.

Jira NVGPU-3101

Change-Id: I14a0bba6a3d61a642b858dec70d5818d5a0472a4
Signed-off-by: Debarshi Dutta <ddutta@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2090475
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2019-04-24 02:33:51 -07:00