This source file includes following definitions.
- nvbios_pcirTe
- nvbios_pcirTp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <subdev/bios.h>
25 #include <subdev/bios/pcir.h>
26
27 u32
28 nvbios_pcirTe(struct nvkm_bios *bios, u32 base, u8 *ver, u16 *hdr)
29 {
30 u32 data = nvbios_rd16(bios, base + 0x18);
31 if (data) {
32 data += base;
33 switch (nvbios_rd32(bios, data + 0x00)) {
34 case 0x52494350:
35 case 0x53494752:
36 case 0x5344504e:
37 *hdr = nvbios_rd16(bios, data + 0x0a);
38 *ver = nvbios_rd08(bios, data + 0x0c);
39 break;
40 default:
41 nvkm_debug(&bios->subdev,
42 "%08x: PCIR signature (%08x) unknown\n",
43 data, nvbios_rd32(bios, data + 0x00));
44 data = 0;
45 break;
46 }
47 }
48 return data;
49 }
50
51 u32
52 nvbios_pcirTp(struct nvkm_bios *bios, u32 base, u8 *ver, u16 *hdr,
53 struct nvbios_pcirT *info)
54 {
55 u32 data = nvbios_pcirTe(bios, base, ver, hdr);
56 memset(info, 0x00, sizeof(*info));
57 if (data) {
58 info->vendor_id = nvbios_rd16(bios, data + 0x04);
59 info->device_id = nvbios_rd16(bios, data + 0x06);
60 info->class_code[0] = nvbios_rd08(bios, data + 0x0d);
61 info->class_code[1] = nvbios_rd08(bios, data + 0x0e);
62 info->class_code[2] = nvbios_rd08(bios, data + 0x0f);
63 info->image_size = nvbios_rd16(bios, data + 0x10) * 512;
64 info->image_rev = nvbios_rd16(bios, data + 0x12);
65 info->image_type = nvbios_rd08(bios, data + 0x14);
66 info->last = nvbios_rd08(bios, data + 0x15) & 0x80;
67 }
68 return data;
69 }