bcwc_pcie: enable/disable interrupts in SoC

This commit is contained in:
Sven Schnelle
2015-10-26 21:38:16 +01:00
parent ee3d53047d
commit fb8782e240
4 changed files with 17 additions and 2 deletions

View File

@@ -87,6 +87,7 @@ static int bcwc_pci_reserve_mem(struct bcwc_private *dev_priv)
static void bcwc_irq_work(struct work_struct *work)
{
printk("BCWC interrupt\n");
}
static irqreturn_t bcwc_irq_handler(int irq, void *arg)
@@ -205,6 +206,7 @@ static void bcwc_pci_remove(struct pci_dev *pdev)
dev_priv = pci_get_drvdata(pdev);
bcwc_hw_deinit(dev_priv);
if (dev_priv) {
isp_mem_destroy(dev_priv->firmware);
bcwc_irq_disable(dev_priv);

View File

@@ -660,11 +660,13 @@ 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);
return 0;
}
static int bcwc_hw_irq_disable(struct bcwc_private *dev_priv)
{
BCWC_ISP_REG_WRITE(0, ISP_REG_41004);
return 0;
}
@@ -720,8 +722,18 @@ int bcwc_hw_init(struct bcwc_private *dev_priv)
BCWC_ISP_REG_WRITE(0, ISP_REG_40004);
isp_init(dev_priv);
ret = isp_init(dev_priv);
if (ret)
goto out;
dev_info(&dev_priv->pdev->dev, "Enabling interrupts\n");
bcwc_hw_irq_enable(dev_priv);
out:
return ret;
}
void bcwc_hw_deinit(struct bcwc_private *priv)
{
dev_info(&priv->pdev->dev, "%s", __FUNCTION__);
bcwc_hw_irq_disable(priv);
}

View File

@@ -115,5 +115,5 @@ static inline void _BCWC_ISP_REG_WRITE(struct bcwc_private *dev_priv, u32 val,
}
extern int bcwc_hw_init(struct bcwc_private *dev_priv);
extern void bcwc_hw_deinit(struct bcwc_private *priv);
#endif

View File

@@ -160,6 +160,7 @@
#define ISP_REG_40004 0x40004
#define ISP_REG_40008 0x40008
#define ISP_REG_41000 0x41000
#define ISP_REG_41004 0x41004
#define ISP_REG_41020 0x41020
#define ISP_REG_41024 0x41024