Lines Matching full:pci

11  * Generic PCI interface for ACP device
16 #include <linux/pci.h>
57 static int create_acp_platform_devs(struct pci_dev *pci, struct acp_chip_info *chip, u32 addr) in create_acp_platform_devs() argument
63 parent = &pci->dev; in create_acp_platform_devs()
66 chip->res = devm_kzalloc(&pci->dev, sizeof(struct resource), GFP_KERNEL); in create_acp_platform_devs()
83 dev_err(&pci->dev, in create_acp_platform_devs()
89 chip->dmic_codec_dev = platform_device_register_data(&pci->dev, in create_acp_platform_devs()
94 dev_err(&pci->dev, "failed to create DMIC device\n"); in create_acp_platform_devs()
106 static int acp_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) in acp_pci_probe() argument
108 struct device *dev = &pci->dev; in acp_pci_probe()
113 flag = snd_amd_acp_find_config(pci); in acp_pci_probe()
117 chip = devm_kzalloc(&pci->dev, sizeof(*chip), GFP_KERNEL); in acp_pci_probe()
121 if (pci_enable_device(pci)) in acp_pci_probe()
122 return dev_err_probe(&pci->dev, -ENODEV, in acp_pci_probe()
125 ret = pci_request_regions(pci, "AMD ACP3x audio"); in acp_pci_probe()
127 dev_err(&pci->dev, "pci_request_regions failed\n"); in acp_pci_probe()
132 pci_set_master(pci); in acp_pci_probe()
134 chip->acp_rev = pci->revision; in acp_pci_probe()
135 switch (pci->revision) { in acp_pci_probe()
162 dev_err(dev, "Unsupported device revision:0x%x\n", pci->revision); in acp_pci_probe()
168 addr = pci_resource_start(pci, 0); in acp_pci_probe()
169 chip->base = devm_ioremap(&pci->dev, addr, pci_resource_len(pci, 0)); in acp_pci_probe()
182 ret = devm_request_irq(dev, pci->irq, irq_handler, in acp_pci_probe()
185 dev_err(&pci->dev, "ACP I2S IRQ request failed %d\n", ret); in acp_pci_probe()
189 check_acp_config(pci, chip); in acp_pci_probe()
193 ret = create_acp_platform_devs(pci, chip, addr); in acp_pci_probe()
195 dev_err(&pci->dev, "ACP platform devices creation failed\n"); in acp_pci_probe()
207 dev_set_drvdata(&pci->dev, chip); in acp_pci_probe()
208 pm_runtime_set_autosuspend_delay(&pci->dev, 2000); in acp_pci_probe()
209 pm_runtime_use_autosuspend(&pci->dev); in acp_pci_probe()
210 pm_runtime_put_noidle(&pci->dev); in acp_pci_probe()
211 pm_runtime_allow(&pci->dev); in acp_pci_probe()
217 pci_release_regions(pci); in acp_pci_probe()
219 pci_disable_device(pci); in acp_pci_probe()
258 static void acp_pci_remove(struct pci_dev *pci) in acp_pci_remove() argument
263 chip = pci_get_drvdata(pci); in acp_pci_remove()
264 pm_runtime_forbid(&pci->dev); in acp_pci_remove()
265 pm_runtime_get_noresume(&pci->dev); in acp_pci_remove()
275 dev_err(&pci->dev, "ACP de-init failed\n"); in acp_pci_remove()
278 /* PCI IDs */
283 MODULE_DEVICE_TABLE(pci, acp_pci_ids);
297 MODULE_DESCRIPTION("AMD ACP common PCI support");