Lines Matching refs:sc
60 ipw2200_csr_get8(struct ipw2200_softc *sc, uint32_t off) in ipw2200_csr_get8() argument
62 return (ddi_get8(sc->sc_ioh, (uint8_t *)(sc->sc_regs + off))); in ipw2200_csr_get8()
66 ipw2200_csr_get16(struct ipw2200_softc *sc, uint32_t off) in ipw2200_csr_get16() argument
68 return (ddi_get16(sc->sc_ioh, in ipw2200_csr_get16()
69 (uint16_t *)((uintptr_t)sc->sc_regs + off))); in ipw2200_csr_get16()
73 ipw2200_csr_get32(struct ipw2200_softc *sc, uint32_t off) in ipw2200_csr_get32() argument
75 return (ddi_get32(sc->sc_ioh, in ipw2200_csr_get32()
76 (uint32_t *)((uintptr_t)sc->sc_regs + off))); in ipw2200_csr_get32()
80 ipw2200_csr_getbuf32(struct ipw2200_softc *sc, uint32_t off, in ipw2200_csr_getbuf32() argument
83 ddi_rep_get32(sc->sc_ioh, buf, in ipw2200_csr_getbuf32()
84 (uint32_t *)((uintptr_t)sc->sc_regs + off), in ipw2200_csr_getbuf32()
89 ipw2200_csr_put8(struct ipw2200_softc *sc, uint32_t off, in ipw2200_csr_put8() argument
92 ddi_put8(sc->sc_ioh, (uint8_t *)(sc->sc_regs + off), val); in ipw2200_csr_put8()
96 ipw2200_csr_put16(struct ipw2200_softc *sc, uint32_t off, in ipw2200_csr_put16() argument
99 ddi_put16(sc->sc_ioh, in ipw2200_csr_put16()
100 (uint16_t *)((uintptr_t)sc->sc_regs + off), val); in ipw2200_csr_put16()
104 ipw2200_csr_put32(struct ipw2200_softc *sc, uint32_t off, in ipw2200_csr_put32() argument
107 ddi_put32(sc->sc_ioh, in ipw2200_csr_put32()
108 (uint32_t *)((uintptr_t)sc->sc_regs + off), val); in ipw2200_csr_put32()
112 ipw2200_imem_get8(struct ipw2200_softc *sc, uint32_t addr) in ipw2200_imem_get8() argument
114 ipw2200_csr_put32(sc, IPW2200_CSR_INDIRECT_ADDR, addr); in ipw2200_imem_get8()
115 return (ipw2200_csr_get8(sc, IPW2200_CSR_INDIRECT_DATA)); in ipw2200_imem_get8()
119 ipw2200_imem_get16(struct ipw2200_softc *sc, in ipw2200_imem_get16() argument
122 ipw2200_csr_put32(sc, IPW2200_CSR_INDIRECT_ADDR, addr); in ipw2200_imem_get16()
123 return (ipw2200_csr_get16(sc, IPW2200_CSR_INDIRECT_DATA)); in ipw2200_imem_get16()
127 ipw2200_imem_get32(struct ipw2200_softc *sc, uint32_t addr) in ipw2200_imem_get32() argument
129 ipw2200_csr_put32(sc, IPW2200_CSR_INDIRECT_ADDR, addr); in ipw2200_imem_get32()
130 return (ipw2200_csr_get32(sc, IPW2200_CSR_INDIRECT_DATA)); in ipw2200_imem_get32()
134 ipw2200_imem_put8(struct ipw2200_softc *sc, uint32_t addr, uint8_t val) in ipw2200_imem_put8() argument
136 ipw2200_csr_put32(sc, IPW2200_CSR_INDIRECT_ADDR, addr); in ipw2200_imem_put8()
137 ipw2200_csr_put8(sc, IPW2200_CSR_INDIRECT_DATA, val); in ipw2200_imem_put8()
141 ipw2200_imem_put16(struct ipw2200_softc *sc, uint32_t addr, in ipw2200_imem_put16() argument
144 ipw2200_csr_put32(sc, IPW2200_CSR_INDIRECT_ADDR, addr); in ipw2200_imem_put16()
145 ipw2200_csr_put16(sc, IPW2200_CSR_INDIRECT_DATA, val); in ipw2200_imem_put16()
149 ipw2200_imem_put32(struct ipw2200_softc *sc, uint32_t addr, in ipw2200_imem_put32() argument
152 ipw2200_csr_put32(sc, IPW2200_CSR_INDIRECT_ADDR, addr); in ipw2200_imem_put32()
153 ipw2200_csr_put32(sc, IPW2200_CSR_INDIRECT_DATA, val); in ipw2200_imem_put32()
157 ipw2200_rom_control(struct ipw2200_softc *sc, uint32_t val) in ipw2200_rom_control() argument
159 ipw2200_imem_put32(sc, IPW2200_IMEM_EEPROM_CTL, val); in ipw2200_rom_control()
164 ipw2200_rom_get16(struct ipw2200_softc *sc, uint8_t addr) in ipw2200_rom_get16() argument
174 ipw2200_rom_control(sc, 0); in ipw2200_rom_get16()
175 ipw2200_rom_control(sc, IPW2200_EEPROM_S); in ipw2200_rom_get16()
176 ipw2200_rom_control(sc, IPW2200_EEPROM_S | IPW2200_EEPROM_C); in ipw2200_rom_get16()
177 ipw2200_rom_control(sc, IPW2200_EEPROM_S); in ipw2200_rom_get16()
179 ipw2200_rom_control(sc, IPW2200_EEPROM_S | IPW2200_EEPROM_D); in ipw2200_rom_get16()
180 ipw2200_rom_control(sc, IPW2200_EEPROM_S | IPW2200_EEPROM_D | in ipw2200_rom_get16()
183 ipw2200_rom_control(sc, IPW2200_EEPROM_S | IPW2200_EEPROM_D); in ipw2200_rom_get16()
184 ipw2200_rom_control(sc, IPW2200_EEPROM_S | IPW2200_EEPROM_D | in ipw2200_rom_get16()
186 ipw2200_rom_control(sc, IPW2200_EEPROM_S); in ipw2200_rom_get16()
187 ipw2200_rom_control(sc, IPW2200_EEPROM_S | IPW2200_EEPROM_C); in ipw2200_rom_get16()
192 ipw2200_rom_control(sc, IPW2200_EEPROM_S | in ipw2200_rom_get16()
194 ipw2200_rom_control(sc, IPW2200_EEPROM_S | in ipw2200_rom_get16()
199 ipw2200_rom_control(sc, IPW2200_EEPROM_S); in ipw2200_rom_get16()
206 ipw2200_rom_control(sc, IPW2200_EEPROM_S | IPW2200_EEPROM_C); in ipw2200_rom_get16()
207 ipw2200_rom_control(sc, IPW2200_EEPROM_S); in ipw2200_rom_get16()
208 tmp = ipw2200_imem_get32(sc, IPW2200_IMEM_EEPROM_CTL); in ipw2200_rom_get16()
213 ipw2200_rom_control(sc, 0); in ipw2200_rom_get16()
216 ipw2200_rom_control(sc, IPW2200_EEPROM_S); in ipw2200_rom_get16()
217 ipw2200_rom_control(sc, 0); in ipw2200_rom_get16()
218 ipw2200_rom_control(sc, IPW2200_EEPROM_C); in ipw2200_rom_get16()
255 ipw2200_cache_firmware(struct ipw2200_softc *sc) in ipw2200_cache_firmware() argument
257 IPW2200_DBG(IPW2200_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2200_cache_firmware()
261 sc->sc_fw.boot_base = ipw2200_boot_bin + sizeof (struct header); in ipw2200_cache_firmware()
262 sc->sc_fw.boot_size = in ipw2200_cache_firmware()
265 sc->sc_fw.uc_base = ipw2200_ucode_bin + sizeof (struct header); in ipw2200_cache_firmware()
266 sc->sc_fw.uc_size = sizeof (ipw2200_ucode_bin) - sizeof (struct header); in ipw2200_cache_firmware()
268 sc->sc_fw.fw_base = ipw2200_fw_bin + sizeof (struct header); in ipw2200_cache_firmware()
269 sc->sc_fw.fw_size = sizeof (ipw2200_fw_bin) - sizeof (struct header); in ipw2200_cache_firmware()
271 sc->sc_flags |= IPW2200_FLAG_FW_CACHED; in ipw2200_cache_firmware()
273 IPW2200_DBG(IPW2200_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2200_cache_firmware()
275 sc->sc_fw.boot_size, sc->sc_fw.uc_size, sc->sc_fw.fw_size)); in ipw2200_cache_firmware()
276 IPW2200_DBG(IPW2200_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2200_cache_firmware()
288 ipw2200_free_firmware(struct ipw2200_softc *sc) in ipw2200_free_firmware() argument
290 sc->sc_flags &= ~IPW2200_FLAG_FW_CACHED; in ipw2200_free_firmware()
299 ipw2200_load_uc(struct ipw2200_softc *sc, uint8_t *buf, size_t size) in ipw2200_load_uc() argument
304 ipw2200_csr_put32(sc, IPW2200_CSR_RST, in ipw2200_load_uc()
305 IPW2200_RST_STOP_MASTER | ipw2200_csr_get32(sc, IPW2200_CSR_RST)); in ipw2200_load_uc()
307 if (ipw2200_csr_get32(sc, IPW2200_CSR_RST) & in ipw2200_load_uc()
313 IPW2200_WARN((sc->sc_dip, CE_CONT, in ipw2200_load_uc()
318 ipw2200_imem_put32(sc, 0x3000e0, 0x80000000); in ipw2200_load_uc()
320 ipw2200_csr_put32(sc, IPW2200_CSR_RST, in ipw2200_load_uc()
322 ipw2200_csr_get32(sc, IPW2200_CSR_RST)); in ipw2200_load_uc()
324 ipw2200_imem_put32(sc, 0x3000e0, 0); in ipw2200_load_uc()
326 ipw2200_imem_put32(sc, IPW2200_IMEM_EVENT_CTL, 1); in ipw2200_load_uc()
328 ipw2200_imem_put32(sc, IPW2200_IMEM_EVENT_CTL, 0); in ipw2200_load_uc()
330 ipw2200_imem_put8(sc, 0x200000, 0x00); in ipw2200_load_uc()
331 ipw2200_imem_put8(sc, 0x200000, 0x40); in ipw2200_load_uc()
335 ipw2200_imem_put16(sc, 0x200010, LE_16(*w)); in ipw2200_load_uc()
337 ipw2200_imem_put8(sc, 0x200000, 0x00); in ipw2200_load_uc()
338 ipw2200_imem_put8(sc, 0x200000, 0x80); in ipw2200_load_uc()
346 val = ipw2200_imem_get8(sc, 0x200000); in ipw2200_load_uc()
352 IPW2200_WARN((sc->sc_dip, CE_WARN, in ipw2200_load_uc()
358 (void) ipw2200_imem_get32(sc, 0x200004); in ipw2200_load_uc()
360 ipw2200_imem_put8(sc, 0x200000, 0x00); in ipw2200_load_uc()
369 ipw2200_load_fw(struct ipw2200_softc *sc, uint8_t *buf, size_t size) in ipw2200_load_fw() argument
379 ipw2200_imem_put32(sc, 0x3000a0, 0x27000); in ipw2200_load_fw()
385 err = ipw2200_dma_region_alloc(sc, &dr[cnt], MAX_DR_SIZE, DDI_DMA_READ, in ipw2200_load_fw()
392 ipw2200_csr_put32(sc, IPW2200_CSR_AUTOINC_ADDR, 0x27000); in ipw2200_load_fw()
399 IPW2200_DBG(IPW2200_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2200_load_fw()
409 IPW2200_WARN((sc->sc_dip, CE_WARN, in ipw2200_load_fw()
416 err = ipw2200_dma_region_alloc(sc, &dr[cnt], in ipw2200_load_fw()
438 ipw2200_csr_put32(sc, IPW2200_CSR_AUTOINC_DATA, ctl); in ipw2200_load_fw()
439 ipw2200_csr_put32(sc, IPW2200_CSR_AUTOINC_DATA, src); in ipw2200_load_fw()
440 ipw2200_csr_put32(sc, IPW2200_CSR_AUTOINC_DATA, dst); in ipw2200_load_fw()
441 ipw2200_csr_put32(sc, IPW2200_CSR_AUTOINC_DATA, sum); in ipw2200_load_fw()
451 sentinel = ipw2200_csr_get32(sc, IPW2200_CSR_AUTOINC_ADDR); in ipw2200_load_fw()
452 ipw2200_csr_put32(sc, IPW2200_CSR_AUTOINC_DATA, 0); in ipw2200_load_fw()
454 IPW2200_DBG(IPW2200_DBG_FW, (sc->sc_dip, CE_CONT, in ipw2200_load_fw()
457 ipw2200_csr_put32(sc, IPW2200_CSR_RST, in ipw2200_load_fw()
459 & ipw2200_csr_get32(sc, IPW2200_CSR_RST)); in ipw2200_load_fw()
461 ipw2200_imem_put32(sc, 0x3000a4, 0x540100); in ipw2200_load_fw()
464 val = ipw2200_imem_get32(sc, 0x3000d0); in ipw2200_load_fw()
470 IPW2200_WARN((sc->sc_dip, CE_WARN, in ipw2200_load_fw()
475 mutex_enter(&sc->sc_ilock); in ipw2200_load_fw()
477 ipw2200_imem_put32(sc, 0x3000a4, 0x540c00); in ipw2200_load_fw()
482 ipw2200_csr_put32(sc, IPW2200_CSR_INTR_MASK, IPW2200_INTR_MASK_ALL); in ipw2200_load_fw()
488 ipw2200_csr_put32(sc, IPW2200_CSR_RST, 0); in ipw2200_load_fw()
489 ipw2200_csr_put32(sc, IPW2200_CSR_CTL, in ipw2200_load_fw()
490 ipw2200_csr_get32(sc, IPW2200_CSR_CTL) | in ipw2200_load_fw()
496 sc->sc_fw_ok = 0; in ipw2200_load_fw()
497 while (!sc->sc_fw_ok) { in ipw2200_load_fw()
501 if (cv_reltimedwait(&sc->sc_fw_cond, &sc->sc_ilock, clk, in ipw2200_load_fw()
505 mutex_exit(&sc->sc_ilock); in ipw2200_load_fw()
507 if (!sc->sc_fw_ok) { in ipw2200_load_fw()
508 IPW2200_WARN((sc->sc_dip, CE_WARN, in ipw2200_load_fw()
519 IPW2200_WARN((sc->sc_dip, CE_WARN, in ipw2200_load_fw()