.. | .. |
---|
38 | 38 | #include <linux/clk.h> |
---|
39 | 39 | #include <linux/media.h> |
---|
40 | 40 | #include <linux/mutex.h> |
---|
| 41 | +#include <linux/rk-video-format.h> |
---|
41 | 42 | #include <linux/slab.h> |
---|
| 43 | +#include <linux/soc/rockchip/rk_sdmmc.h> |
---|
42 | 44 | #include <media/media-device.h> |
---|
43 | 45 | #include <media/media-entity.h> |
---|
44 | 46 | #include <media/v4l2-ctrls.h> |
---|
.. | .. |
---|
49 | 51 | |
---|
50 | 52 | #define RKISP_DEFAULT_WIDTH 800 |
---|
51 | 53 | #define RKISP_DEFAULT_HEIGHT 600 |
---|
52 | | - |
---|
53 | | -#define RKISP_MAX_STREAM 6 |
---|
54 | | -#define RKISP_STREAM_MP 0 |
---|
55 | | -#define RKISP_STREAM_SP 1 |
---|
56 | | -#define RKISP_STREAM_DMATX0 2 |
---|
57 | | -#define RKISP_STREAM_DMATX1 3 |
---|
58 | | -#define RKISP_STREAM_DMATX2 4 |
---|
59 | | -#define RKISP_STREAM_DMATX3 5 |
---|
60 | 54 | |
---|
61 | 55 | #define RKISP_PLANE_Y 0 |
---|
62 | 56 | #define RKISP_PLANE_CB 1 |
---|
.. | .. |
---|
78 | 72 | ISP_V13 = 0x30, |
---|
79 | 73 | ISP_V20 = 0x40, |
---|
80 | 74 | ISP_V21 = 0x50, |
---|
| 75 | + ISP_V30 = 0x60, |
---|
| 76 | + ISP_V32 = 0x70, |
---|
| 77 | + ISP_V32_L = 0x80, |
---|
81 | 78 | }; |
---|
82 | 79 | |
---|
83 | 80 | enum rkisp_sd_type { |
---|
.. | .. |
---|
103 | 100 | FMT_FBCGAIN, |
---|
104 | 101 | FMT_EBD, |
---|
105 | 102 | FMT_SPD, |
---|
| 103 | + FMT_FBC, |
---|
106 | 104 | FMT_MAX |
---|
107 | 105 | }; |
---|
108 | 106 | |
---|
.. | .. |
---|
116 | 114 | struct rkisp_buffer { |
---|
117 | 115 | struct vb2_v4l2_buffer vb; |
---|
118 | 116 | struct list_head queue; |
---|
| 117 | + void *vaddr[VIDEO_MAX_PLANES]; |
---|
| 118 | + u32 buff_addr[VIDEO_MAX_PLANES]; |
---|
119 | 119 | int dev_id; |
---|
120 | | - union { |
---|
121 | | - u32 buff_addr[VIDEO_MAX_PLANES]; |
---|
122 | | - void *vaddr[VIDEO_MAX_PLANES]; |
---|
123 | | - }; |
---|
| 120 | + void *other; |
---|
124 | 121 | }; |
---|
125 | 122 | |
---|
126 | 123 | struct rkisp_dummy_buffer { |
---|
.. | .. |
---|
139 | 136 | |
---|
140 | 137 | extern int rkisp_debug; |
---|
141 | 138 | extern bool rkisp_monitor; |
---|
| 139 | +extern bool rkisp_irq_dbg; |
---|
142 | 140 | extern u64 rkisp_debug_reg; |
---|
143 | 141 | extern struct platform_driver rkisp_plat_drv; |
---|
144 | 142 | |
---|
.. | .. |
---|
167 | 165 | |
---|
168 | 166 | void rkisp_write(struct rkisp_device *dev, u32 reg, u32 val, bool is_direct); |
---|
169 | 167 | u32 rkisp_read(struct rkisp_device *dev, u32 reg, bool is_direct); |
---|
170 | | -u32 rkisp_read_reg_cache(struct rkisp_device *dev, u32 reg); |
---|
171 | 168 | void rkisp_set_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val, bool is_direct); |
---|
172 | 169 | void rkisp_clear_bits(struct rkisp_device *dev, u32 reg, u32 mask, bool is_direct); |
---|
| 170 | + |
---|
| 171 | +void rkisp_write_reg_cache(struct rkisp_device *dev, u32 reg, u32 val); |
---|
| 172 | +u32 rkisp_read_reg_cache(struct rkisp_device *dev, u32 reg); |
---|
| 173 | +void rkisp_set_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val); |
---|
| 174 | +void rkisp_clear_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask); |
---|
| 175 | + |
---|
| 176 | +/* for dual isp, config for next isp reg */ |
---|
| 177 | +void rkisp_next_write(struct rkisp_device *dev, u32 reg, u32 val, bool is_direct); |
---|
| 178 | +u32 rkisp_next_read(struct rkisp_device *dev, u32 reg, bool is_direct); |
---|
| 179 | +void rkisp_next_set_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val, bool is_direct); |
---|
| 180 | +void rkisp_next_clear_bits(struct rkisp_device *dev, u32 reg, u32 mask, bool is_direct); |
---|
| 181 | + |
---|
| 182 | +void rkisp_next_write_reg_cache(struct rkisp_device *dev, u32 reg, u32 val); |
---|
| 183 | +u32 rkisp_next_read_reg_cache(struct rkisp_device *dev, u32 reg); |
---|
| 184 | +void rkisp_next_set_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val); |
---|
| 185 | +void rkisp_next_clear_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask); |
---|
| 186 | + |
---|
173 | 187 | void rkisp_update_regs(struct rkisp_device *dev, u32 start, u32 end); |
---|
174 | 188 | |
---|
175 | 189 | int rkisp_alloc_buffer(struct rkisp_device *dev, struct rkisp_dummy_buffer *buf); |
---|