hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
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,26 @@
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
+
172186 struct rkmodule_i2cdev_info {
173
- u8 slave_addr;
187
+ __u8 slave_addr;
174188 } __attribute__ ((packed));
175189
176190 struct rkmodule_dev_info {
177191 union {
178192 struct rkmodule_i2cdev_info i2c_dev;
179
- u32 reserved[8];
193
+ __u32 reserved[8];
180194 };
181195 } __attribute__ ((packed));
182196
....@@ -312,6 +326,7 @@
312326 __u32 dccmap_height;
313327 __u32 dcc_mode;
314328 __u32 dcc_dir;
329
+ __u32 pd_offset;
315330 __u16 gainmap[RKMODULE_PADF_GAINMAP_LEN];
316331 __u16 dccmap[RKMODULE_PDAF_DCCMAP_LEN];
317332 } __attribute__ ((packed));
....@@ -653,6 +668,29 @@
653668 } __attribute__ ((packed));
654669
655670 /*
671
+ * link to vicap
672
+ * linear mode: pad0~pad3 for id0~id3;
673
+ *
674
+ * HDR_X2: id0 fiexd to vc0 for long frame
675
+ * id1 fixed to vc1 for short frame;
676
+ * id2~id3 reserved, can config by PAD2~PAD3
677
+ *
678
+ * HDR_X3: id0 fiexd to vc0 for long frame
679
+ * id1 fixed to vc1 for middle frame
680
+ * id2 fixed to vc2 for short frame;
681
+ * id3 reserved, can config by PAD3
682
+ *
683
+ * link to isp, the connection relationship is as follows
684
+ */
685
+enum rkmodule_max_pad {
686
+ PAD0, /* link to isp */
687
+ PAD1, /* link to csi wr0 | hdr x2:L x3:M */
688
+ PAD2, /* link to csi wr1 | hdr x3:L */
689
+ PAD3, /* link to csi wr2 | hdr x2:M x3:S */
690
+ PAD_MAX,
691
+};
692
+
693
+/*
656694 * sensor exposure sync mode
657695 */
658696 enum rkmodule_sync_mode {
....@@ -663,10 +701,10 @@
663701 };
664702
665703 struct rkmodule_mclk_data {
666
- u32 enable;
667
- u32 mclk_index;
668
- u32 mclk_rate;
669
- u32 reserved[8];
704
+ __u32 enable;
705
+ __u32 mclk_index;
706
+ __u32 mclk_rate;
707
+ __u32 reserved[8];
670708 };
671709
672710 /*
....@@ -716,14 +754,14 @@
716754 };
717755
718756 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];
757
+ __u32 vendor;
758
+ __u32 lp_vol_ref;
759
+ __u32 lp_hys_sw[DPHY_MAX_LANE];
760
+ __u32 lp_escclk_pol_sel[DPHY_MAX_LANE];
761
+ __u32 skew_data_cal_clk[DPHY_MAX_LANE];
762
+ __u32 clk_hs_term_sel;
763
+ __u32 data_hs_term_sel[DPHY_MAX_LANE];
764
+ __u32 reserved[32];
727765 };
728766
729767 struct rkmodule_sensor_fmt {
....@@ -736,4 +774,39 @@
736774 struct rkmodule_sensor_fmt sensor_fmt[RKMODULE_MAX_SENSOR_NUM];
737775 };
738776
777
+enum rkmodule_capture_mode {
778
+ RKMODULE_CAPTURE_MODE_NONE = 0,
779
+ RKMODULE_MULTI_DEV_COMBINE_ONE,
780
+ RKMODULE_ONE_CH_TO_MULTI_ISP,
781
+ RKMODULE_MULTI_CH_TO_MULTI_ISP,
782
+ RKMODULE_MULTI_CH_COMBINE_SQUARE,
783
+};
784
+
785
+struct rkmodule_multi_dev_info {
786
+ __u32 dev_idx[RKMODULE_MULTI_DEV_NUM];
787
+ __u32 combine_idx[RKMODULE_MULTI_DEV_NUM];
788
+ __u32 pixel_offset;
789
+ __u32 dev_num;
790
+ __u32 reserved[8];
791
+};
792
+
793
+struct rkmodule_one_to_multi_info {
794
+ __u32 isp_num;
795
+ __u32 frame_pattern[RKMODULE_MULTI_DEV_NUM];
796
+};
797
+
798
+struct rkmodule_multi_combine_info {
799
+ __u32 combine_num;
800
+ __u32 combine_index[RKMODULE_MULTI_DEV_NUM];
801
+};
802
+
803
+struct rkmodule_capture_info {
804
+ __u32 mode;
805
+ union {
806
+ struct rkmodule_multi_dev_info multi_dev;
807
+ struct rkmodule_one_to_multi_info one_to_multi;
808
+ struct rkmodule_multi_combine_info multi_combine_info;
809
+ };
810
+};
811
+
739812 #endif /* _UAPI_RKMODULE_CAMERA_H */