Lines Matching +full:pci +full:- +full:dev
1 // SPDX-License-Identifier: GPL-2.0+
3 * AMD RPL ACP PCI Driver
8 #include <linux/pci.h>
40 return -ETIMEDOUT;
64 return -ETIMEDOUT;
103 static int snd_rpl_probe(struct pci_dev *pci,
111 switch (pci->revision) {
115 dev_dbg(&pci->dev, "acp6x pci device not found\n");
116 return -ENODEV;
118 if (pci_enable_device(pci)) {
119 dev_err(&pci->dev, "pci_enable_device failed\n");
120 return -ENODEV;
123 ret = pci_request_regions(pci, "AMD ACP6x audio");
125 dev_err(&pci->dev, "pci_request_regions failed\n");
129 adata = devm_kzalloc(&pci->dev, sizeof(struct rpl_dev_data),
132 ret = -ENOMEM;
136 addr = pci_resource_start(pci, 0);
137 adata->acp6x_base = devm_ioremap(&pci->dev, addr,
138 pci_resource_len(pci, 0));
139 if (!adata->acp6x_base) {
140 ret = -ENOMEM;
143 pci_set_master(pci);
144 pci_set_drvdata(pci, adata);
145 ret = rpl_init(adata->acp6x_base);
148 pm_runtime_set_autosuspend_delay(&pci->dev, ACP_SUSPEND_DELAY_MS);
149 pm_runtime_use_autosuspend(&pci->dev);
150 pm_runtime_put_noidle(&pci->dev);
151 pm_runtime_allow(&pci->dev);
155 pci_release_regions(pci);
157 pci_disable_device(pci);
162 static int snd_rpl_suspend(struct device *dev)
167 adata = dev_get_drvdata(dev);
168 ret = rpl_deinit(adata->acp6x_base);
170 dev_err(dev, "ACP de-init failed\n");
174 static int snd_rpl_resume(struct device *dev)
179 adata = dev_get_drvdata(dev);
180 ret = rpl_init(adata->acp6x_base);
182 dev_err(dev, "ACP init failed\n");
191 static void snd_rpl_remove(struct pci_dev *pci)
196 adata = pci_get_drvdata(pci);
197 ret = rpl_deinit(adata->acp6x_base);
199 dev_err(&pci->dev, "ACP de-init failed\n");
200 pm_runtime_forbid(&pci->dev);
201 pm_runtime_get_noresume(&pci->dev);
202 pci_release_regions(pci);
203 pci_disable_device(pci);
212 MODULE_DEVICE_TABLE(pci, snd_rpl_ids);
226 MODULE_DESCRIPTION("AMD ACP RPL PCI driver");