0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 #include "gk104.h"
0026 #include "gf100.h"
0027 #include "ram.h"
0028
0029
0030
0031
0032
0033
0034 const struct nvkm_therm_clkgate_init
0035 gk104_fb_clkgate_blcg_init_unk_0[] = {
0036 { 0x100d10, 1, 0x0000c244 },
0037 { 0x100d30, 1, 0x0000c242 },
0038 { 0x100d3c, 1, 0x00000242 },
0039 { 0x100d48, 1, 0x00000242 },
0040 { 0x100d1c, 1, 0x00000042 },
0041 {}
0042 };
0043
0044 const struct nvkm_therm_clkgate_init
0045 gk104_fb_clkgate_blcg_init_vm_0[] = {
0046 { 0x100c98, 1, 0x00000242 },
0047 {}
0048 };
0049
0050 const struct nvkm_therm_clkgate_init
0051 gk104_fb_clkgate_blcg_init_main_0[] = {
0052 { 0x10f000, 1, 0x00000042 },
0053 { 0x17e030, 1, 0x00000044 },
0054 { 0x17e040, 1, 0x00000044 },
0055 {}
0056 };
0057
0058 const struct nvkm_therm_clkgate_init
0059 gk104_fb_clkgate_blcg_init_bcast_0[] = {
0060 { 0x17ea60, 4, 0x00000044 },
0061 {}
0062 };
0063
0064 static const struct nvkm_therm_clkgate_pack
0065 gk104_fb_clkgate_pack[] = {
0066 { gk104_fb_clkgate_blcg_init_unk_0 },
0067 { gk104_fb_clkgate_blcg_init_vm_0 },
0068 { gk104_fb_clkgate_blcg_init_main_0 },
0069 { gk104_fb_clkgate_blcg_init_bcast_0 },
0070 {}
0071 };
0072
0073 static const struct nvkm_fb_func
0074 gk104_fb = {
0075 .dtor = gf100_fb_dtor,
0076 .oneinit = gf100_fb_oneinit,
0077 .init = gf100_fb_init,
0078 .init_page = gf100_fb_init_page,
0079 .intr = gf100_fb_intr,
0080 .ram_new = gk104_ram_new,
0081 .default_bigpage = 17,
0082 .clkgate_pack = gk104_fb_clkgate_pack,
0083 };
0084
0085 int
0086 gk104_fb_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_fb **pfb)
0087 {
0088 return gf100_fb_new_(&gk104_fb, device, type, inst, pfb);
0089 }