Lines Matching full:bios

26 #include <subdev/bios.h>
27 #include <subdev/bios/bmp.h>
28 #include <subdev/bios/bit.h>
29 #include <subdev/bios/image.h>
32 nvbios_addr(struct nvkm_bios *bios, u32 *addr, u8 size) in nvbios_addr() argument
36 if (*addr >= bios->image0_size && bios->imaged_addr) { in nvbios_addr()
37 *addr -= bios->image0_size; in nvbios_addr()
38 *addr += bios->imaged_addr; in nvbios_addr()
41 if (unlikely(*addr + size > bios->size)) { in nvbios_addr()
42 nvkm_error(&bios->subdev, "OOB %d %08x %08x\n", size, p, *addr); in nvbios_addr()
50 nvbios_pointer(struct nvkm_bios *bios, u32 addr) in nvbios_pointer() argument
52 if (likely(nvbios_addr(bios, &addr, 0))) in nvbios_pointer()
53 return &bios->data[addr]; in nvbios_pointer()
58 nvbios_rd08(struct nvkm_bios *bios, u32 addr) in nvbios_rd08() argument
60 if (likely(nvbios_addr(bios, &addr, 1))) in nvbios_rd08()
61 return bios->data[addr]; in nvbios_rd08()
66 nvbios_rd16(struct nvkm_bios *bios, u32 addr) in nvbios_rd16() argument
68 if (likely(nvbios_addr(bios, &addr, 2))) in nvbios_rd16()
69 return get_unaligned_le16(&bios->data[addr]); in nvbios_rd16()
74 nvbios_rd32(struct nvkm_bios *bios, u32 addr) in nvbios_rd32() argument
76 if (likely(nvbios_addr(bios, &addr, 4))) in nvbios_rd32()
77 return get_unaligned_le32(&bios->data[addr]); in nvbios_rd32()
107 nvbios_memcmp(struct nvkm_bios *bios, u32 addr, const char *str, u32 len) in nvbios_memcmp() argument
112 c1 = nvbios_rd08(bios, addr++); in nvbios_memcmp()
121 nvbios_extend(struct nvkm_bios *bios, u32 length) in nvbios_extend() argument
123 if (bios->size < length) { in nvbios_extend()
124 u8 *prev = bios->data; in nvbios_extend()
125 if (!(bios->data = kmalloc(length, GFP_KERNEL))) { in nvbios_extend()
126 bios->data = prev; in nvbios_extend()
129 memcpy(bios->data, prev, bios->size); in nvbios_extend()
130 bios->size = length; in nvbios_extend()
140 struct nvkm_bios *bios = nvkm_bios(subdev); in nvkm_bios_dtor() local
141 kfree(bios->data); in nvkm_bios_dtor()
142 return bios; in nvkm_bios_dtor()
154 struct nvkm_bios *bios; in nvkm_bios_new() local
159 if (!(bios = *pbios = kzalloc(sizeof(*bios), GFP_KERNEL))) in nvkm_bios_new()
161 nvkm_subdev_ctor(&nvkm_bios, device, type, inst, &bios->subdev); in nvkm_bios_new()
163 ret = nvbios_shadow(bios); in nvkm_bios_new()
170 if (nvbios_image(bios, idx++, &image)) { in nvkm_bios_new()
171 bios->image0_size = image.size; in nvkm_bios_new()
172 while (nvbios_image(bios, idx++, &image)) { in nvkm_bios_new()
174 bios->imaged_addr = image.base; in nvkm_bios_new()
181 bios->bmp_offset = nvbios_findstr(bios->data, bios->size, in nvkm_bios_new()
183 if (bios->bmp_offset) { in nvkm_bios_new()
184 nvkm_debug(&bios->subdev, "BMP version %x.%x\n", in nvkm_bios_new()
185 bmp_version(bios) >> 8, in nvkm_bios_new()
186 bmp_version(bios) & 0xff); in nvkm_bios_new()
189 bios->bit_offset = nvbios_findstr(bios->data, bios->size, in nvkm_bios_new()
191 if (bios->bit_offset) in nvkm_bios_new()
192 nvkm_debug(&bios->subdev, "BIT signature found\n"); in nvkm_bios_new()
195 if (!bit_entry(bios, 'i', &bit_i) && bit_i.length >= 4) { in nvkm_bios_new()
196 bios->version.major = nvbios_rd08(bios, bit_i.offset + 3); in nvkm_bios_new()
197 bios->version.chip = nvbios_rd08(bios, bit_i.offset + 2); in nvkm_bios_new()
198 bios->version.minor = nvbios_rd08(bios, bit_i.offset + 1); in nvkm_bios_new()
199 bios->version.micro = nvbios_rd08(bios, bit_i.offset + 0); in nvkm_bios_new()
200 bios->version.patch = nvbios_rd08(bios, bit_i.offset + 4); in nvkm_bios_new()
202 if (bmp_version(bios)) { in nvkm_bios_new()
203 bios->version.major = nvbios_rd08(bios, bios->bmp_offset + 13); in nvkm_bios_new()
204 bios->version.chip = nvbios_rd08(bios, bios->bmp_offset + 12); in nvkm_bios_new()
205 bios->version.minor = nvbios_rd08(bios, bios->bmp_offset + 11); in nvkm_bios_new()
206 bios->version.micro = nvbios_rd08(bios, bios->bmp_offset + 10); in nvkm_bios_new()
209 nvkm_info(&bios->subdev, "version %02x.%02x.%02x.%02x.%02x\n", in nvkm_bios_new()
210 bios->version.major, bios->version.chip, in nvkm_bios_new()
211 bios->version.minor, bios->version.micro, bios->version.patch); in nvkm_bios_new()