Lines Matching defs:skl

3  *  skl.c - Implementation of ASoC Intel SKL HD Audio driver
31 #include "skl.h"
32 #include "skl-sst-dsp.h"
33 #include "skl-sst-ipc.h"
56 static void skl_init_pci(struct skl_dev *skl)
58 struct hdac_bus *bus = skl_to_bus(skl);
68 skl_update_pci_byte(skl->pci, AZX_PCIREG_TCSEL, 0x07, 0);
260 struct skl_dev *skl = bus_to_skl(bus);
263 ret = request_threaded_irq(skl->pci->irq, skl_interrupt,
270 skl->pci->irq);
274 bus->irq = skl->pci->irq;
275 pci_intx(skl->pci, 1);
284 struct skl_dev *skl = bus_to_skl(bus);
286 return skl_suspend_late_dsp(skl);
292 struct skl_dev *skl = bus_to_skl(bus);
298 ret = skl_suspend_dsp(skl);
308 skl_cleanup_resources(skl);
315 struct skl_dev *skl = bus_to_skl(bus);
317 skl_init_pci(skl);
321 return skl_resume_dsp(skl);
333 struct skl_dev *skl = bus_to_skl(bus);
340 if (skl->supend_active) {
353 skl->fw_loaded = false;
363 struct skl_dev *skl = bus_to_skl(bus);
371 if (skl->supend_active) {
438 struct skl_dev *skl = bus_to_skl(bus);
440 skl->init_done = 0; /* to be sure */
453 pci_release_regions(skl->pci);
454 pci_disable_device(skl->pci);
470 * So for skl+, there are 6 ssps, so 18 clocks will be created.
483 static struct snd_soc_acpi_mach *skl_find_hda_machine(struct skl_dev *skl,
497 static int skl_find_machine(struct skl_dev *skl, void *driver_data)
499 struct hdac_bus *bus = skl_to_bus(skl);
506 mach = skl_find_hda_machine(skl, driver_data);
513 skl->mach = mach;
514 skl->fw_name = mach->fw_filename;
518 skl->use_tplg_pcm = pdata->use_tplg_pcm;
520 intel_nhlt_get_dmic_geo(&skl->pci->dev,
521 skl->nhlt);
527 static int skl_machine_device_register(struct skl_dev *skl)
529 struct snd_soc_acpi_mach *mach = skl->mach;
530 struct hdac_bus *bus = skl_to_bus(skl);
558 skl->i2s_dev = pdev;
563 static void skl_machine_device_unregister(struct skl_dev *skl)
565 if (skl->i2s_dev)
566 platform_device_unregister(skl->i2s_dev);
569 static int skl_dmic_device_register(struct skl_dev *skl)
571 struct hdac_bus *bus = skl_to_bus(skl);
588 skl->dmic_dev = pdev;
593 static void skl_dmic_device_unregister(struct skl_dev *skl)
595 if (skl->dmic_dev)
596 platform_device_unregister(skl->dmic_dev);
631 static int skl_clock_device_register(struct skl_dev *skl)
636 if (!skl->nhlt)
639 clk_pdata = devm_kzalloc(&skl->pci->dev, sizeof(*clk_pdata),
644 init_skl_xtal_rate(skl->pci->device);
651 skl_get_clks(skl, clk_pdata->ssp_clks);
652 clk_pdata->pvt_data = skl;
655 pdevinfo.parent = &skl->pci->dev;
657 pdevinfo.name = "skl-ssp-clk";
660 skl->clk_dev = platform_device_register_full(&pdevinfo);
661 return PTR_ERR_OR_ZERO(skl->clk_dev);
664 static void skl_clock_device_unregister(struct skl_dev *skl)
666 if (skl->clk_dev)
667 platform_device_unregister(skl->clk_dev);
700 struct skl_dev *skl = bus_to_skl(bus);
716 hda_codec = devm_kzalloc(&skl->pci->dev, sizeof(*hda_codec),
721 hda_codec->codec.bus = skl_to_hbus(skl);
735 hdev = devm_kzalloc(&skl->pci->dev, sizeof(*hdev), GFP_KERNEL);
795 struct skl_dev *skl = container_of(work, struct skl_dev, probe_work);
796 struct hdac_bus *bus = skl_to_bus(skl);
806 skl_init_pci(skl);
829 err = skl_machine_device_register(skl);
847 skl->init_done = 1;
863 struct skl_dev *skl;
874 skl = devm_kzalloc(&pci->dev, sizeof(*skl), GFP_KERNEL);
875 if (!skl) {
880 hbus = skl_to_hbus(skl);
881 bus = skl_to_bus(skl);
883 INIT_LIST_HEAD(&skl->ppl_list);
884 INIT_LIST_HEAD(&skl->bind_list);
891 skl->pci = pci;
892 INIT_WORK(&skl->probe_work, skl_probe_work);
900 *rskl = skl;
907 struct skl_dev *skl = bus_to_skl(bus);
908 struct pci_dev *pci = skl->pci;
977 struct skl_dev *skl;
1000 err = skl_create(pci, &skl);
1004 bus = skl_to_bus(skl);
1012 skl->pci_id = pci->device;
1016 skl->nhlt = intel_nhlt_init(bus->dev);
1018 if (skl->nhlt == NULL) {
1028 err = skl_nhlt_create_sysfs(skl);
1034 skl_nhlt_update_topology_bin(skl);
1037 err = skl_clock_device_register(skl);
1044 pci_set_drvdata(skl->pci, bus);
1047 err = skl_find_machine(skl, (void *)pci_id->driver_data);
1053 err = skl_init_dsp(skl);
1058 skl->enable_miscbdcge = skl_enable_miscbdcge;
1059 skl->clock_power_gating = skl_clock_power_gating;
1065 err = skl_dmic_device_register(skl);
1071 schedule_work(&skl->probe_work);
1076 skl_free_dsp(skl);
1078 skl_clock_device_unregister(skl);
1080 if (skl->nhlt)
1081 intel_nhlt_free(skl->nhlt);
1093 struct skl_dev *skl;
1098 skl = bus_to_skl(bus);
1100 if (!skl->init_done)
1105 skl_dsp_sleep(skl->dsp);
1118 struct skl_dev *skl = bus_to_skl(bus);
1120 cancel_work_sync(&skl->probe_work);
1128 skl_free_dsp(skl);
1129 skl_machine_device_unregister(skl);
1130 skl_dmic_device_unregister(skl);
1131 skl_clock_device_unregister(skl);
1132 skl_nhlt_remove_sysfs(skl);
1133 if (skl->nhlt)
1134 intel_nhlt_free(skl->nhlt);