hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/include/uapi/linux/rk-camera-module.h
....@@ -8,11 +8,12 @@
88 #define _UAPI_RKMODULE_CAMERA_H
99
1010 #include <linux/types.h>
11
+#include <linux/rk-video-format.h>
1112
1213 #define RKMODULE_API_VERSION KERNEL_VERSION(0, 1, 0x2)
1314
1415 /* using for rk3588 dual isp unite */
15
-#define RKMOUDLE_UNITE_EXTEND_PIXEL 32
16
+#define RKMOUDLE_UNITE_EXTEND_PIXEL 128
1617 /* using for rv1109 and rv1126 */
1718 #define RKMODULE_EXTEND_LINE 24
1819
....@@ -57,6 +58,7 @@
5758 RKMODULE_CAMERA_BT656_CHANNEL_3)
5859
5960 #define DPHY_MAX_LANE 4
61
+#define RKMODULE_MULTI_DEV_NUM 4
6062
6163 #define RKMODULE_GET_MODULE_INFO \
6264 _IOR('V', BASE_VIDIOC_PRIVATE + 0, struct rkmodule_inf)
....@@ -169,14 +171,29 @@
169171 #define RKMODULE_GET_READOUT_LINE_CNT_PER_LINE \
170172 _IOR('V', BASE_VIDIOC_PRIVATE + 36, __u32)
171173
174
+#define RKMODULE_GET_GROUP_ID \
175
+ _IOR('V', BASE_VIDIOC_PRIVATE + 37, __u32)
176
+
177
+#define RKMODULE_SET_GROUP_ID \
178
+ _IOW('V', BASE_VIDIOC_PRIVATE + 38, __u32)
179
+
180
+#define RKMODULE_GET_CAPTURE_MODE \
181
+ _IOR('V', BASE_VIDIOC_PRIVATE + 39, struct rkmodule_capture_info)
182
+
183
+#define RKMODULE_SET_CAPTURE_MODE \
184
+ _IOW('V', BASE_VIDIOC_PRIVATE + 40, struct rkmodule_capture_info)
185
+
186
+#define RKMODULE_GET_SKIP_FRAME \
187
+ _IOR('V', BASE_VIDIOC_PRIVATE + 41, __u32)
188
+
172189 struct rkmodule_i2cdev_info {
173
- u8 slave_addr;
190
+ __u8 slave_addr;
174191 } __attribute__ ((packed));
175192
176193 struct rkmodule_dev_info {
177194 union {
178195 struct rkmodule_i2cdev_info i2c_dev;
179
- u32 reserved[8];
196
+ __u32 reserved[8];
180197 };
181198 } __attribute__ ((packed));
182199
....@@ -312,6 +329,7 @@
312329 __u32 dccmap_height;
313330 __u32 dcc_mode;
314331 __u32 dcc_dir;
332
+ __u32 pd_offset;
315333 __u16 gainmap[RKMODULE_PADF_GAINMAP_LEN];
316334 __u16 dccmap[RKMODULE_PDAF_DCCMAP_LEN];
317335 } __attribute__ ((packed));
....@@ -623,6 +641,7 @@
623641 RKICF_RESET_SRC_ERR_CUTOFF,
624642 RKCIF_RESET_SRC_ERR_HOTPLUG,
625643 RKCIF_RESET_SRC_ERR_APP,
644
+ RKCIF_RESET_SRC_ERR_ISP,
626645 };
627646
628647 struct rkmodule_vicap_reset_info {
....@@ -653,6 +672,29 @@
653672 } __attribute__ ((packed));
654673
655674 /*
675
+ * link to vicap
676
+ * linear mode: pad0~pad3 for id0~id3;
677
+ *
678
+ * HDR_X2: id0 fiexd to vc0 for long frame
679
+ * id1 fixed to vc1 for short frame;
680
+ * id2~id3 reserved, can config by PAD2~PAD3
681
+ *
682
+ * HDR_X3: id0 fiexd to vc0 for long frame
683
+ * id1 fixed to vc1 for middle frame
684
+ * id2 fixed to vc2 for short frame;
685
+ * id3 reserved, can config by PAD3
686
+ *
687
+ * link to isp, the connection relationship is as follows
688
+ */
689
+enum rkmodule_max_pad {
690
+ PAD0, /* link to isp */
691
+ PAD1, /* link to csi wr0 | hdr x2:L x3:M */
692
+ PAD2, /* link to csi wr1 | hdr x3:L */
693
+ PAD3, /* link to csi wr2 | hdr x2:M x3:S */
694
+ PAD_MAX,
695
+};
696
+
697
+/*
656698 * sensor exposure sync mode
657699 */
658700 enum rkmodule_sync_mode {
....@@ -663,10 +705,10 @@
663705 };
664706
665707 struct rkmodule_mclk_data {
666
- u32 enable;
667
- u32 mclk_index;
668
- u32 mclk_rate;
669
- u32 reserved[8];
708
+ __u32 enable;
709
+ __u32 mclk_index;
710
+ __u32 mclk_rate;
711
+ __u32 reserved[8];
670712 };
671713
672714 /*
....@@ -716,14 +758,14 @@
716758 };
717759
718760 struct rkmodule_csi_dphy_param {
719
- u32 vendor;
720
- u32 lp_vol_ref;
721
- u32 lp_hys_sw[DPHY_MAX_LANE];
722
- u32 lp_escclk_pol_sel[DPHY_MAX_LANE];
723
- u32 skew_data_cal_clk[DPHY_MAX_LANE];
724
- u32 clk_hs_term_sel;
725
- u32 data_hs_term_sel[DPHY_MAX_LANE];
726
- u32 reserved[32];
761
+ __u32 vendor;
762
+ __u32 lp_vol_ref;
763
+ __u32 lp_hys_sw[DPHY_MAX_LANE];
764
+ __u32 lp_escclk_pol_sel[DPHY_MAX_LANE];
765
+ __u32 skew_data_cal_clk[DPHY_MAX_LANE];
766
+ __u32 clk_hs_term_sel;
767
+ __u32 data_hs_term_sel[DPHY_MAX_LANE];
768
+ __u32 reserved[32];
727769 };
728770
729771 struct rkmodule_sensor_fmt {
....@@ -736,4 +778,39 @@
736778 struct rkmodule_sensor_fmt sensor_fmt[RKMODULE_MAX_SENSOR_NUM];
737779 };
738780
781
+enum rkmodule_capture_mode {
782
+ RKMODULE_CAPTURE_MODE_NONE = 0,
783
+ RKMODULE_MULTI_DEV_COMBINE_ONE,
784
+ RKMODULE_ONE_CH_TO_MULTI_ISP,
785
+ RKMODULE_MULTI_CH_TO_MULTI_ISP,
786
+ RKMODULE_MULTI_CH_COMBINE_SQUARE,
787
+};
788
+
789
+struct rkmodule_multi_dev_info {
790
+ __u32 dev_idx[RKMODULE_MULTI_DEV_NUM];
791
+ __u32 combine_idx[RKMODULE_MULTI_DEV_NUM];
792
+ __u32 pixel_offset;
793
+ __u32 dev_num;
794
+ __u32 reserved[8];
795
+};
796
+
797
+struct rkmodule_one_to_multi_info {
798
+ __u32 isp_num;
799
+ __u32 frame_pattern[RKMODULE_MULTI_DEV_NUM];
800
+};
801
+
802
+struct rkmodule_multi_combine_info {
803
+ __u32 combine_num;
804
+ __u32 combine_index[RKMODULE_MULTI_DEV_NUM];
805
+};
806
+
807
+struct rkmodule_capture_info {
808
+ __u32 mode;
809
+ union {
810
+ struct rkmodule_multi_dev_info multi_dev;
811
+ struct rkmodule_one_to_multi_info one_to_multi;
812
+ struct rkmodule_multi_combine_info multi_combine_info;
813
+ };
814
+};
815
+
739816 #endif /* _UAPI_RKMODULE_CAMERA_H */