From 3fc7712fefaade1db793ae6c9df902ee5399e47e Mon Sep 17 00:00:00 2001 From: ddl Date: Wed, 13 Aug 2014 15:19:21 +0800 Subject: [PATCH] camsys_drv: v0.0x13.0 --- drivers/media/video/rk_camsys/camsys_drv.c | 6 ++++-- .../media/video/rk_camsys/camsys_internal.h | 5 ++++- drivers/media/video/rk_camsys/camsys_marvin.c | 19 +++++++++++++++++-- drivers/media/video/rk_camsys/camsys_marvin.h | 8 ++++++++ 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/drivers/media/video/rk_camsys/camsys_drv.c b/drivers/media/video/rk_camsys/camsys_drv.c index 6517bb38a4aa..bef95acc8d7a 100755 --- a/drivers/media/video/rk_camsys/camsys_drv.c +++ b/drivers/media/video/rk_camsys/camsys_drv.c @@ -167,7 +167,7 @@ static int camsys_extdev_register(camsys_devio_name_t *devio, camsys_dev_t *cams extdev = camsys_find_extdev(devio->dev_id, camsys_dev); if (extdev != NULL) { - err = 0; + err = -EINVAL; /* ddl@rock-chips.com: v0.0x13.0 */ camsys_warn("Extdev(dev_id: 0x%x) has been registered in %s!", devio->dev_id, dev_name(camsys_dev->miscdev.this_device)); goto end; @@ -467,7 +467,9 @@ static int camsys_irq_connect(camsys_irqcnnt_t *irqcnnt, camsys_dev_t *camsys_de if ((irqcnnt->mis != MRV_ISP_MIS) && (irqcnnt->mis != MRV_MIPI_MIS) && - (irqcnnt->mis != MRV_MI_MIS)) { + (irqcnnt->mis != MRV_MI_MIS) && + (irqcnnt->mis != MRV_JPG_MIS) && + (irqcnnt->mis != MRV_JPG_ERR_MIS)) { camsys_err("this thread(pid: %d) irqcnnt->mis(0x%x) is invalidate, irq connect failed!", irqcnnt->pid, irqcnnt->mis); diff --git a/drivers/media/video/rk_camsys/camsys_internal.h b/drivers/media/video/rk_camsys/camsys_internal.h index 87d45670661f..ce71d9faeeb4 100755 --- a/drivers/media/video/rk_camsys/camsys_internal.h +++ b/drivers/media/video/rk_camsys/camsys_internal.h @@ -92,8 +92,11 @@ 1) raise qos of isp up to the same as lcdc. *v0.0x12.0: 1) support iommu. +*v0.0x13.0: + 1) camsys_extdev_register return failed when this dev_id has been registered; + 2) add support JPG irq connect; */ -#define CAMSYS_DRIVER_VERSION KERNEL_VERSION(0,0x12,0) +#define CAMSYS_DRIVER_VERSION KERNEL_VERSION(0,0x13,0) #define CAMSYS_PLATFORM_DRV_NAME "RockChip-CamSys" diff --git a/drivers/media/video/rk_camsys/camsys_marvin.c b/drivers/media/video/rk_camsys/camsys_marvin.c index c05ebd6d298b..a3bf12e4f31d 100755 --- a/drivers/media/video/rk_camsys/camsys_marvin.c +++ b/drivers/media/video/rk_camsys/camsys_marvin.c @@ -400,13 +400,14 @@ static irqreturn_t camsys_mrv_irq(int irq, void *data) camsys_dev_t *camsys_dev = (camsys_dev_t*)data; camsys_irqstas_t *irqsta; camsys_irqpool_t *irqpool; - unsigned int isp_mis,mipi_mis,mi_mis,*mis; + unsigned int isp_mis,mipi_mis,mi_mis,*mis,jpg_mis,jpg_err_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)); - + jpg_mis = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_JPG_MIS)); + jpg_err_mis = __raw_readl((void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_JPG_ERR_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)); @@ -422,6 +423,8 @@ static irqreturn_t camsys_mrv_irq(int irq, void *data) __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(jpg_mis, (void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_JPG_ICR)); + __raw_writel(jpg_err_mis, (void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_JPG_ERR_ICR)); __raw_writel(mi_mis, (void volatile *)(camsys_dev->devmems.registermem->vir_base + MRV_MI_ICR)); spin_lock(&camsys_dev->irq.lock); @@ -447,6 +450,18 @@ static irqreturn_t camsys_mrv_irq(int irq, void *data) break; } + case MRV_JPG_MIS: + { + mis = &jpg_mis; + break; + } + + case MRV_JPG_ERR_MIS: + { + mis = &jpg_err_mis; + break; + } + default: { camsys_trace(2,"Thread(pid:%d) irqpool mis(%d) is invalidate",irqpool->pid,irqpool->mis); diff --git a/drivers/media/video/rk_camsys/camsys_marvin.h b/drivers/media/video/rk_camsys/camsys_marvin.h index 124bc7f2bee6..6c4343964c1f 100755 --- a/drivers/media/video/rk_camsys/camsys_marvin.h +++ b/drivers/media/video/rk_camsys/camsys_marvin.h @@ -30,6 +30,14 @@ #define MRV_FLASH_CONFIG (0x664) +#define MRV_JPG_BASE (0x1800) +#define MRV_JPG_ERR_RIS (MRV_JPG_BASE+0x6C) +#define MRV_JPG_ERR_MIS (MRV_JPG_BASE+0x70) +#define MRV_JPG_ERR_ICR (MRV_JPG_BASE+0x74) +#define MRV_JPG_MIS (MRV_JPG_BASE+0x84) +#define MRV_JPG_RIS (MRV_JPG_BASE+0x80) +#define MRV_JPG_ICR (MRV_JPG_BASE+0x88) + typedef enum IO_USE_TYPE_e{ USE_AS_GPIO, USE_AS_ISP_INTERNAL, -- 2.34.1