Lines Matching refs:init
42 nvkm_printk(init->subdev, lvl, info, "0x%08x[%c]: "fmt, \
43 init->offset, init_exec(init) ? \
44 '0' + (init->nested - 1) : ' ', ##args); \
47 if (init->subdev->debug >= NV_DBG_TRACE) \
59 init_exec(struct nvbios_init *init) in init_exec() argument
61 return (init->execute == 1) || ((init->execute & 5) == 5); in init_exec()
65 init_exec_set(struct nvbios_init *init, bool exec) in init_exec_set() argument
67 if (exec) init->execute &= 0xfd; in init_exec_set()
68 else init->execute |= 0x02; in init_exec_set()
72 init_exec_inv(struct nvbios_init *init) in init_exec_inv() argument
74 init->execute ^= 0x02; in init_exec_inv()
78 init_exec_force(struct nvbios_init *init, bool exec) in init_exec_force() argument
80 if (exec) init->execute |= 0x04; in init_exec_force()
81 else init->execute &= 0xfb; in init_exec_force()
89 init_or(struct nvbios_init *init) in init_or() argument
91 if (init_exec(init)) { in init_or()
92 if (init->or >= 0) in init_or()
93 return init->or; in init_or()
100 init_link(struct nvbios_init *init) in init_link() argument
102 if (init_exec(init)) { in init_link()
103 if (init->link) in init_link()
104 return init->link == 2; in init_link()
111 init_head(struct nvbios_init *init) in init_head() argument
113 if (init_exec(init)) { in init_head()
114 if (init->head >= 0) in init_head()
115 return init->head; in init_head()
122 init_conn(struct nvbios_init *init) in init_conn() argument
124 struct nvkm_bios *bios = init->subdev->device->bios; in init_conn()
129 if (init_exec(init)) { in init_conn()
130 if (init->outp) { in init_conn()
131 conn = init->outp->connector; in init_conn()
144 init_nvreg(struct nvbios_init *init, u32 reg) in init_nvreg() argument
146 struct nvkm_devinit *devinit = init->subdev->device->devinit; in init_nvreg()
159 if (init->subdev->device->card_type >= NV_50) { in init_nvreg()
161 reg += init_head(init) * 0x800; in init_nvreg()
166 reg += init_or(init) * 0x800; in init_nvreg()
169 reg += init_link(init) * 0x80; in init_nvreg()
182 init_rd32(struct nvbios_init *init, u32 reg) in init_rd32() argument
184 struct nvkm_device *device = init->subdev->device; in init_rd32()
185 reg = init_nvreg(init, reg); in init_rd32()
186 if (reg != ~0 && init_exec(init)) in init_rd32()
192 init_wr32(struct nvbios_init *init, u32 reg, u32 val) in init_wr32() argument
194 struct nvkm_device *device = init->subdev->device; in init_wr32()
195 reg = init_nvreg(init, reg); in init_wr32()
196 if (reg != ~0 && init_exec(init)) in init_wr32()
201 init_mask(struct nvbios_init *init, u32 reg, u32 mask, u32 val) in init_mask() argument
203 struct nvkm_device *device = init->subdev->device; in init_mask()
204 reg = init_nvreg(init, reg); in init_mask()
205 if (reg != ~0 && init_exec(init)) { in init_mask()
214 init_rdport(struct nvbios_init *init, u16 port) in init_rdport() argument
216 if (init_exec(init)) in init_rdport()
217 return nvkm_rdport(init->subdev->device, init->head, port); in init_rdport()
222 init_wrport(struct nvbios_init *init, u16 port, u8 value) in init_wrport() argument
224 if (init_exec(init)) in init_wrport()
225 nvkm_wrport(init->subdev->device, init->head, port, value); in init_wrport()
229 init_rdvgai(struct nvbios_init *init, u16 port, u8 index) in init_rdvgai() argument
231 struct nvkm_subdev *subdev = init->subdev; in init_rdvgai()
232 if (init_exec(init)) { in init_rdvgai()
233 int head = init->head < 0 ? 0 : init->head; in init_rdvgai()
240 init_wrvgai(struct nvbios_init *init, u16 port, u8 index, u8 value) in init_wrvgai() argument
242 struct nvkm_device *device = init->subdev->device; in init_wrvgai()
247 init->head = 0; in init_wrvgai()
250 if (init_exec(init)) { in init_wrvgai()
251 int head = init->head < 0 ? 0 : init->head; in init_wrvgai()
258 init->head = 1; in init_wrvgai()
263 init_i2c(struct nvbios_init *init, int index) in init_i2c() argument
265 struct nvkm_i2c *i2c = init->subdev->device->i2c; in init_i2c()
270 if (init->outp && init->outp->i2c_upper_default) in init_i2c()
285 init_rdi2cr(struct nvbios_init *init, u8 index, u8 addr, u8 reg) in init_rdi2cr() argument
287 struct i2c_adapter *adap = init_i2c(init, index); in init_rdi2cr()
288 if (adap && init_exec(init)) in init_rdi2cr()
294 init_wri2cr(struct nvbios_init *init, u8 index, u8 addr, u8 reg, u8 val) in init_wri2cr() argument
296 struct i2c_adapter *adap = init_i2c(init, index); in init_wri2cr()
297 if (adap && init_exec(init)) in init_wri2cr()
303 init_aux(struct nvbios_init *init) in init_aux() argument
305 struct nvkm_i2c *i2c = init->subdev->device->i2c; in init_aux()
306 if (!init->outp) { in init_aux()
307 if (init_exec(init)) in init_aux()
311 return nvkm_i2c_aux_find(i2c, init->outp->i2c_index); in init_aux()
315 init_rdauxr(struct nvbios_init *init, u32 addr) in init_rdauxr() argument
317 struct nvkm_i2c_aux *aux = init_aux(init); in init_rdauxr()
320 if (aux && init_exec(init)) { in init_rdauxr()
331 init_wrauxr(struct nvbios_init *init, u32 addr, u8 data) in init_wrauxr() argument
333 struct nvkm_i2c_aux *aux = init_aux(init); in init_wrauxr()
334 if (aux && init_exec(init)) { in init_wrauxr()
344 init_prog_pll(struct nvbios_init *init, u32 id, u32 freq) in init_prog_pll() argument
346 struct nvkm_devinit *devinit = init->subdev->device->devinit; in init_prog_pll()
347 if (init_exec(init)) { in init_prog_pll()
377 init_table_(struct nvbios_init *init, u16 offset, const char *name) in init_table_() argument
379 struct nvkm_bios *bios = init->subdev->device->bios; in init_table_()
411 struct nvbios_init init = { .subdev = &bios->subdev }; in init_script() local
422 data = init_script_table(&init); in init_script()
439 init_ram_restrict_group_count(struct nvbios_init *init) in init_ram_restrict_group_count() argument
441 return nvbios_ramcfg_count(init->subdev->device->bios); in init_ram_restrict_group_count()
445 init_ram_restrict(struct nvbios_init *init) in init_ram_restrict() argument
455 if (!init->ramcfg || init->subdev->device->bios->version.major < 0x70) in init_ram_restrict()
456 init->ramcfg = 0x80000000 | nvbios_ramcfg_index(init->subdev); in init_ram_restrict()
457 return (init->ramcfg & 0x7fffffff); in init_ram_restrict()
461 init_xlat_(struct nvbios_init *init, u8 index, u8 offset) in init_xlat_() argument
463 struct nvkm_bios *bios = init->subdev->device->bios; in init_xlat_()
464 u16 table = init_xlat_table(init); in init_xlat_()
479 init_condition_met(struct nvbios_init *init, u8 cond) in init_condition_met() argument
481 struct nvkm_bios *bios = init->subdev->device->bios; in init_condition_met()
482 u16 table = init_condition_table(init); in init_condition_met()
489 return (init_rd32(init, reg) & msk) == val; in init_condition_met()
495 init_io_condition_met(struct nvbios_init *init, u8 cond) in init_io_condition_met() argument
497 struct nvkm_bios *bios = init->subdev->device->bios; in init_io_condition_met()
498 u16 table = init_io_condition_table(init); in init_io_condition_met()
506 return (init_rdvgai(init, port, index) & mask) == value; in init_io_condition_met()
512 init_io_flag_condition_met(struct nvbios_init *init, u8 cond) in init_io_flag_condition_met() argument
514 struct nvkm_bios *bios = init->subdev->device->bios; in init_io_flag_condition_met()
515 u16 table = init_io_flag_condition_table(init); in init_io_flag_condition_met()
524 u8 ioval = (init_rdvgai(init, port, index) & mask) >> shift; in init_io_flag_condition_met()
539 init_tmds_reg(struct nvbios_init *init, u8 tmds) in init_tmds_reg() argument
555 if (init->outp) { in init_tmds_reg()
556 u32 dacoffset = pramdac_offset[init->outp->or]; in init_tmds_reg()
562 if (init_exec(init)) in init_tmds_reg()
583 init_reserved(struct nvbios_init *init) in init_reserved() argument
585 struct nvkm_bios *bios = init->subdev->device->bios; in init_reserved()
586 u8 opcode = nvbios_rd08(bios, init->offset); in init_reserved()
600 cont(" 0x%02x", nvbios_rd08(bios, init->offset + i)); in init_reserved()
602 init->offset += length; in init_reserved()
610 init_done(struct nvbios_init *init) in init_done() argument
613 init->offset = 0x0000; in init_done()
621 init_io_restrict_prog(struct nvbios_init *init) in init_io_restrict_prog() argument
623 struct nvkm_bios *bios = init->subdev->device->bios; in init_io_restrict_prog()
624 u16 port = nvbios_rd16(bios, init->offset + 1); in init_io_restrict_prog()
625 u8 index = nvbios_rd08(bios, init->offset + 3); in init_io_restrict_prog()
626 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_io_restrict_prog()
627 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_io_restrict_prog()
628 u8 count = nvbios_rd08(bios, init->offset + 6); in init_io_restrict_prog()
629 u32 reg = nvbios_rd32(bios, init->offset + 7); in init_io_restrict_prog()
635 init->offset += 11; in init_io_restrict_prog()
637 conf = (init_rdvgai(init, port, index) & mask) >> shift; in init_io_restrict_prog()
639 u32 data = nvbios_rd32(bios, init->offset); in init_io_restrict_prog()
643 init_wr32(init, reg, data); in init_io_restrict_prog()
648 init->offset += 4; in init_io_restrict_prog()
658 init_repeat(struct nvbios_init *init) in init_repeat() argument
660 struct nvkm_bios *bios = init->subdev->device->bios; in init_repeat()
661 u8 count = nvbios_rd08(bios, init->offset + 1); in init_repeat()
662 u16 repeat = init->repeat; in init_repeat()
665 init->offset += 2; in init_repeat()
667 init->repeat = init->offset; in init_repeat()
668 init->repend = init->offset; in init_repeat()
670 init->offset = init->repeat; in init_repeat()
671 nvbios_exec(init); in init_repeat()
675 init->offset = init->repend; in init_repeat()
676 init->repeat = repeat; in init_repeat()
684 init_io_restrict_pll(struct nvbios_init *init) in init_io_restrict_pll() argument
686 struct nvkm_bios *bios = init->subdev->device->bios; in init_io_restrict_pll()
687 u16 port = nvbios_rd16(bios, init->offset + 1); in init_io_restrict_pll()
688 u8 index = nvbios_rd08(bios, init->offset + 3); in init_io_restrict_pll()
689 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_io_restrict_pll()
690 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_io_restrict_pll()
691 s8 iofc = nvbios_rd08(bios, init->offset + 6); in init_io_restrict_pll()
692 u8 count = nvbios_rd08(bios, init->offset + 7); in init_io_restrict_pll()
693 u32 reg = nvbios_rd32(bios, init->offset + 8); in init_io_restrict_pll()
699 init->offset += 12; in init_io_restrict_pll()
701 conf = (init_rdvgai(init, port, index) & mask) >> shift; in init_io_restrict_pll()
703 u32 freq = nvbios_rd16(bios, init->offset) * 10; in init_io_restrict_pll()
707 if (iofc > 0 && init_io_flag_condition_met(init, iofc)) in init_io_restrict_pll()
709 init_prog_pll(init, reg, freq); in init_io_restrict_pll()
714 init->offset += 2; in init_io_restrict_pll()
724 init_end_repeat(struct nvbios_init *init) in init_end_repeat() argument
727 init->offset += 1; in init_end_repeat()
729 if (init->repeat) { in init_end_repeat()
730 init->repend = init->offset; in init_end_repeat()
731 init->offset = 0; in init_end_repeat()
740 init_copy(struct nvbios_init *init) in init_copy() argument
742 struct nvkm_bios *bios = init->subdev->device->bios; in init_copy()
743 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_copy()
744 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_copy()
745 u8 smask = nvbios_rd08(bios, init->offset + 6); in init_copy()
746 u16 port = nvbios_rd16(bios, init->offset + 7); in init_copy()
747 u8 index = nvbios_rd08(bios, init->offset + 9); in init_copy()
748 u8 mask = nvbios_rd08(bios, init->offset + 10); in init_copy()
755 init->offset += 11; in init_copy()
757 data = init_rdvgai(init, port, index) & mask; in init_copy()
758 data |= init_shift(init_rd32(init, reg), shift) & smask; in init_copy()
759 init_wrvgai(init, port, index, data); in init_copy()
767 init_not(struct nvbios_init *init) in init_not() argument
770 init->offset += 1; in init_not()
771 init_exec_inv(init); in init_not()
779 init_io_flag_condition(struct nvbios_init *init) in init_io_flag_condition() argument
781 struct nvkm_bios *bios = init->subdev->device->bios; in init_io_flag_condition()
782 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_io_flag_condition()
785 init->offset += 2; in init_io_flag_condition()
787 if (!init_io_flag_condition_met(init, cond)) in init_io_flag_condition()
788 init_exec_set(init, false); in init_io_flag_condition()
796 init_generic_condition(struct nvbios_init *init) in init_generic_condition() argument
798 struct nvkm_bios *bios = init->subdev->device->bios; in init_generic_condition()
800 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_generic_condition()
801 u8 size = nvbios_rd08(bios, init->offset + 2); in init_generic_condition()
806 init->offset += 3; in init_generic_condition()
810 if (init_conn(init) != DCB_CONNECTOR_eDP) in init_generic_condition()
811 init_exec_set(init, false); in init_generic_condition()
815 if ( init->outp && in init_generic_condition()
817 (init->outp->or << 0) | in init_generic_condition()
818 (init->outp->sorconf.link << 6), in init_generic_condition()
822 init_exec_set(init, false); in init_generic_condition()
826 if (init_exec(init)) in init_generic_condition()
830 if (!(init_rdauxr(init, 0x0d) & 1)) in init_generic_condition()
831 init_exec_set(init, false); in init_generic_condition()
835 init->offset += size; in init_generic_condition()
845 init_io_mask_or(struct nvbios_init *init) in init_io_mask_or() argument
847 struct nvkm_bios *bios = init->subdev->device->bios; in init_io_mask_or()
848 u8 index = nvbios_rd08(bios, init->offset + 1); in init_io_mask_or()
849 u8 or = init_or(init); in init_io_mask_or()
853 init->offset += 2; in init_io_mask_or()
855 data = init_rdvgai(init, 0x03d4, index); in init_io_mask_or()
856 init_wrvgai(init, 0x03d4, index, data &= ~(1 << or)); in init_io_mask_or()
864 init_io_or(struct nvbios_init *init) in init_io_or() argument
866 struct nvkm_bios *bios = init->subdev->device->bios; in init_io_or()
867 u8 index = nvbios_rd08(bios, init->offset + 1); in init_io_or()
868 u8 or = init_or(init); in init_io_or()
872 init->offset += 2; in init_io_or()
874 data = init_rdvgai(init, 0x03d4, index); in init_io_or()
875 init_wrvgai(init, 0x03d4, index, data | (1 << or)); in init_io_or()
883 init_andn_reg(struct nvbios_init *init) in init_andn_reg() argument
885 struct nvkm_bios *bios = init->subdev->device->bios; in init_andn_reg()
886 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_andn_reg()
887 u32 mask = nvbios_rd32(bios, init->offset + 5); in init_andn_reg()
890 init->offset += 9; in init_andn_reg()
892 init_mask(init, reg, mask, 0); in init_andn_reg()
900 init_or_reg(struct nvbios_init *init) in init_or_reg() argument
902 struct nvkm_bios *bios = init->subdev->device->bios; in init_or_reg()
903 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_or_reg()
904 u32 mask = nvbios_rd32(bios, init->offset + 5); in init_or_reg()
907 init->offset += 9; in init_or_reg()
909 init_mask(init, reg, 0, mask); in init_or_reg()
917 init_idx_addr_latched(struct nvbios_init *init) in init_idx_addr_latched() argument
919 struct nvkm_bios *bios = init->subdev->device->bios; in init_idx_addr_latched()
920 u32 creg = nvbios_rd32(bios, init->offset + 1); in init_idx_addr_latched()
921 u32 dreg = nvbios_rd32(bios, init->offset + 5); in init_idx_addr_latched()
922 u32 mask = nvbios_rd32(bios, init->offset + 9); in init_idx_addr_latched()
923 u32 data = nvbios_rd32(bios, init->offset + 13); in init_idx_addr_latched()
924 u8 count = nvbios_rd08(bios, init->offset + 17); in init_idx_addr_latched()
928 init->offset += 18; in init_idx_addr_latched()
931 u8 iaddr = nvbios_rd08(bios, init->offset + 0); in init_idx_addr_latched()
932 u8 idata = nvbios_rd08(bios, init->offset + 1); in init_idx_addr_latched()
935 init->offset += 2; in init_idx_addr_latched()
937 init_wr32(init, dreg, idata); in init_idx_addr_latched()
938 init_mask(init, creg, ~mask, data | iaddr); in init_idx_addr_latched()
947 init_io_restrict_pll2(struct nvbios_init *init) in init_io_restrict_pll2() argument
949 struct nvkm_bios *bios = init->subdev->device->bios; in init_io_restrict_pll2()
950 u16 port = nvbios_rd16(bios, init->offset + 1); in init_io_restrict_pll2()
951 u8 index = nvbios_rd08(bios, init->offset + 3); in init_io_restrict_pll2()
952 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_io_restrict_pll2()
953 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_io_restrict_pll2()
954 u8 count = nvbios_rd08(bios, init->offset + 6); in init_io_restrict_pll2()
955 u32 reg = nvbios_rd32(bios, init->offset + 7); in init_io_restrict_pll2()
961 init->offset += 11; in init_io_restrict_pll2()
963 conf = (init_rdvgai(init, port, index) & mask) >> shift; in init_io_restrict_pll2()
965 u32 freq = nvbios_rd32(bios, init->offset); in init_io_restrict_pll2()
968 init_prog_pll(init, reg, freq); in init_io_restrict_pll2()
972 init->offset += 4; in init_io_restrict_pll2()
982 init_pll2(struct nvbios_init *init) in init_pll2() argument
984 struct nvkm_bios *bios = init->subdev->device->bios; in init_pll2()
985 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_pll2()
986 u32 freq = nvbios_rd32(bios, init->offset + 5); in init_pll2()
989 init->offset += 9; in init_pll2()
991 init_prog_pll(init, reg, freq); in init_pll2()
999 init_i2c_byte(struct nvbios_init *init) in init_i2c_byte() argument
1001 struct nvkm_bios *bios = init->subdev->device->bios; in init_i2c_byte()
1002 u8 index = nvbios_rd08(bios, init->offset + 1); in init_i2c_byte()
1003 u8 addr = nvbios_rd08(bios, init->offset + 2) >> 1; in init_i2c_byte()
1004 u8 count = nvbios_rd08(bios, init->offset + 3); in init_i2c_byte()
1007 init->offset += 4; in init_i2c_byte()
1010 u8 reg = nvbios_rd08(bios, init->offset + 0); in init_i2c_byte()
1011 u8 mask = nvbios_rd08(bios, init->offset + 1); in init_i2c_byte()
1012 u8 data = nvbios_rd08(bios, init->offset + 2); in init_i2c_byte()
1016 init->offset += 3; in init_i2c_byte()
1018 val = init_rdi2cr(init, index, addr, reg); in init_i2c_byte()
1021 init_wri2cr(init, index, addr, reg, (val & mask) | data); in init_i2c_byte()
1030 init_zm_i2c_byte(struct nvbios_init *init) in init_zm_i2c_byte() argument
1032 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_i2c_byte()
1033 u8 index = nvbios_rd08(bios, init->offset + 1); in init_zm_i2c_byte()
1034 u8 addr = nvbios_rd08(bios, init->offset + 2) >> 1; in init_zm_i2c_byte()
1035 u8 count = nvbios_rd08(bios, init->offset + 3); in init_zm_i2c_byte()
1038 init->offset += 4; in init_zm_i2c_byte()
1041 u8 reg = nvbios_rd08(bios, init->offset + 0); in init_zm_i2c_byte()
1042 u8 data = nvbios_rd08(bios, init->offset + 1); in init_zm_i2c_byte()
1045 init->offset += 2; in init_zm_i2c_byte()
1047 init_wri2cr(init, index, addr, reg, data); in init_zm_i2c_byte()
1056 init_zm_i2c(struct nvbios_init *init) in init_zm_i2c() argument
1058 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_i2c()
1059 u8 index = nvbios_rd08(bios, init->offset + 1); in init_zm_i2c()
1060 u8 addr = nvbios_rd08(bios, init->offset + 2) >> 1; in init_zm_i2c()
1061 u8 count = nvbios_rd08(bios, init->offset + 3); in init_zm_i2c()
1065 init->offset += 4; in init_zm_i2c()
1068 data[i] = nvbios_rd08(bios, init->offset); in init_zm_i2c()
1070 init->offset++; in init_zm_i2c()
1073 if (init_exec(init)) { in init_zm_i2c()
1074 struct i2c_adapter *adap = init_i2c(init, index); in init_zm_i2c()
1090 init_tmds(struct nvbios_init *init) in init_tmds() argument
1092 struct nvkm_bios *bios = init->subdev->device->bios; in init_tmds()
1093 u8 tmds = nvbios_rd08(bios, init->offset + 1); in init_tmds()
1094 u8 addr = nvbios_rd08(bios, init->offset + 2); in init_tmds()
1095 u8 mask = nvbios_rd08(bios, init->offset + 3); in init_tmds()
1096 u8 data = nvbios_rd08(bios, init->offset + 4); in init_tmds()
1097 u32 reg = init_tmds_reg(init, tmds); in init_tmds()
1101 init->offset += 5; in init_tmds()
1106 init_wr32(init, reg + 0, addr | 0x00010000); in init_tmds()
1107 init_wr32(init, reg + 4, data | (init_rd32(init, reg + 4) & mask)); in init_tmds()
1108 init_wr32(init, reg + 0, addr); in init_tmds()
1116 init_zm_tmds_group(struct nvbios_init *init) in init_zm_tmds_group() argument
1118 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_tmds_group()
1119 u8 tmds = nvbios_rd08(bios, init->offset + 1); in init_zm_tmds_group()
1120 u8 count = nvbios_rd08(bios, init->offset + 2); in init_zm_tmds_group()
1121 u32 reg = init_tmds_reg(init, tmds); in init_zm_tmds_group()
1124 init->offset += 3; in init_zm_tmds_group()
1127 u8 addr = nvbios_rd08(bios, init->offset + 0); in init_zm_tmds_group()
1128 u8 data = nvbios_rd08(bios, init->offset + 1); in init_zm_tmds_group()
1131 init->offset += 2; in init_zm_tmds_group()
1133 init_wr32(init, reg + 4, data); in init_zm_tmds_group()
1134 init_wr32(init, reg + 0, addr); in init_zm_tmds_group()
1143 init_cr_idx_adr_latch(struct nvbios_init *init) in init_cr_idx_adr_latch() argument
1145 struct nvkm_bios *bios = init->subdev->device->bios; in init_cr_idx_adr_latch()
1146 u8 addr0 = nvbios_rd08(bios, init->offset + 1); in init_cr_idx_adr_latch()
1147 u8 addr1 = nvbios_rd08(bios, init->offset + 2); in init_cr_idx_adr_latch()
1148 u8 base = nvbios_rd08(bios, init->offset + 3); in init_cr_idx_adr_latch()
1149 u8 count = nvbios_rd08(bios, init->offset + 4); in init_cr_idx_adr_latch()
1153 init->offset += 5; in init_cr_idx_adr_latch()
1155 save0 = init_rdvgai(init, 0x03d4, addr0); in init_cr_idx_adr_latch()
1157 u8 data = nvbios_rd08(bios, init->offset); in init_cr_idx_adr_latch()
1160 init->offset += 1; in init_cr_idx_adr_latch()
1162 init_wrvgai(init, 0x03d4, addr0, base++); in init_cr_idx_adr_latch()
1163 init_wrvgai(init, 0x03d4, addr1, data); in init_cr_idx_adr_latch()
1165 init_wrvgai(init, 0x03d4, addr0, save0); in init_cr_idx_adr_latch()
1173 init_cr(struct nvbios_init *init) in init_cr() argument
1175 struct nvkm_bios *bios = init->subdev->device->bios; in init_cr()
1176 u8 addr = nvbios_rd08(bios, init->offset + 1); in init_cr()
1177 u8 mask = nvbios_rd08(bios, init->offset + 2); in init_cr()
1178 u8 data = nvbios_rd08(bios, init->offset + 3); in init_cr()
1182 init->offset += 4; in init_cr()
1184 val = init_rdvgai(init, 0x03d4, addr) & mask; in init_cr()
1185 init_wrvgai(init, 0x03d4, addr, val | data); in init_cr()
1193 init_zm_cr(struct nvbios_init *init) in init_zm_cr() argument
1195 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_cr()
1196 u8 addr = nvbios_rd08(bios, init->offset + 1); in init_zm_cr()
1197 u8 data = nvbios_rd08(bios, init->offset + 2); in init_zm_cr()
1200 init->offset += 3; in init_zm_cr()
1202 init_wrvgai(init, 0x03d4, addr, data); in init_zm_cr()
1210 init_zm_cr_group(struct nvbios_init *init) in init_zm_cr_group() argument
1212 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_cr_group()
1213 u8 count = nvbios_rd08(bios, init->offset + 1); in init_zm_cr_group()
1216 init->offset += 2; in init_zm_cr_group()
1219 u8 addr = nvbios_rd08(bios, init->offset + 0); in init_zm_cr_group()
1220 u8 data = nvbios_rd08(bios, init->offset + 1); in init_zm_cr_group()
1223 init->offset += 2; in init_zm_cr_group()
1225 init_wrvgai(init, 0x03d4, addr, data); in init_zm_cr_group()
1234 init_condition_time(struct nvbios_init *init) in init_condition_time() argument
1236 struct nvkm_bios *bios = init->subdev->device->bios; in init_condition_time()
1237 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_condition_time()
1238 u8 retry = nvbios_rd08(bios, init->offset + 2); in init_condition_time()
1242 init->offset += 3; in init_condition_time()
1244 if (!init_exec(init)) in init_condition_time()
1248 if (init_condition_met(init, cond)) in init_condition_time()
1253 init_exec_set(init, false); in init_condition_time()
1261 init_ltime(struct nvbios_init *init) in init_ltime() argument
1263 struct nvkm_bios *bios = init->subdev->device->bios; in init_ltime()
1264 u16 msec = nvbios_rd16(bios, init->offset + 1); in init_ltime()
1267 init->offset += 3; in init_ltime()
1269 if (init_exec(init)) in init_ltime()
1278 init_zm_reg_sequence(struct nvbios_init *init) in init_zm_reg_sequence() argument
1280 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_reg_sequence()
1281 u32 base = nvbios_rd32(bios, init->offset + 1); in init_zm_reg_sequence()
1282 u8 count = nvbios_rd08(bios, init->offset + 5); in init_zm_reg_sequence()
1285 init->offset += 6; in init_zm_reg_sequence()
1288 u32 data = nvbios_rd32(bios, init->offset); in init_zm_reg_sequence()
1291 init->offset += 4; in init_zm_reg_sequence()
1293 init_wr32(init, base, data); in init_zm_reg_sequence()
1303 init_pll_indirect(struct nvbios_init *init) in init_pll_indirect() argument
1305 struct nvkm_bios *bios = init->subdev->device->bios; in init_pll_indirect()
1306 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_pll_indirect()
1307 u16 addr = nvbios_rd16(bios, init->offset + 5); in init_pll_indirect()
1312 init->offset += 7; in init_pll_indirect()
1314 init_prog_pll(init, reg, freq); in init_pll_indirect()
1322 init_zm_reg_indirect(struct nvbios_init *init) in init_zm_reg_indirect() argument
1324 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_reg_indirect()
1325 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_zm_reg_indirect()
1326 u16 addr = nvbios_rd16(bios, init->offset + 5); in init_zm_reg_indirect()
1331 init->offset += 7; in init_zm_reg_indirect()
1333 init_wr32(init, addr, data); in init_zm_reg_indirect()
1341 init_sub_direct(struct nvbios_init *init) in init_sub_direct() argument
1343 struct nvkm_bios *bios = init->subdev->device->bios; in init_sub_direct()
1344 u16 addr = nvbios_rd16(bios, init->offset + 1); in init_sub_direct()
1349 if (init_exec(init)) { in init_sub_direct()
1350 save = init->offset; in init_sub_direct()
1351 init->offset = addr; in init_sub_direct()
1352 if (nvbios_exec(init)) { in init_sub_direct()
1356 init->offset = save; in init_sub_direct()
1359 init->offset += 3; in init_sub_direct()
1367 init_jump(struct nvbios_init *init) in init_jump() argument
1369 struct nvkm_bios *bios = init->subdev->device->bios; in init_jump()
1370 u16 offset = nvbios_rd16(bios, init->offset + 1); in init_jump()
1374 if (init_exec(init)) in init_jump()
1375 init->offset = offset; in init_jump()
1377 init->offset += 3; in init_jump()
1385 init_i2c_if(struct nvbios_init *init) in init_i2c_if() argument
1387 struct nvkm_bios *bios = init->subdev->device->bios; in init_i2c_if()
1388 u8 index = nvbios_rd08(bios, init->offset + 1); in init_i2c_if()
1389 u8 addr = nvbios_rd08(bios, init->offset + 2); in init_i2c_if()
1390 u8 reg = nvbios_rd08(bios, init->offset + 3); in init_i2c_if()
1391 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_i2c_if()
1392 u8 data = nvbios_rd08(bios, init->offset + 5); in init_i2c_if()
1397 init->offset += 6; in init_i2c_if()
1398 init_exec_force(init, true); in init_i2c_if()
1400 value = init_rdi2cr(init, index, addr, reg); in init_i2c_if()
1402 init_exec_set(init, false); in init_i2c_if()
1404 init_exec_force(init, false); in init_i2c_if()
1412 init_copy_nv_reg(struct nvbios_init *init) in init_copy_nv_reg() argument
1414 struct nvkm_bios *bios = init->subdev->device->bios; in init_copy_nv_reg()
1415 u32 sreg = nvbios_rd32(bios, init->offset + 1); in init_copy_nv_reg()
1416 u8 shift = nvbios_rd08(bios, init->offset + 5); in init_copy_nv_reg()
1417 u32 smask = nvbios_rd32(bios, init->offset + 6); in init_copy_nv_reg()
1418 u32 sxor = nvbios_rd32(bios, init->offset + 10); in init_copy_nv_reg()
1419 u32 dreg = nvbios_rd32(bios, init->offset + 14); in init_copy_nv_reg()
1420 u32 dmask = nvbios_rd32(bios, init->offset + 18); in init_copy_nv_reg()
1427 init->offset += 22; in init_copy_nv_reg()
1429 data = init_shift(init_rd32(init, sreg), shift); in init_copy_nv_reg()
1430 init_mask(init, dreg, ~dmask, (data & smask) ^ sxor); in init_copy_nv_reg()
1438 init_zm_index_io(struct nvbios_init *init) in init_zm_index_io() argument
1440 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_index_io()
1441 u16 port = nvbios_rd16(bios, init->offset + 1); in init_zm_index_io()
1442 u8 index = nvbios_rd08(bios, init->offset + 3); in init_zm_index_io()
1443 u8 data = nvbios_rd08(bios, init->offset + 4); in init_zm_index_io()
1446 init->offset += 5; in init_zm_index_io()
1448 init_wrvgai(init, port, index, data); in init_zm_index_io()
1456 init_compute_mem(struct nvbios_init *init) in init_compute_mem() argument
1458 struct nvkm_devinit *devinit = init->subdev->device->devinit; in init_compute_mem()
1461 init->offset += 1; in init_compute_mem()
1463 init_exec_force(init, true); in init_compute_mem()
1464 if (init_exec(init)) in init_compute_mem()
1466 init_exec_force(init, false); in init_compute_mem()
1474 init_reset(struct nvbios_init *init) in init_reset() argument
1476 struct nvkm_bios *bios = init->subdev->device->bios; in init_reset()
1477 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_reset()
1478 u32 data1 = nvbios_rd32(bios, init->offset + 5); in init_reset()
1479 u32 data2 = nvbios_rd32(bios, init->offset + 9); in init_reset()
1483 init->offset += 13; in init_reset()
1484 init_exec_force(init, true); in init_reset()
1486 savepci19 = init_mask(init, 0x00184c, 0x00000f00, 0x00000000); in init_reset()
1487 init_wr32(init, reg, data1); in init_reset()
1489 init_wr32(init, reg, data2); in init_reset()
1490 init_wr32(init, 0x00184c, savepci19); in init_reset()
1491 init_mask(init, 0x001850, 0x00000001, 0x00000000); in init_reset()
1493 init_exec_force(init, false); in init_reset()
1501 init_configure_mem_clk(struct nvbios_init *init) in init_configure_mem_clk() argument
1503 u16 mdata = bmp_mem_init_table(init->subdev->device->bios); in init_configure_mem_clk()
1505 mdata += (init_rdvgai(init, 0x03d4, 0x3c) >> 4) * 66; in init_configure_mem_clk()
1510 init_configure_mem(struct nvbios_init *init) in init_configure_mem() argument
1512 struct nvkm_bios *bios = init->subdev->device->bios; in init_configure_mem()
1517 init->offset += 1; in init_configure_mem()
1520 init_done(init); in init_configure_mem()
1523 init_exec_force(init, true); in init_configure_mem()
1525 mdata = init_configure_mem_clk(init); in init_configure_mem()
1531 data = init_rdvgai(init, 0x03c4, 0x01); in init_configure_mem()
1532 init_wrvgai(init, 0x03c4, 0x01, data | 0x20); in init_configure_mem()
1549 init_wr32(init, addr, data); in init_configure_mem()
1552 init_exec_force(init, false); in init_configure_mem()
1560 init_configure_clk(struct nvbios_init *init) in init_configure_clk() argument
1562 struct nvkm_bios *bios = init->subdev->device->bios; in init_configure_clk()
1566 init->offset += 1; in init_configure_clk()
1569 init_done(init); in init_configure_clk()
1572 init_exec_force(init, true); in init_configure_clk()
1574 mdata = init_configure_mem_clk(init); in init_configure_clk()
1578 init_prog_pll(init, 0x680500, clock); in init_configure_clk()
1584 init_prog_pll(init, 0x680504, clock); in init_configure_clk()
1586 init_exec_force(init, false); in init_configure_clk()
1594 init_configure_preinit(struct nvbios_init *init) in init_configure_preinit() argument
1596 struct nvkm_bios *bios = init->subdev->device->bios; in init_configure_preinit()
1600 init->offset += 1; in init_configure_preinit()
1603 init_done(init); in init_configure_preinit()
1606 init_exec_force(init, true); in init_configure_preinit()
1608 strap = init_rd32(init, 0x101000); in init_configure_preinit()
1610 init_wrvgai(init, 0x03d4, 0x3c, strap); in init_configure_preinit()
1612 init_exec_force(init, false); in init_configure_preinit()
1620 init_io(struct nvbios_init *init) in init_io() argument
1622 struct nvkm_bios *bios = init->subdev->device->bios; in init_io()
1623 u16 port = nvbios_rd16(bios, init->offset + 1); in init_io()
1624 u8 mask = nvbios_rd16(bios, init->offset + 3); in init_io()
1625 u8 data = nvbios_rd16(bios, init->offset + 4); in init_io()
1629 init->offset += 5; in init_io()
1637 init_mask(init, 0x614100, 0xf0800000, 0x00800000); in init_io()
1638 init_mask(init, 0x00e18c, 0x00020000, 0x00020000); in init_io()
1639 init_mask(init, 0x614900, 0xf0800000, 0x00800000); in init_io()
1640 init_mask(init, 0x000200, 0x40000000, 0x00000000); in init_io()
1642 init_mask(init, 0x00e18c, 0x00020000, 0x00000000); in init_io()
1643 init_mask(init, 0x000200, 0x40000000, 0x40000000); in init_io()
1644 init_wr32(init, 0x614100, 0x00800018); in init_io()
1645 init_wr32(init, 0x614900, 0x00800018); in init_io()
1647 init_wr32(init, 0x614100, 0x10000018); in init_io()
1648 init_wr32(init, 0x614900, 0x10000018); in init_io()
1651 value = init_rdport(init, port) & mask; in init_io()
1652 init_wrport(init, port, data | value); in init_io()
1660 init_sub(struct nvbios_init *init) in init_sub() argument
1662 struct nvkm_bios *bios = init->subdev->device->bios; in init_sub()
1663 u8 index = nvbios_rd08(bios, init->offset + 1); in init_sub()
1669 if (addr && init_exec(init)) { in init_sub()
1670 save = init->offset; in init_sub()
1671 init->offset = addr; in init_sub()
1672 if (nvbios_exec(init)) { in init_sub()
1676 init->offset = save; in init_sub()
1679 init->offset += 2; in init_sub()
1687 init_ram_condition(struct nvbios_init *init) in init_ram_condition() argument
1689 struct nvkm_bios *bios = init->subdev->device->bios; in init_ram_condition()
1690 u8 mask = nvbios_rd08(bios, init->offset + 1); in init_ram_condition()
1691 u8 value = nvbios_rd08(bios, init->offset + 2); in init_ram_condition()
1695 init->offset += 3; in init_ram_condition()
1697 if ((init_rd32(init, 0x100000) & mask) != value) in init_ram_condition()
1698 init_exec_set(init, false); in init_ram_condition()
1706 init_nv_reg(struct nvbios_init *init) in init_nv_reg() argument
1708 struct nvkm_bios *bios = init->subdev->device->bios; in init_nv_reg()
1709 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_nv_reg()
1710 u32 mask = nvbios_rd32(bios, init->offset + 5); in init_nv_reg()
1711 u32 data = nvbios_rd32(bios, init->offset + 9); in init_nv_reg()
1714 init->offset += 13; in init_nv_reg()
1716 init_mask(init, reg, ~mask, data); in init_nv_reg()
1724 init_macro(struct nvbios_init *init) in init_macro() argument
1726 struct nvkm_bios *bios = init->subdev->device->bios; in init_macro()
1727 u8 macro = nvbios_rd08(bios, init->offset + 1); in init_macro()
1732 table = init_macro_table(init); in init_macro()
1737 init_wr32(init, addr, data); in init_macro()
1740 init->offset += 2; in init_macro()
1748 init_resume(struct nvbios_init *init) in init_resume() argument
1751 init->offset += 1; in init_resume()
1752 init_exec_set(init, true); in init_resume()
1760 init_strap_condition(struct nvbios_init *init) in init_strap_condition() argument
1762 struct nvkm_bios *bios = init->subdev->device->bios; in init_strap_condition()
1763 u32 mask = nvbios_rd32(bios, init->offset + 1); in init_strap_condition()
1764 u32 value = nvbios_rd32(bios, init->offset + 5); in init_strap_condition()
1767 init->offset += 9; in init_strap_condition()
1769 if ((init_rd32(init, 0x101000) & mask) != value) in init_strap_condition()
1770 init_exec_set(init, false); in init_strap_condition()
1778 init_time(struct nvbios_init *init) in init_time() argument
1780 struct nvkm_bios *bios = init->subdev->device->bios; in init_time()
1781 u16 usec = nvbios_rd16(bios, init->offset + 1); in init_time()
1784 init->offset += 3; in init_time()
1786 if (init_exec(init)) { in init_time()
1799 init_condition(struct nvbios_init *init) in init_condition() argument
1801 struct nvkm_bios *bios = init->subdev->device->bios; in init_condition()
1802 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_condition()
1805 init->offset += 2; in init_condition()
1807 if (!init_condition_met(init, cond)) in init_condition()
1808 init_exec_set(init, false); in init_condition()
1816 init_io_condition(struct nvbios_init *init) in init_io_condition() argument
1818 struct nvkm_bios *bios = init->subdev->device->bios; in init_io_condition()
1819 u8 cond = nvbios_rd08(bios, init->offset + 1); in init_io_condition()
1822 init->offset += 2; in init_io_condition()
1824 if (!init_io_condition_met(init, cond)) in init_io_condition()
1825 init_exec_set(init, false); in init_io_condition()
1833 init_zm_reg16(struct nvbios_init *init) in init_zm_reg16() argument
1835 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_reg16()
1836 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_reg16()
1837 u16 data = nvbios_rd16(bios, init->offset + 5); in init_zm_reg16()
1840 init->offset += 7; in init_zm_reg16()
1842 init_wr32(init, addr, data); in init_zm_reg16()
1850 init_index_io(struct nvbios_init *init) in init_index_io() argument
1852 struct nvkm_bios *bios = init->subdev->device->bios; in init_index_io()
1853 u16 port = nvbios_rd16(bios, init->offset + 1); in init_index_io()
1854 u8 index = nvbios_rd16(bios, init->offset + 3); in init_index_io()
1855 u8 mask = nvbios_rd08(bios, init->offset + 4); in init_index_io()
1856 u8 data = nvbios_rd08(bios, init->offset + 5); in init_index_io()
1861 init->offset += 6; in init_index_io()
1863 value = init_rdvgai(init, port, index) & mask; in init_index_io()
1864 init_wrvgai(init, port, index, data | value); in init_index_io()
1872 init_pll(struct nvbios_init *init) in init_pll() argument
1874 struct nvkm_bios *bios = init->subdev->device->bios; in init_pll()
1875 u32 reg = nvbios_rd32(bios, init->offset + 1); in init_pll()
1876 u32 freq = nvbios_rd16(bios, init->offset + 5) * 10; in init_pll()
1879 init->offset += 7; in init_pll()
1881 init_prog_pll(init, reg, freq); in init_pll()
1889 init_zm_reg(struct nvbios_init *init) in init_zm_reg() argument
1891 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_reg()
1892 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_reg()
1893 u32 data = nvbios_rd32(bios, init->offset + 5); in init_zm_reg()
1896 init->offset += 9; in init_zm_reg()
1901 init_wr32(init, addr, data); in init_zm_reg()
1909 init_ram_restrict_pll(struct nvbios_init *init) in init_ram_restrict_pll() argument
1911 struct nvkm_bios *bios = init->subdev->device->bios; in init_ram_restrict_pll()
1912 u8 type = nvbios_rd08(bios, init->offset + 1); in init_ram_restrict_pll()
1913 u8 count = init_ram_restrict_group_count(init); in init_ram_restrict_pll()
1914 u8 strap = init_ram_restrict(init); in init_ram_restrict_pll()
1918 init->offset += 2; in init_ram_restrict_pll()
1921 u32 freq = nvbios_rd32(bios, init->offset); in init_ram_restrict_pll()
1925 init_prog_pll(init, type, freq); in init_ram_restrict_pll()
1930 init->offset += 4; in init_ram_restrict_pll()
1939 init_gpio(struct nvbios_init *init) in init_gpio() argument
1941 struct nvkm_gpio *gpio = init->subdev->device->gpio; in init_gpio()
1944 init->offset += 1; in init_gpio()
1946 if (init_exec(init)) in init_gpio()
1955 init_ram_restrict_zm_reg_group(struct nvbios_init *init) in init_ram_restrict_zm_reg_group() argument
1957 struct nvkm_bios *bios = init->subdev->device->bios; in init_ram_restrict_zm_reg_group()
1958 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_ram_restrict_zm_reg_group()
1959 u8 incr = nvbios_rd08(bios, init->offset + 5); in init_ram_restrict_zm_reg_group()
1960 u8 num = nvbios_rd08(bios, init->offset + 6); in init_ram_restrict_zm_reg_group()
1961 u8 count = init_ram_restrict_group_count(init); in init_ram_restrict_zm_reg_group()
1962 u8 index = init_ram_restrict(init); in init_ram_restrict_zm_reg_group()
1967 init->offset += 7; in init_ram_restrict_zm_reg_group()
1972 u32 data = nvbios_rd32(bios, init->offset); in init_ram_restrict_zm_reg_group()
1976 init_wr32(init, addr, data); in init_ram_restrict_zm_reg_group()
1981 init->offset += 4; in init_ram_restrict_zm_reg_group()
1993 init_copy_zm_reg(struct nvbios_init *init) in init_copy_zm_reg() argument
1995 struct nvkm_bios *bios = init->subdev->device->bios; in init_copy_zm_reg()
1996 u32 sreg = nvbios_rd32(bios, init->offset + 1); in init_copy_zm_reg()
1997 u32 dreg = nvbios_rd32(bios, init->offset + 5); in init_copy_zm_reg()
2000 init->offset += 9; in init_copy_zm_reg()
2002 init_wr32(init, dreg, init_rd32(init, sreg)); in init_copy_zm_reg()
2010 init_zm_reg_group(struct nvbios_init *init) in init_zm_reg_group() argument
2012 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_reg_group()
2013 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_reg_group()
2014 u8 count = nvbios_rd08(bios, init->offset + 5); in init_zm_reg_group()
2017 init->offset += 6; in init_zm_reg_group()
2020 u32 data = nvbios_rd32(bios, init->offset); in init_zm_reg_group()
2022 init_wr32(init, addr, data); in init_zm_reg_group()
2023 init->offset += 4; in init_zm_reg_group()
2032 init_xlat(struct nvbios_init *init) in init_xlat() argument
2034 struct nvkm_bios *bios = init->subdev->device->bios; in init_xlat()
2035 u32 saddr = nvbios_rd32(bios, init->offset + 1); in init_xlat()
2036 u8 sshift = nvbios_rd08(bios, init->offset + 5); in init_xlat()
2037 u8 smask = nvbios_rd08(bios, init->offset + 6); in init_xlat()
2038 u8 index = nvbios_rd08(bios, init->offset + 7); in init_xlat()
2039 u32 daddr = nvbios_rd32(bios, init->offset + 8); in init_xlat()
2040 u32 dmask = nvbios_rd32(bios, init->offset + 12); in init_xlat()
2041 u8 shift = nvbios_rd08(bios, init->offset + 16); in init_xlat()
2048 init->offset += 17; in init_xlat()
2050 data = init_shift(init_rd32(init, saddr), sshift) & smask; in init_xlat()
2051 data = init_xlat_(init, index, data) << shift; in init_xlat()
2052 init_mask(init, daddr, ~dmask, data); in init_xlat()
2060 init_zm_mask_add(struct nvbios_init *init) in init_zm_mask_add() argument
2062 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_mask_add()
2063 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_mask_add()
2064 u32 mask = nvbios_rd32(bios, init->offset + 5); in init_zm_mask_add()
2065 u32 add = nvbios_rd32(bios, init->offset + 9); in init_zm_mask_add()
2069 init->offset += 13; in init_zm_mask_add()
2071 data = init_rd32(init, addr); in init_zm_mask_add()
2073 init_wr32(init, addr, data); in init_zm_mask_add()
2081 init_auxch(struct nvbios_init *init) in init_auxch() argument
2083 struct nvkm_bios *bios = init->subdev->device->bios; in init_auxch()
2084 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_auxch()
2085 u8 count = nvbios_rd08(bios, init->offset + 5); in init_auxch()
2088 init->offset += 6; in init_auxch()
2091 u8 mask = nvbios_rd08(bios, init->offset + 0); in init_auxch()
2092 u8 data = nvbios_rd08(bios, init->offset + 1); in init_auxch()
2094 mask = init_rdauxr(init, addr) & mask; in init_auxch()
2095 init_wrauxr(init, addr, mask | data); in init_auxch()
2096 init->offset += 2; in init_auxch()
2105 init_zm_auxch(struct nvbios_init *init) in init_zm_auxch() argument
2107 struct nvkm_bios *bios = init->subdev->device->bios; in init_zm_auxch()
2108 u32 addr = nvbios_rd32(bios, init->offset + 1); in init_zm_auxch()
2109 u8 count = nvbios_rd08(bios, init->offset + 5); in init_zm_auxch()
2112 init->offset += 6; in init_zm_auxch()
2115 u8 data = nvbios_rd08(bios, init->offset + 0); in init_zm_auxch()
2117 init_wrauxr(init, addr, data); in init_zm_auxch()
2118 init->offset += 1; in init_zm_auxch()
2127 init_i2c_long_if(struct nvbios_init *init) in init_i2c_long_if() argument
2129 struct nvkm_bios *bios = init->subdev->device->bios; in init_i2c_long_if()
2130 u8 index = nvbios_rd08(bios, init->offset + 1); in init_i2c_long_if()
2131 u8 addr = nvbios_rd08(bios, init->offset + 2) >> 1; in init_i2c_long_if()
2132 u8 reglo = nvbios_rd08(bios, init->offset + 3); in init_i2c_long_if()
2133 u8 reghi = nvbios_rd08(bios, init->offset + 4); in init_i2c_long_if()
2134 u8 mask = nvbios_rd08(bios, init->offset + 5); in init_i2c_long_if()
2135 u8 data = nvbios_rd08(bios, init->offset + 6); in init_i2c_long_if()
2141 init->offset += 7; in init_i2c_long_if()
2143 adap = init_i2c(init, index); in init_i2c_long_if()
2158 init_exec_set(init, false); in init_i2c_long_if()
2166 init_gpio_ne(struct nvbios_init *init) in init_gpio_ne() argument
2168 struct nvkm_bios *bios = init->subdev->device->bios; in init_gpio_ne()
2171 u8 count = nvbios_rd08(bios, init->offset + 1); in init_gpio_ne()
2176 init->offset += 2; in init_gpio_ne()
2178 for (i = init->offset; i < init->offset + count; i++) in init_gpio_ne()
2184 for (i = init->offset; i < init->offset + count; i++) { in init_gpio_ne()
2190 if (i == (init->offset + count)) { in init_gpio_ne()
2192 if (init_exec(init)) in init_gpio_ne()
2199 init->offset += count; in init_gpio_ne()
2277 nvbios_exec(struct nvbios_init *init) in nvbios_exec() argument
2279 struct nvkm_bios *bios = init->subdev->device->bios; in nvbios_exec()
2281 init->nested++; in nvbios_exec()
2282 while (init->offset) { in nvbios_exec()
2283 u8 opcode = nvbios_rd08(bios, init->offset); in nvbios_exec()
2290 init_opcode[opcode].exec(init); in nvbios_exec()
2292 init->nested--; in nvbios_exec()
2308 init.execute = execute ? 1 : 0; in nvbios_post()
2317 init.execute = execute ? 1 : 0; in nvbios_post()