summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/linux/cde.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux/cde.c')
-rw-r--r--drivers/gpu/nvgpu/common/linux/cde.c23
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
1755int 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}