| .. | .. |
|---|
| 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); |
|---|
| .. | .. |
|---|
| 182 | 196 | void rkisp_free_common_dummy_buf(struct rkisp_device *dev); |
|---|
| 183 | 197 | |
|---|
| 184 | 198 | void rkisp_set_clk_rate(struct clk *clk, unsigned long rate); |
|---|
| 199 | +u64 rkisp_time_get_ns(struct rkisp_device *dev); |
|---|
| 185 | 200 | #endif /* _RKISP_COMMON_H */ |
|---|