From bd4650a2f7ced8bd147a6581aa9900c6ebe35de8 Mon Sep 17 00:00:00 2001 From: Sven Schnelle Date: Thu, 29 Oct 2015 22:29:31 +0100 Subject: [PATCH] bcwc_pcie: minor irq handling fixes --- bcwc_drv.h | 4 +++- bcwc_hw.c | 14 +++++++++----- bcwc_isp.c | 4 ---- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/bcwc_drv.h b/bcwc_drv.h index cc7e1ec..516afa0 100644 --- a/bcwc_drv.h +++ b/bcwc_drv.h @@ -22,6 +22,7 @@ #include #include "bcwc_reg.h" +#include "bcwc_ringbuf.h" #define BCWC_PCI_S2_IO 0 #define BCWC_PCI_S2_MEM 2 @@ -33,11 +34,12 @@ struct bcwc_reg { }; struct fw_channel { - char *name; u32 offset; u32 size; u32 source; u32 type; + struct bcwc_ringbuf ringbuf; + char *name; }; struct bcwc_private { diff --git a/bcwc_hw.c b/bcwc_hw.c index fec8101..f7ecccc 100644 --- a/bcwc_hw.c +++ b/bcwc_hw.c @@ -21,7 +21,7 @@ #include "bcwc_drv.h" #include "bcwc_hw.h" #include "bcwc_ddr.h" -#include "isp.h" +#include "bcwc_isp.h" /* FIXME: Double check these */ static u32 ddr_phy_reg_map[] = { @@ -79,7 +79,7 @@ static int bcwc_hw_s2_init_pcie_link(struct bcwc_private *dev_priv) reg = BCWC_S2_REG_READ(S2_PCIE_LINK_D124); if (reg != 0xac5800) { dev_err(&dev_priv->pdev->dev, - "Failed to init S2 PCIe link: %u\n", reg); + "Failed to init S2 PCIe link: %08x\n", reg); return -EIO; } @@ -661,12 +661,15 @@ static int bcwc_hw_ddr_phy_save_regs(struct bcwc_private *dev_priv) static int bcwc_hw_irq_enable(struct bcwc_private *dev_priv) { BCWC_ISP_REG_WRITE(0xf8, ISP_REG_41004); + pci_write_config_dword(dev_priv->pdev, 0x94, 0x200); + return 0; } static int bcwc_hw_irq_disable(struct bcwc_private *dev_priv) { BCWC_ISP_REG_WRITE(0, ISP_REG_41004); + pci_write_config_dword(dev_priv->pdev, 0x94, 0x0); return 0; } @@ -732,8 +735,9 @@ out: return ret; } -void bcwc_hw_deinit(struct bcwc_private *priv) +void bcwc_hw_deinit(struct bcwc_private *dev_priv) { - dev_info(&priv->pdev->dev, "%s", __FUNCTION__); - bcwc_hw_irq_disable(priv); + dev_info(&dev_priv->pdev->dev, "%s", __FUNCTION__); + BCWC_ISP_REG_WRITE(0, ISP_REG_41020); + bcwc_hw_irq_disable(dev_priv); } diff --git a/bcwc_isp.c b/bcwc_isp.c index 4f66277..0a12c8f 100644 --- a/bcwc_isp.c +++ b/bcwc_isp.c @@ -46,7 +46,6 @@ int isp_mem_init(struct bcwc_private *dev_priv) "Failed to preallocate firmware memory\n"); return -ENOMEM; } - return 0; } @@ -76,7 +75,6 @@ struct isp_mem_obj *isp_mem_create(struct bcwc_private *dev_priv, obj->offset = obj->base.start - root->start; obj->size = size; obj->size_aligned = obj->base.end - obj->base.start; - return obj; } @@ -382,8 +380,6 @@ int isp_init(struct bcwc_private *dev_priv) pci_set_power_state(dev_priv->pdev, PCI_D0); mdelay(10); - pci_write_config_dword(dev_priv->pdev, 0x94, 0x200); - isp_enable_sensor(dev_priv); BCWC_ISP_REG_WRITE(0, ISP_IPC_NUM_CHAN); BCWC_ISP_REG_WRITE(0, ISP_IPC_QUEUE_SIZE);