mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 11:50:43 +09:00
camsys_drv : v0.f.0
This commit is contained in:
@@ -83,6 +83,8 @@
|
||||
* 1) add Isp_SoftRst for rk3288;
|
||||
*v0.e.0:
|
||||
* 1) isp_clk 208.8M for 1lane, isp_clk 416.6M for 2lane;
|
||||
*v0.f.0:
|
||||
1) mi_mis register may read erro, this may cause mistaken mi frame_end irqs.
|
||||
*/
|
||||
#define CAMSYS_DRIVER_VERSION KERNEL_VERSION(0,0xe,0)
|
||||
|
||||
|
||||
@@ -245,7 +245,6 @@ static int camsys_mrv_clkin_cb(void *ptr, unsigned int on)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int camsys_mrv_clkout_cb(void *ptr, unsigned int on,unsigned int inclk)
|
||||
{
|
||||
camsys_dev_t *camsys_dev = (camsys_dev_t*)ptr;
|
||||
@@ -283,14 +282,28 @@ static irqreturn_t camsys_mrv_irq(int irq, void *data)
|
||||
camsys_irqstas_t *irqsta;
|
||||
camsys_irqpool_t *irqpool;
|
||||
unsigned int isp_mis,mipi_mis,mi_mis,*mis;
|
||||
|
||||
unsigned int mi_ris,mi_imis;
|
||||
|
||||
isp_mis = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_ISP_MIS));
|
||||
mipi_mis = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MIPI_MIS));
|
||||
mi_mis = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_MIS));
|
||||
|
||||
mi_mis = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_MIS));
|
||||
#if 1
|
||||
mi_ris = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_RIS));
|
||||
mi_imis = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_IMIS));
|
||||
while((mi_ris & mi_imis) != mi_mis){
|
||||
camsys_trace(2,"mi_mis status erro,mi_mis 0x%x,mi_ris 0x%x,imis 0x%x\n",mi_mis,mi_ris,mi_imis);
|
||||
mi_mis = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_MIS));
|
||||
mi_ris = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_RIS));
|
||||
mi_imis = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_IMIS));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
__raw_writel(isp_mis, (void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_ISP_ICR));
|
||||
__raw_writel(mipi_mis, (void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MIPI_ICR));
|
||||
__raw_writel(mi_mis, (void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_ICR));
|
||||
__raw_writel(mi_mis, (void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_ICR));
|
||||
|
||||
spin_lock(&camsys_dev->irq.lock);
|
||||
if (!list_empty(&camsys_dev->irq.irq_pool)) {
|
||||
|
||||
@@ -17,6 +17,14 @@
|
||||
#define MRV_MIPI_ICR (MRV_MIPI_BASE+0x14)
|
||||
|
||||
#define MRV_MI_BASE (0x1400)
|
||||
|
||||
#define MRV_MI_MP_Y_OFFS_CNT_START (MRV_MI_BASE+0x14)
|
||||
#define MRV_MI_INIT (MRV_MI_BASE+0x4)
|
||||
#define MRV_MI_MP_Y_BASE_AD (MRV_MI_BASE+0x8)
|
||||
#define MRV_MI_Y_BASE_AD_SHD (MRV_MI_BASE+0x78)
|
||||
#define MRV_MI_Y_OFFS_CNT_SHD (MRV_MI_BASE+0x80)
|
||||
#define MRV_MI_IMIS (MRV_MI_BASE+0xf8)
|
||||
#define MRV_MI_RIS (MRV_MI_BASE+0xfc)
|
||||
#define MRV_MI_MIS (MRV_MI_BASE+0x100)
|
||||
#define MRV_MI_ICR (MRV_MI_BASE+0x104)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user