Lines Matching refs:sc

60 ipw2100_csr_get8(struct ipw2100_softc *sc, uint32_t off)  in ipw2100_csr_get8()  argument
62 return (ddi_get8(sc->sc_ioh, (uint8_t *)(sc->sc_regs + off))); in ipw2100_csr_get8()
66 ipw2100_csr_get16(struct ipw2100_softc *sc, uint32_t off) in ipw2100_csr_get16() argument
68 return (ddi_get16(sc->sc_ioh, in ipw2100_csr_get16()
69 (uint16_t *)((uintptr_t)sc->sc_regs + off))); in ipw2100_csr_get16()
73 ipw2100_csr_get32(struct ipw2100_softc *sc, uint32_t off) in ipw2100_csr_get32() argument
75 return (ddi_get32(sc->sc_ioh, in ipw2100_csr_get32()
76 (uint32_t *)((uintptr_t)sc->sc_regs + off))); in ipw2100_csr_get32()
80 ipw2100_csr_rep_get16(struct ipw2100_softc *sc, in ipw2100_csr_rep_get16() argument
83 ddi_rep_get16(sc->sc_ioh, buf, in ipw2100_csr_rep_get16()
84 (uint16_t *)((uintptr_t)sc->sc_regs + off), in ipw2100_csr_rep_get16()
89 ipw2100_csr_put8(struct ipw2100_softc *sc, uint32_t off, uint8_t val) in ipw2100_csr_put8() argument
91 ddi_put8(sc->sc_ioh, (uint8_t *)(sc->sc_regs + off), val); in ipw2100_csr_put8()
95 ipw2100_csr_put16(struct ipw2100_softc *sc, uint32_t off, uint16_t val) in ipw2100_csr_put16() argument
97 ddi_put16(sc->sc_ioh, in ipw2100_csr_put16()
98 (uint16_t *)((uintptr_t)sc->sc_regs + off), val); in ipw2100_csr_put16()
102 ipw2100_csr_put32(struct ipw2100_softc *sc, uint32_t off, uint32_t val) in ipw2100_csr_put32() argument
104 ddi_put32(sc->sc_ioh, in ipw2100_csr_put32()
105 (uint32_t *)((uintptr_t)sc->sc_regs + off), val); in ipw2100_csr_put32()
109 ipw2100_csr_rep_put8(struct ipw2100_softc *sc, in ipw2100_csr_rep_put8() argument
112 ddi_rep_put8(sc->sc_ioh, buf, (uint8_t *)(sc->sc_regs + off), in ipw2100_csr_rep_put8()
117 ipw2100_imem_get8(struct ipw2100_softc *sc, int32_t addr) in ipw2100_imem_get8() argument
119 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr); in ipw2100_imem_get8()
121 return (ipw2100_csr_get8(sc, IPW2100_CSR_INDIRECT_DATA)); in ipw2100_imem_get8()
125 ipw2100_imem_get16(struct ipw2100_softc *sc, uint32_t addr) in ipw2100_imem_get16() argument
127 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr); in ipw2100_imem_get16()
129 return (ipw2100_csr_get16(sc, IPW2100_CSR_INDIRECT_DATA)); in ipw2100_imem_get16()
133 ipw2100_imem_get32(struct ipw2100_softc *sc, uint32_t addr) in ipw2100_imem_get32() argument
135 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr); in ipw2100_imem_get32()
137 return (ipw2100_csr_get32(sc, IPW2100_CSR_INDIRECT_DATA)); in ipw2100_imem_get32()
141 ipw2100_imem_rep_get16(struct ipw2100_softc *sc, in ipw2100_imem_rep_get16() argument
144 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr); in ipw2100_imem_rep_get16()
145 ipw2100_csr_rep_get16(sc, IPW2100_CSR_INDIRECT_DATA, buf, cnt); in ipw2100_imem_rep_get16()
149 ipw2100_imem_put8(struct ipw2100_softc *sc, uint32_t addr, uint8_t val) in ipw2100_imem_put8() argument
151 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr); in ipw2100_imem_put8()
152 ipw2100_csr_put8(sc, IPW2100_CSR_INDIRECT_DATA, val); in ipw2100_imem_put8()
156 ipw2100_imem_put16(struct ipw2100_softc *sc, uint32_t addr, uint16_t val) in ipw2100_imem_put16() argument
158 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr); in ipw2100_imem_put16()
159 ipw2100_csr_put16(sc, IPW2100_CSR_INDIRECT_DATA, val); in ipw2100_imem_put16()
163 ipw2100_imem_put32(struct ipw2100_softc *sc, uint32_t addr, uint32_t val) in ipw2100_imem_put32() argument
165 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr); in ipw2100_imem_put32()
166 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_DATA, val); in ipw2100_imem_put32()
170 ipw2100_imem_rep_put8(struct ipw2100_softc *sc, in ipw2100_imem_rep_put8() argument
173 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr); in ipw2100_imem_rep_put8()
174 ipw2100_csr_rep_put8(sc, IPW2100_CSR_INDIRECT_DATA, buf, cnt); in ipw2100_imem_rep_put8()
178 ipw2100_imem_getbuf(struct ipw2100_softc *sc, in ipw2100_imem_getbuf() argument
182 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr & ~3); in ipw2100_imem_getbuf()
183 *buf = ipw2100_csr_get8(sc, in ipw2100_imem_getbuf()
189 ipw2100_imem_putbuf(struct ipw2100_softc *sc, in ipw2100_imem_putbuf() argument
193 ipw2100_csr_put32(sc, IPW2100_CSR_INDIRECT_ADDR, addr & ~3); in ipw2100_imem_putbuf()
194 ipw2100_csr_put8(sc, in ipw2100_imem_putbuf()
200 ipw2100_rom_control(struct ipw2100_softc *sc, uint32_t val) in ipw2100_rom_control() argument
202 ipw2100_imem_put32(sc, IPW2100_IMEM_EEPROM_CTL, val); in ipw2100_rom_control()
208 ipw2100_table1_get8(struct ipw2100_softc *sc, uint32_t off) in ipw2100_table1_get8() argument
210 uint32_t addr = ipw2100_imem_get32(sc, sc->sc_table1_base + off); in ipw2100_table1_get8()
211 return (ipw2100_imem_get8(sc, addr)); in ipw2100_table1_get8()
215 ipw2100_table1_get32(struct ipw2100_softc *sc, uint32_t off) in ipw2100_table1_get32() argument
217 uint32_t addr = ipw2100_imem_get32(sc, sc->sc_table1_base + off); in ipw2100_table1_get32()
218 return (ipw2100_imem_get32(sc, addr)); in ipw2100_table1_get32()
222 ipw2100_table1_put32(struct ipw2100_softc *sc, uint32_t off, uint32_t val) in ipw2100_table1_put32() argument
224 uint32_t addr = ipw2100_imem_get32(sc, sc->sc_table1_base + off); in ipw2100_table1_put32()
225 ipw2100_imem_put32(sc, addr, val); in ipw2100_table1_put32()
229 ipw2100_table2_getbuf(struct ipw2100_softc *sc, in ipw2100_table2_getbuf() argument
236 addr = ipw2100_imem_get32(sc, sc->sc_table2_base + off); in ipw2100_table2_getbuf()
237 info = ipw2100_imem_get32(sc, in ipw2100_table2_getbuf()
238 sc->sc_table2_base + off + sizeof (uint32_t)); in ipw2100_table2_getbuf()
245 IPW2100_WARN((sc->sc_dip, CE_WARN, in ipw2100_table2_getbuf()
252 ipw2100_imem_getbuf(sc, addr, buf, total); in ipw2100_table2_getbuf()
258 ipw2100_rom_get16(struct ipw2100_softc *sc, uint8_t addr) in ipw2100_rom_get16() argument
268 ipw2100_rom_control(sc, 0); in ipw2100_rom_get16()
269 ipw2100_rom_control(sc, IPW2100_EEPROM_S); in ipw2100_rom_get16()
270 ipw2100_rom_control(sc, IPW2100_EEPROM_S | IPW2100_EEPROM_C); in ipw2100_rom_get16()
271 ipw2100_rom_control(sc, IPW2100_EEPROM_S); in ipw2100_rom_get16()
273 ipw2100_rom_control(sc, IPW2100_EEPROM_S | IPW2100_EEPROM_D); in ipw2100_rom_get16()
274 ipw2100_rom_control(sc, IPW2100_EEPROM_S in ipw2100_rom_get16()
277 ipw2100_rom_control(sc, IPW2100_EEPROM_S | IPW2100_EEPROM_D); in ipw2100_rom_get16()
278 ipw2100_rom_control(sc, IPW2100_EEPROM_S in ipw2100_rom_get16()
280 ipw2100_rom_control(sc, IPW2100_EEPROM_S); in ipw2100_rom_get16()
281 ipw2100_rom_control(sc, IPW2100_EEPROM_S | IPW2100_EEPROM_C); in ipw2100_rom_get16()
286 ipw2100_rom_control(sc, IPW2100_EEPROM_S in ipw2100_rom_get16()
288 ipw2100_rom_control(sc, IPW2100_EEPROM_S in ipw2100_rom_get16()
293 ipw2100_rom_control(sc, IPW2100_EEPROM_S); in ipw2100_rom_get16()
300 ipw2100_rom_control(sc, IPW2100_EEPROM_S | IPW2100_EEPROM_C); in ipw2100_rom_get16()
301 ipw2100_rom_control(sc, IPW2100_EEPROM_S); in ipw2100_rom_get16()
302 tmp = ipw2100_imem_get32(sc, IPW2100_IMEM_EEPROM_CTL); in ipw2100_rom_get16()
307 ipw2100_rom_control(sc, 0); in ipw2100_rom_get16()
310 ipw2100_rom_control(sc, IPW2100_EEPROM_S); in ipw2100_rom_get16()
311 ipw2100_rom_control(sc, 0); in ipw2100_rom_get16()
312 ipw2100_rom_control(sc, IPW2100_EEPROM_C); in ipw2100_rom_get16()
337 ipw2100_cache_firmware(struct ipw2100_softc *sc) in ipw2100_cache_firmware() argument
342 IPW2100_DBG(IPW2100_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2100_cache_firmware()
345 sc->sc_fw.bin_base = bin; in ipw2100_cache_firmware()
346 sc->sc_fw.bin_size = sizeof (ipw2100_firmware_bin); in ipw2100_cache_firmware()
349 IPW2100_WARN((sc->sc_dip, CE_WARN, in ipw2100_cache_firmware()
355 sc->sc_fw.fw_base = bin + sizeof (struct ipw2100_firmware_hdr); in ipw2100_cache_firmware()
356 sc->sc_fw.fw_size = LE_32(h->fw_size); in ipw2100_cache_firmware()
357 sc->sc_fw.uc_base = sc->sc_fw.fw_base + sc->sc_fw.fw_size; in ipw2100_cache_firmware()
358 sc->sc_fw.uc_size = LE_32(h->uc_size); in ipw2100_cache_firmware()
360 sc->sc_flags |= IPW2100_FLAG_FW_CACHED; in ipw2100_cache_firmware()
362 IPW2100_DBG(IPW2100_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2100_cache_firmware()
374 ipw2100_free_firmware(struct ipw2100_softc *sc) in ipw2100_free_firmware() argument
376 sc->sc_flags &= ~IPW2100_FLAG_FW_CACHED; in ipw2100_free_firmware()
385 ipw2100_load_uc(struct ipw2100_softc *sc) in ipw2100_load_uc() argument
389 ipw2100_imem_put32(sc, 0x3000e0, 0x80000000); in ipw2100_load_uc()
390 ipw2100_csr_put32(sc, IPW2100_CSR_RST, 0); in ipw2100_load_uc()
392 ipw2100_imem_put16(sc, 0x220000, 0x0703); in ipw2100_load_uc()
393 ipw2100_imem_put16(sc, 0x220000, 0x0707); in ipw2100_load_uc()
395 ipw2100_imem_put8(sc, 0x210014, 0x72); in ipw2100_load_uc()
396 ipw2100_imem_put8(sc, 0x210014, 0x72); in ipw2100_load_uc()
398 ipw2100_imem_put8(sc, 0x210000, 0x40); in ipw2100_load_uc()
399 ipw2100_imem_put8(sc, 0x210000, 0x00); in ipw2100_load_uc()
400 ipw2100_imem_put8(sc, 0x210000, 0x40); in ipw2100_load_uc()
402 ipw2100_imem_rep_put8(sc, 0x210010, in ipw2100_load_uc()
403 sc->sc_fw.uc_base, sc->sc_fw.uc_size); in ipw2100_load_uc()
405 ipw2100_imem_put8(sc, 0x210000, 0x00); in ipw2100_load_uc()
406 ipw2100_imem_put8(sc, 0x210000, 0x00); in ipw2100_load_uc()
407 ipw2100_imem_put8(sc, 0x210000, 0x80); in ipw2100_load_uc()
409 ipw2100_imem_put16(sc, 0x220000, 0x0703); in ipw2100_load_uc()
410 ipw2100_imem_put16(sc, 0x220000, 0x0707); in ipw2100_load_uc()
412 ipw2100_imem_put8(sc, 0x210014, 0x72); in ipw2100_load_uc()
413 ipw2100_imem_put8(sc, 0x210014, 0x72); in ipw2100_load_uc()
415 ipw2100_imem_put8(sc, 0x210000, 0x00); in ipw2100_load_uc()
416 ipw2100_imem_put8(sc, 0x210000, 0x80); in ipw2100_load_uc()
420 if (ipw2100_imem_get8(sc, 0x210000) & 1) in ipw2100_load_uc()
427 ipw2100_imem_put32(sc, 0x3000e0, 0); in ipw2100_load_uc()
433 ipw2100_load_fw(struct ipw2100_softc *sc) in ipw2100_load_fw() argument
440 IPW2100_DBG(IPW2100_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2100_load_fw()
443 p = sc->sc_fw.fw_base; in ipw2100_load_fw()
444 e = sc->sc_fw.fw_base + sc->sc_fw.fw_size; in ipw2100_load_fw()
450 IPW2100_WARN((sc->sc_dip, CE_CONT, in ipw2100_load_fw()
457 IPW2100_WARN((sc->sc_dip, CE_CONT, in ipw2100_load_fw()
462 ipw2100_imem_putbuf(sc, dst, p, len); in ipw2100_load_fw()
466 ipw2100_csr_put32(sc, IPW2100_CSR_IO, in ipw2100_load_fw()
470 mutex_enter(&sc->sc_ilock); in ipw2100_load_fw()
475 ipw2100_csr_put32(sc, IPW2100_CSR_INTR_MASK, IPW2100_INTR_MASK_ALL); in ipw2100_load_fw()
477 ipw2100_csr_put32(sc, IPW2100_CSR_RST, 0); in ipw2100_load_fw()
478 ipw2100_csr_put32(sc, IPW2100_CSR_CTL, in ipw2100_load_fw()
479 ipw2100_csr_get32(sc, IPW2100_CSR_CTL) | IPW2100_CTL_ALLOW_STANDBY); in ipw2100_load_fw()
485 while (!(sc->sc_flags & IPW2100_FLAG_FW_INITED)) { in ipw2100_load_fw()
489 if (cv_reltimedwait(&sc->sc_fw_cond, &sc->sc_ilock, clk, in ipw2100_load_fw()
493 mutex_exit(&sc->sc_ilock); in ipw2100_load_fw()
495 ipw2100_csr_put32(sc, IPW2100_CSR_IO, in ipw2100_load_fw()
496 ipw2100_csr_get32(sc, IPW2100_CSR_IO) | in ipw2100_load_fw()
499 if (!(sc->sc_flags & IPW2100_FLAG_FW_INITED)) { in ipw2100_load_fw()
500 IPW2100_DBG(IPW2100_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2100_load_fw()
505 IPW2100_DBG(IPW2100_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2100_load_fw()