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;
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);
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"
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));
__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);
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);
#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,