}
}
spin_unlock(&camsys_devs.lock);
-
+ if (atomic_read(&camsys_dev->refcount) >= 1) {
+ camsys_err("%s has been opened!",
+ dev_name(camsys_dev->miscdev.this_device));
+ err = -EBUSY;
+ goto end;
+ }
INIT_LIST_HEAD(&camsys_dev->extdevs.active);
if (camsys_dev->mipiphy != NULL) {
err = -ENODEV;
goto end;
} else {
+ atomic_inc(&camsys_dev->refcount);
camsys_trace(1,
"%s(%p) is opened!",
dev_name(camsys_dev->miscdev.this_device), camsys_dev);
}
}
}
-
+ atomic_dec(&camsys_dev->refcount);
camsys_trace(1,
"%s(%p) is closed",
dev_name(camsys_dev->miscdev.this_device),
*v0.0x21.0xe
1) correct mipiphy_hsfreqrange of 3368.
2) add csi-phy timing setting for 3368.
+*v0.0x21.0xf:
+ 1) add reference count for marvin.
*/
-#define CAMSYS_DRIVER_VERSION KERNEL_VERSION(0, 0x21, 0xe)
+#define CAMSYS_DRIVER_VERSION KERNEL_VERSION(0, 0x21, 0xf)
#define CAMSYS_PLATFORM_DRV_NAME "RockChip-CamSys"
#define CAMSYS_PLATFORM_MARVIN_NAME "Platform_MarvinDev"
unsigned long rk_grf_base;
unsigned long rk_cru_base;
unsigned long rk_isp_base;
-
+ atomic_t refcount;
struct iommu_domain *domain;
camsys_dma_buf_t dma_buf[CAMSYS_DMA_BUF_MAX_NUM];
int dma_buf_cnt;