bcwc_pcie: minor irq handling fixes

This commit is contained in:
Sven Schnelle
2015-10-29 22:29:31 +01:00
parent b1f6b9d8dc
commit bd4650a2f7
3 changed files with 12 additions and 10 deletions

View File

@@ -22,6 +22,7 @@
#include <linux/pci.h>
#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 {

View File

@@ -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);
}

View File

@@ -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);