From 6e8bdbbaf5c3c48b50eedc7dd5e7e35e20033251 Mon Sep 17 00:00:00 2001 From: Sven Schnelle Date: Mon, 26 Oct 2015 09:12:02 +0100 Subject: [PATCH] bcwc_pcie: also request memory for s2 mem region and use our own root for the memory resource allocator to prevent conflicts with system resource memory allocation. --- bcwc_drv.c | 8 ++++++-- isp.c | 15 +++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/bcwc_drv.c b/bcwc_drv.c index f55c24f..746c217 100644 --- a/bcwc_drv.c +++ b/bcwc_drv.c @@ -40,14 +40,18 @@ static int bcwc_pci_reserve_mem(struct bcwc_private *dev_priv) return ret; } - /* S2 MEM is reserved by the isp memory manager */ - ret = pci_request_region(dev_priv->pdev, BCWC_PCI_ISP_IO, "ISP IO"); if (ret) { dev_err(&dev_priv->pdev->dev, "Failed to request ISP IO\n"); return ret; } + ret = pci_request_region(dev_priv->pdev, BCWC_PCI_S2_MEM, "S2 MEM"); + if (ret) { + dev_err(&dev_priv->pdev->dev, "Failed to request S2 MEM\n"); + return ret; + } + /* S2 IO */ start = pci_resource_start(dev_priv->pdev, BCWC_PCI_S2_IO); len = pci_resource_len(dev_priv->pdev, BCWC_PCI_S2_IO); diff --git a/isp.c b/isp.c index 8a4c8dc..972f00b 100644 --- a/isp.c +++ b/isp.c @@ -28,15 +28,13 @@ int isp_mem_init(struct bcwc_private *dev_priv) { struct resource *root = &dev_priv->pdev->resource[BCWC_PCI_S2_MEM]; - int ret; - ret = allocate_resource(root, dev_priv->mem, FTHD_MEM_SIZE, root->start, - root->end, PAGE_SIZE, NULL, NULL); - if (ret) { - dev_err(&dev_priv->pdev->dev, - "Failed to initialize ISP memory manager\n"); - return -EIO; - } + dev_priv->mem = kzalloc(sizeof(struct resource), GFP_KERNEL); + if (!dev_priv->mem) + return -ENOMEM; + + dev_priv->mem->start = root->start; + dev_priv->mem->end = root->end; /* Preallocate 8mb for the firmware */ dev_priv->firmware = isp_mem_create(dev_priv, FTHD_MEM_FIRMWARE, @@ -307,5 +305,6 @@ int isp_init(struct bcwc_private *dev_priv) int isp_uninit(struct bcwc_private *dev_priv) { + kfree(dev_priv->mem); return 0; }