Lines Matching refs:bus

58 	struct hdac_bus *bus = skl_to_bus(skl);
67 dev_dbg(bus->dev, "Clearing TCSEL\n");
107 struct hdac_bus *bus = pci_get_drvdata(pci);
116 snd_hdac_chip_updatel(bus, VS_EM2, AZX_REG_VS_EM2_L1SEN, val);
128 static int skl_init_chip(struct hdac_bus *bus, bool full_reset)
133 snd_hdac_set_codec_wakeup(bus, true);
134 skl_enable_miscbdcge(bus->dev, false);
135 ret = snd_hdac_bus_init_chip(bus, full_reset);
138 list_for_each_entry(hlink, &bus->hlink_list, list)
141 skl_enable_miscbdcge(bus->dev, true);
142 snd_hdac_set_codec_wakeup(bus, false);
150 struct hdac_bus *bus = pci_get_drvdata(pci);
154 reg = snd_hdac_chip_readb(bus, VS_D0I3C);
158 reg = snd_hdac_chip_readb(bus, VS_D0I3C);
163 dev_err(bus->dev, "Before D0I3C update: D0I3C CIP timeout\n");
172 snd_hdac_chip_writeb(bus, VS_D0I3C, reg);
176 reg = snd_hdac_chip_readb(bus, VS_D0I3C);
179 reg = snd_hdac_chip_readb(bus, VS_D0I3C);
184 dev_err(bus->dev, "After D0I3C update: D0I3C CIP timeout\n");
188 dev_dbg(bus->dev, "D0I3C register = 0x%x\n",
189 snd_hdac_chip_readb(bus, VS_D0I3C));
194 * @bus: HD-audio core bus
199 static void skl_dum_set(struct hdac_bus *bus)
202 if (!(snd_hdac_chip_readb(bus, GCTL) & AZX_GCTL_RESET)) {
203 skl_enable_miscbdcge(bus->dev, false);
204 snd_hdac_bus_exit_link_reset(bus);
205 skl_enable_miscbdcge(bus->dev, true);
208 snd_hdac_chip_updatel(bus, VS_EM2, AZX_VS_EM2_DUM, AZX_VS_EM2_DUM);
212 static void skl_stream_update(struct hdac_bus *bus, struct hdac_stream *hstr)
219 struct hdac_bus *bus = dev_id;
222 if (!pm_runtime_active(bus->dev))
225 spin_lock(&bus->reg_lock);
227 status = snd_hdac_chip_readl(bus, INTSTS);
229 spin_unlock(&bus->reg_lock);
234 status = snd_hdac_chip_readb(bus, RIRBSTS);
237 snd_hdac_bus_update_rirb(bus);
238 snd_hdac_chip_writeb(bus, RIRBSTS, RIRB_INT_MASK);
241 spin_unlock(&bus->reg_lock);
243 return snd_hdac_chip_readl(bus, INTSTS) ? IRQ_WAKE_THREAD : IRQ_HANDLED;
248 struct hdac_bus *bus = dev_id;
251 status = snd_hdac_chip_readl(bus, INTSTS);
253 snd_hdac_bus_handle_stream_irq(bus, status, skl_stream_update);
258 static int skl_acquire_irq(struct hdac_bus *bus, int do_disconnect)
260 struct skl_dev *skl = bus_to_skl(bus);
266 KBUILD_MODNAME, bus);
268 dev_err(bus->dev,
274 bus->irq = skl->pci->irq;
283 struct hdac_bus *bus = pci_get_drvdata(pci);
284 struct skl_dev *skl = bus_to_skl(bus);
290 static int _skl_suspend(struct hdac_bus *bus)
292 struct skl_dev *skl = bus_to_skl(bus);
293 struct pci_dev *pci = to_pci_dev(bus->dev);
296 snd_hdac_ext_bus_link_power_down_all(bus);
302 snd_hdac_bus_stop_chip(bus);
305 skl_enable_miscbdcge(bus->dev, false);
306 snd_hdac_bus_enter_link_reset(bus);
307 skl_enable_miscbdcge(bus->dev, true);
313 static int _skl_resume(struct hdac_bus *bus)
315 struct skl_dev *skl = bus_to_skl(bus);
318 skl_dum_set(bus);
319 skl_init_chip(bus, true);
332 struct hdac_bus *bus = pci_get_drvdata(pci);
333 struct skl_dev *skl = bus_to_skl(bus);
342 snd_hdac_ext_bus_link_power_down_all(bus);
344 if (bus->cmd_dma_state)
345 snd_hdac_bus_stop_cmd_io(bus);
347 enable_irq_wake(bus->irq);
350 ret = _skl_suspend(bus);
362 struct hdac_bus *bus = pci_get_drvdata(pci);
363 struct skl_dev *skl = bus_to_skl(bus);
373 snd_hdac_ext_bus_link_power_up_all(bus);
374 disable_irq_wake(bus->irq);
380 list_for_each_entry(hlink, &bus->hlink_list, list) {
386 if (bus->cmd_dma_state)
387 snd_hdac_bus_init_cmd_io(bus);
389 ret = _skl_resume(bus);
392 list_for_each_entry(hlink, &bus->hlink_list, list) {
397 if (!bus->cmd_dma_state)
398 snd_hdac_bus_stop_cmd_io(bus);
409 struct hdac_bus *bus = pci_get_drvdata(pci);
411 dev_dbg(bus->dev, "in %s\n", __func__);
413 return _skl_suspend(bus);
419 struct hdac_bus *bus = pci_get_drvdata(pci);
421 dev_dbg(bus->dev, "in %s\n", __func__);
423 return _skl_resume(bus);
436 static int skl_free(struct hdac_bus *bus)
438 struct skl_dev *skl = bus_to_skl(bus);
442 snd_hdac_stop_streams_and_chip(bus);
444 if (bus->irq >= 0)
445 free_irq(bus->irq, (void *)bus);
446 snd_hdac_bus_free_stream_pages(bus);
447 snd_hdac_stream_free_all(bus);
448 snd_hdac_link_free_all(bus);
450 if (bus->remap_addr)
451 iounmap(bus->remap_addr);
456 snd_hdac_ext_bus_exit(bus);
459 snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, false);
460 snd_hdac_i915_exit(bus);
499 struct hdac_bus *bus = skl_to_bus(skl);
505 dev_dbg(bus->dev, "No matching I2S machine driver found\n");
508 dev_err(bus->dev, "No matching machine driver found\n");
530 struct hdac_bus *bus = skl_to_bus(skl);
536 dev_err(bus->dev, "platform device alloc failed\n");
540 mach->mach_params.platform = dev_name(bus->dev);
541 mach->mach_params.codec_mask = bus->codec_mask;
545 dev_err(bus->dev, "failed to add machine device platform data\n");
552 dev_err(bus->dev, "failed to add machine device\n");
571 struct hdac_bus *bus = skl_to_bus(skl);
578 dev_err(bus->dev, "failed to allocate dmic device\n");
584 dev_err(bus->dev, "failed to add dmic device: %d\n", ret);
695 static int probe_codec(struct hdac_bus *bus, int addr)
700 struct skl_dev *skl = bus_to_skl(bus);
707 mutex_lock(&bus->cmd_mutex);
708 snd_hdac_bus_send_cmd(bus, cmd);
709 snd_hdac_bus_get_response(bus, addr, &res);
710 mutex_unlock(&bus->cmd_mutex);
713 dev_dbg(bus->dev, "codec #%d probed OK: %x\n", addr, res);
721 hda_codec->codec.bus = skl_to_hbus(skl);
724 err = snd_hdac_ext_bus_device_init(bus, addr, hdev, HDA_DEV_ASOC);
728 /* use legacy bus only for HDA codecs, idisp uses ext bus */
739 return snd_hdac_ext_bus_device_init(bus, addr, hdev, HDA_DEV_ASOC);
744 static void skl_codec_create(struct hdac_bus *bus)
752 if ((bus->codec_mask & (1 << c))) {
753 if (probe_codec(bus, c) < 0) {
758 dev_warn(bus->dev,
760 bus->codec_mask &= ~(1 << c);
763 * codec often screws up the controller bus,
766 * better to reset the controller bus to get
769 snd_hdac_bus_stop_chip(bus);
770 skl_init_chip(bus, true);
776 static int skl_i915_init(struct hdac_bus *bus)
784 err = snd_hdac_i915_init(bus);
788 snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, true);
796 struct hdac_bus *bus = skl_to_bus(skl);
801 err = skl_i915_init(bus);
807 skl_dum_set(bus);
809 err = skl_init_chip(bus, true);
811 dev_err(bus->dev, "Init chip failed with err: %d\n", err);
816 if (!bus->codec_mask)
817 dev_info(bus->dev, "no hda codecs found!\n");
820 skl_codec_create(bus);
823 err = skl_platform_register(bus->dev);
825 dev_err(bus->dev, "platform register failed: %d\n", err);
831 dev_err(bus->dev, "machine register failed: %d\n", err);
838 list_for_each_entry(hlink, &bus->hlink_list, list)
839 snd_hdac_ext_bus_link_put(bus, hlink);
842 snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, false);
845 pm_runtime_put_noidle(bus->dev);
846 pm_runtime_allow(bus->dev);
853 snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, false);
864 struct hdac_bus *bus;
881 bus = skl_to_bus(skl);
889 snd_hdac_ext_bus_init(bus, &pci->dev, NULL, ext_ops);
890 bus->use_posbuf = 1;
893 bus->bdl_pos_adj = 0;
905 static int skl_first_init(struct hdac_bus *bus)
907 struct skl_dev *skl = bus_to_skl(bus);
917 bus->addr = pci_resource_start(pci, 0);
918 bus->remap_addr = pci_ioremap_bar(pci, 0);
919 if (bus->remap_addr == NULL) {
920 dev_err(bus->dev, "ioremap error\n");
924 snd_hdac_bus_parse_capabilities(bus);
927 if (!bus->ppcap) {
928 dev_err(bus->dev, "bus ppcap not set, HDAudio or DSP not present?\n");
932 if (skl_acquire_irq(bus, 0) < 0)
936 synchronize_irq(bus->irq);
938 gcap = snd_hdac_chip_readw(bus, GCAP);
939 dev_dbg(bus->dev, "chipset global capabilities = 0x%x\n", gcap);
946 dev_err(bus->dev, "no streams found in GCAP definitions?\n");
950 bus->num_streams = cp_streams + pb_streams;
953 if (!dma_set_mask(bus->dev, DMA_BIT_MASK(64))) {
954 dma_set_coherent_mask(bus->dev, DMA_BIT_MASK(64));
956 dma_set_mask(bus->dev, DMA_BIT_MASK(32));
957 dma_set_coherent_mask(bus->dev, DMA_BIT_MASK(32));
962 (bus, 0, cp_streams, SNDRV_PCM_STREAM_CAPTURE);
965 (bus, start_idx, pb_streams, SNDRV_PCM_STREAM_PLAYBACK);
967 err = snd_hdac_bus_alloc_stream_pages(bus);
978 struct hdac_bus *bus = NULL;
1004 bus = skl_to_bus(skl);
1006 err = skl_first_init(bus);
1008 dev_err(bus->dev, "skl_first_init failed with err: %d\n", err);
1014 device_disable_async_suspend(bus->dev);
1016 skl->nhlt = intel_nhlt_init(bus->dev);
1020 dev_err(bus->dev, "no nhlt info found\n");
1024 dev_warn(bus->dev, "no nhlt info found, continuing to try to enable HDAudio codec\n");
1030 dev_err(bus->dev, "skl_nhlt_create_sysfs failed with err: %d\n", err);
1039 dev_err(bus->dev, "skl_clock_device_register failed with err: %d\n", err);
1044 pci_set_drvdata(skl->pci, bus);
1049 dev_err(bus->dev, "skl_find_machine failed with err: %d\n", err);
1055 dev_dbg(bus->dev, "error failed to register dsp\n");
1061 if (bus->mlcap)
1062 snd_hdac_ext_bus_get_ml_capabilities(bus);
1067 dev_err(bus->dev, "skl_dmic_device_register failed with err: %d\n", err);
1083 skl_free(bus);
1090 struct hdac_bus *bus = pci_get_drvdata(pci);
1095 if (!bus)
1098 skl = bus_to_skl(bus);
1103 snd_hdac_stop_streams(bus);
1104 snd_hdac_ext_bus_link_power_down_all(bus);
1107 list_for_each_entry(s, &bus->stream_list, list) {
1109 snd_hdac_ext_stream_decouple(bus, stream, false);
1112 snd_hdac_bus_stop_chip(bus);
1117 struct hdac_bus *bus = pci_get_drvdata(pci);
1118 struct skl_dev *skl = bus_to_skl(bus);
1125 snd_hdac_ext_bus_device_remove(bus);
1135 skl_free(bus);