Lines Matching refs:bios
41 shadow_fetch(struct nvkm_bios *bios, u32 upto) in shadow_fetch() argument
43 struct shadow *mthd = (void *)nv_object(bios)->oclass; in shadow_fetch()
45 const u32 start = bios->size; in shadow_fetch()
47 if (nvbios_extend(bios, limit) > 0) { in shadow_fetch()
48 u32 read = mthd->func->read(data, start, limit - start, bios); in shadow_fetch()
49 bios->size = start + read; in shadow_fetch()
51 return bios->size >= limit; in shadow_fetch()
57 struct nvkm_bios *bios = (void *)object; in shadow_rd08() local
58 if (shadow_fetch(bios, addr + 1)) in shadow_rd08()
59 return bios->data[addr]; in shadow_rd08()
66 struct nvkm_bios *bios = (void *)object; in shadow_rd16() local
67 if (shadow_fetch(bios, addr + 2)) in shadow_rd16()
68 return get_unaligned_le16(&bios->data[addr]); in shadow_rd16()
75 struct nvkm_bios *bios = (void *)object; in shadow_rd32() local
76 if (shadow_fetch(bios, addr + 4)) in shadow_rd32()
77 return get_unaligned_le32(&bios->data[addr]); in shadow_rd32()
92 shadow_image(struct nvkm_bios *bios, int idx, struct shadow *mthd) in shadow_image() argument
97 if (!nvbios_image(bios, idx, &image)) { in shadow_image()
98 nv_debug(bios, "image %d invalid\n", idx); in shadow_image()
101 nv_debug(bios, "%08x: type %02x, %d bytes\n", in shadow_image()
104 if (!shadow_fetch(bios, image.size)) { in shadow_image()
105 nv_debug(bios, "%08x: fetch failed\n", image.base); in shadow_image()
111 if (nvbios_checksum(&bios->data[image.base], image.size)) { in shadow_image()
112 nv_debug(bios, "%08x: checksum failed\n", image.base); in shadow_image()
126 score += shadow_image(bios, idx + 1, mthd); in shadow_image()
131 shadow_score(struct nvkm_bios *bios, struct shadow *mthd) in shadow_score() argument
133 struct nvkm_oclass *oclass = nv_object(bios)->oclass; in shadow_score()
135 nv_object(bios)->oclass = &mthd->base; in shadow_score()
136 score = shadow_image(bios, 0, mthd); in shadow_score()
137 nv_object(bios)->oclass = oclass; in shadow_score()
143 shadow_method(struct nvkm_bios *bios, struct shadow *mthd, const char *name) in shadow_method() argument
147 nv_debug(bios, "trying %s...\n", name ? name : func->name); in shadow_method()
149 mthd->data = func->init(bios, name); in shadow_method()
155 mthd->score = shadow_score(bios, mthd); in shadow_method()
158 nv_debug(bios, "scored %d\n", mthd->score); in shadow_method()
159 mthd->data = bios->data; in shadow_method()
160 mthd->size = bios->size; in shadow_method()
161 bios->data = NULL; in shadow_method()
162 bios->size = 0; in shadow_method()
168 shadow_fw_read(void *data, u32 offset, u32 length, struct nvkm_bios *bios) in shadow_fw_read() argument
172 memcpy(bios->data + offset, fw->data + offset, length); in shadow_fw_read()
179 shadow_fw_init(struct nvkm_bios *bios, const char *name) in shadow_fw_init() argument
181 struct device *dev = &nv_device(bios)->pdev->dev; in shadow_fw_init()
199 nvbios_shadow(struct nvkm_bios *bios) in nvbios_shadow() argument
216 optarg = nvkm_stropt(nv_device(bios)->cfgopt, "NvBios", &optlen); in nvbios_shadow()
224 if (shadow_method(bios, mthd, NULL)) in nvbios_shadow()
232 shadow_method(bios, mthd, source); in nvbios_shadow()
237 nv_error(bios, "%s invalid\n", source); in nvbios_shadow()
247 if (shadow_method(bios, mthd, NULL)) { in nvbios_shadow()
262 nv_fatal(bios, "unable to locate usable image\n"); in nvbios_shadow()
266 nv_info(bios, "using image from %s\n", best->func ? in nvbios_shadow()
268 bios->data = best->data; in nvbios_shadow()
269 bios->size = best->size; in nvbios_shadow()