camsys_drv: v0.0x13.0
authorddl <ddl@rock-chips.com>
Wed, 13 Aug 2014 07:19:21 +0000 (15:19 +0800)
committerddl <ddl@rock-chips.com>
Wed, 13 Aug 2014 07:19:30 +0000 (15:19 +0800)
drivers/media/video/rk_camsys/camsys_drv.c
drivers/media/video/rk_camsys/camsys_internal.h
drivers/media/video/rk_camsys/camsys_marvin.c
drivers/media/video/rk_camsys/camsys_marvin.h

index 6517bb38a4aa47727028215822c895790163f465..bef95acc8d7a4d4c51fc630231a2b7149e0bcfcb 100755 (executable)
@@ -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);
index 87d45670661f10c388be155eaca9f946001ad26e..ce71d9faeeb4a6c9bc3dba5d2904bd5b18c1958f 100755 (executable)
          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"
index c05ebd6d298befd3c647255970e4aa3b5f380648..a3bf12e4f31d60ae4e1706bbc65347e22bfe75d1 100755 (executable)
@@ -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);
index 124bc7f2bee6932f57f307eea4aca7c57035e95a..6c4343964c1ffe6669ebff5db29dab7c273e03c7 100755 (executable)
 
 #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,