Merge tag 'lsk-v4.4-16.06-android'
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / rk_camsys / camsys_marvin.h
1 #ifndef __CAMSYS_MARVIN_H__
2 #define __CAMSYS_MARVIN_H__
3
4 #include "camsys_internal.h"
5
6 #define CAMSYS_MARVIN_IRQNAME                   "MarvinIrq"
7
8 #define MRV_ISP_BASE                            0x400
9 #define MRV_ISP_RIS                             (MRV_ISP_BASE + 0x1c0)
10 #define MRV_ISP_MIS                             (MRV_ISP_BASE + 0x1c4)
11 #define MRV_ISP_ICR                             (MRV_ISP_BASE + 0x1c8)
12
13 #define MRV_MIPI_BASE                           0x1C00
14 #define MRV_MIPI_MIS                            (MRV_MIPI_BASE + 0x10)
15 #define MRV_MIPI_ICR                            (MRV_MIPI_BASE + 0x14)
16
17 #define MRV_MI_BASE                             (0x1400)
18
19 #define MRV_MI_MP_Y_OFFS_CNT_START                   (MRV_MI_BASE + 0x14)
20 #define MRV_MI_INIT                   (MRV_MI_BASE + 0x4)
21 #define MRV_MI_MP_Y_BASE_AD                   (MRV_MI_BASE + 0x8)
22 #define MRV_MI_Y_BASE_AD_SHD                   (MRV_MI_BASE + 0x78)
23 #define MRV_MI_Y_OFFS_CNT_SHD                   (MRV_MI_BASE + 0x80)
24 #define MRV_MI_IMIS                              (MRV_MI_BASE + 0xf8)
25 #define MRV_MI_RIS                              (MRV_MI_BASE + 0xfc)
26 #define MRV_MI_MIS                              (MRV_MI_BASE + 0x100)
27 #define MRV_MI_ICR                              (MRV_MI_BASE + 0x104)
28
29 #define MRV_FLASH_CONFIG                        (0x664)
30
31 #define MRV_JPG_BASE                             (0x1800)
32 #define MRV_JPG_ERR_RIS                          (MRV_JPG_BASE + 0x6C)
33 #define MRV_JPG_ERR_MIS                          (MRV_JPG_BASE + 0x70)
34 #define MRV_JPG_ERR_ICR                          (MRV_JPG_BASE + 0x74)
35 #define MRV_JPG_MIS                              (MRV_JPG_BASE + 0x84)
36 #define MRV_JPG_RIS                              (MRV_JPG_BASE + 0x80)
37 #define MRV_JPG_ICR                              (MRV_JPG_BASE + 0x88)
38
39 typedef enum IO_USE_TYPE_e {
40         USE_AS_GPIO,
41         USE_AS_ISP_INTERNAL,
42 } IO_USE_TYPE_t;
43
44 typedef struct camsys_mrv_clk_s {
45         struct clk      *pd_isp;
46         struct clk      *hclk_isp;
47         struct clk      *aclk_isp;
48         struct clk      *isp;
49         struct clk      *isp_jpe;
50         struct clk      *pclkin_isp;
51         struct clk      *clk_mipi_24m;
52         struct clk      *clk_vio0_noc;
53         bool             in_on;
54
55         struct clk      *cif_clk_out;
56         struct clk      *cif_clk_pll;
57         struct clk              *pclk_dphyrx;
58
59         unsigned int     out_on;
60
61         struct clk      *hclk_isp0_noc;
62         struct clk      *hclk_isp0_wrapper;
63         struct clk      *hclk_isp1_noc;
64         struct clk      *hclk_isp1_wrapper;
65         struct clk      *aclk_isp0_noc;
66         struct clk      *aclk_isp0_wrapper;
67         struct clk      *aclk_isp1_noc;
68         struct clk      *aclk_isp1_wrapper;
69         struct clk      *clk_isp0;
70         struct clk      *clk_isp1;
71         struct clk      *pclkin_isp1;
72         struct clk      *pclk_dphy_ref;
73         struct clk      *pclk_dphytxrx;
74
75         struct mutex     lock;
76 } camsys_mrv_clk_t;
77
78 int camsys_mrv_probe_cb(struct platform_device *pdev, camsys_dev_t *camsys_dev);
79
80 #endif
81