diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux/cde.c')
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/cde.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/cde.c b/drivers/gpu/nvgpu/common/linux/cde.c index 894e776d..b366acc4 100644 --- a/drivers/gpu/nvgpu/common/linux/cde.c +++ b/drivers/gpu/nvgpu/common/linux/cde.c | |||
@@ -44,6 +44,8 @@ | |||
44 | #include "os_linux.h" | 44 | #include "os_linux.h" |
45 | #include "dmabuf.h" | 45 | #include "dmabuf.h" |
46 | #include "channel.h" | 46 | #include "channel.h" |
47 | #include "cde_gm20b.h" | ||
48 | #include "cde_gp10b.h" | ||
47 | 49 | ||
48 | #include <nvgpu/hw/gk20a/hw_ccsr_gk20a.h> | 50 | #include <nvgpu/hw/gk20a/hw_ccsr_gk20a.h> |
49 | #include <nvgpu/hw/gk20a/hw_pbdma_gk20a.h> | 51 | #include <nvgpu/hw/gk20a/hw_pbdma_gk20a.h> |
@@ -1749,3 +1751,24 @@ int gk20a_mark_compressible_write(struct gk20a *g, u32 buffer_fd, | |||
1749 | dma_buf_put(dmabuf); | 1751 | dma_buf_put(dmabuf); |
1750 | return 0; | 1752 | return 0; |
1751 | } | 1753 | } |
1754 | |||
1755 | int nvgpu_cde_init_ops(struct nvgpu_os_linux *l) | ||
1756 | { | ||
1757 | struct gk20a *g = &l->g; | ||
1758 | u32 ver = g->params.gpu_arch + g->params.gpu_impl; | ||
1759 | |||
1760 | switch (ver) { | ||
1761 | case GK20A_GPUID_GM20B: | ||
1762 | case GK20A_GPUID_GM20B_B: | ||
1763 | l->ops.cde = gm20b_cde_ops.cde; | ||
1764 | break; | ||
1765 | case NVGPU_GPUID_GP10B: | ||
1766 | l->ops.cde = gp10b_cde_ops.cde; | ||
1767 | break; | ||
1768 | default: | ||
1769 | /* CDE is optional, so today ignoring unknown chip is fine */ | ||
1770 | break; | ||
1771 | } | ||
1772 | |||
1773 | return 0; | ||
1774 | } | ||