Lines Matching defs:bus

52  * @bus: HD-audio core bus
55 int snd_hdac_get_stream_stripe_ctl(struct hdac_bus *bus,
65 max_sdo_lines = snd_hdac_chip_readl(bus, GCAP) & AZX_GCAP_NSDO;
75 if (value >= bus->sdo_limit)
86 * @bus: HD-audio core bus
94 void snd_hdac_stream_init(struct hdac_bus *bus, struct hdac_stream *azx_dev,
97 azx_dev->bus = bus;
99 azx_dev->sd_addr = bus->remap_addr + (0x20 * idx + 0x80);
106 list_add_tail(&azx_dev->list, &bus->stream_list);
108 if (bus->spbcap) {
109 azx_dev->spib_addr = bus->spbcap + AZX_SPB_BASE +
113 azx_dev->fifo_addr = bus->spbcap + AZX_SPB_BASE +
118 if (bus->drsmcap)
119 azx_dev->dpibr_addr = bus->drsmcap + AZX_DRSM_BASE +
132 struct hdac_bus *bus = azx_dev->bus;
135 trace_snd_hdac_stream_start(bus, azx_dev);
137 azx_dev->start_wallclk = snd_hdac_chip_readl(bus, WALLCLK);
140 snd_hdac_chip_updatel(bus, INTCTL,
146 stripe_ctl = snd_hdac_get_stream_stripe_ctl(bus, azx_dev->substream);
153 if (bus->access_sdnctl_in_dword)
185 trace_snd_hdac_stream_stop(azx_dev->bus, azx_dev);
189 snd_hdac_chip_updatel(azx_dev->bus, INTCTL, 1 << azx_dev->index, 0);
195 * @bus: HD-audio core bus
197 void snd_hdac_stop_streams(struct hdac_bus *bus)
201 list_for_each_entry(stream, &bus->stream_list, list)
208 * @bus: HD-audio core bus
210 void snd_hdac_stop_streams_and_chip(struct hdac_bus *bus)
213 if (bus->chip_init) {
214 snd_hdac_stop_streams(bus);
215 snd_hdac_bus_stop_chip(bus);
238 if (azx_dev->bus->dma_stop_delay && dma_run_state)
239 udelay(azx_dev->bus->dma_stop_delay);
259 struct hdac_bus *bus = azx_dev->bus;
275 if (!bus->snoop)
297 if (bus->use_posbuf && bus->posbuf.addr) {
298 if (!(snd_hdac_chip_readl(bus, DPLBASE) & AZX_DPLBASE_ENABLE))
299 snd_hdac_chip_writel(bus, DPLBASE,
300 (u32)bus->posbuf.addr | AZX_DPLBASE_ENABLE);
311 dev_dbg(bus->dev, "polling SD_FIFOSIZE 0x%04x failed: %d\n",
352 * @bus: HD-audio core bus
358 * beforehand. Also, when bus->reverse_assign flag is set, the last free
361 struct hdac_stream *snd_hdac_stream_assign(struct hdac_bus *bus,
373 guard(spinlock_irq)(&bus->reg_lock);
374 list_for_each_entry(azx_dev, &bus->stream_list, list) {
383 if (!res || bus->reverse_assign)
401 * The bus->reg_lock needs to be taken at a higher level
419 struct hdac_bus *bus = azx_dev->bus;
421 guard(spinlock_irq)(&bus->reg_lock);
430 * @bus: HD-audio core bus
434 struct hdac_stream *snd_hdac_get_stream(struct hdac_bus *bus,
439 list_for_each_entry(s, &bus->stream_list, list) {
451 static int setup_bdle(struct hdac_bus *bus,
472 if (bus->align_bdle_4k) {
504 struct hdac_bus *bus = azx_dev->bus;
521 pos_adj = bus->bdl_pos_adj;
531 dev_warn(bus->dev, "Too big adjustment %d\n",
535 ofs = setup_bdle(bus, dmab, azx_dev,
545 ofs = setup_bdle(bus, dmab, azx_dev,
548 ofs = setup_bdle(bus, dmab, azx_dev,
557 dev_dbg(bus->dev, "Too many BDL entries: buffer=%d, period=%d\n",
639 return snd_hdac_chip_readl(azx_dev->bus, WALLCLK);
684 struct hdac_bus *bus = azx_dev->bus;
693 list_for_each_entry(s, &bus->stream_list, list) {
719 struct hdac_bus *bus = azx_dev->bus;
724 val = _snd_hdac_chip_readl(bus, reg);
729 _snd_hdac_chip_writel(bus, reg, val);
745 struct hdac_bus *bus = azx_dev->bus;
751 list_for_each_entry(s, &bus->stream_list, list) {
783 * @bus: HD-audio core bus
787 void snd_hdac_stream_spbcap_enable(struct hdac_bus *bus,
792 if (!bus->spbcap) {
793 dev_err(bus->dev, "Address of SPB capability is NULL\n");
800 snd_hdac_updatel(bus->spbcap, AZX_REG_SPB_SPBFCCTL, mask, mask);
802 snd_hdac_updatel(bus->spbcap, AZX_REG_SPB_SPBFCCTL, mask, 0);
808 * @bus: HD-audio core bus
812 int snd_hdac_stream_set_spib(struct hdac_bus *bus,
815 if (!bus->spbcap) {
816 dev_err(bus->dev, "Address of SPB capability is NULL\n");
828 * @bus: HD-audio core bus
832 void snd_hdac_stream_drsm_enable(struct hdac_bus *bus,
837 if (!bus->drsmcap) {
838 dev_err(bus->dev, "Address of DRSM capability is NULL\n");
845 snd_hdac_updatel(bus->drsmcap, AZX_REG_DRSM_CTL, mask, mask);
847 snd_hdac_updatel(bus->drsmcap, AZX_REG_DRSM_CTL, mask, 0);
859 struct hdac_bus *bus = azx_dev->bus;
865 ret = read_poll_timeout(snd_hdac_reg_readl, reg, !(reg & mask), 250, 2000, false, bus,
866 bus->drsmcap + AZX_REG_DRSM_CTL);
868 dev_dbg(bus->dev, "polling RSM 0x%08x failed: %d\n", mask, ret);
875 * @bus: HD-audio core bus
879 int snd_hdac_stream_set_dpibr(struct hdac_bus *bus,
882 if (!bus->drsmcap) {
883 dev_err(bus->dev, "Address of DRSM capability is NULL\n");
920 struct hdac_bus *bus = azx_dev->bus;
924 scoped_guard(spinlock_irq, &bus->reg_lock) {
930 err = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV_SG, bus->dev,
954 scoped_guard(spinlock_irq, &bus->reg_lock) {
983 struct hdac_bus *bus = azx_dev->bus;
1000 guard(spinlock_irq)(&bus->reg_lock);