Lines Matching +full:pci +full:- +full:dev

1 // SPDX-License-Identifier: GPL-2.0-only
3 * sst_pci.c - SST (LPE) driver init file for pci enumeration.
5 * Copyright (C) 2008-14 Intel Corp
15 #include <linux/pci.h>
21 #include "../sst-mfld-platform.h"
27 struct pci_dev *pci = ctx->pci; in sst_platform_get_resources() local
29 ret = pci_request_regions(pci, SST_DRV_NAME); in sst_platform_get_resources()
35 if (ctx->dev_id == PCI_DEVICE_ID_INTEL_SST_TNG) { in sst_platform_get_resources()
36 ctx->ddr_base = pci_resource_start(pci, 0); in sst_platform_get_resources()
38 ddr_base = relocate_imr_addr_mrfld(ctx->ddr_base); in sst_platform_get_resources()
39 if (!ctx->pdata->lib_info) { in sst_platform_get_resources()
40 dev_err(ctx->dev, "lib_info pointer NULL\n"); in sst_platform_get_resources()
41 ret = -EINVAL; in sst_platform_get_resources()
44 if (ddr_base != ctx->pdata->lib_info->mod_base) { in sst_platform_get_resources()
45 dev_err(ctx->dev, in sst_platform_get_resources()
47 ret = -EINVAL; in sst_platform_get_resources()
50 ctx->ddr_end = pci_resource_end(pci, 0); in sst_platform_get_resources()
52 ctx->ddr = pcim_iomap(pci, 0, in sst_platform_get_resources()
53 pci_resource_len(pci, 0)); in sst_platform_get_resources()
54 if (!ctx->ddr) { in sst_platform_get_resources()
55 ret = -EINVAL; in sst_platform_get_resources()
58 dev_dbg(ctx->dev, "sst: DDR Ptr %p\n", ctx->ddr); in sst_platform_get_resources()
60 ctx->ddr = NULL; in sst_platform_get_resources()
63 ctx->shim_phy_add = pci_resource_start(pci, 1); in sst_platform_get_resources()
64 ctx->shim = pcim_iomap(pci, 1, pci_resource_len(pci, 1)); in sst_platform_get_resources()
65 if (!ctx->shim) { in sst_platform_get_resources()
66 ret = -EINVAL; in sst_platform_get_resources()
69 dev_dbg(ctx->dev, "SST Shim Ptr %p\n", ctx->shim); in sst_platform_get_resources()
72 ctx->mailbox_add = pci_resource_start(pci, 2); in sst_platform_get_resources()
73 ctx->mailbox = pcim_iomap(pci, 2, pci_resource_len(pci, 2)); in sst_platform_get_resources()
74 if (!ctx->mailbox) { in sst_platform_get_resources()
75 ret = -EINVAL; in sst_platform_get_resources()
78 dev_dbg(ctx->dev, "SRAM Ptr %p\n", ctx->mailbox); in sst_platform_get_resources()
81 ctx->iram_end = pci_resource_end(pci, 3); in sst_platform_get_resources()
82 ctx->iram_base = pci_resource_start(pci, 3); in sst_platform_get_resources()
83 ctx->iram = pcim_iomap(pci, 3, pci_resource_len(pci, 3)); in sst_platform_get_resources()
84 if (!ctx->iram) { in sst_platform_get_resources()
85 ret = -EINVAL; in sst_platform_get_resources()
88 dev_dbg(ctx->dev, "IRAM Ptr %p\n", ctx->iram); in sst_platform_get_resources()
91 ctx->dram_end = pci_resource_end(pci, 4); in sst_platform_get_resources()
92 ctx->dram_base = pci_resource_start(pci, 4); in sst_platform_get_resources()
93 ctx->dram = pcim_iomap(pci, 4, pci_resource_len(pci, 4)); in sst_platform_get_resources()
94 if (!ctx->dram) { in sst_platform_get_resources()
95 ret = -EINVAL; in sst_platform_get_resources()
98 dev_dbg(ctx->dev, "DRAM Ptr %p\n", ctx->dram); in sst_platform_get_resources()
100 pci_release_regions(pci); in sst_platform_get_resources()
105 * intel_sst_probe - PCI probe function
107 * @pci: PCI device structure
108 * @pci_id: PCI device ID structure
111 static int intel_sst_probe(struct pci_dev *pci, in intel_sst_probe() argument
116 struct sst_platform_info *sst_pdata = pci->dev.platform_data; in intel_sst_probe()
118 dev_dbg(&pci->dev, "Probe for DID %x\n", pci->device); in intel_sst_probe()
119 ret = sst_alloc_drv_context(&sst_drv_ctx, &pci->dev, pci->device); in intel_sst_probe()
123 sst_drv_ctx->pdata = sst_pdata; in intel_sst_probe()
124 sst_drv_ctx->irq_num = pci->irq; in intel_sst_probe()
125 snprintf(sst_drv_ctx->firmware_name, sizeof(sst_drv_ctx->firmware_name), in intel_sst_probe()
127 sst_drv_ctx->dev_id, ".bin"); in intel_sst_probe()
134 ret = pcim_enable_device(pci); in intel_sst_probe()
136 dev_err(sst_drv_ctx->dev, in intel_sst_probe()
140 sst_drv_ctx->pci = pci_dev_get(pci); in intel_sst_probe()
145 pci_set_drvdata(pci, sst_drv_ctx); in intel_sst_probe()
152 dev_err(sst_drv_ctx->dev, "Probe failed with %d\n", ret); in intel_sst_probe()
157 * intel_sst_remove - PCI remove function
159 * @pci: PCI device structure
164 static void intel_sst_remove(struct pci_dev *pci) in intel_sst_remove() argument
166 struct intel_sst_drv *sst_drv_ctx = pci_get_drvdata(pci); in intel_sst_remove()
169 pci_dev_put(sst_drv_ctx->pci); in intel_sst_remove()
170 pci_release_regions(pci); in intel_sst_remove()
171 pci_set_drvdata(pci, NULL); in intel_sst_remove()
174 /* PCI Routines */
194 MODULE_DESCRIPTION("Intel (R) SST(R) Audio Engine PCI Driver");