staticint sst_platform_get_resources(struct intel_sst_drv *ctx)
{ int ddr_base, ret = 0; struct pci_dev *pci = ctx->pci;
ret = pcim_request_all_regions(pci, SST_DRV_NAME); if (ret) return ret;
/* map registers */ /* DDR base */ if (ctx->dev_id == PCI_DEVICE_ID_INTEL_SST_TNG) {
ctx->ddr_base = pci_resource_start(pci, 0); /* check that the relocated IMR base matches with FW Binary */
ddr_base = relocate_imr_addr_mrfld(ctx->ddr_base); if (!ctx->pdata->lib_info) {
dev_err(ctx->dev, "lib_info pointer NULL\n"); return -EINVAL;
} if (ddr_base != ctx->pdata->lib_info->mod_base) {
dev_err(ctx->dev, "FW LSP DDR BASE does not match with IFWI\n"); return -EINVAL;
}
ctx->ddr_end = pci_resource_end(pci, 0);
ctx->ddr = pcim_iomap(pci, 0, 0); if (!ctx->ddr) return -ENOMEM;
ret = sst_context_init(sst_drv_ctx); if (ret < 0) return ret;
/* Init the device */
ret = pcim_enable_device(pci); if (ret) {
dev_err(sst_drv_ctx->dev, "device can't be enabled. Returned err: %d\n", ret); goto do_free_drv_ctx;
}
sst_drv_ctx->pci = pci_dev_get(pci);
ret = sst_platform_get_resources(sst_drv_ctx); if (ret < 0) goto do_free_drv_ctx;
/** * intel_sst_remove - PCI remove function * * @pci: PCI device structure * * This function is called by OS when a device is unloaded * This frees the interrupt etc
*/ staticvoid intel_sst_remove(struct pci_dev *pci)
{ struct intel_sst_drv *sst_drv_ctx = pci_get_drvdata(pci);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.