diff --git a/drivers/gpu/nvgpu/gv11b/fb_gv11b.c b/drivers/gpu/nvgpu/gv11b/fb_gv11b.c index 097bc21d4..fb31d6a80 100644 --- a/drivers/gpu/nvgpu/gv11b/fb_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/fb_gv11b.c @@ -22,7 +22,60 @@ #include "hw_gmmu_gv11b.h" +static void gv11b_init_uncompressed_kind_map(void) +{ + gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_4cbra_v()] = + gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_4cbra_v()] = + gmmu_pte_kind_generic_16bx2_v(); +} + +static bool gv11b_kind_supported(u8 k) +{ + return (k == gmmu_pte_kind_c32_ms2_4cbra_v() + || k == gmmu_pte_kind_c64_ms2_4cbra_v()); +} + +static bool gv11b_kind_z(u8 k) +{ + return (k == gmmu_pte_kind_c32_ms2_4cbra_v() + || k == gmmu_pte_kind_c64_ms2_4cbra_v()); +} + +static bool gv11b_kind_compressible(u8 k) +{ + + return (k == gmmu_pte_kind_c32_ms2_4cbra_v() + || k == gmmu_pte_kind_c64_ms2_4cbra_v()); +} + +static bool gv11b_kind_zbc(u8 k) +{ + + return (k == gmmu_pte_kind_c32_ms2_4cbra_v() + || k == gmmu_pte_kind_c64_ms2_4cbra_v()); +} + +static void gv11b_init_kind_attr(void) +{ + u16 k; + + for (k = 0; k < 256; k++) { + if (gv11b_kind_supported((u8)k)) + gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; + if (gv11b_kind_compressible((u8)k)) + gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; + if (gv11b_kind_z((u8)k)) + gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; + if (gv11b_kind_zbc((u8)k)) + gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; + } +} + void gv11b_init_fb(struct gpu_ops *gops) { gp10b_init_fb(gops); + + gv11b_init_uncompressed_kind_map(); + gv11b_init_kind_attr(); + }