Lines Matching full:st

180     IntelHDAStream st[8];  member
246 if (d->st[i].ctl & (1 << 26)) { in intel_hda_update_int_sts()
403 IntelHDAStream *st; in intel_hda_xfer() local
406 st = output ? d->st + 4 : d->st; in intel_hda_xfer()
408 if (stnr == ((st[s].ctl >> 20) & 0x0f)) { in intel_hda_xfer()
409 st = st + s; in intel_hda_xfer()
416 if (st->bpl == NULL) { in intel_hda_xfer()
421 s = st->bentries; in intel_hda_xfer()
424 if (copy > st->bsize - st->lpib) in intel_hda_xfer()
425 copy = st->bsize - st->lpib; in intel_hda_xfer()
426 if (copy > st->bpl[st->be].len - st->bp) in intel_hda_xfer()
427 copy = st->bpl[st->be].len - st->bp; in intel_hda_xfer()
430 st->be, st->bp, st->bpl[st->be].len, copy); in intel_hda_xfer()
432 pci_dma_rw(&d->pci, st->bpl[st->be].addr + st->bp, buf, copy, !output, in intel_hda_xfer()
434 st->lpib += copy; in intel_hda_xfer()
435 st->bp += copy; in intel_hda_xfer()
439 if (st->bpl[st->be].len == st->bp) { in intel_hda_xfer()
441 if (st->bpl[st->be].flags & 0x01) { in intel_hda_xfer()
444 st->bp = 0; in intel_hda_xfer()
445 st->be++; in intel_hda_xfer()
446 if (st->be == st->bentries) { in intel_hda_xfer()
448 st->be = 0; in intel_hda_xfer()
449 st->lpib = 0; in intel_hda_xfer()
454 s = st - d->st; in intel_hda_xfer()
456 stl_le_pci_dma(&d->pci, addr + 8 * s, st->lpib, attrs); in intel_hda_xfer()
461 st->ctl |= (1 << 26); /* buffer completion interrupt */ in intel_hda_xfer()
467 static void intel_hda_parse_bdl(IntelHDAState *d, IntelHDAStream *st) in intel_hda_parse_bdl() argument
473 addr = intel_hda_addr(st->bdlp_lbase, st->bdlp_ubase); in intel_hda_parse_bdl()
474 st->bentries = st->lvi +1; in intel_hda_parse_bdl()
475 g_free(st->bpl); in intel_hda_parse_bdl()
476 st->bpl = g_new(bpl, st->bentries); in intel_hda_parse_bdl()
477 for (i = 0; i < st->bentries; i++, addr += 16) { in intel_hda_parse_bdl()
479 st->bpl[i].addr = le64_to_cpu(*(uint64_t *)buf); in intel_hda_parse_bdl()
480 st->bpl[i].len = le32_to_cpu(*(uint32_t *)(buf + 8)); in intel_hda_parse_bdl()
481 st->bpl[i].flags = le32_to_cpu(*(uint32_t *)(buf + 12)); in intel_hda_parse_bdl()
483 i, st->bpl[i].addr, st->bpl[i].len, st->bpl[i].flags); in intel_hda_parse_bdl()
486 st->bsize = st->cbl; in intel_hda_parse_bdl()
487 st->lpib = 0; in intel_hda_parse_bdl()
488 st->be = 0; in intel_hda_parse_bdl()
489 st->bp = 0; in intel_hda_parse_bdl()
579 IntelHDAStream *st = d->st + reg->stream; in intel_hda_set_st_ctl() local
581 if (st->ctl & 0x01) { in intel_hda_set_st_ctl()
583 dprint(d, 1, "st #%d: reset\n", reg->stream); in intel_hda_set_st_ctl()
584 st->ctl = SD_STS_FIFO_READY << 24 | SD_CTL_STREAM_RESET; in intel_hda_set_st_ctl()
586 if ((st->ctl & 0x02) != (old & 0x02)) { in intel_hda_set_st_ctl()
587 uint32_t stnr = (st->ctl >> 20) & 0x0f; in intel_hda_set_st_ctl()
589 if (st->ctl & 0x02) { in intel_hda_set_st_ctl()
591 dprint(d, 1, "st #%d: start %d (ring buf %d bytes)\n", in intel_hda_set_st_ctl()
592 reg->stream, stnr, st->cbl); in intel_hda_set_st_ctl()
593 intel_hda_parse_bdl(d, st); in intel_hda_set_st_ctl()
597 dprint(d, 1, "st #%d: stop %d\n", reg->stream, stnr); in intel_hda_set_st_ctl()
812 .offset = offsetof(IntelHDAState, st[_i].ctl), \
821 .offset = offsetof(IntelHDAState, st[_i].ctl), \
831 .offset = offsetof(IntelHDAState, st[_i].ctl), \
839 .offset = offsetof(IntelHDAState, st[_i].lpib), \
846 .offset = offsetof(IntelHDAState, st[_i].cbl), \
853 .offset = offsetof(IntelHDAState, st[_i].lvi), \
866 .offset = offsetof(IntelHDAState, st[_i].fmt), \
873 .offset = offsetof(IntelHDAState, st[_i].bdlp_lbase), \
880 .offset = offsetof(IntelHDAState, st[_i].bdlp_ubase), \
1148 for (i = 0; i < ARRAY_SIZE(d->st); i++) { in intel_hda_post_load()
1149 if (d->st[i].ctl & 0x02) { in intel_hda_post_load()
1150 intel_hda_parse_bdl(d, &d->st[i]); in intel_hda_post_load()
1205 VMSTATE_STRUCT_ARRAY(st, IntelHDAState, 8, 0,