Lines Matching refs:init

40 	nvkm_printk(init->subdev, lvl, info, "0x%04x[%c]: "fmt,                \
41 init->offset, init_exec(init) ? \
42 '0' + (init->nested - 1) : ' ', ##args); \
45 if (init->subdev->debug >= NV_DBG_TRACE) \
57 init_exec(struct nvbios_init *init) in init_exec() argument
59 return (init->execute == 1) || ((init->execute & 5) == 5); in init_exec()
63 init_exec_set(struct nvbios_init *init, bool exec) in init_exec_set() argument
65 if (exec) init->execute &= 0xfd; in init_exec_set()
66 else init->execute |= 0x02; in init_exec_set()
70 init_exec_inv(struct nvbios_init *init) in init_exec_inv() argument
72 init->execute ^= 0x02; in init_exec_inv()
76 init_exec_force(struct nvbios_init *init, bool exec) in init_exec_force() argument
78 if (exec) init->execute |= 0x04; in init_exec_force()
79 else init->execute &= 0xfb; in init_exec_force()
87 init_or(struct nvbios_init *init) in init_or() argument
89 if (init_exec(init)) { in init_or()
90 if (init->outp) in init_or()
91 return ffs(init->outp->or) - 1; in init_or()
98 init_link(struct nvbios_init *init) in init_link() argument
100 if (init_exec(init)) { in init_link()
101 if (init->outp) in init_link()
102 return !(init->outp->sorconf.link & 1); in init_link()
109 init_crtc(struct nvbios_init *init) in init_crtc() argument
111 if (init_exec(init)) { in init_crtc()
112 if (init->crtc >= 0) in init_crtc()
113 return init->crtc; in init_crtc()
120 init_conn(struct nvbios_init *init) in init_conn() argument
122 struct nvkm_bios *bios = init->bios; in init_conn()
127 if (init_exec(init)) { in init_conn()
128 if (init->outp) { in init_conn()
129 conn = init->outp->connector; in init_conn()
142 init_nvreg(struct nvbios_init *init, u32 reg) in init_nvreg() argument
144 struct nvkm_devinit *devinit = init->bios->subdev.device->devinit; in init_nvreg()
157 if (init->bios->subdev.device->card_type >= NV_50) { in init_nvreg()
159 reg += init_crtc(init) * 0x800; in init_nvreg()
164 reg += init_or(init) * 0x800; in init_nvreg()
167 reg += init_link(init) * 0x80; in init_nvreg()
180 init_rd32(struct nvbios_init *init, u32 reg) in init_rd32() argument
182 struct nvkm_device *device = init->bios->subdev.device; in init_rd32()
183 reg = init_nvreg(init, reg); in init_rd32()
184 if (reg != ~0 && init_exec(init)) in init_rd32()
190 init_wr32(struct nvbios_init *init, u32 reg, u32 val) in init_wr32() argument
192 struct nvkm_device *device = init->bios->subdev.device; in init_wr32()
193 reg = init_nvreg(init, reg); in init_wr32()
194 if (reg != ~0 && init_exec(init)) in init_wr32()
199 init_mask(struct nvbios_init *init, u32 reg, u32 mask, u32 val) in init_mask() argument
201 struct nvkm_device *device = init->bios->subdev.device; in init_mask()
202 reg = init_nvreg(init, reg); in init_mask()
203 if (reg != ~0 && init_exec(init)) { in init_mask()
212 init_rdport(struct nvbios_init *init, u16 port) in init_rdport() argument
214 if (init_exec(init)) in init_rdport()
215 return nvkm_rdport(init->subdev->device, init->crtc, port); in init_rdport()
220 init_wrport(struct nvbios_init *init, u16 port, u8 value) in init_wrport() argument
222 if (init_exec(init)) in init_wrport()
223 nvkm_wrport(init->subdev->device, init->crtc, port, value); in init_wrport()
227 init_rdvgai(struct nvbios_init *init, u16 port, u8 index) in init_rdvgai() argument
229 struct nvkm_subdev *subdev = init->subdev; in init_rdvgai()
230 if (init_exec(init)) { in init_rdvgai()
231 int head = init->crtc < 0 ? 0 : init->crtc; in init_rdvgai()
238 init_wrvgai(struct nvbios_init *init, u16 port, u8 index, u8 value) in init_wrvgai() argument
240 struct nvkm_device *device = init->subdev->device; in init_wrvgai()
245 init->crtc = 0; in init_wrvgai()
248 if (init_exec(init)) { in init_wrvgai()
249 int head = init->crtc < 0 ? 0 : init->crtc; in init_wrvgai()
256 init->crtc = 1; in init_wrvgai()
261 init_i2c(struct nvbios_init *init, int index) in init_i2c() argument
263 struct nvkm_i2c *i2c = init->bios->subdev.device->i2c; in init_i2c()
268 if (init->outp && init->outp->i2c_upper_default) in init_i2c()
283 init_rdi2cr(struct nvbios_init *init, u8 index, u8 addr, u8 reg) in init_rdi2cr() argument
285 struct i2c_adapter *adap = init_i2c(init, index); in init_rdi2cr()
286 if (adap && init_exec(init)) in init_rdi2cr()
292 init_wri2cr(struct nvbios_init *init, u8 index, u8 addr, u8 reg, u8 val) in init_wri2cr() argument
294 struct i2c_adapter *adap = init_i2c(init, index); in init_wri2cr()
295 if (adap && init_exec(init)) in init_wri2cr()
301 init_aux(struct nvbios_init *init) in init_aux() argument
303 struct nvkm_i2c *i2c = init->bios->subdev.device->i2c; in init_aux()
304 if (!init->outp) { in init_aux()
305 if (init_exec(init)) in init_aux()
309 return nvkm_i2c_aux_find(i2c, init->outp->i2c_index); in init_aux()
313 init_rdauxr(struct nvbios_init *init, u32 addr) in init_rdauxr() argument
315 struct nvkm_i2c_aux *aux = init_aux(init); in init_rdauxr()
318 if (aux && init_exec(init)) { in init_rdauxr()
329 init_wrauxr(struct nvbios_init *init, u32 addr, u8 data) in init_wrauxr() argument
331 struct nvkm_i2c_aux *aux = init_aux(init); in init_wrauxr()
332 if (aux && init_exec(init)) { in init_wrauxr()
342 init_prog_pll(struct nvbios_init *init, u32 id, u32 freq) in init_prog_pll() argument
344 struct nvkm_devinit *devinit = init->bios->subdev.device->devinit; in init_prog_pll()
345 if (init_exec(init)) { in init_prog_pll()
375 init_table_(struct nvbios_init *init, u16 offset, const char *name) in init_table_() argument
377 struct nvkm_bios *bios = init->bios; in init_table_()
409 struct nvbios_init init = { .bios = bios }; in init_script() local
420 data = init_script_table(&init); in init_script()
437 init_ram_restrict_group_count(struct nvbios_init *init) in init_ram_restrict_group_count() argument
439 return nvbios_ramcfg_count(init->bios); in init_ram_restrict_group_count()
443 init_ram_restrict(struct nvbios_init *init) in init_ram_restrict() argument
453 if (!init->ramcfg || init->bios->version.major < 0x70) in init_ram_restrict()
454 init->ramcfg = 0x80000000 | nvbios_ramcfg_index(init->subdev); in init_ram_restrict()
455 return (init->ramcfg & 0x7fffffff); in init_ram_restrict()
459 init_xlat_(struct nvbios_init *init, u8 index, u8 offset) in init_xlat_() argument
461 struct nvkm_bios *bios = init->bios; in init_xlat_()
462 u16 table = init_xlat_table(init); in init_xlat_()
477 init_condition_met(struct nvbios_init *init, u8 cond) in init_condition_met() argument
479 struct nvkm_bios *bios = init->bios; in init_condition_met()
480 u16 table = init_condition_table(init); in init_condition_met()
487 return (init_rd32(init, reg) & msk) == val; in init_condition_met()
493 init_io_condition_met(struct nvbios_init *init, u8 cond) in init_io_condition_met() argument
495 struct nvkm_bios *bios = init->bios; in init_io_condition_met()
496 u16 table = init_io_condition_table(init); in init_io_condition_met()
504 return (init_rdvgai(init, port, index) & mask) == value; in init_io_condition_met()
510 init_io_flag_condition_met(struct nvbios_init *init, u8 cond) in init_io_flag_condition_met() argument
512 struct nvkm_bios *bios = init->bios; in init_io_flag_condition_met()
513 u16 table = init_io_flag_condition_table(init); in init_io_flag_condition_met()
522 u8 ioval = (init_rdvgai(init, port, index) & mask) >> shift; in init_io_flag_condition_met()
537 init_tmds_reg(struct nvbios_init *init, u8 tmds) in init_tmds_reg() argument
553 if (init->outp) { in init_tmds_reg()
554 u32 dacoffset = pramdac_offset[init->outp->or]; in init_tmds_reg()
560 if (init_exec(init)) in init_tmds_reg()
581 init_reserved(struct nvbios_init *init) in init_reserved() argument
583 u8 opcode = nvbios_rd08(init->bios, init->offset); in init_reserved()
597 cont(" 0x%02x", nvbios_rd08(init->bios, init->offset + i)); in init_reserved()
599 init->offset += length; in init_reserved()
607 init_done(struct nvbios_init *init) in init_done() argument
610 init->offset = 0x0000; in init_done()
618 init_io_restrict_prog(struct nvbios_init *init) in init_io_restrict_prog() argument
620 struct nvkm_bios *bios = init->bios; in init_io_restrict_prog()
621 u16 port = nvbios_rd16(bios, init->offset + 1); in init_io_restrict_prog()
622 u8 index = nvbios_rd08(bios, init->offset + 3); in init_io_restrict_prog()
623 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_io_restrict_prog()
624 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_io_restrict_prog()
625 u8 count = nvbios_rd08(bios, init->offset + 6); in init_io_restrict_prog()
626 u32 reg = nvbios_rd32(bios, init->offset + 7); in init_io_restrict_prog()
632 init->offset += 11; in init_io_restrict_prog()
634 conf = (init_rdvgai(init, port, index) & mask) >> shift; in init_io_restrict_prog()
636 u32 data = nvbios_rd32(bios, init->offset); in init_io_restrict_prog()
640 init_wr32(init, reg, data); in init_io_restrict_prog()
645 init->offset += 4; in init_io_restrict_prog()
655 init_repeat(struct nvbios_init *init) in init_repeat() argument
657 struct nvkm_bios *bios = init->bios; in init_repeat()
658 u8 count = nvbios_rd08(bios, init->offset + 1); in init_repeat()
659 u16 repeat = init->repeat; in init_repeat()
662 init->offset += 2; in init_repeat()
664 init->repeat = init->offset; in init_repeat()
665 init->repend = init->offset; in init_repeat()
667 init->offset = init->repeat; in init_repeat()
668 nvbios_exec(init); in init_repeat()
672 init->offset = init->repend; in init_repeat()
673 init->repeat = repeat; in init_repeat()
681 init_io_restrict_pll(struct nvbios_init *init) in init_io_restrict_pll() argument
683 struct nvkm_bios *bios = init->bios; in init_io_restrict_pll()
684 u16 port = nvbios_rd16(bios, init->offset + 1); in init_io_restrict_pll()
685 u8 index = nvbios_rd08(bios, init->offset + 3); in init_io_restrict_pll()
686 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_io_restrict_pll()
687 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_io_restrict_pll()
688 s8 iofc = nvbios_rd08(bios, init->offset + 6); in init_io_restrict_pll()
689 u8 count = nvbios_rd08(bios, init->offset + 7); in init_io_restrict_pll()
690 u32 reg = nvbios_rd32(bios, init->offset + 8); in init_io_restrict_pll()
696 init->offset += 12; in init_io_restrict_pll()
698 conf = (init_rdvgai(init, port, index) & mask) >> shift; in init_io_restrict_pll()
700 u32 freq = nvbios_rd16(bios, init->offset) * 10; in init_io_restrict_pll()
704 if (iofc > 0 && init_io_flag_condition_met(init, iofc)) in init_io_restrict_pll()
706 init_prog_pll(init, reg, freq); in init_io_restrict_pll()
711 init->offset += 2; in init_io_restrict_pll()
721 init_end_repeat(struct nvbios_init *init) in init_end_repeat() argument
724 init->offset += 1; in init_end_repeat()
726 if (init->repeat) { in init_end_repeat()
727 init->repend = init->offset; in init_end_repeat()
728 init->offset = 0; in init_end_repeat()
737 init_copy(struct nvbios_init *init) in init_copy() argument
739 struct nvkm_bios *bios = init->bios; in init_copy()
740 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_copy()
741 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_copy()
742 u8 smask = nvbios_rd08(bios, init->offset + 6); in init_copy()
743 u16 port = nvbios_rd16(bios, init->offset + 7); in init_copy()
744 u8 index = nvbios_rd08(bios, init->offset + 9); in init_copy()
745 u8 mask = nvbios_rd08(bios, init->offset + 10); in init_copy()
752 init->offset += 11; in init_copy()
754 data = init_rdvgai(init, port, index) & mask; in init_copy()
755 data |= init_shift(init_rd32(init, reg), shift) & smask; in init_copy()
756 init_wrvgai(init, port, index, data); in init_copy()
764 init_not(struct nvbios_init *init) in init_not() argument
767 init->offset += 1; in init_not()
768 init_exec_inv(init); in init_not()
776 init_io_flag_condition(struct nvbios_init *init) in init_io_flag_condition() argument
778 struct nvkm_bios *bios = init->bios; in init_io_flag_condition()
779 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_io_flag_condition()
782 init->offset += 2; in init_io_flag_condition()
784 if (!init_io_flag_condition_met(init, cond)) in init_io_flag_condition()
785 init_exec_set(init, false); in init_io_flag_condition()
793 init_dp_condition(struct nvbios_init *init) in init_dp_condition() argument
795 struct nvkm_bios *bios = init->bios; in init_dp_condition()
797 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_dp_condition()
798 u8 unkn = nvbios_rd08(bios, init->offset + 2); in init_dp_condition()
803 init->offset += 3; in init_dp_condition()
807 if (init_conn(init) != DCB_CONNECTOR_eDP) in init_dp_condition()
808 init_exec_set(init, false); in init_dp_condition()
812 if ( init->outp && in init_dp_condition()
814 (init->outp->or << 0) | in init_dp_condition()
815 (init->outp->sorconf.link << 6), in init_dp_condition()
819 init_exec_set(init, false); in init_dp_condition()
823 if (init_exec(init)) in init_dp_condition()
827 if (!(init_rdauxr(init, 0x0d) & 1)) in init_dp_condition()
828 init_exec_set(init, false); in init_dp_condition()
841 init_io_mask_or(struct nvbios_init *init) in init_io_mask_or() argument
843 struct nvkm_bios *bios = init->bios; in init_io_mask_or()
844 u8 index = nvbios_rd08(bios, init->offset + 1); in init_io_mask_or()
845 u8 or = init_or(init); in init_io_mask_or()
849 init->offset += 2; in init_io_mask_or()
851 data = init_rdvgai(init, 0x03d4, index); in init_io_mask_or()
852 init_wrvgai(init, 0x03d4, index, data &= ~(1 << or)); in init_io_mask_or()
860 init_io_or(struct nvbios_init *init) in init_io_or() argument
862 struct nvkm_bios *bios = init->bios; in init_io_or()
863 u8 index = nvbios_rd08(bios, init->offset + 1); in init_io_or()
864 u8 or = init_or(init); in init_io_or()
868 init->offset += 2; in init_io_or()
870 data = init_rdvgai(init, 0x03d4, index); in init_io_or()
871 init_wrvgai(init, 0x03d4, index, data | (1 << or)); in init_io_or()
879 init_andn_reg(struct nvbios_init *init) in init_andn_reg() argument
881 struct nvkm_bios *bios = init->bios; in init_andn_reg()
882 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_andn_reg()
883 u32 mask = nvbios_rd32(bios, init->offset + 5); in init_andn_reg()
886 init->offset += 9; in init_andn_reg()
888 init_mask(init, reg, mask, 0); in init_andn_reg()
896 init_or_reg(struct nvbios_init *init) in init_or_reg() argument
898 struct nvkm_bios *bios = init->bios; in init_or_reg()
899 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_or_reg()
900 u32 mask = nvbios_rd32(bios, init->offset + 5); in init_or_reg()
903 init->offset += 9; in init_or_reg()
905 init_mask(init, reg, 0, mask); in init_or_reg()
913 init_idx_addr_latched(struct nvbios_init *init) in init_idx_addr_latched() argument
915 struct nvkm_bios *bios = init->bios; in init_idx_addr_latched()
916 u32 creg = nvbios_rd32(bios, init->offset + 1); in init_idx_addr_latched()
917 u32 dreg = nvbios_rd32(bios, init->offset + 5); in init_idx_addr_latched()
918 u32 mask = nvbios_rd32(bios, init->offset + 9); in init_idx_addr_latched()
919 u32 data = nvbios_rd32(bios, init->offset + 13); in init_idx_addr_latched()
920 u8 count = nvbios_rd08(bios, init->offset + 17); in init_idx_addr_latched()
924 init->offset += 18; in init_idx_addr_latched()
927 u8 iaddr = nvbios_rd08(bios, init->offset + 0); in init_idx_addr_latched()
928 u8 idata = nvbios_rd08(bios, init->offset + 1); in init_idx_addr_latched()
931 init->offset += 2; in init_idx_addr_latched()
933 init_wr32(init, dreg, idata); in init_idx_addr_latched()
934 init_mask(init, creg, ~mask, data | iaddr); in init_idx_addr_latched()
943 init_io_restrict_pll2(struct nvbios_init *init) in init_io_restrict_pll2() argument
945 struct nvkm_bios *bios = init->bios; in init_io_restrict_pll2()
946 u16 port = nvbios_rd16(bios, init->offset + 1); in init_io_restrict_pll2()
947 u8 index = nvbios_rd08(bios, init->offset + 3); in init_io_restrict_pll2()
948 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_io_restrict_pll2()
949 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_io_restrict_pll2()
950 u8 count = nvbios_rd08(bios, init->offset + 6); in init_io_restrict_pll2()
951 u32 reg = nvbios_rd32(bios, init->offset + 7); in init_io_restrict_pll2()
957 init->offset += 11; in init_io_restrict_pll2()
959 conf = (init_rdvgai(init, port, index) & mask) >> shift; in init_io_restrict_pll2()
961 u32 freq = nvbios_rd32(bios, init->offset); in init_io_restrict_pll2()
964 init_prog_pll(init, reg, freq); in init_io_restrict_pll2()
968 init->offset += 4; in init_io_restrict_pll2()
978 init_pll2(struct nvbios_init *init) in init_pll2() argument
980 struct nvkm_bios *bios = init->bios; in init_pll2()
981 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_pll2()
982 u32 freq = nvbios_rd32(bios, init->offset + 5); in init_pll2()
985 init->offset += 9; in init_pll2()
987 init_prog_pll(init, reg, freq); in init_pll2()
995 init_i2c_byte(struct nvbios_init *init) in init_i2c_byte() argument
997 struct nvkm_bios *bios = init->bios; in init_i2c_byte()
998 u8 index = nvbios_rd08(bios, init->offset + 1); in init_i2c_byte()
999 u8 addr = nvbios_rd08(bios, init->offset + 2) >> 1; in init_i2c_byte()
1000 u8 count = nvbios_rd08(bios, init->offset + 3); in init_i2c_byte()
1003 init->offset += 4; in init_i2c_byte()
1006 u8 reg = nvbios_rd08(bios, init->offset + 0); in init_i2c_byte()
1007 u8 mask = nvbios_rd08(bios, init->offset + 1); in init_i2c_byte()
1008 u8 data = nvbios_rd08(bios, init->offset + 2); in init_i2c_byte()
1012 init->offset += 3; in init_i2c_byte()
1014 val = init_rdi2cr(init, index, addr, reg); in init_i2c_byte()
1017 init_wri2cr(init, index, addr, reg, (val & mask) | data); in init_i2c_byte()
1026 init_zm_i2c_byte(struct nvbios_init *init) in init_zm_i2c_byte() argument
1028 struct nvkm_bios *bios = init->bios; in init_zm_i2c_byte()
1029 u8 index = nvbios_rd08(bios, init->offset + 1); in init_zm_i2c_byte()
1030 u8 addr = nvbios_rd08(bios, init->offset + 2) >> 1; in init_zm_i2c_byte()
1031 u8 count = nvbios_rd08(bios, init->offset + 3); in init_zm_i2c_byte()
1034 init->offset += 4; in init_zm_i2c_byte()
1037 u8 reg = nvbios_rd08(bios, init->offset + 0); in init_zm_i2c_byte()
1038 u8 data = nvbios_rd08(bios, init->offset + 1); in init_zm_i2c_byte()
1041 init->offset += 2; in init_zm_i2c_byte()
1043 init_wri2cr(init, index, addr, reg, data); in init_zm_i2c_byte()
1052 init_zm_i2c(struct nvbios_init *init) in init_zm_i2c() argument
1054 struct nvkm_bios *bios = init->bios; in init_zm_i2c()
1055 u8 index = nvbios_rd08(bios, init->offset + 1); in init_zm_i2c()
1056 u8 addr = nvbios_rd08(bios, init->offset + 2) >> 1; in init_zm_i2c()
1057 u8 count = nvbios_rd08(bios, init->offset + 3); in init_zm_i2c()
1061 init->offset += 4; in init_zm_i2c()
1064 data[i] = nvbios_rd08(bios, init->offset); in init_zm_i2c()
1066 init->offset++; in init_zm_i2c()
1069 if (init_exec(init)) { in init_zm_i2c()
1070 struct i2c_adapter *adap = init_i2c(init, index); in init_zm_i2c()
1086 init_tmds(struct nvbios_init *init) in init_tmds() argument
1088 struct nvkm_bios *bios = init->bios; in init_tmds()
1089 u8 tmds = nvbios_rd08(bios, init->offset + 1); in init_tmds()
1090 u8 addr = nvbios_rd08(bios, init->offset + 2); in init_tmds()
1091 u8 mask = nvbios_rd08(bios, init->offset + 3); in init_tmds()
1092 u8 data = nvbios_rd08(bios, init->offset + 4); in init_tmds()
1093 u32 reg = init_tmds_reg(init, tmds); in init_tmds()
1097 init->offset += 5; in init_tmds()
1102 init_wr32(init, reg + 0, addr | 0x00010000); in init_tmds()
1103 init_wr32(init, reg + 4, data | (init_rd32(init, reg + 4) & mask)); in init_tmds()
1104 init_wr32(init, reg + 0, addr); in init_tmds()
1112 init_zm_tmds_group(struct nvbios_init *init) in init_zm_tmds_group() argument
1114 struct nvkm_bios *bios = init->bios; in init_zm_tmds_group()
1115 u8 tmds = nvbios_rd08(bios, init->offset + 1); in init_zm_tmds_group()
1116 u8 count = nvbios_rd08(bios, init->offset + 2); in init_zm_tmds_group()
1117 u32 reg = init_tmds_reg(init, tmds); in init_zm_tmds_group()
1120 init->offset += 3; in init_zm_tmds_group()
1123 u8 addr = nvbios_rd08(bios, init->offset + 0); in init_zm_tmds_group()
1124 u8 data = nvbios_rd08(bios, init->offset + 1); in init_zm_tmds_group()
1127 init->offset += 2; in init_zm_tmds_group()
1129 init_wr32(init, reg + 4, data); in init_zm_tmds_group()
1130 init_wr32(init, reg + 0, addr); in init_zm_tmds_group()
1139 init_cr_idx_adr_latch(struct nvbios_init *init) in init_cr_idx_adr_latch() argument
1141 struct nvkm_bios *bios = init->bios; in init_cr_idx_adr_latch()
1142 u8 addr0 = nvbios_rd08(bios, init->offset + 1); in init_cr_idx_adr_latch()
1143 u8 addr1 = nvbios_rd08(bios, init->offset + 2); in init_cr_idx_adr_latch()
1144 u8 base = nvbios_rd08(bios, init->offset + 3); in init_cr_idx_adr_latch()
1145 u8 count = nvbios_rd08(bios, init->offset + 4); in init_cr_idx_adr_latch()
1149 init->offset += 5; in init_cr_idx_adr_latch()
1151 save0 = init_rdvgai(init, 0x03d4, addr0); in init_cr_idx_adr_latch()
1153 u8 data = nvbios_rd08(bios, init->offset); in init_cr_idx_adr_latch()
1156 init->offset += 1; in init_cr_idx_adr_latch()
1158 init_wrvgai(init, 0x03d4, addr0, base++); in init_cr_idx_adr_latch()
1159 init_wrvgai(init, 0x03d4, addr1, data); in init_cr_idx_adr_latch()
1161 init_wrvgai(init, 0x03d4, addr0, save0); in init_cr_idx_adr_latch()
1169 init_cr(struct nvbios_init *init) in init_cr() argument
1171 struct nvkm_bios *bios = init->bios; in init_cr()
1172 u8 addr = nvbios_rd08(bios, init->offset + 1); in init_cr()
1173 u8 mask = nvbios_rd08(bios, init->offset + 2); in init_cr()
1174 u8 data = nvbios_rd08(bios, init->offset + 3); in init_cr()
1178 init->offset += 4; in init_cr()
1180 val = init_rdvgai(init, 0x03d4, addr) & mask; in init_cr()
1181 init_wrvgai(init, 0x03d4, addr, val | data); in init_cr()
1189 init_zm_cr(struct nvbios_init *init) in init_zm_cr() argument
1191 struct nvkm_bios *bios = init->bios; in init_zm_cr()
1192 u8 addr = nvbios_rd08(bios, init->offset + 1); in init_zm_cr()
1193 u8 data = nvbios_rd08(bios, init->offset + 2); in init_zm_cr()
1196 init->offset += 3; in init_zm_cr()
1198 init_wrvgai(init, 0x03d4, addr, data); in init_zm_cr()
1206 init_zm_cr_group(struct nvbios_init *init) in init_zm_cr_group() argument
1208 struct nvkm_bios *bios = init->bios; in init_zm_cr_group()
1209 u8 count = nvbios_rd08(bios, init->offset + 1); in init_zm_cr_group()
1212 init->offset += 2; in init_zm_cr_group()
1215 u8 addr = nvbios_rd08(bios, init->offset + 0); in init_zm_cr_group()
1216 u8 data = nvbios_rd08(bios, init->offset + 1); in init_zm_cr_group()
1219 init->offset += 2; in init_zm_cr_group()
1221 init_wrvgai(init, 0x03d4, addr, data); in init_zm_cr_group()
1230 init_condition_time(struct nvbios_init *init) in init_condition_time() argument
1232 struct nvkm_bios *bios = init->bios; in init_condition_time()
1233 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_condition_time()
1234 u8 retry = nvbios_rd08(bios, init->offset + 2); in init_condition_time()
1238 init->offset += 3; in init_condition_time()
1240 if (!init_exec(init)) in init_condition_time()
1244 if (init_condition_met(init, cond)) in init_condition_time()
1249 init_exec_set(init, false); in init_condition_time()
1257 init_ltime(struct nvbios_init *init) in init_ltime() argument
1259 struct nvkm_bios *bios = init->bios; in init_ltime()
1260 u16 msec = nvbios_rd16(bios, init->offset + 1); in init_ltime()
1263 init->offset += 3; in init_ltime()
1265 if (init_exec(init)) in init_ltime()
1274 init_zm_reg_sequence(struct nvbios_init *init) in init_zm_reg_sequence() argument
1276 struct nvkm_bios *bios = init->bios; in init_zm_reg_sequence()
1277 u32 base = nvbios_rd32(bios, init->offset + 1); in init_zm_reg_sequence()
1278 u8 count = nvbios_rd08(bios, init->offset + 5); in init_zm_reg_sequence()
1281 init->offset += 6; in init_zm_reg_sequence()
1284 u32 data = nvbios_rd32(bios, init->offset); in init_zm_reg_sequence()
1287 init->offset += 4; in init_zm_reg_sequence()
1289 init_wr32(init, base, data); in init_zm_reg_sequence()
1299 init_pll_indirect(struct nvbios_init *init) in init_pll_indirect() argument
1301 struct nvkm_bios *bios = init->bios; in init_pll_indirect()
1302 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_pll_indirect()
1303 u16 addr = nvbios_rd16(bios, init->offset + 5); in init_pll_indirect()
1308 init->offset += 7; in init_pll_indirect()
1310 init_prog_pll(init, reg, freq); in init_pll_indirect()
1318 init_zm_reg_indirect(struct nvbios_init *init) in init_zm_reg_indirect() argument
1320 struct nvkm_bios *bios = init->bios; in init_zm_reg_indirect()
1321 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_zm_reg_indirect()
1322 u16 addr = nvbios_rd16(bios, init->offset + 5); in init_zm_reg_indirect()
1327 init->offset += 7; in init_zm_reg_indirect()
1329 init_wr32(init, addr, data); in init_zm_reg_indirect()
1337 init_sub_direct(struct nvbios_init *init) in init_sub_direct() argument
1339 struct nvkm_bios *bios = init->bios; in init_sub_direct()
1340 u16 addr = nvbios_rd16(bios, init->offset + 1); in init_sub_direct()
1345 if (init_exec(init)) { in init_sub_direct()
1346 save = init->offset; in init_sub_direct()
1347 init->offset = addr; in init_sub_direct()
1348 if (nvbios_exec(init)) { in init_sub_direct()
1352 init->offset = save; in init_sub_direct()
1355 init->offset += 3; in init_sub_direct()
1363 init_jump(struct nvbios_init *init) in init_jump() argument
1365 struct nvkm_bios *bios = init->bios; in init_jump()
1366 u16 offset = nvbios_rd16(bios, init->offset + 1); in init_jump()
1370 if (init_exec(init)) in init_jump()
1371 init->offset = offset; in init_jump()
1373 init->offset += 3; in init_jump()
1381 init_i2c_if(struct nvbios_init *init) in init_i2c_if() argument
1383 struct nvkm_bios *bios = init->bios; in init_i2c_if()
1384 u8 index = nvbios_rd08(bios, init->offset + 1); in init_i2c_if()
1385 u8 addr = nvbios_rd08(bios, init->offset + 2); in init_i2c_if()
1386 u8 reg = nvbios_rd08(bios, init->offset + 3); in init_i2c_if()
1387 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_i2c_if()
1388 u8 data = nvbios_rd08(bios, init->offset + 5); in init_i2c_if()
1393 init->offset += 6; in init_i2c_if()
1394 init_exec_force(init, true); in init_i2c_if()
1396 value = init_rdi2cr(init, index, addr, reg); in init_i2c_if()
1398 init_exec_set(init, false); in init_i2c_if()
1400 init_exec_force(init, false); in init_i2c_if()
1408 init_copy_nv_reg(struct nvbios_init *init) in init_copy_nv_reg() argument
1410 struct nvkm_bios *bios = init->bios; in init_copy_nv_reg()
1411 u32 sreg = nvbios_rd32(bios, init->offset + 1); in init_copy_nv_reg()
1412 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_copy_nv_reg()
1413 u32 smask = nvbios_rd32(bios, init->offset + 6); in init_copy_nv_reg()
1414 u32 sxor = nvbios_rd32(bios, init->offset + 10); in init_copy_nv_reg()
1415 u32 dreg = nvbios_rd32(bios, init->offset + 14); in init_copy_nv_reg()
1416 u32 dmask = nvbios_rd32(bios, init->offset + 18); in init_copy_nv_reg()
1423 init->offset += 22; in init_copy_nv_reg()
1425 data = init_shift(init_rd32(init, sreg), shift); in init_copy_nv_reg()
1426 init_mask(init, dreg, ~dmask, (data & smask) ^ sxor); in init_copy_nv_reg()
1434 init_zm_index_io(struct nvbios_init *init) in init_zm_index_io() argument
1436 struct nvkm_bios *bios = init->bios; in init_zm_index_io()
1437 u16 port = nvbios_rd16(bios, init->offset + 1); in init_zm_index_io()
1438 u8 index = nvbios_rd08(bios, init->offset + 3); in init_zm_index_io()
1439 u8 data = nvbios_rd08(bios, init->offset + 4); in init_zm_index_io()
1442 init->offset += 5; in init_zm_index_io()
1444 init_wrvgai(init, port, index, data); in init_zm_index_io()
1452 init_compute_mem(struct nvbios_init *init) in init_compute_mem() argument
1454 struct nvkm_devinit *devinit = init->bios->subdev.device->devinit; in init_compute_mem()
1457 init->offset += 1; in init_compute_mem()
1459 init_exec_force(init, true); in init_compute_mem()
1460 if (init_exec(init)) in init_compute_mem()
1462 init_exec_force(init, false); in init_compute_mem()
1470 init_reset(struct nvbios_init *init) in init_reset() argument
1472 struct nvkm_bios *bios = init->bios; in init_reset()
1473 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_reset()
1474 u32 data1 = nvbios_rd32(bios, init->offset + 5); in init_reset()
1475 u32 data2 = nvbios_rd32(bios, init->offset + 9); in init_reset()
1479 init->offset += 13; in init_reset()
1480 init_exec_force(init, true); in init_reset()
1482 savepci19 = init_mask(init, 0x00184c, 0x00000f00, 0x00000000); in init_reset()
1483 init_wr32(init, reg, data1); in init_reset()
1485 init_wr32(init, reg, data2); in init_reset()
1486 init_wr32(init, 0x00184c, savepci19); in init_reset()
1487 init_mask(init, 0x001850, 0x00000001, 0x00000000); in init_reset()
1489 init_exec_force(init, false); in init_reset()
1497 init_configure_mem_clk(struct nvbios_init *init) in init_configure_mem_clk() argument
1499 u16 mdata = bmp_mem_init_table(init->bios); in init_configure_mem_clk()
1501 mdata += (init_rdvgai(init, 0x03d4, 0x3c) >> 4) * 66; in init_configure_mem_clk()
1506 init_configure_mem(struct nvbios_init *init) in init_configure_mem() argument
1508 struct nvkm_bios *bios = init->bios; in init_configure_mem()
1513 init->offset += 1; in init_configure_mem()
1516 init_done(init); in init_configure_mem()
1519 init_exec_force(init, true); in init_configure_mem()
1521 mdata = init_configure_mem_clk(init); in init_configure_mem()
1527 data = init_rdvgai(init, 0x03c4, 0x01); in init_configure_mem()
1528 init_wrvgai(init, 0x03c4, 0x01, data | 0x20); in init_configure_mem()
1545 init_wr32(init, addr, data); in init_configure_mem()
1548 init_exec_force(init, false); in init_configure_mem()
1556 init_configure_clk(struct nvbios_init *init) in init_configure_clk() argument
1558 struct nvkm_bios *bios = init->bios; in init_configure_clk()
1562 init->offset += 1; in init_configure_clk()
1565 init_done(init); in init_configure_clk()
1568 init_exec_force(init, true); in init_configure_clk()
1570 mdata = init_configure_mem_clk(init); in init_configure_clk()
1574 init_prog_pll(init, 0x680500, clock); in init_configure_clk()
1580 init_prog_pll(init, 0x680504, clock); in init_configure_clk()
1582 init_exec_force(init, false); in init_configure_clk()
1590 init_configure_preinit(struct nvbios_init *init) in init_configure_preinit() argument
1592 struct nvkm_bios *bios = init->bios; in init_configure_preinit()
1596 init->offset += 1; in init_configure_preinit()
1599 init_done(init); in init_configure_preinit()
1602 init_exec_force(init, true); in init_configure_preinit()
1604 strap = init_rd32(init, 0x101000); in init_configure_preinit()
1606 init_wrvgai(init, 0x03d4, 0x3c, strap); in init_configure_preinit()
1608 init_exec_force(init, false); in init_configure_preinit()
1616 init_io(struct nvbios_init *init) in init_io() argument
1618 struct nvkm_bios *bios = init->bios; in init_io()
1619 u16 port = nvbios_rd16(bios, init->offset + 1); in init_io()
1620 u8 mask = nvbios_rd16(bios, init->offset + 3); in init_io()
1621 u8 data = nvbios_rd16(bios, init->offset + 4); in init_io()
1625 init->offset += 5; in init_io()
1633 init_mask(init, 0x614100, 0xf0800000, 0x00800000); in init_io()
1634 init_mask(init, 0x00e18c, 0x00020000, 0x00020000); in init_io()
1635 init_mask(init, 0x614900, 0xf0800000, 0x00800000); in init_io()
1636 init_mask(init, 0x000200, 0x40000000, 0x00000000); in init_io()
1638 init_mask(init, 0x00e18c, 0x00020000, 0x00000000); in init_io()
1639 init_mask(init, 0x000200, 0x40000000, 0x40000000); in init_io()
1640 init_wr32(init, 0x614100, 0x00800018); in init_io()
1641 init_wr32(init, 0x614900, 0x00800018); in init_io()
1643 init_wr32(init, 0x614100, 0x10000018); in init_io()
1644 init_wr32(init, 0x614900, 0x10000018); in init_io()
1647 value = init_rdport(init, port) & mask; in init_io()
1648 init_wrport(init, port, data | value); in init_io()
1656 init_sub(struct nvbios_init *init) in init_sub() argument
1658 struct nvkm_bios *bios = init->bios; in init_sub()
1659 u8 index = nvbios_rd08(bios, init->offset + 1); in init_sub()
1665 if (addr && init_exec(init)) { in init_sub()
1666 save = init->offset; in init_sub()
1667 init->offset = addr; in init_sub()
1668 if (nvbios_exec(init)) { in init_sub()
1672 init->offset = save; in init_sub()
1675 init->offset += 2; in init_sub()
1683 init_ram_condition(struct nvbios_init *init) in init_ram_condition() argument
1685 struct nvkm_bios *bios = init->bios; in init_ram_condition()
1686 u8 mask = nvbios_rd08(bios, init->offset + 1); in init_ram_condition()
1687 u8 value = nvbios_rd08(bios, init->offset + 2); in init_ram_condition()
1691 init->offset += 3; in init_ram_condition()
1693 if ((init_rd32(init, 0x100000) & mask) != value) in init_ram_condition()
1694 init_exec_set(init, false); in init_ram_condition()
1702 init_nv_reg(struct nvbios_init *init) in init_nv_reg() argument
1704 struct nvkm_bios *bios = init->bios; in init_nv_reg()
1705 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_nv_reg()
1706 u32 mask = nvbios_rd32(bios, init->offset + 5); in init_nv_reg()
1707 u32 data = nvbios_rd32(bios, init->offset + 9); in init_nv_reg()
1710 init->offset += 13; in init_nv_reg()
1712 init_mask(init, reg, ~mask, data); in init_nv_reg()
1720 init_macro(struct nvbios_init *init) in init_macro() argument
1722 struct nvkm_bios *bios = init->bios; in init_macro()
1723 u8 macro = nvbios_rd08(bios, init->offset + 1); in init_macro()
1728 table = init_macro_table(init); in init_macro()
1733 init_wr32(init, addr, data); in init_macro()
1736 init->offset += 2; in init_macro()
1744 init_resume(struct nvbios_init *init) in init_resume() argument
1747 init->offset += 1; in init_resume()
1748 init_exec_set(init, true); in init_resume()
1756 init_strap_condition(struct nvbios_init *init) in init_strap_condition() argument
1758 struct nvkm_bios *bios = init->bios; in init_strap_condition()
1759 u32 mask = nvbios_rd32(bios, init->offset + 1); in init_strap_condition()
1760 u32 value = nvbios_rd32(bios, init->offset + 5); in init_strap_condition()
1763 init->offset += 9; in init_strap_condition()
1765 if ((init_rd32(init, 0x101000) & mask) != value) in init_strap_condition()
1766 init_exec_set(init, false); in init_strap_condition()
1774 init_time(struct nvbios_init *init) in init_time() argument
1776 struct nvkm_bios *bios = init->bios; in init_time()
1777 u16 usec = nvbios_rd16(bios, init->offset + 1); in init_time()
1780 init->offset += 3; in init_time()
1782 if (init_exec(init)) { in init_time()
1795 init_condition(struct nvbios_init *init) in init_condition() argument
1797 struct nvkm_bios *bios = init->bios; in init_condition()
1798 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_condition()
1801 init->offset += 2; in init_condition()
1803 if (!init_condition_met(init, cond)) in init_condition()
1804 init_exec_set(init, false); in init_condition()
1812 init_io_condition(struct nvbios_init *init) in init_io_condition() argument
1814 struct nvkm_bios *bios = init->bios; in init_io_condition()
1815 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_io_condition()
1818 init->offset += 2; in init_io_condition()
1820 if (!init_io_condition_met(init, cond)) in init_io_condition()
1821 init_exec_set(init, false); in init_io_condition()
1829 init_zm_reg16(struct nvbios_init *init) in init_zm_reg16() argument
1831 struct nvkm_bios *bios = init->bios; in init_zm_reg16()
1832 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_reg16()
1833 u16 data = nvbios_rd16(bios, init->offset + 5); in init_zm_reg16()
1836 init->offset += 7; in init_zm_reg16()
1838 init_wr32(init, addr, data); in init_zm_reg16()
1846 init_index_io(struct nvbios_init *init) in init_index_io() argument
1848 struct nvkm_bios *bios = init->bios; in init_index_io()
1849 u16 port = nvbios_rd16(bios, init->offset + 1); in init_index_io()
1850 u8 index = nvbios_rd16(bios, init->offset + 3); in init_index_io()
1851 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_index_io()
1852 u8 data = nvbios_rd08(bios, init->offset + 5); in init_index_io()
1857 init->offset += 6; in init_index_io()
1859 value = init_rdvgai(init, port, index) & mask; in init_index_io()
1860 init_wrvgai(init, port, index, data | value); in init_index_io()
1868 init_pll(struct nvbios_init *init) in init_pll() argument
1870 struct nvkm_bios *bios = init->bios; in init_pll()
1871 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_pll()
1872 u32 freq = nvbios_rd16(bios, init->offset + 5) * 10; in init_pll()
1875 init->offset += 7; in init_pll()
1877 init_prog_pll(init, reg, freq); in init_pll()
1885 init_zm_reg(struct nvbios_init *init) in init_zm_reg() argument
1887 struct nvkm_bios *bios = init->bios; in init_zm_reg()
1888 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_reg()
1889 u32 data = nvbios_rd32(bios, init->offset + 5); in init_zm_reg()
1892 init->offset += 9; in init_zm_reg()
1897 init_wr32(init, addr, data); in init_zm_reg()
1905 init_ram_restrict_pll(struct nvbios_init *init) in init_ram_restrict_pll() argument
1907 struct nvkm_bios *bios = init->bios; in init_ram_restrict_pll()
1908 u8 type = nvbios_rd08(bios, init->offset + 1); in init_ram_restrict_pll()
1909 u8 count = init_ram_restrict_group_count(init); in init_ram_restrict_pll()
1910 u8 strap = init_ram_restrict(init); in init_ram_restrict_pll()
1914 init->offset += 2; in init_ram_restrict_pll()
1917 u32 freq = nvbios_rd32(bios, init->offset); in init_ram_restrict_pll()
1921 init_prog_pll(init, type, freq); in init_ram_restrict_pll()
1926 init->offset += 4; in init_ram_restrict_pll()
1935 init_gpio(struct nvbios_init *init) in init_gpio() argument
1937 struct nvkm_gpio *gpio = init->bios->subdev.device->gpio; in init_gpio()
1940 init->offset += 1; in init_gpio()
1942 if (init_exec(init)) in init_gpio()
1951 init_ram_restrict_zm_reg_group(struct nvbios_init *init) in init_ram_restrict_zm_reg_group() argument
1953 struct nvkm_bios *bios = init->bios; in init_ram_restrict_zm_reg_group()
1954 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_ram_restrict_zm_reg_group()
1955 u8 incr = nvbios_rd08(bios, init->offset + 5); in init_ram_restrict_zm_reg_group()
1956 u8 num = nvbios_rd08(bios, init->offset + 6); in init_ram_restrict_zm_reg_group()
1957 u8 count = init_ram_restrict_group_count(init); in init_ram_restrict_zm_reg_group()
1958 u8 index = init_ram_restrict(init); in init_ram_restrict_zm_reg_group()
1963 init->offset += 7; in init_ram_restrict_zm_reg_group()
1968 u32 data = nvbios_rd32(bios, init->offset); in init_ram_restrict_zm_reg_group()
1972 init_wr32(init, addr, data); in init_ram_restrict_zm_reg_group()
1977 init->offset += 4; in init_ram_restrict_zm_reg_group()
1989 init_copy_zm_reg(struct nvbios_init *init) in init_copy_zm_reg() argument
1991 struct nvkm_bios *bios = init->bios; in init_copy_zm_reg()
1992 u32 sreg = nvbios_rd32(bios, init->offset + 1); in init_copy_zm_reg()
1993 u32 dreg = nvbios_rd32(bios, init->offset + 5); in init_copy_zm_reg()
1996 init->offset += 9; in init_copy_zm_reg()
1998 init_wr32(init, dreg, init_rd32(init, sreg)); in init_copy_zm_reg()
2006 init_zm_reg_group(struct nvbios_init *init) in init_zm_reg_group() argument
2008 struct nvkm_bios *bios = init->bios; in init_zm_reg_group()
2009 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_reg_group()
2010 u8 count = nvbios_rd08(bios, init->offset + 5); in init_zm_reg_group()
2013 init->offset += 6; in init_zm_reg_group()
2016 u32 data = nvbios_rd32(bios, init->offset); in init_zm_reg_group()
2018 init_wr32(init, addr, data); in init_zm_reg_group()
2019 init->offset += 4; in init_zm_reg_group()
2028 init_xlat(struct nvbios_init *init) in init_xlat() argument
2030 struct nvkm_bios *bios = init->bios; in init_xlat()
2031 u32 saddr = nvbios_rd32(bios, init->offset + 1); in init_xlat()
2032 u8 sshift = nvbios_rd08(bios, init->offset + 5); in init_xlat()
2033 u8 smask = nvbios_rd08(bios, init->offset + 6); in init_xlat()
2034 u8 index = nvbios_rd08(bios, init->offset + 7); in init_xlat()
2035 u32 daddr = nvbios_rd32(bios, init->offset + 8); in init_xlat()
2036 u32 dmask = nvbios_rd32(bios, init->offset + 12); in init_xlat()
2037 u8 shift = nvbios_rd08(bios, init->offset + 16); in init_xlat()
2044 init->offset += 17; in init_xlat()
2046 data = init_shift(init_rd32(init, saddr), sshift) & smask; in init_xlat()
2047 data = init_xlat_(init, index, data) << shift; in init_xlat()
2048 init_mask(init, daddr, ~dmask, data); in init_xlat()
2056 init_zm_mask_add(struct nvbios_init *init) in init_zm_mask_add() argument
2058 struct nvkm_bios *bios = init->bios; in init_zm_mask_add()
2059 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_mask_add()
2060 u32 mask = nvbios_rd32(bios, init->offset + 5); in init_zm_mask_add()
2061 u32 add = nvbios_rd32(bios, init->offset + 9); in init_zm_mask_add()
2065 init->offset += 13; in init_zm_mask_add()
2067 data = init_rd32(init, addr); in init_zm_mask_add()
2069 init_wr32(init, addr, data); in init_zm_mask_add()
2077 init_auxch(struct nvbios_init *init) in init_auxch() argument
2079 struct nvkm_bios *bios = init->bios; in init_auxch()
2080 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_auxch()
2081 u8 count = nvbios_rd08(bios, init->offset + 5); in init_auxch()
2084 init->offset += 6; in init_auxch()
2087 u8 mask = nvbios_rd08(bios, init->offset + 0); in init_auxch()
2088 u8 data = nvbios_rd08(bios, init->offset + 1); in init_auxch()
2090 mask = init_rdauxr(init, addr) & mask; in init_auxch()
2091 init_wrauxr(init, addr, mask | data); in init_auxch()
2092 init->offset += 2; in init_auxch()
2101 init_zm_auxch(struct nvbios_init *init) in init_zm_auxch() argument
2103 struct nvkm_bios *bios = init->bios; in init_zm_auxch()
2104 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_auxch()
2105 u8 count = nvbios_rd08(bios, init->offset + 5); in init_zm_auxch()
2108 init->offset += 6; in init_zm_auxch()
2111 u8 data = nvbios_rd08(bios, init->offset + 0); in init_zm_auxch()
2113 init_wrauxr(init, addr, data); in init_zm_auxch()
2114 init->offset += 1; in init_zm_auxch()
2123 init_i2c_long_if(struct nvbios_init *init) in init_i2c_long_if() argument
2125 struct nvkm_bios *bios = init->bios; in init_i2c_long_if()
2126 u8 index = nvbios_rd08(bios, init->offset + 1); in init_i2c_long_if()
2127 u8 addr = nvbios_rd08(bios, init->offset + 2) >> 1; in init_i2c_long_if()
2128 u8 reglo = nvbios_rd08(bios, init->offset + 3); in init_i2c_long_if()
2129 u8 reghi = nvbios_rd08(bios, init->offset + 4); in init_i2c_long_if()
2130 u8 mask = nvbios_rd08(bios, init->offset + 5); in init_i2c_long_if()
2131 u8 data = nvbios_rd08(bios, init->offset + 6); in init_i2c_long_if()
2137 init->offset += 7; in init_i2c_long_if()
2139 adap = init_i2c(init, index); in init_i2c_long_if()
2154 init_exec_set(init, false); in init_i2c_long_if()
2162 init_gpio_ne(struct nvbios_init *init) in init_gpio_ne() argument
2164 struct nvkm_bios *bios = init->bios; in init_gpio_ne()
2167 u8 count = nvbios_rd08(bios, init->offset + 1); in init_gpio_ne()
2172 init->offset += 2; in init_gpio_ne()
2174 for (i = init->offset; i < init->offset + count; i++) in init_gpio_ne()
2180 for (i = init->offset; i < init->offset + count; i++) { in init_gpio_ne()
2186 if (i == (init->offset + count)) { in init_gpio_ne()
2188 if (init_exec(init)) in init_gpio_ne()
2195 init->offset += count; in init_gpio_ne()
2275 nvbios_exec(struct nvbios_init *init) in nvbios_exec() argument
2277 init->nested++; in nvbios_exec()
2278 while (init->offset) { in nvbios_exec()
2279 u8 opcode = nvbios_rd08(init->bios, init->offset); in nvbios_exec()
2285 init_opcode[opcode].exec(init); in nvbios_exec()
2287 init->nested--; in nvbios_exec()
2302 struct nvbios_init init = { in nvbios_init() local
2311 ret = nvbios_exec(&init); in nvbios_init()
2318 struct nvbios_init init = { in nvbios_init() local
2327 ret = nvbios_exec(&init); in nvbios_init()