Lines Matching defs:sc

85 	struct sdma_softc *sc;
90 sc = arg;
92 pending = READ4(sc, SDMAARM_INTR);
95 WRITE4(sc, SDMAARM_INTR, pending);
100 channel = &sc->channel[i];
113 WRITE4(sc, SDMAARM_HSTART, (1 << i));
134 struct sdma_softc *sc;
136 sc = sdma_sc;
138 WRITE4(sc, SDMAARM_HSTART, (1 << chn));
146 struct sdma_softc *sc;
148 sc = sdma_sc;
150 WRITE4(sc, SDMAARM_STOP_STAT, (1 << chn));
159 struct sdma_softc *sc;
164 sc = sdma_sc;
169 channel = &sc->channel[i];
194 struct sdma_softc *sc;
196 sc = sdma_sc;
198 channel = &sc->channel[chn];
208 sdma_overrides(struct sdma_softc *sc, int chn,
214 reg = READ4(sc, SDMAARM_EVTOVR);
219 WRITE4(sc, SDMAARM_EVTOVR, reg);
222 reg = READ4(sc, SDMAARM_HOSTOVR);
227 WRITE4(sc, SDMAARM_HOSTOVR, reg);
230 reg = READ4(sc, SDMAARM_DSPOVR);
235 WRITE4(sc, SDMAARM_DSPOVR, reg);
247 struct sdma_softc *sc;
254 sc = sdma_sc;
256 channel = &sc->channel[chn];
263 WRITE4(sc, SDMAARM_SDMA_CHNPRI(chn), 1);
264 WRITE4(sc, SDMAARM_CHNENBL(conf->event), (1 << chn));
266 sdma_overrides(sc, chn, 0, 0, 0);
269 device_printf(sc->dev, "Error: too much buffer"
285 sc->ccb[chn].base_bd_ptr = vtophys(channel->bd);
286 sc->ccb[chn].current_bd_ptr = vtophys(channel->bd);
298 context = sc->context;
300 context->channel_state.pc = sc->fw_scripts->mcu_2_app_addr;
320 bd0 = sc->bd0;
324 bd0->buffer_addr = sc->context_phys;
327 WRITE4(sc, SDMAARM_HSTART, 1);
333 while (!(ret = READ4(sc, SDMAARM_INTR) & 1)) {
340 device_printf(sc->dev, "Failed to load context.\n");
344 WRITE4(sc, SDMAARM_INTR, ret);
346 device_printf(sc->dev, "Context loaded successfully.\n");
353 load_firmware(struct sdma_softc *sc)
360 device_printf(sc->dev, "Can't get firmware.\n");
366 device_printf(sc->dev, "Can't use firmware.\n");
370 sc->fw_header = header;
371 sc->fw_scripts = (const void *)((const char *)header +
378 boot_firmware(struct sdma_softc *sc)
388 ram_code = (const void *)((const char *)sc->fw_header +
389 sc->fw_header->ram_code_start);
392 WRITE4(sc, SDMAARM_MC0PTR, 0);
396 sc->ccb = (void *)kmem_alloc_contig(kernel_arena,
398 sc->ccb_phys = vtophys(sc->ccb);
400 sc->context = (void *)((char *)sc->ccb + \
402 sc->context_phys = vtophys(sc->context);
406 WRITE4(sc, SDMAARM_CHNENBL(i), 0);
410 WRITE4(sc, SDMAARM_SDMA_CHNPRI(i), 0);
415 sc->bd0 = (void *)kmem_alloc_contig(kernel_arena,
418 bd0 = sc->bd0;
419 sc->ccb[chn].base_bd_ptr = vtophys(bd0);
420 sc->ccb[chn].current_bd_ptr = vtophys(bd0);
422 WRITE4(sc, SDMAARM_SDMA_CHNPRI(chn), 1);
424 sdma_overrides(sc, chn, 1, 0, 0);
427 WRITE4(sc, SDMAARM_CHN0ADDR, 0x4050);
429 WRITE4(sc, SDMAARM_CONFIG, 0);
430 WRITE4(sc, SDMAARM_MC0PTR, sc->ccb_phys);
431 WRITE4(sc, SDMAARM_CONFIG, CONFIG_CSM);
432 WRITE4(sc, SDMAARM_SDMA_CHNPRI(chn), 1);
436 bd0->mode.count = sc->fw_header->ram_code_size / 2;
438 bd0->ext_buffer_addr = sc->fw_scripts->ram_code_start_addr;
440 WRITE4(sc, SDMAARM_HSTART, 1);
443 while (!(ret = READ4(sc, SDMAARM_INTR) & 1)) {
450 device_printf(sc->dev, "SDMA failed to boot\n");
454 WRITE4(sc, SDMAARM_INTR, ret);
457 device_printf(sc->dev, "SDMA booted successfully.\n");
461 WRITE4(sc, SDMAARM_ONCE_ENB, 0);
469 struct sdma_softc *sc;
472 sc = device_get_softc(dev);
473 sc->dev = dev;
475 if (bus_alloc_resources(dev, sdma_spec, sc->res)) {
481 sc->bst = rman_get_bustag(sc->res[0]);
482 sc->bsh = rman_get_bushandle(sc->res[0]);
484 sdma_sc = sc;
487 err = bus_setup_intr(dev, sc->res[1], INTR_TYPE_MISC | INTR_MPSAFE,
488 NULL, sdma_intr, sc, &sc->ih);
494 if (load_firmware(sc) == -1)
497 if (boot_firmware(sc) == -1)