├── .github
└── workflows
│ └── sync-to-gitee.yml
├── LICENSE
├── README.md
├── driver_source
├── cam_drv_src
│ ├── rpi-5.15_all
│ │ ├── Makefile
│ │ ├── csimx307.c
│ │ ├── cssc132.c
│ │ ├── veye_mvcam.c
│ │ ├── veye_mvcam.h
│ │ └── veyecam2m.c
│ ├── rpi-5.x_all
│ │ ├── 5.10
│ │ │ ├── Kconfig
│ │ │ └── Makefile
│ │ ├── 5.4.x
│ │ │ ├── Kconfig
│ │ │ └── Makefile
│ │ ├── Makefile
│ │ ├── csimx307.c
│ │ ├── cssc132.c
│ │ ├── veye327.c
│ │ ├── veye_mvcam.c
│ │ ├── veye_mvcam.h
│ │ └── veyecam2m.c
│ ├── rpi-6.1.y
│ │ ├── Makefile
│ │ ├── csimx307.c
│ │ ├── cssc132.c
│ │ ├── ds90ub954.c
│ │ ├── ds90ub954.h
│ │ ├── veye,vbyone.txt
│ │ ├── veye_mvcam.c
│ │ ├── veye_mvcam.h
│ │ ├── veye_vbyone.c
│ │ ├── veye_vbyone.h
│ │ └── veyecam2m.c
│ └── rpi-6.6.y
│ │ ├── Makefile
│ │ ├── csimx307.c
│ │ ├── cssc132.c
│ │ ├── ds90ub954.c
│ │ ├── ds90ub954.h
│ │ ├── veye,vbyone.txt
│ │ ├── veye_mvcam.c
│ │ ├── veye_mvcam.h
│ │ ├── veye_vbyone.c
│ │ ├── veye_vbyone.h
│ │ └── veyecam2m.c
└── dts
│ ├── README.txt
│ ├── rpi-5.10.103+
│ ├── build_dtbo.sh
│ ├── csimx307-overlay.dts
│ ├── cssc132-overlay.dts
│ ├── veye_mvcam-cm4-overlay.dts
│ ├── veye_mvcam-overlay.dts
│ ├── veyecam2m-cm4-overlay.dts
│ └── veyecam2m-overlay.dts
│ ├── rpi-5.10.92+
│ ├── build_dtbo.sh
│ ├── csimx307-overlay.dts
│ ├── cssc132-overlay.dts
│ ├── veye_mvcam-overlay.dts
│ ├── veyecam2m-cm4-overlay.dts
│ └── veyecam2m-overlay.dts
│ ├── rpi-5.10.92-
│ ├── csimx307-dual-cm4-overlay.dts
│ ├── csimx307-overlay.dts
│ ├── cssc132-dual-cm4-overlay.dts
│ ├── cssc132-overlay.dts
│ ├── veye327-dual-cm4-overlay.dts
│ ├── veye327-overlay.dts
│ ├── veyecam2m-dual-cm4-overlay.dts
│ └── veyecam2m-overlay.dts
│ ├── rpi-5.10.y
│ ├── csimx307-dual-cm4-overlay.dts
│ ├── csimx307-overlay.dts
│ ├── cssc132-dual-cm4-overlay.dts
│ ├── cssc132-overlay.dts
│ ├── veye327-dual-cm4-overlay.dts
│ ├── veye327-overlay.dts
│ ├── veyecam2m-dual-cm4-overlay.dts
│ └── veyecam2m-overlay.dts
│ ├── rpi-5.15.y
│ ├── build_dtbo.sh
│ ├── csimx307-overlay.dts
│ ├── csimx307.dtbo
│ ├── cssc132-overlay.dts
│ ├── cssc132.dtbo
│ ├── veye_mvcam-overlay.dts
│ ├── veye_mvcam.dtbo
│ ├── veyecam2m-overlay.dts
│ └── veyecam2m.dtbo
│ ├── rpi-5.4_all
│ ├── csimx307-overlay.dts
│ ├── cssc132-overlay.dts
│ └── veye327-overlay.dts
│ ├── rpi-6.1.y-bookworm
│ ├── build_dtbo.sh
│ ├── csimx307-overlay.dts
│ ├── csimx307.dtbo
│ ├── cssc132-overlay.dts
│ ├── cssc132.dtbo
│ ├── ds90ub954-overlay.dts
│ ├── ds90ub954.dtbo
│ ├── veye_mvcam-overlay.dts
│ ├── veye_mvcam.dtbo
│ ├── veye_mvcam_4lane-overlay.dts
│ ├── veye_mvcam_4lane.dtbo
│ ├── veye_vbyone-1188.dtbo
│ ├── veye_vbyone-1500.dtbo
│ ├── veye_vbyone-overlay-1188.dts
│ ├── veye_vbyone-overlay-1500.dts
│ ├── veye_vbyone-overlay.dts
│ ├── veyecam2m-overlay.dts
│ └── veyecam2m.dtbo
│ ├── rpi-6.1.y
│ ├── build_dtbo.sh
│ ├── csimx307-overlay.dts
│ ├── csimx307.dtbo
│ ├── cssc132-overlay.dts
│ ├── cssc132.dtbo
│ ├── ds90ub954-overlay.dts
│ ├── ds90ub954.dtbo
│ ├── veye_mvcam-overlay-xyz.dts
│ ├── veye_mvcam-overlay.dts
│ ├── veye_mvcam.dtbo
│ ├── veye_mvcam_4lane-overlay.dts
│ ├── veye_mvcam_4lane.dtbo
│ ├── veye_vbyone-1188.dtbo
│ ├── veye_vbyone-1500.dtbo
│ ├── veye_vbyone-overlay-1188.dts
│ ├── veye_vbyone-overlay-1500.dts
│ ├── veye_vbyone-overlay.dts
│ ├── veye_vbyone.dtbo
│ ├── veyecam2m-overlay.dts
│ └── veyecam2m.dtbo
│ └── rpi-6.6.y
│ ├── build_dtbo.sh
│ ├── csimx307-overlay.dts
│ ├── csimx307.dtbo
│ ├── cssc132-overlay.dts
│ ├── cssc132.dtbo
│ ├── ds90ub954-overlay.dts
│ ├── ds90ub954.dtbo
│ ├── veye_mvcam-overlay.dts
│ ├── veye_mvcam.dtbo
│ ├── veye_mvcam_4lane-overlay.dts
│ ├── veye_mvcam_4lane.dtbo
│ ├── veye_vbyone-1188.dtbo
│ ├── veye_vbyone-1500.dtbo
│ ├── veye_vbyone-overlay-1188.dts
│ ├── veye_vbyone-overlay-1500.dts
│ ├── veye_vbyone-overlay.dts
│ ├── veyecam2m-overlay.dts
│ └── veyecam2m.dtbo
├── i2c_cmd
├── cs_mipi_i2c.sh
├── fpdlink3_i2c.sh
├── i2c_read
├── i2c_write
├── source
│ ├── i2c_comm.h
│ ├── i2c_read.c
│ ├── i2c_write.c
│ ├── make.sh
│ └── strfunc.c
└── veye_mipi_i2c.sh
├── mv_tools_rpi
├── camera_i2c_config
├── enable_i2c_vc.sh
├── falling.py
├── gpio_trigger.py
├── i2c_4read
├── i2c_4write
├── lut_rw
├── lut_samples
│ ├── lut_gamma0.8_10bitdepth.txt
│ ├── lut_gamma0.8_12bitdepth.txt
│ ├── lut_gamma1.2_10bitdepth.txt
│ ├── lut_gamma1.2_12bitdepth.txt
│ └── lut_linear.txt
├── mv_mipi_i2c.sh
├── mv_mipi_i2c_new.sh
├── mv_probe.sh
├── rising.py
├── rpi3-gpiovirtbuf
├── sources
│ ├── i2c_4comm.h
│ ├── i2c_4read.c
│ ├── i2c_4write.c
│ ├── lut_rw.c
│ ├── make.sh
│ └── strfunc.c
├── vbyone_i2c_init.sh
├── veye_i2c_upgrade
└── veye_i2c_upgrade_64bit
├── rpi5_scripts
├── find_entity.sh
└── media_setting_rpi5.sh
└── samples
└── opencv
├── raw_camera
├── rawfile_to_opencv_show.py
├── v4l2dev_2_opencv_show_grey.py
├── v4l2dev_2_opencv_show_grey2.py
├── y10-640x480_0001.raw
└── y8-640x480_0001.raw
└── yuv_camera
├── v4l2_opencv_show1.py
├── v4l2_opencv_show2.py
└── v4l2_opencv_show3.py
/.github/workflows/sync-to-gitee.yml:
--------------------------------------------------------------------------------
1 | name: Sync to Gitee (Organization)
2 |
3 | on:
4 | push:
5 | branches:
6 | - main # 或 master,取决于你主分支的名字
7 |
8 | jobs:
9 | sync:
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Checkout code
14 | uses: actions/checkout@v3
15 | with:
16 | fetch-depth: 0
17 |
18 | - name: Mirror push to Gitee (org repo)
19 | run: |
20 | git config --global user.name "mmxuxp"
21 | git config --global user.email "xumm@veye.cc"
22 | # 添加 Gitee 的组织仓库地址
23 | git remote add gitee https://mmxuxp:${{ secrets.GITEE_TOKEN }}@gitee.com/veyeimaging/raspberrypi_v4l2.git
24 | # 推送源码
25 | git push -f gitee HEAD:main
26 | # 可选:推送标签
27 | git push -f gitee --tags
28 |
--------------------------------------------------------------------------------
/driver_source/cam_drv_src/rpi-5.15_all/Makefile:
--------------------------------------------------------------------------------
1 | KERNEL_ROOT=/lib/modules/$(shell uname -r)/build
2 | PWD=$(shell pwd)
3 |
4 | obj-m := veye_mvcam.o veyecam2m.o csimx307.o cssc132.o
5 |
6 | all:
7 | make -C $(KERNEL_ROOT) M=$(PWD) modules
8 |
9 | clean:
10 | make -C $(KERNEL_ROOT) M=$(PWD) clean
11 |
--------------------------------------------------------------------------------
/driver_source/cam_drv_src/rpi-5.x_all/Makefile:
--------------------------------------------------------------------------------
1 | KERNEL_ROOT=/lib/modules/$(shell uname -r)/build
2 | PWD=$(shell pwd)
3 |
4 | obj-m := veye_mvcam.o veyecam2m.o csimx307.o cssc132.o
5 |
6 | all:
7 | make -C $(KERNEL_ROOT) M=$(PWD) modules
8 |
9 | clean:
10 | make -C $(KERNEL_ROOT) M=$(PWD) clean
11 |
--------------------------------------------------------------------------------
/driver_source/cam_drv_src/rpi-6.1.y/Makefile:
--------------------------------------------------------------------------------
1 | KERNEL_ROOT=/lib/modules/$(shell uname -r)/build
2 | PWD=$(shell pwd)
3 |
4 | obj-m := veye_mvcam.o veyecam2m.o csimx307.o cssc132.o veye_vbyone.o ds90ub954.o
5 |
6 | all:
7 | make -C $(KERNEL_ROOT) M=$(PWD) modules
8 |
9 | clean:
10 | make -C $(KERNEL_ROOT) M=$(PWD) clean
11 |
--------------------------------------------------------------------------------
/driver_source/cam_drv_src/rpi-6.1.y/veye,vbyone.txt:
--------------------------------------------------------------------------------
1 | Device tree configuration for the V-by-ONE deserializer THCV242A and
2 | serializer THCV241A from Thine
3 |
4 | The deserializer THCV242A can have up to one serializers (THCV241A) connected.
5 | In the device tree, the serializer nodes are subnodes of the deserializer.
6 |
7 | /*------------------------------------------------------------------------------
8 | * ------------------------------------------------------------------------------
9 | *
10 | * Options for DESERIALIZER (THCV242A):
11 | *
12 | * ------------------------------------------------------------------------------
13 | *-----------------------------------------------------------------------------*/
14 |
15 | Integer values:
16 | - reg: I2C address of deserializer
17 | - csi-lane-count Number of CSI lanes(2,4) default value: 2
18 | - csi-lane-speed CSI lane speed in Mbps (900, 1118 or 1500)
19 | default vaule: 1500
20 | - coax-num Number of Coax cable
21 | - cam-i2c-pt-setting Pass through setting i2c
22 |
23 | String values:
24 | - pdb-gpio Power-down gpio(no use or polling)
25 | - trgin-gpio Trigger gpio(no use or polling)
26 | - out1-gpio out1 gpio(no use or polling)
27 | - out2-gpio out2 gpio(no use or polling)
28 |
29 |
30 |
31 | /*------------------------------------------------------------------------------
32 | * ------------------------------------------------------------------------------
33 | *
34 | * Options for SERIALIZER (THCV241A):
35 | *
36 | * ------------------------------------------------------------------------------
37 | *-----------------------------------------------------------------------------*/
38 |
39 | Integer values:
40 | - i2c-address I2C address of serializer(0x36)
41 | - csi-lane-count Number of CSI lanes default value: 2
42 | - csi-lane-speed CSI lane speed in Mbps (900, 1118 or 1500)
43 | - camera-i2c-address I2C address of camera(0x3b)
44 |
45 | /*------------------------------------------------------------------------------
46 | * ------------------------------------------------------------------------------
47 | *
48 | * Device Tree Examples
49 | *
50 | * ------------------------------------------------------------------------------
51 | *-----------------------------------------------------------------------------*/
52 |
53 | /*------------------------------------------------------------------------------
54 | * Example 1 (SIMPLE)
55 | *-----------------------------------------------------------------------------*/
56 |
57 | veye_vbyone: vbyone@65 {
58 | compatible = "veye,vbyone";
59 | priority = <(-1)>;
60 | reg = <0x65>;
61 | status = "okay";
62 | csi-lane-count = <2>;
63 | csi-lane-speed = <1500>;
64 | coax-num = <1>;
65 | cam-i2c-pt-setting = <0x13>;
66 |
67 | pdb-gpio-mode = <0>;
68 | trgin-gpio-mode = <1>;
69 | out1-gpio-mode = <1>;
70 | out2-gpio-mode = <1>;
71 |
72 | serializer {
73 | i2c-address=<0x34>;
74 | csi-lane-count = <2>;
75 | csi-lane-speed = <1500>;
76 | camera-i2c-address=<0x3b>;
77 | };
78 | };
--------------------------------------------------------------------------------
/driver_source/cam_drv_src/rpi-6.1.y/veye_vbyone.h:
--------------------------------------------------------------------------------
1 | /*
2 | * thcv242a.c - Thine THCV242A deserializer and THCV241A serializer driver
3 | *
4 | * Copyright (c) 2023, www.veye.cc, TIANJIN DATA IMAGING TECHNOLOGY CO.,LTD
5 | *
6 | * This program is for the THCV242A V-by-ONE deserializer in connection
7 | * with the SHA241 serializer from Thine
8 | *
9 | * This program is free software; you can redistribute it and/or modify it
10 | * under the terms and conditions of the GNU General Public License,
11 | * version 2, as published by the Free Software Foundation.
12 | *
13 | * This program is distributed in the hope it will be useful, but WITHOUT
14 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 | * more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program. If not, see .
20 | */
21 |
22 | #ifndef I2C_THCV241A_H
23 | #define I2C_THCV241A_H
24 |
25 | #include
26 |
27 | /*------------------------------------------------------------------------------
28 | * Deserializer registers
29 | *----------------------------------------------------------------------------*/
30 | #define R_2WIREPT_WA_DATA_BYTE 0x0032
31 | #define R_2WIREPT1_PASS_ADR000 0x0040
32 | #define R_2WIREPT1_PASS_ADR001 0x0041
33 |
34 | #define R_2WIREPT1_PASS_ADRIN0 0x0050
35 |
36 | #define R_GPIO23_MODE 0x1003
37 | #define R_GPIO01_MODE 0x1004
38 |
39 | /*------------------------------------------------------------------------------
40 | * Serializer registers
41 | *----------------------------------------------------------------------------*/
42 |
43 | #define R_GPIO_TYP 0x3D
44 | #define R_GPIO_OEN 0x3E
45 | #define R_GPIO_CMOSEN 0x3F
46 |
47 |
48 | /*------------------------------------------------------------------------------
49 | * DEFINES
50 | *----------------------------------------------------------------------------*/
51 |
52 | #define NUM_SERIALIZER 1
53 |
54 | #define GPIO_MODE_NO_USE 0
55 | #define GPIO_MODE_POLLING 1
56 | #define GPIO_MODE_I2C_CTL 2
57 |
58 | struct thcv241a_priv {
59 | struct i2c_client *client;
60 | struct regmap *regmap;
61 | //struct thcv242a_priv *parent;
62 |
63 | int i2c_address;
64 | int csi_lane_count;
65 | int csi_lane_speed;
66 |
67 | int initialized;
68 | };
69 |
70 |
71 | struct thcv242a_priv {
72 | struct i2c_client *client;
73 | struct regmap *regmap;
74 |
75 | struct thcv241a_priv *ser[NUM_SERIALIZER]; //serializers
76 |
77 | int csi_lane_count;
78 | int coax_num;
79 | int cam_i2c_pt_setting;
80 | int cam_i2c_address;
81 |
82 | int trgin_gpio_mode; // 0: no use ;1 : polling
83 | int out1_gpio_mode; // 0: no use ;1 : polling
84 | int out2_gpio_mode; // 0: no use ;1 : polling
85 |
86 | };
87 |
88 | #endif /* I2C_DS90UB954_H */
89 |
--------------------------------------------------------------------------------
/driver_source/cam_drv_src/rpi-6.6.y/Makefile:
--------------------------------------------------------------------------------
1 | KERNEL_ROOT=/lib/modules/$(shell uname -r)/build
2 | PWD=$(shell pwd)
3 |
4 | obj-m := veye_mvcam.o veyecam2m.o csimx307.o cssc132.o veye_vbyone.o ds90ub954.o
5 |
6 | all:
7 | make -C $(KERNEL_ROOT) M=$(PWD) modules
8 |
9 | clean:
10 | make -C $(KERNEL_ROOT) M=$(PWD) clean
11 |
--------------------------------------------------------------------------------
/driver_source/cam_drv_src/rpi-6.6.y/veye,vbyone.txt:
--------------------------------------------------------------------------------
1 | Device tree configuration for the V-by-ONE deserializer THCV242A and
2 | serializer THCV241A from Thine
3 |
4 | The deserializer THCV242A can have up to one serializers (THCV241A) connected.
5 | In the device tree, the serializer nodes are subnodes of the deserializer.
6 |
7 | /*------------------------------------------------------------------------------
8 | * ------------------------------------------------------------------------------
9 | *
10 | * Options for DESERIALIZER (THCV242A):
11 | *
12 | * ------------------------------------------------------------------------------
13 | *-----------------------------------------------------------------------------*/
14 |
15 | Integer values:
16 | - reg: I2C address of deserializer
17 | - csi-lane-count Number of CSI lanes(2,4) default value: 2
18 | - csi-lane-speed CSI lane speed in Mbps (900, 1118 or 1500)
19 | default vaule: 1500
20 | - coax-num Number of Coax cable
21 | - cam-i2c-pt-setting Pass through setting i2c
22 |
23 | String values:
24 | - pdb-gpio Power-down gpio(no use or polling)
25 | - trgin-gpio Trigger gpio(no use or polling)
26 | - out1-gpio out1 gpio(no use or polling)
27 | - out2-gpio out2 gpio(no use or polling)
28 |
29 |
30 |
31 | /*------------------------------------------------------------------------------
32 | * ------------------------------------------------------------------------------
33 | *
34 | * Options for SERIALIZER (THCV241A):
35 | *
36 | * ------------------------------------------------------------------------------
37 | *-----------------------------------------------------------------------------*/
38 |
39 | Integer values:
40 | - i2c-address I2C address of serializer(0x36)
41 | - csi-lane-count Number of CSI lanes default value: 2
42 | - csi-lane-speed CSI lane speed in Mbps (900, 1118 or 1500)
43 | - camera-i2c-address I2C address of camera(0x3b)
44 |
45 | /*------------------------------------------------------------------------------
46 | * ------------------------------------------------------------------------------
47 | *
48 | * Device Tree Examples
49 | *
50 | * ------------------------------------------------------------------------------
51 | *-----------------------------------------------------------------------------*/
52 |
53 | /*------------------------------------------------------------------------------
54 | * Example 1 (SIMPLE)
55 | *-----------------------------------------------------------------------------*/
56 |
57 | veye_vbyone: vbyone@65 {
58 | compatible = "veye,vbyone";
59 | priority = <(-1)>;
60 | reg = <0x65>;
61 | status = "okay";
62 | csi-lane-count = <2>;
63 | csi-lane-speed = <1500>;
64 | coax-num = <1>;
65 | cam-i2c-pt-setting = <0x13>;
66 |
67 | pdb-gpio-mode = <0>;
68 | trgin-gpio-mode = <1>;
69 | out1-gpio-mode = <1>;
70 | out2-gpio-mode = <1>;
71 |
72 | serializer {
73 | i2c-address=<0x34>;
74 | csi-lane-count = <2>;
75 | csi-lane-speed = <1500>;
76 | camera-i2c-address=<0x3b>;
77 | };
78 | };
--------------------------------------------------------------------------------
/driver_source/cam_drv_src/rpi-6.6.y/veye_vbyone.h:
--------------------------------------------------------------------------------
1 | /*
2 | * thcv242a.c - Thine THCV242A deserializer and THCV241A serializer driver
3 | *
4 | * Copyright (c) 2023, www.veye.cc, TIANJIN DATA IMAGING TECHNOLOGY CO.,LTD
5 | *
6 | * This program is for the THCV242A V-by-ONE deserializer in connection
7 | * with the SHA241 serializer from Thine
8 | *
9 | * This program is free software; you can redistribute it and/or modify it
10 | * under the terms and conditions of the GNU General Public License,
11 | * version 2, as published by the Free Software Foundation.
12 | *
13 | * This program is distributed in the hope it will be useful, but WITHOUT
14 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 | * more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program. If not, see .
20 | */
21 |
22 | #ifndef I2C_THCV241A_H
23 | #define I2C_THCV241A_H
24 |
25 | #include
26 |
27 | /*------------------------------------------------------------------------------
28 | * Deserializer registers
29 | *----------------------------------------------------------------------------*/
30 | #define R_2WIREPT_WA_DATA_BYTE 0x0032
31 | #define R_2WIREPT1_PASS_ADR000 0x0040
32 | #define R_2WIREPT1_PASS_ADR001 0x0041
33 |
34 | #define R_2WIREPT1_PASS_ADRIN0 0x0050
35 |
36 | #define R_GPIO23_MODE 0x1003
37 | #define R_GPIO01_MODE 0x1004
38 |
39 | /*------------------------------------------------------------------------------
40 | * Serializer registers
41 | *----------------------------------------------------------------------------*/
42 |
43 | #define R_GPIO_TYP 0x3D
44 | #define R_GPIO_OEN 0x3E
45 | #define R_GPIO_CMOSEN 0x3F
46 |
47 |
48 | /*------------------------------------------------------------------------------
49 | * DEFINES
50 | *----------------------------------------------------------------------------*/
51 |
52 | #define NUM_SERIALIZER 1
53 |
54 | #define GPIO_MODE_NO_USE 0
55 | #define GPIO_MODE_POLLING 1
56 | #define GPIO_MODE_I2C_CTL 2
57 |
58 | struct thcv241a_priv {
59 | struct i2c_client *client;
60 | struct regmap *regmap;
61 | //struct thcv242a_priv *parent;
62 |
63 | int i2c_address;
64 | int csi_lane_count;
65 | int csi_lane_speed;
66 |
67 | int initialized;
68 | };
69 |
70 |
71 | struct thcv242a_priv {
72 | struct i2c_client *client;
73 | struct regmap *regmap;
74 |
75 | struct thcv241a_priv *ser[NUM_SERIALIZER]; //serializers
76 |
77 | int csi_lane_count;
78 | int coax_num;
79 | int cam_i2c_pt_setting;
80 | int cam_i2c_address;
81 |
82 | int trgin_gpio_mode; // 0: no use ;1 : polling
83 | int out1_gpio_mode; // 0: no use ;1 : polling
84 | int out2_gpio_mode; // 0: no use ;1 : polling
85 |
86 | };
87 |
88 | #endif /* I2C_DS90UB954_H */
89 |
--------------------------------------------------------------------------------
/driver_source/dts/README.txt:
--------------------------------------------------------------------------------
1 | rpi-5.10.92-: version < 92
2 | rpi-5.10.92+ : version 92+
3 | rpi-5.10.103+ : version >= 103
4 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.103+/build_dtbo.sh:
--------------------------------------------------------------------------------
1 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam.dtbo veye_mvcam-overlay.dts
2 | dtc -@ -Hepapr -I dts -O dtb -o csimx307.dtbo csimx307-overlay.dts
3 | dtc -@ -Hepapr -I dts -O dtb -o cssc132.dtbo cssc132-overlay.dts
4 | dtc -@ -Hepapr -I dts -O dtb -o veyecam2m.dtbo veyecam2m-overlay.dts
5 | dtc -@ -Hepapr -I dts -O dtb -o veyecam2m-cm4.dtbo veyecam2m-cm4-overlay.dts
6 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam-cm4.dtbo veye_mvcam-cm4-overlay.dts
7 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.103+/csimx307-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 |
9 | fragment@0 {
10 | target = <&i2c_csi_dsi>;
11 | __overlay__ {
12 | #address-cells = <1>;
13 | #size-cells = <0>;
14 | status = "okay";
15 |
16 | csimx307: csimx307@3b {
17 | compatible = "veye,csimx307";
18 | reg = <0x3b>;
19 | status = "okay";
20 |
21 | clocks = <&veyecam_clk>;
22 | clock-names = "xclk";
23 |
24 | VANA-supply = <&cam1_reg>; /* 2.8v */
25 | VDIG-supply = <&veyecam_vdig>; /* 1.8v */
26 | VDDL-supply = <&veyecam_vddl>; /* 1.2v */
27 | rotation = <0>;
28 | orientation = <2>;
29 | port {
30 | csimx307_0: endpoint {
31 | remote-endpoint = <&csi_ep>;
32 | clock-lanes = <0>;
33 | data-lanes = <1 2>;
34 | clock-noncontinuous;
35 | link-frequencies =
36 | /bits/ 64 <297000000>;
37 | };
38 | };
39 | };
40 | };
41 | };
42 | fragment@1 {
43 | target = <&csi1>;
44 | __overlay__ {
45 | status = "okay";
46 |
47 | port {
48 | csi_ep: endpoint {
49 | remote-endpoint = <&csimx307_0>;
50 | clock-lanes = <0>;
51 | data-lanes = <1 2>;
52 | clock-noncontinuous;
53 | };
54 | };
55 | };
56 | };
57 |
58 | fragment@2 {
59 | target = <&i2c0if>;
60 | __overlay__ {
61 | status = "okay";
62 | };
63 | };
64 |
65 | fragment@3 {
66 | target-path="/";
67 | __overlay__ {
68 |
69 | veyecam_vdig: fixedregulator@1 {
70 | compatible = "regulator-fixed";
71 | regulator-name = "veyecam_vdig";
72 | regulator-min-microvolt = <1800000>;
73 | regulator-max-microvolt = <1800000>;
74 | };
75 | veyecam_vddl: fixedregulator@2 {
76 | compatible = "regulator-fixed";
77 | regulator-name = "veyecam_vddl";
78 | regulator-min-microvolt = <1200000>;
79 | regulator-max-microvolt = <1200000>;
80 | };
81 |
82 | veyecam_clk: camera-clk {
83 | compatible = "fixed-clock";
84 | #clock-cells = <0>;
85 | clock-frequency = <24000000>;
86 | };
87 | };
88 | };
89 |
90 | fragment@4 {
91 | target = <&i2c0mux>;
92 | __overlay__ {
93 | status = "okay";
94 | };
95 | };
96 |
97 | fragment@5 {
98 | target = <&cam1_reg>;
99 | __overlay__ {
100 | status = "okay";
101 | regulator-name = "veyecam_vana";
102 | regulator-min-microvolt = <2800000>;
103 | regulator-max-microvolt = <2800000>;
104 | };
105 | };
106 |
107 | __overrides__ {
108 | rotation = <&csimx307>,"rotation:0";
109 | orientation = <&csimx307>,"orientation:0";
110 | };
111 |
112 |
113 | };
114 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.103+/cssc132-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-SC132 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 |
9 | fragment@0 {
10 | target = <&i2c_csi_dsi>;
11 | __overlay__ {
12 | #address-cells = <1>;
13 | #size-cells = <0>;
14 | status = "okay";
15 |
16 | cssc132: cssc132@3b {
17 | compatible = "veye,cssc132";
18 | reg = <0x3b>;
19 | status = "okay";
20 |
21 | clocks = <&veyecam_clk>;
22 | clock-names = "xclk";
23 |
24 | VANA-supply = <&cam1_reg>; /* 2.8v */
25 | VDIG-supply = <&veyecam_vdig>; /* 1.8v */
26 | VDDL-supply = <&veyecam_vddl>; /* 1.2v */
27 | rotation = <0>;
28 | orientation = <2>;
29 | port {
30 | cssc132_0: endpoint {
31 | remote-endpoint = <&csi_ep>;
32 | clock-lanes = <0>;
33 | data-lanes = <1 2>;
34 | clock-noncontinuous;
35 | link-frequencies =
36 | /bits/ 64 <297000000>;
37 | };
38 | };
39 | };
40 | };
41 | };
42 | fragment@1 {
43 | target = <&csi1>;
44 | __overlay__ {
45 | status = "okay";
46 |
47 | port {
48 | csi_ep: endpoint {
49 | remote-endpoint = <&cssc132_0>;
50 | clock-lanes = <0>;
51 | data-lanes = <1 2>;
52 | clock-noncontinuous;
53 | };
54 | };
55 | };
56 | };
57 |
58 | fragment@2 {
59 | target = <&i2c0if>;
60 | __overlay__ {
61 | status = "okay";
62 | };
63 | };
64 |
65 | fragment@3 {
66 | target-path="/";
67 | __overlay__ {
68 |
69 | veyecam_vdig: fixedregulator@1 {
70 | compatible = "regulator-fixed";
71 | regulator-name = "veyecam_vdig";
72 | regulator-min-microvolt = <1800000>;
73 | regulator-max-microvolt = <1800000>;
74 | };
75 | veyecam_vddl: fixedregulator@2 {
76 | compatible = "regulator-fixed";
77 | regulator-name = "veyecam_vddl";
78 | regulator-min-microvolt = <1200000>;
79 | regulator-max-microvolt = <1200000>;
80 | };
81 |
82 | veyecam_clk: camera-clk {
83 | compatible = "fixed-clock";
84 | #clock-cells = <0>;
85 | clock-frequency = <24000000>;
86 | };
87 | };
88 | };
89 |
90 | fragment@4 {
91 | target = <&i2c0mux>;
92 | __overlay__ {
93 | status = "okay";
94 | };
95 | };
96 |
97 | fragment@5 {
98 | target = <&cam1_reg>;
99 | __overlay__ {
100 | status = "okay";
101 | regulator-name = "veyecam_vana";
102 | regulator-min-microvolt = <2800000>;
103 | regulator-max-microvolt = <2800000>;
104 | };
105 | };
106 |
107 | __overrides__ {
108 | rotation = <&cssc132>,"rotation:0";
109 | orientation = <&cssc132>,"orientation:0";
110 | };
111 |
112 |
113 | };
114 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.103+/veye_mvcam-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MVCAM camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 |
15 | fragment@2 {
16 | target = <&i2c0mux>;
17 | __overlay__ {
18 | status = "okay";
19 | };
20 | };
21 | i2c_frag1: fragment@100 {
22 | target = <&i2c_csi_dsi>;
23 | __overlay__ {
24 | #address-cells = <1>;
25 | #size-cells = <0>;
26 | status = "okay";
27 |
28 | veyemvcam1: veyemvcam@3b {
29 | compatible = "veye,mvcam";
30 | reg = <0x3b>;
31 | status = "okay";
32 |
33 | clocks = <&veyemvcam_clk>;
34 | clock-names = "xclk";
35 | VANA-supply = <&veyemvcam_vana>; /* 2.8v */
36 | VDIG-supply = <&veyemvcam_vdig>; /* 1.8v */
37 | VDDL-supply = <&veyemvcam_vddl>; /* 1.2v */
38 | rotation = <0>;
39 |
40 | port {
41 | veyemvcam_0: endpoint {
42 | remote-endpoint = <&csi_ep>;
43 | clock-lanes = <0>;
44 | data-lanes = <1 2>;
45 | clock-noncontinuous;
46 | link-frequencies =
47 | /bits/ 64 <750000000>;
48 | };
49 | };
50 | };
51 | };
52 | };
53 |
54 | csi_frag1: fragment@101 {
55 | target = <&csi1>;
56 | __overlay__ {
57 | status = "okay";
58 |
59 | port {
60 | csi_ep: endpoint {
61 | remote-endpoint = <&veyemvcam_0>;
62 | clock-lanes = <0>;
63 | data-lanes = <1 2>;
64 | clock-noncontinuous;
65 | };
66 | };
67 | };
68 | };
69 | i2c_frag2: fragment@102 {
70 | target = <&i2c0>;
71 | __overlay__ {
72 | #address-cells = <1>;
73 | #size-cells = <0>;
74 | status = "okay";
75 |
76 | veyemvcam2: veyemvcam@3b {
77 | compatible = "veye,mvcam";
78 | reg = <0x3b>;
79 | status = "okay";
80 | clocks = <&veyemvcam_clk>;
81 | clock-names = "xclk";
82 | VANA-supply = <&veyemvcam_vana>; /* 2.8v */
83 | VDIG-supply = <&veyemvcam_vdig>; /* 1.8v */
84 | VDDL-supply = <&veyemvcam_vddl>; /* 1.2v */
85 | rotation = <0>;
86 |
87 | port {
88 | veyemvcam_1: endpoint {
89 | remote-endpoint = <&csi0_ep>;
90 | clock-lanes = <0>;
91 | data-lanes = <1 2>;
92 | clock-noncontinuous;
93 | link-frequencies =
94 | /bits/ 64 <750000000>;
95 | };
96 | };
97 | };
98 | };
99 | };
100 |
101 | csi_frag2: fragment@103 {
102 | target = <&csi0>;
103 | __overlay__ {
104 | status = "okay";
105 |
106 | port {
107 | csi0_ep: endpoint {
108 | remote-endpoint = <&veyemvcam_1>;
109 | clock-lanes = <0>;
110 | data-lanes = <1 2>;
111 | clock-noncontinuous;
112 | };
113 | };
114 | };
115 | };
116 |
117 | fragment@104 {
118 | target-path="/";
119 | __overlay__ {
120 |
121 | veyemvcam_vdig: fixedregulator@1 {
122 | compatible = "regulator-fixed";
123 | regulator-name = "veyemvcam_vdig";
124 | regulator-min-microvolt = <1800000>;
125 | regulator-max-microvolt = <1800000>;
126 | };
127 | veyemvcam_vddl: fixedregulator@2 {
128 | compatible = "regulator-fixed";
129 | regulator-name = "veyemvcam_vddl";
130 | regulator-min-microvolt = <1200000>;
131 | regulator-max-microvolt = <1200000>;
132 | };
133 | veyemvcam_vana: fixedregulator@3 {
134 | compatible = "regulator-fixed";
135 | regulator-name = "veyemvcam_vana";
136 | regulator-min-microvolt = <2800000>;
137 | regulator-max-microvolt = <2800000>;
138 | };
139 | veyemvcam_clk: camera-clk {
140 | compatible = "fixed-clock";
141 | #clock-cells = <0>;
142 | clock-frequency = <24000000>;
143 | };
144 | };
145 | };
146 |
147 | __overrides__ {
148 |
149 | cam0 = <&i2c_frag1>, "target:0=",<&i2c_vc>,
150 | <&csi_frag1>, "target:0=",<&csi0>;
151 |
152 | cam1 = <&i2c_frag2>, "target:0=",<&i2c_arm>,
153 | <&csi_frag2>, "target:0=",<&csi1>;
154 |
155 | };
156 | };
157 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.103+/veye_mvcam-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 |
9 | fragment@0 {
10 | target = <&i2c_csi_dsi>;
11 | __overlay__ {
12 | #address-cells = <1>;
13 | #size-cells = <0>;
14 | status = "okay";
15 |
16 | veyemvcam: veyemvcam@3b {
17 | compatible = "veye,mvcam";
18 | reg = <0x3b>;
19 | status = "okay";
20 |
21 | clocks = <&veyecam_clk>;
22 | clock-names = "xclk";
23 |
24 | VANA-supply = <&cam1_reg>; /* 2.8v */
25 | VDIG-supply = <&veyecam_vdig>; /* 1.8v */
26 | VDDL-supply = <&veyecam_vddl>; /* 1.2v */
27 | rotation = <0>;
28 | orientation = <2>;
29 | port {
30 | veyemvcam_0: endpoint {
31 | remote-endpoint = <&csi_ep>;
32 | clock-lanes = <0>;
33 | data-lanes = <1 2>;
34 | clock-noncontinuous;
35 | link-frequencies =
36 | /bits/ 64 <750000000>;
37 | };
38 | };
39 | };
40 | };
41 | };
42 | fragment@1 {
43 | target = <&csi1>;
44 | __overlay__ {
45 | status = "okay";
46 |
47 | port {
48 | csi_ep: endpoint {
49 | remote-endpoint = <&veyemvcam_0>;
50 | clock-lanes = <0>;
51 | data-lanes = <1 2>;
52 | clock-noncontinuous;
53 | };
54 | };
55 | };
56 | };
57 |
58 | fragment@2 {
59 | target = <&i2c0if>;
60 | __overlay__ {
61 | status = "okay";
62 | };
63 | };
64 |
65 | fragment@3 {
66 | target-path="/";
67 | __overlay__ {
68 |
69 | veyecam_vdig: fixedregulator@1 {
70 | compatible = "regulator-fixed";
71 | regulator-name = "veyecam_vdig";
72 | regulator-min-microvolt = <1800000>;
73 | regulator-max-microvolt = <1800000>;
74 | };
75 | veyecam_vddl: fixedregulator@2 {
76 | compatible = "regulator-fixed";
77 | regulator-name = "veyecam_vddl";
78 | regulator-min-microvolt = <1200000>;
79 | regulator-max-microvolt = <1200000>;
80 | };
81 |
82 | veyecam_clk: camera-clk {
83 | compatible = "fixed-clock";
84 | #clock-cells = <0>;
85 | clock-frequency = <24000000>;
86 | };
87 | };
88 | };
89 |
90 | fragment@4 {
91 | target = <&i2c0mux>;
92 | __overlay__ {
93 | status = "okay";
94 | };
95 | };
96 |
97 | fragment@5 {
98 | target = <&cam1_reg>;
99 | __overlay__ {
100 | status = "okay";
101 | regulator-name = "veyecam_vana";
102 | regulator-min-microvolt = <2800000>;
103 | regulator-max-microvolt = <2800000>;
104 | };
105 | };
106 |
107 | __overrides__ {
108 | rotation = <&veyemvcam>,"rotation:0";
109 | orientation = <&veyemvcam>,"orientation:0";
110 | };
111 |
112 |
113 | };
114 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.103+/veyecam2m-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 |
15 | fragment@2 {
16 | target = <&i2c0mux>;
17 | __overlay__ {
18 | status = "okay";
19 | };
20 | };
21 | i2c_frag1: fragment@100 {
22 | target = <&i2c_csi_dsi>;
23 | __overlay__ {
24 | #address-cells = <1>;
25 | #size-cells = <0>;
26 | status = "okay";
27 |
28 | veyecam2m1: veyecam2m@3b {
29 | compatible = "veye,veyecam2m";
30 | reg = <0x3b>;
31 | status = "okay";
32 |
33 | clocks = <&veyecam2m_clk>;
34 | clock-names = "xclk";
35 | VANA-supply = <&veyecam2m_vana>; /* 2.8v */
36 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
37 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
38 | rotation = <0>;
39 |
40 | port {
41 | veyecam2m_0: endpoint {
42 | remote-endpoint = <&csi_ep>;
43 | clock-lanes = <0>;
44 | data-lanes = <1 2>;
45 | clock-noncontinuous;
46 | link-frequencies =
47 | /bits/ 64 <297000000>;
48 | };
49 | };
50 | };
51 | };
52 | };
53 |
54 | csi_frag1: fragment@101 {
55 | target = <&csi1>;
56 | __overlay__ {
57 | status = "okay";
58 |
59 | port {
60 | csi_ep: endpoint {
61 | remote-endpoint = <&veyecam2m_0>;
62 | clock-lanes = <0>;
63 | data-lanes = <1 2>;
64 | clock-noncontinuous;
65 | };
66 | };
67 | };
68 | };
69 | i2c_frag2: fragment@102 {
70 | target = <&i2c0>;
71 | __overlay__ {
72 | #address-cells = <1>;
73 | #size-cells = <0>;
74 | status = "okay";
75 |
76 | veyecam2m2: veyecam2m@3b {
77 | compatible = "veye,veyecam2m";
78 | reg = <0x3b>;
79 | status = "okay";
80 | clocks = <&veyecam2m_clk>;
81 | clock-names = "xclk";
82 | VANA-supply = <&veyecam2m_vana>; /* 2.8v */
83 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
84 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
85 | rotation = <0>;
86 |
87 | port {
88 | veyecam2m_1: endpoint {
89 | remote-endpoint = <&csi0_ep>;
90 | clock-lanes = <0>;
91 | data-lanes = <1 2>;
92 | clock-noncontinuous;
93 | link-frequencies =
94 | /bits/ 64 <297000000>;
95 | };
96 | };
97 | };
98 | };
99 | };
100 |
101 | csi_frag2: fragment@103 {
102 | target = <&csi0>;
103 | __overlay__ {
104 | status = "okay";
105 |
106 | port {
107 | csi0_ep: endpoint {
108 | remote-endpoint = <&veyecam2m_1>;
109 | clock-lanes = <0>;
110 | data-lanes = <1 2>;
111 | clock-noncontinuous;
112 | };
113 | };
114 | };
115 | };
116 |
117 | fragment@104 {
118 | target-path="/";
119 | __overlay__ {
120 |
121 | veyecam2m_vdig: fixedregulator@1 {
122 | compatible = "regulator-fixed";
123 | regulator-name = "veyecam2m_vdig";
124 | regulator-min-microvolt = <1800000>;
125 | regulator-max-microvolt = <1800000>;
126 | };
127 | veyecam2m_vddl: fixedregulator@2 {
128 | compatible = "regulator-fixed";
129 | regulator-name = "veyecam2m_vddl";
130 | regulator-min-microvolt = <1200000>;
131 | regulator-max-microvolt = <1200000>;
132 | };
133 | veyecam2m_vana: fixedregulator@3 {
134 | compatible = "regulator-fixed";
135 | regulator-name = "veyecam2m_vana";
136 | regulator-min-microvolt = <2800000>;
137 | regulator-max-microvolt = <2800000>;
138 | };
139 | veyecam2m_clk: camera-clk {
140 | compatible = "fixed-clock";
141 | #clock-cells = <0>;
142 | clock-frequency = <24000000>;
143 | };
144 | };
145 | };
146 |
147 | __overrides__ {
148 |
149 | cam0 = <&i2c_frag1>, "target:0=",<&i2c_vc>,
150 | <&csi_frag1>, "target:0=",<&csi0>;
151 |
152 | cam1 = <&i2c_frag2>, "target:0=",<&i2c_arm>,
153 | <&csi_frag2>, "target:0=",<&csi1>;
154 |
155 | };
156 | };
157 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.103+/veyecam2m-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 |
9 | fragment@0 {
10 | target = <&i2c_csi_dsi>;
11 | __overlay__ {
12 | #address-cells = <1>;
13 | #size-cells = <0>;
14 | status = "okay";
15 |
16 | veyecam2m: veyecam2m@3b {
17 | compatible = "veye,veyecam2m";
18 | reg = <0x3b>;
19 | status = "okay";
20 |
21 | clocks = <&veyecam_clk>;
22 | clock-names = "xclk";
23 |
24 | VANA-supply = <&cam1_reg>; /* 2.8v */
25 | VDIG-supply = <&veyecam_vdig>; /* 1.8v */
26 | VDDL-supply = <&veyecam_vddl>; /* 1.2v */
27 | rotation = <0>;
28 | orientation = <2>;
29 | port {
30 | veyecam2m_0: endpoint {
31 | remote-endpoint = <&csi_ep>;
32 | clock-lanes = <0>;
33 | data-lanes = <1 2>;
34 | clock-noncontinuous;
35 | link-frequencies =
36 | /bits/ 64 <297000000>;
37 | };
38 | };
39 | };
40 | };
41 | };
42 | fragment@1 {
43 | target = <&csi1>;
44 | __overlay__ {
45 | status = "okay";
46 |
47 | port {
48 | csi_ep: endpoint {
49 | remote-endpoint = <&veyecam2m_0>;
50 | clock-lanes = <0>;
51 | data-lanes = <1 2>;
52 | clock-noncontinuous;
53 | };
54 | };
55 | };
56 | };
57 |
58 | fragment@2 {
59 | target = <&i2c0if>;
60 | __overlay__ {
61 | status = "okay";
62 | };
63 | };
64 |
65 | fragment@3 {
66 | target-path="/";
67 | __overlay__ {
68 |
69 | veyecam_vdig: fixedregulator@1 {
70 | compatible = "regulator-fixed";
71 | regulator-name = "veyecam_vdig";
72 | regulator-min-microvolt = <1800000>;
73 | regulator-max-microvolt = <1800000>;
74 | };
75 | veyecam_vddl: fixedregulator@2 {
76 | compatible = "regulator-fixed";
77 | regulator-name = "veyecam_vddl";
78 | regulator-min-microvolt = <1200000>;
79 | regulator-max-microvolt = <1200000>;
80 | };
81 |
82 | veyecam_clk: camera-clk {
83 | compatible = "fixed-clock";
84 | #clock-cells = <0>;
85 | clock-frequency = <24000000>;
86 | };
87 | };
88 | };
89 |
90 | fragment@4 {
91 | target = <&i2c0mux>;
92 | __overlay__ {
93 | status = "okay";
94 | };
95 | };
96 |
97 | fragment@5 {
98 | target = <&cam1_reg>;
99 | __overlay__ {
100 | status = "okay";
101 | regulator-name = "veyecam_vana";
102 | regulator-min-microvolt = <2800000>;
103 | regulator-max-microvolt = <2800000>;
104 | };
105 | };
106 |
107 | __overrides__ {
108 | rotation = <&veyecam2m>,"rotation:0";
109 | orientation = <&veyecam2m>,"orientation:0";
110 | };
111 |
112 |
113 | };
114 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92+/build_dtbo.sh:
--------------------------------------------------------------------------------
1 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam.dtbo veye_mvcam-overlay.dts
2 | dtc -@ -Hepapr -I dts -O dtb -o csimx307.dtbo csimx307-overlay.dts
3 | dtc -@ -Hepapr -I dts -O dtb -o cssc132.dtbo cssc132-overlay.dts
4 | dtc -@ -Hepapr -I dts -O dtb -o veyecam2m.dtbo veyecam2m-overlay.dts
5 | dtc -@ -Hepapr -I dts -O dtb -o veyecam2m-cm4.dtbo veyecam2m-cm4-overlay.dts
6 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92+/csimx307-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 |
7 | /{
8 | compatible = "brcm,bcm2835";
9 |
10 | fragment@0 {
11 | target = <&i2c0if>;
12 | __overlay__ {
13 | status = "okay";
14 | };
15 | };
16 |
17 | clk_frag: fragment@1 {
18 | target = <&cam1_clk>;
19 | __overlay__ {
20 | status = "okay";
21 | clock-frequency = <24000000>;
22 | };
23 | };
24 |
25 | fragment@2 {
26 | target = <&i2c0mux>;
27 | __overlay__ {
28 | status = "okay";
29 | };
30 | };
31 | i2c_frag: fragment@100 {
32 | target = <&i2c_csi_dsi>;
33 | __overlay__ {
34 | #address-cells = <1>;
35 | #size-cells = <0>;
36 | status = "okay";
37 |
38 | csimx307: csimx307@3b {
39 | compatible = "veye,csimx307";
40 | reg = <0x3b>;
41 | status = "okay";
42 |
43 |
44 | rotation = <0>;
45 |
46 | port {
47 | csimx307_0: endpoint {
48 | remote-endpoint = <&csi_ep>;
49 | clock-lanes = <0>;
50 | data-lanes = <1 2>;
51 | clock-noncontinuous;
52 | link-frequencies =
53 | /bits/ 64 <297000000>;
54 | };
55 | };
56 | };
57 | };
58 | };
59 |
60 | csi_frag: fragment@101 {
61 | target = <&csi1>;
62 | csi: __overlay__ {
63 | status = "okay";
64 |
65 | port {
66 | csi_ep: endpoint {
67 | remote-endpoint = <&csimx307_0>;
68 | clock-lanes = <0>;
69 | data-lanes = <1 2>;
70 | clock-noncontinuous;
71 | };
72 | };
73 | };
74 | };
75 |
76 |
77 | __overrides__ {
78 | rotation = <&csimx307>,"rotation:0";
79 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
80 | <&csi_frag>, "target:0=",<&csi0>,
81 | <&clk_frag>, "target:0=",<&cam0_clk>;
82 | };
83 |
84 |
85 | };
86 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92+/cssc132-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-SC132 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 |
7 | /{
8 | compatible = "brcm,bcm2835";
9 |
10 | fragment@0 {
11 | target = <&i2c0if>;
12 | __overlay__ {
13 | status = "okay";
14 | };
15 | };
16 |
17 | clk_frag: fragment@1 {
18 | target = <&cam1_clk>;
19 | __overlay__ {
20 | status = "okay";
21 | clock-frequency = <24000000>;
22 | };
23 | };
24 |
25 | fragment@2 {
26 | target = <&i2c0mux>;
27 | __overlay__ {
28 | status = "okay";
29 | };
30 | };
31 | i2c_frag: fragment@100 {
32 | target = <&i2c_csi_dsi>;
33 | __overlay__ {
34 | #address-cells = <1>;
35 | #size-cells = <0>;
36 | status = "okay";
37 |
38 | cssc132: cssc132@3b {
39 | compatible = "veye,cssc132";
40 | reg = <0x3b>;
41 | status = "okay";
42 |
43 |
44 | rotation = <0>;
45 |
46 | port {
47 | cssc132_0: endpoint {
48 | remote-endpoint = <&csi_ep>;
49 | clock-lanes = <0>;
50 | data-lanes = <1 2>;
51 | clock-noncontinuous;
52 | link-frequencies =
53 | /bits/ 64 <297000000>;
54 | };
55 | };
56 | };
57 | };
58 | };
59 |
60 | csi_frag: fragment@101 {
61 | target = <&csi1>;
62 | csi: __overlay__ {
63 | status = "okay";
64 |
65 | port {
66 | csi_ep: endpoint {
67 | remote-endpoint = <&cssc132_0>;
68 | clock-lanes = <0>;
69 | data-lanes = <1 2>;
70 | clock-noncontinuous;
71 | };
72 | };
73 | };
74 | };
75 |
76 |
77 |
78 | __overrides__ {
79 | rotation = <&cssc132>,"rotation:0";
80 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
81 | <&csi_frag>, "target:0=",<&csi0>,
82 | <&clk_frag>, "target:0=",<&cam0_clk>;
83 |
84 | };
85 |
86 |
87 | };
88 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92+/veye_mvcam-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 |
7 | /{
8 | compatible = "brcm,bcm2835";
9 | fragment@0 {
10 | target = <&i2c0if>;
11 | __overlay__ {
12 | status = "okay";
13 | };
14 | };
15 |
16 | clk_frag: fragment@1 {
17 | target = <&cam1_clk>;
18 | __overlay__ {
19 | status = "okay";
20 | clock-frequency = <24000000>;
21 | };
22 | };
23 |
24 | fragment@2 {
25 | target = <&i2c0mux>;
26 | __overlay__ {
27 | status = "okay";
28 | };
29 | };
30 | i2c_frag: fragment@100 {
31 | target = <&i2c_csi_dsi>;
32 | __overlay__ {
33 | #address-cells = <1>;
34 | #size-cells = <0>;
35 | status = "okay";
36 |
37 | veyemvcam: veyemvcam@3b {
38 | compatible = "veye,mvcam";
39 | reg = <0x3b>;
40 | status = "okay";
41 |
42 | clocks = <&cam1_clk>;
43 | clock-names = "xclk";
44 |
45 | VANA-supply = <&cam1_reg>; /* 2.8v */
46 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
47 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
48 | rotation = <0>;
49 |
50 | port {
51 | veyecam2m_0: endpoint {
52 | remote-endpoint = <&csi_ep>;
53 | clock-lanes = <0>;
54 | data-lanes = <1 2>;
55 | clock-noncontinuous;
56 | link-frequencies =
57 | /bits/ 64 <750000000>;
58 | };
59 | };
60 | };
61 | };
62 | };
63 |
64 | csi_frag: fragment@101 {
65 | target = <&csi1>;
66 | csi: __overlay__ {
67 | status = "okay";
68 |
69 | port {
70 | csi_ep: endpoint {
71 | remote-endpoint = <&veyecam2m_0>;
72 | clock-lanes = <0>;
73 | data-lanes = <1 2>;
74 | clock-noncontinuous;
75 | };
76 | };
77 | };
78 | };
79 |
80 | __overrides__ {
81 | rotation = <&veyemvcam>,"rotation:0";
82 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
83 | <&csi_frag>, "target:0=",<&csi0>,
84 | <&clk_frag>, "target:0=",<&cam0_clk>,
85 | <&veyemvcam>, "clocks:0=",<&cam0_clk>,
86 | <&veyemvcam>, "VANA-supply:0=",<&cam0_reg>;
87 | };
88 | };
89 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92+/veyecam2m-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 |
15 | fragment@2 {
16 | target = <&i2c0mux>;
17 | __overlay__ {
18 | status = "okay";
19 | };
20 | };
21 | i2c_frag1: fragment@100 {
22 | target = <&i2c_csi_dsi>;
23 | __overlay__ {
24 | #address-cells = <1>;
25 | #size-cells = <0>;
26 | status = "okay";
27 |
28 | veyecam2m1: veyecam2m@3b {
29 | compatible = "veye,veyecam2m";
30 | reg = <0x3b>;
31 | status = "okay";
32 |
33 | clocks = <&veyecam2m_clk>;
34 | clock-names = "xclk";
35 | VANA-supply = <&veyecam2m_vana>; /* 2.8v */
36 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
37 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
38 | rotation = <0>;
39 |
40 | port {
41 | veyecam2m_0: endpoint {
42 | remote-endpoint = <&csi_ep>;
43 | clock-lanes = <0>;
44 | data-lanes = <1 2>;
45 | clock-noncontinuous;
46 | link-frequencies =
47 | /bits/ 64 <297000000>;
48 | };
49 | };
50 | };
51 | };
52 | };
53 |
54 | csi_frag1: fragment@101 {
55 | target = <&csi1>;
56 | __overlay__ {
57 | status = "okay";
58 |
59 | port {
60 | csi_ep: endpoint {
61 | remote-endpoint = <&veyecam2m_0>;
62 | clock-lanes = <0>;
63 | data-lanes = <1 2>;
64 | clock-noncontinuous;
65 | };
66 | };
67 | };
68 | };
69 | i2c_frag2: fragment@102 {
70 | target = <&i2c0>;
71 | __overlay__ {
72 | #address-cells = <1>;
73 | #size-cells = <0>;
74 | status = "okay";
75 |
76 | veyecam2m2: veyecam2m@3b {
77 | compatible = "veye,veyecam2m";
78 | reg = <0x3b>;
79 | status = "okay";
80 | clocks = <&veyecam2m_clk>;
81 | clock-names = "xclk";
82 | VANA-supply = <&veyecam2m_vana>; /* 2.8v */
83 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
84 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
85 | rotation = <0>;
86 |
87 | port {
88 | veyecam2m_1: endpoint {
89 | remote-endpoint = <&csi0_ep>;
90 | clock-lanes = <0>;
91 | data-lanes = <1 2>;
92 | clock-noncontinuous;
93 | link-frequencies =
94 | /bits/ 64 <297000000>;
95 | };
96 | };
97 | };
98 | };
99 | };
100 |
101 | csi_frag2: fragment@103 {
102 | target = <&csi0>;
103 | __overlay__ {
104 | status = "okay";
105 |
106 | port {
107 | csi0_ep: endpoint {
108 | remote-endpoint = <&veyecam2m_1>;
109 | clock-lanes = <0>;
110 | data-lanes = <1 2>;
111 | clock-noncontinuous;
112 | };
113 | };
114 | };
115 | };
116 |
117 | fragment@104 {
118 | target-path="/";
119 | __overlay__ {
120 |
121 | veyecam2m_vdig: fixedregulator@1 {
122 | compatible = "regulator-fixed";
123 | regulator-name = "veyecam2m_vdig";
124 | regulator-min-microvolt = <1800000>;
125 | regulator-max-microvolt = <1800000>;
126 | };
127 | veyecam2m_vddl: fixedregulator@2 {
128 | compatible = "regulator-fixed";
129 | regulator-name = "veyecam2m_vddl";
130 | regulator-min-microvolt = <1200000>;
131 | regulator-max-microvolt = <1200000>;
132 | };
133 | veyecam2m_vana: fixedregulator@3 {
134 | compatible = "regulator-fixed";
135 | regulator-name = "veyecam2m_vana";
136 | regulator-min-microvolt = <2800000>;
137 | regulator-max-microvolt = <2800000>;
138 | };
139 | veyecam2m_clk: camera-clk {
140 | compatible = "fixed-clock";
141 | #clock-cells = <0>;
142 | clock-frequency = <24000000>;
143 | };
144 | };
145 | };
146 |
147 | __overrides__ {
148 |
149 | cam0 = <&i2c_frag1>, "target:0=",<&i2c_vc>,
150 | <&csi_frag1>, "target:0=",<&csi0>;
151 |
152 | cam1 = <&i2c_frag2>, "target:0=",<&i2c_arm>,
153 | <&csi_frag2>, "target:0=",<&csi1>;
154 |
155 | };
156 | };
157 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92+/veyecam2m-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 |
15 | clk_frag: fragment@1 {
16 | target = <&cam0_clk>;
17 | __overlay__ {
18 | status = "okay";
19 | clock-frequency = <24000000>;
20 | };
21 | };
22 |
23 | fragment@2 {
24 | target = <&i2c0mux>;
25 | __overlay__ {
26 | status = "okay";
27 | };
28 | };
29 | i2c_frag: fragment@100 {
30 | target = <&i2c_csi_dsi>;
31 | __overlay__ {
32 | #address-cells = <1>;
33 | #size-cells = <0>;
34 | status = "okay";
35 |
36 | veyecam2m: veyecam2m@3b {
37 | compatible = "veye,veyecam2m";
38 | reg = <0x3b>;
39 | status = "okay";
40 |
41 | clocks = <&cam1_clk>;
42 | clock-names = "xclk";
43 |
44 | VANA-supply = <&cam1_reg>; /* 2.8v */
45 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
46 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
47 | rotation = <0>;
48 |
49 | port {
50 | veyecam2m_0: endpoint {
51 | remote-endpoint = <&csi_ep>;
52 | clock-lanes = <0>;
53 | data-lanes = <1 2>;
54 | clock-noncontinuous;
55 | link-frequencies =
56 | /bits/ 64 <297000000>;
57 | };
58 | };
59 | };
60 | };
61 | };
62 |
63 | csi_frag: fragment@101 {
64 | target = <&csi1>;
65 | csi: __overlay__ {
66 | status = "okay";
67 |
68 | port {
69 | csi_ep: endpoint {
70 | remote-endpoint = <&veyecam2m_0>;
71 | clock-lanes = <0>;
72 | data-lanes = <1 2>;
73 | clock-noncontinuous;
74 | };
75 | };
76 | };
77 | };
78 |
79 |
80 |
81 | __overrides__ {
82 | rotation = <&veyecam2m>,"rotation:0";
83 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
84 | <&csi_frag>, "target:0=",<&csi0>,
85 | <&clk_frag>, "target:0=",<&cam0_clk>,
86 | <&veyecam2m>, "clocks:0=",<&cam0_clk>,
87 | <&veyecam2m>, "VANA-supply:0=",<&cam0_reg>;
88 | };
89 | };
90 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92-/csimx307-dual-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | csimx307@3b {
19 | compatible = "veye,csimx307";
20 | reg = <0x3b>;
21 | status = "okay";
22 | rotation = <0>;
23 | port {
24 | csimx307_0: endpoint {
25 | remote-endpoint = <&csi1_ep>;
26 | clock-lanes = <0>;
27 | data-lanes = <1 2>;
28 | clock-noncontinuous;
29 | link-frequencies =
30 | /bits/ 64 <297000000>;
31 | };
32 | };
33 | };
34 | };
35 | };
36 |
37 | fragment@1 {
38 | target = <&csi1>;
39 | __overlay__ {
40 | status = "okay";
41 | port {
42 | csi1_ep: endpoint {
43 | remote-endpoint = <&csimx307_0>;
44 | clock-lanes = <0>;
45 | data-lanes = <1 2>;
46 | clock-noncontinuous;
47 | };
48 | };
49 | };
50 | };
51 | fragment@2 {
52 | target = <&i2c0>;
53 | __overlay__ {
54 | #address-cells = <1>;
55 | #size-cells = <0>;
56 | status = "okay";
57 |
58 | csimx307@3b {
59 | compatible = "veye,csimx307";
60 | reg = <0x3b>;
61 | status = "okay";
62 | rotation = <0>;
63 | port {
64 | csimx307_1: endpoint {
65 | remote-endpoint = <&csi0_ep>;
66 | clock-lanes = <0>;
67 | data-lanes = <1 2>;
68 | clock-noncontinuous;
69 | link-frequencies =
70 | /bits/ 64 <297000000>;
71 | };
72 | };
73 | };
74 | };
75 | };
76 |
77 | fragment@3 {
78 | target = <&csi0>;
79 | __overlay__ {
80 | status = "okay";
81 | port {
82 | csi0_ep: endpoint {
83 | remote-endpoint = <&csimx307_1>;
84 | clock-lanes = <0>;
85 | data-lanes = <1 2>;
86 | clock-noncontinuous;
87 | };
88 | };
89 | };
90 | };
91 | fragment@4 {
92 | target = <&i2c0if>;
93 | __overlay__ {
94 | status = "okay";
95 | };
96 | };
97 |
98 | fragment@5 {
99 | target = <&i2c0mux>;
100 | __overlay__ {
101 | status = "okay";
102 | };
103 | };
104 |
105 |
106 | };
107 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92-/csimx307-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | csimx307: csimx307@3b {
19 | compatible = "veye,csimx307";
20 | reg = <0x3b>;
21 | status = "okay";
22 | rotation = <0>;
23 |
24 | port {
25 | csimx307_0: endpoint {
26 | remote-endpoint = <&csi1_ep>;
27 | clock-lanes = <0>;
28 | data-lanes = <1 2>;
29 | clock-noncontinuous;
30 | link-frequencies =
31 | /bits/ 64 <297000000>;
32 | };
33 | };
34 | };
35 | };
36 | };
37 |
38 | fragment@1 {
39 | target = <&csi1>;
40 | __overlay__ {
41 | status = "okay";
42 |
43 | port {
44 | csi1_ep: endpoint {
45 | remote-endpoint = <&csimx307_0>;
46 | clock-lanes = <0>;
47 | data-lanes = <1 2>;
48 | clock-noncontinuous;
49 | };
50 | };
51 | };
52 | };
53 |
54 | fragment@2 {
55 | target = <&i2c0if>;
56 | __overlay__ {
57 | status = "okay";
58 | };
59 | };
60 |
61 | fragment@3 {
62 | target = <&i2c0mux>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 |
69 | };
70 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92-/cssc132-dual-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cssc132@3b {
19 | compatible = "veye,cssc132";
20 | reg = <0x3b>;
21 | status = "okay";
22 | rotation = <0>;
23 | port {
24 | cssc132_0: endpoint {
25 | remote-endpoint = <&csi1_ep>;
26 | clock-lanes = <0>;
27 | data-lanes = <1 2>;
28 | clock-noncontinuous;
29 | link-frequencies =
30 | /bits/ 64 <297000000>;
31 | };
32 | };
33 | };
34 | };
35 | };
36 |
37 | fragment@1 {
38 | target = <&csi1>;
39 | __overlay__ {
40 | status = "okay";
41 | port {
42 | csi1_ep: endpoint {
43 | remote-endpoint = <&cssc132_0>;
44 | clock-lanes = <0>;
45 | data-lanes = <1 2>;
46 | clock-noncontinuous;
47 | };
48 | };
49 | };
50 | };
51 | fragment@2 {
52 | target = <&i2c0>;
53 | __overlay__ {
54 | #address-cells = <1>;
55 | #size-cells = <0>;
56 | status = "okay";
57 |
58 | cssc132@3b {
59 | compatible = "veye,cssc132";
60 | reg = <0x3b>;
61 | status = "okay";
62 | rotation = <0>;
63 | port {
64 | cssc132_1: endpoint {
65 | remote-endpoint = <&csi0_ep>;
66 | clock-lanes = <0>;
67 | data-lanes = <1 2>;
68 | clock-noncontinuous;
69 | link-frequencies =
70 | /bits/ 64 <297000000>;
71 | };
72 | };
73 | };
74 | };
75 | };
76 |
77 | fragment@3 {
78 | target = <&csi0>;
79 | __overlay__ {
80 | status = "okay";
81 | port {
82 | csi0_ep: endpoint {
83 | remote-endpoint = <&cssc132_1>;
84 | clock-lanes = <0>;
85 | data-lanes = <1 2>;
86 | clock-noncontinuous;
87 | };
88 | };
89 | };
90 | };
91 | fragment@4 {
92 | target = <&i2c0if>;
93 | __overlay__ {
94 | status = "okay";
95 | };
96 | };
97 |
98 | fragment@5 {
99 | target = <&i2c0mux>;
100 | __overlay__ {
101 | status = "okay";
102 | };
103 | };
104 |
105 |
106 | };
107 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92-/cssc132-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-SC132 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cssc132: cssc132@3b {
19 | compatible = "veye,cssc132";
20 | reg = <0x3b>;
21 | status = "okay";
22 | rotation = <0>;
23 |
24 | port {
25 | cssc132_0: endpoint {
26 | remote-endpoint = <&csi1_ep>;
27 | clock-lanes = <0>;
28 | data-lanes = <1 2>;
29 | clock-noncontinuous;
30 | link-frequencies =
31 | /bits/ 64 <297000000>;
32 | };
33 | };
34 | };
35 | };
36 | };
37 |
38 | fragment@1 {
39 | target = <&csi1>;
40 | __overlay__ {
41 | status = "okay";
42 |
43 | port {
44 | csi1_ep: endpoint {
45 | remote-endpoint = <&cssc132_0>;
46 | clock-lanes = <0>;
47 | data-lanes = <1 2>;
48 | clock-noncontinuous;
49 | };
50 | };
51 | };
52 | };
53 |
54 | fragment@2 {
55 | target = <&i2c0if>;
56 | __overlay__ {
57 | status = "okay";
58 | };
59 | };
60 |
61 | fragment@3 {
62 | target = <&i2c0mux>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 |
69 | };
70 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92-/veye327-dual-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veye327@3b {
19 | compatible = "veye,veye327";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veye327_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&veye327_vdig>; /* 1.8v */
28 | VDDL-supply = <&veye327_vddl>; /* 1.2v */
29 | rotation = <0>;
30 | port {
31 | veye327_0: endpoint {
32 | remote-endpoint = <&csi1_ep>;
33 | clock-lanes = <0>;
34 | data-lanes = <1 2>;
35 | clock-noncontinuous;
36 | link-frequencies =
37 | /bits/ 64 <297000000>;
38 | };
39 | };
40 | };
41 | };
42 | };
43 |
44 | fragment@1 {
45 | target = <&csi1>;
46 | __overlay__ {
47 | status = "okay";
48 | port {
49 | csi1_ep: endpoint {
50 | remote-endpoint = <&veye327_0>;
51 | clock-lanes = <0>;
52 | data-lanes = <1 2>;
53 | clock-noncontinuous;
54 | };
55 | };
56 | };
57 | };
58 | fragment@2 {
59 | target = <&i2c0>;
60 | __overlay__ {
61 | #address-cells = <1>;
62 | #size-cells = <0>;
63 | status = "okay";
64 |
65 | veye327@3b {
66 | compatible = "veye,veye327";
67 | reg = <0x3b>;
68 | status = "okay";
69 | clocks = <&veye327_clk>;
70 | clock-names = "xclk";
71 |
72 | VANA-supply = <&cam1_reg>; /* 2.8v */
73 | VDIG-supply = <&veye327_vdig>; /* 1.8v */
74 | VDDL-supply = <&veye327_vddl>; /* 1.2v */
75 | rotation = <0>;
76 | port {
77 | veye327_1: endpoint {
78 | remote-endpoint = <&csi0_ep>;
79 | clock-lanes = <0>;
80 | data-lanes = <1 2>;
81 | clock-noncontinuous;
82 | link-frequencies =
83 | /bits/ 64 <297000000>;
84 | };
85 | };
86 | };
87 | };
88 | };
89 |
90 | fragment@3 {
91 | target = <&csi0>;
92 | __overlay__ {
93 | status = "okay";
94 | port {
95 | csi0_ep: endpoint {
96 | remote-endpoint = <&veye327_1>;
97 | clock-lanes = <0>;
98 | data-lanes = <1 2>;
99 | clock-noncontinuous;
100 | };
101 | };
102 | };
103 | };
104 | fragment@4 {
105 | target = <&i2c0if>;
106 | __overlay__ {
107 | status = "okay";
108 | };
109 | };
110 |
111 | fragment@5 {
112 | target = <&i2c0mux>;
113 | __overlay__ {
114 | status = "okay";
115 | };
116 | };
117 |
118 | fragment@6 {
119 | target-path="/";
120 | __overlay__ {
121 |
122 | veye327_vdig: fixedregulator@1 {
123 | compatible = "regulator-fixed";
124 | regulator-name = "veye327_vdig";
125 | regulator-min-microvolt = <1800000>;
126 | regulator-max-microvolt = <1800000>;
127 | };
128 | veye327_vddl: fixedregulator@2 {
129 | compatible = "regulator-fixed";
130 | regulator-name = "veye327_vddl";
131 | regulator-min-microvolt = <1200000>;
132 | regulator-max-microvolt = <1200000>;
133 | };
134 |
135 | veye327_clk: camera-clk {
136 | compatible = "fixed-clock";
137 | #clock-cells = <0>;
138 | clock-frequency = <24000000>;
139 | };
140 | };
141 | };
142 | fragment@7 {
143 | target = <&cam1_reg>;
144 | __overlay__ {
145 | status = "okay";
146 | regulator-name = "veye327_vana";
147 | regulator-min-microvolt = <2800000>;
148 | regulator-max-microvolt = <2800000>;
149 | };
150 | };
151 | };
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92-/veye327-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE327 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veye327: veye327@3b {
19 | compatible = "veye,veye327";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veye327_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&veye327_vdig>; /* 1.8v */
28 | VDDL-supply = <&veye327_vddl>; /* 1.2v */
29 | rotation = <0>;
30 |
31 | port {
32 | veye327_0: endpoint {
33 | remote-endpoint = <&csi1_ep>;
34 | clock-lanes = <0>;
35 | data-lanes = <1 2>;
36 | clock-noncontinuous;
37 | link-frequencies =
38 | /bits/ 64 <297000000>;
39 | };
40 | };
41 | };
42 | };
43 | };
44 |
45 | fragment@1 {
46 | target = <&csi1>;
47 | __overlay__ {
48 | status = "okay";
49 |
50 | port {
51 | csi1_ep: endpoint {
52 | remote-endpoint = <&veye327_0>;
53 | clock-lanes = <0>;
54 | data-lanes = <1 2>;
55 | clock-noncontinuous;
56 | };
57 | };
58 | };
59 | };
60 |
61 | fragment@2 {
62 | target = <&i2c0if>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 | fragment@3 {
69 | target-path="/";
70 | __overlay__ {
71 |
72 | veye327_vdig: fixedregulator@1 {
73 | compatible = "regulator-fixed";
74 | regulator-name = "veye327_vdig";
75 | regulator-min-microvolt = <1800000>;
76 | regulator-max-microvolt = <1800000>;
77 | };
78 | veye327_vddl: fixedregulator@2 {
79 | compatible = "regulator-fixed";
80 | regulator-name = "veye327_vddl";
81 | regulator-min-microvolt = <1200000>;
82 | regulator-max-microvolt = <1200000>;
83 | };
84 |
85 | veye327_clk: camera-clk {
86 | compatible = "fixed-clock";
87 | #clock-cells = <0>;
88 | clock-frequency = <24000000>;
89 | };
90 | };
91 | };
92 |
93 | fragment@4 {
94 | target = <&i2c0mux>;
95 | __overlay__ {
96 | status = "okay";
97 | };
98 | };
99 |
100 | fragment@5 {
101 | target = <&cam1_reg>;
102 | __overlay__ {
103 | status = "okay";
104 | regulator-name = "veye327_vana";
105 | regulator-min-microvolt = <2800000>;
106 | regulator-max-microvolt = <2800000>;
107 | };
108 | };
109 |
110 | __overrides__ {
111 | rotation = <&veye327>,"rotation:0";
112 | };
113 | };
114 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92-/veyecam2m-dual-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MIPI CAMERA 2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veyecam2m@3b {
19 | compatible = "veye,veyecam2m";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veyecam2m_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
28 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
29 | rotation = <0>;
30 | port {
31 | veyecam2m_0: endpoint {
32 | remote-endpoint = <&csi1_ep>;
33 | clock-lanes = <0>;
34 | data-lanes = <1 2>;
35 | clock-noncontinuous;
36 | link-frequencies =
37 | /bits/ 64 <297000000>;
38 | };
39 | };
40 | };
41 | };
42 | };
43 |
44 | fragment@1 {
45 | target = <&csi1>;
46 | __overlay__ {
47 | status = "okay";
48 | port {
49 | csi1_ep: endpoint {
50 | remote-endpoint = <&veyecam2m_0>;
51 | clock-lanes = <0>;
52 | data-lanes = <1 2>;
53 | clock-noncontinuous;
54 | };
55 | };
56 | };
57 | };
58 | fragment@2 {
59 | target = <&i2c0>;
60 | __overlay__ {
61 | #address-cells = <1>;
62 | #size-cells = <0>;
63 | status = "okay";
64 |
65 | veyecam2m@3b {
66 | compatible = "veye,veyecam2m";
67 | reg = <0x3b>;
68 | status = "okay";
69 | clocks = <&veyecam2m_clk>;
70 | clock-names = "xclk";
71 |
72 | VANA-supply = <&cam1_reg>; /* 2.8v */
73 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
74 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
75 | rotation = <0>;
76 | port {
77 | veyecam2m_1: endpoint {
78 | remote-endpoint = <&csi0_ep>;
79 | clock-lanes = <0>;
80 | data-lanes = <1 2>;
81 | clock-noncontinuous;
82 | link-frequencies =
83 | /bits/ 64 <297000000>;
84 | };
85 | };
86 | };
87 | };
88 | };
89 |
90 | fragment@3 {
91 | target = <&csi0>;
92 | __overlay__ {
93 | status = "okay";
94 | port {
95 | csi0_ep: endpoint {
96 | remote-endpoint = <&veyecam2m_1>;
97 | clock-lanes = <0>;
98 | data-lanes = <1 2>;
99 | clock-noncontinuous;
100 | };
101 | };
102 | };
103 | };
104 | fragment@4 {
105 | target = <&i2c0if>;
106 | __overlay__ {
107 | status = "okay";
108 | };
109 | };
110 |
111 | fragment@5 {
112 | target = <&i2c0mux>;
113 | __overlay__ {
114 | status = "okay";
115 | };
116 | };
117 |
118 | fragment@6 {
119 | target-path="/";
120 | __overlay__ {
121 |
122 | veyecam2m_vdig: fixedregulator@1 {
123 | compatible = "regulator-fixed";
124 | regulator-name = "veyecam2m_vdig";
125 | regulator-min-microvolt = <1800000>;
126 | regulator-max-microvolt = <1800000>;
127 | };
128 | veyecam2m_vddl: fixedregulator@2 {
129 | compatible = "regulator-fixed";
130 | regulator-name = "veyecam2m_vddl";
131 | regulator-min-microvolt = <1200000>;
132 | regulator-max-microvolt = <1200000>;
133 | };
134 |
135 | veyecam2m_clk: camera-clk {
136 | compatible = "fixed-clock";
137 | #clock-cells = <0>;
138 | clock-frequency = <24000000>;
139 | };
140 | };
141 | };
142 | fragment@7 {
143 | target = <&cam1_reg>;
144 | __overlay__ {
145 | status = "okay";
146 | regulator-name = "veyecam2m_vana";
147 | regulator-min-microvolt = <2800000>;
148 | regulator-max-microvolt = <2800000>;
149 | };
150 | };
151 | };
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.92-/veyecam2m-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veyecam2m: veyecam2m@3b {
19 | compatible = "veye,veyecam2m";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veyecam2m_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
28 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
29 | rotation = <0>;
30 |
31 | port {
32 | veyecam2m_0: endpoint {
33 | remote-endpoint = <&csi1_ep>;
34 | clock-lanes = <0>;
35 | data-lanes = <1 2>;
36 | clock-noncontinuous;
37 | link-frequencies =
38 | /bits/ 64 <297000000>;
39 | };
40 | };
41 | };
42 | };
43 | };
44 |
45 | fragment@1 {
46 | target = <&csi1>;
47 | __overlay__ {
48 | status = "okay";
49 |
50 | port {
51 | csi1_ep: endpoint {
52 | remote-endpoint = <&veyecam2m_0>;
53 | clock-lanes = <0>;
54 | data-lanes = <1 2>;
55 | clock-noncontinuous;
56 | };
57 | };
58 | };
59 | };
60 |
61 | fragment@2 {
62 | target = <&i2c0if>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 | fragment@3 {
69 | target-path="/";
70 | __overlay__ {
71 |
72 | veyecam2m_vdig: fixedregulator@1 {
73 | compatible = "regulator-fixed";
74 | regulator-name = "veyecam2m_vdig";
75 | regulator-min-microvolt = <1800000>;
76 | regulator-max-microvolt = <1800000>;
77 | };
78 | veyecam2m_vddl: fixedregulator@2 {
79 | compatible = "regulator-fixed";
80 | regulator-name = "veyecam2m_vddl";
81 | regulator-min-microvolt = <1200000>;
82 | regulator-max-microvolt = <1200000>;
83 | };
84 |
85 | veyecam2m_clk: camera-clk {
86 | compatible = "fixed-clock";
87 | #clock-cells = <0>;
88 | clock-frequency = <24000000>;
89 | };
90 | };
91 | };
92 |
93 | fragment@4 {
94 | target = <&i2c0mux>;
95 | __overlay__ {
96 | status = "okay";
97 | };
98 | };
99 |
100 | fragment@5 {
101 | target = <&cam1_reg>;
102 | __overlay__ {
103 | status = "okay";
104 | regulator-name = "veyecam2m_vana";
105 | regulator-min-microvolt = <2800000>;
106 | regulator-max-microvolt = <2800000>;
107 | };
108 | };
109 |
110 | __overrides__ {
111 | rotation = <&veyecam2m>,"rotation:0";
112 | };
113 | };
114 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.y/csimx307-dual-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | csimx307@3b {
19 | compatible = "veye,csimx307";
20 | reg = <0x3b>;
21 | status = "okay";
22 | rotation = <0>;
23 | port {
24 | csimx307_0: endpoint {
25 | remote-endpoint = <&csi1_ep>;
26 | clock-lanes = <0>;
27 | data-lanes = <1 2>;
28 | clock-noncontinuous;
29 | link-frequencies =
30 | /bits/ 64 <297000000>;
31 | };
32 | };
33 | };
34 | };
35 | };
36 |
37 | fragment@1 {
38 | target = <&csi1>;
39 | __overlay__ {
40 | status = "okay";
41 | port {
42 | csi1_ep: endpoint {
43 | remote-endpoint = <&csimx307_0>;
44 | clock-lanes = <0>;
45 | data-lanes = <1 2>;
46 | clock-noncontinuous;
47 | };
48 | };
49 | };
50 | };
51 | fragment@2 {
52 | target = <&i2c0>;
53 | __overlay__ {
54 | #address-cells = <1>;
55 | #size-cells = <0>;
56 | status = "okay";
57 |
58 | csimx307@3b {
59 | compatible = "veye,csimx307";
60 | reg = <0x3b>;
61 | status = "okay";
62 | rotation = <0>;
63 | port {
64 | csimx307_1: endpoint {
65 | remote-endpoint = <&csi0_ep>;
66 | clock-lanes = <0>;
67 | data-lanes = <1 2>;
68 | clock-noncontinuous;
69 | link-frequencies =
70 | /bits/ 64 <297000000>;
71 | };
72 | };
73 | };
74 | };
75 | };
76 |
77 | fragment@3 {
78 | target = <&csi0>;
79 | __overlay__ {
80 | status = "okay";
81 | port {
82 | csi0_ep: endpoint {
83 | remote-endpoint = <&csimx307_1>;
84 | clock-lanes = <0>;
85 | data-lanes = <1 2>;
86 | clock-noncontinuous;
87 | };
88 | };
89 | };
90 | };
91 | fragment@4 {
92 | target = <&i2c0if>;
93 | __overlay__ {
94 | status = "okay";
95 | };
96 | };
97 |
98 | fragment@5 {
99 | target = <&i2c0mux>;
100 | __overlay__ {
101 | status = "okay";
102 | };
103 | };
104 |
105 |
106 | };
107 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.y/csimx307-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | csimx307: csimx307@3b {
19 | compatible = "veye,csimx307";
20 | reg = <0x3b>;
21 | status = "okay";
22 | rotation = <0>;
23 |
24 | port {
25 | csimx307_0: endpoint {
26 | remote-endpoint = <&csi1_ep>;
27 | clock-lanes = <0>;
28 | data-lanes = <1 2>;
29 | clock-noncontinuous;
30 | link-frequencies =
31 | /bits/ 64 <297000000>;
32 | };
33 | };
34 | };
35 | };
36 | };
37 |
38 | fragment@1 {
39 | target = <&csi1>;
40 | __overlay__ {
41 | status = "okay";
42 |
43 | port {
44 | csi1_ep: endpoint {
45 | remote-endpoint = <&csimx307_0>;
46 | clock-lanes = <0>;
47 | data-lanes = <1 2>;
48 | clock-noncontinuous;
49 | };
50 | };
51 | };
52 | };
53 |
54 | fragment@2 {
55 | target = <&i2c0if>;
56 | __overlay__ {
57 | status = "okay";
58 | };
59 | };
60 |
61 | fragment@3 {
62 | target = <&i2c0mux>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 |
69 | };
70 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.y/cssc132-dual-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cssc132@3b {
19 | compatible = "veye,cssc132";
20 | reg = <0x3b>;
21 | status = "okay";
22 | rotation = <0>;
23 | port {
24 | cssc132_0: endpoint {
25 | remote-endpoint = <&csi1_ep>;
26 | clock-lanes = <0>;
27 | data-lanes = <1 2>;
28 | clock-noncontinuous;
29 | link-frequencies =
30 | /bits/ 64 <297000000>;
31 | };
32 | };
33 | };
34 | };
35 | };
36 |
37 | fragment@1 {
38 | target = <&csi1>;
39 | __overlay__ {
40 | status = "okay";
41 | port {
42 | csi1_ep: endpoint {
43 | remote-endpoint = <&cssc132_0>;
44 | clock-lanes = <0>;
45 | data-lanes = <1 2>;
46 | clock-noncontinuous;
47 | };
48 | };
49 | };
50 | };
51 | fragment@2 {
52 | target = <&i2c0>;
53 | __overlay__ {
54 | #address-cells = <1>;
55 | #size-cells = <0>;
56 | status = "okay";
57 |
58 | cssc132@3b {
59 | compatible = "veye,cssc132";
60 | reg = <0x3b>;
61 | status = "okay";
62 | rotation = <0>;
63 | port {
64 | cssc132_1: endpoint {
65 | remote-endpoint = <&csi0_ep>;
66 | clock-lanes = <0>;
67 | data-lanes = <1 2>;
68 | clock-noncontinuous;
69 | link-frequencies =
70 | /bits/ 64 <297000000>;
71 | };
72 | };
73 | };
74 | };
75 | };
76 |
77 | fragment@3 {
78 | target = <&csi0>;
79 | __overlay__ {
80 | status = "okay";
81 | port {
82 | csi0_ep: endpoint {
83 | remote-endpoint = <&cssc132_1>;
84 | clock-lanes = <0>;
85 | data-lanes = <1 2>;
86 | clock-noncontinuous;
87 | };
88 | };
89 | };
90 | };
91 | fragment@4 {
92 | target = <&i2c0if>;
93 | __overlay__ {
94 | status = "okay";
95 | };
96 | };
97 |
98 | fragment@5 {
99 | target = <&i2c0mux>;
100 | __overlay__ {
101 | status = "okay";
102 | };
103 | };
104 |
105 |
106 | };
107 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.y/cssc132-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-SC132 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cssc132: cssc132@3b {
19 | compatible = "veye,cssc132";
20 | reg = <0x3b>;
21 | status = "okay";
22 | rotation = <0>;
23 |
24 | port {
25 | cssc132_0: endpoint {
26 | remote-endpoint = <&csi1_ep>;
27 | clock-lanes = <0>;
28 | data-lanes = <1 2>;
29 | clock-noncontinuous;
30 | link-frequencies =
31 | /bits/ 64 <297000000>;
32 | };
33 | };
34 | };
35 | };
36 | };
37 |
38 | fragment@1 {
39 | target = <&csi1>;
40 | __overlay__ {
41 | status = "okay";
42 |
43 | port {
44 | csi1_ep: endpoint {
45 | remote-endpoint = <&cssc132_0>;
46 | clock-lanes = <0>;
47 | data-lanes = <1 2>;
48 | clock-noncontinuous;
49 | };
50 | };
51 | };
52 | };
53 |
54 | fragment@2 {
55 | target = <&i2c0if>;
56 | __overlay__ {
57 | status = "okay";
58 | };
59 | };
60 |
61 | fragment@3 {
62 | target = <&i2c0mux>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 |
69 | };
70 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.y/veye327-dual-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veye327@3b {
19 | compatible = "veye,veye327";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veye327_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&veye327_vdig>; /* 1.8v */
28 | VDDL-supply = <&veye327_vddl>; /* 1.2v */
29 | rotation = <0>;
30 | port {
31 | veye327_0: endpoint {
32 | remote-endpoint = <&csi1_ep>;
33 | clock-lanes = <0>;
34 | data-lanes = <1 2>;
35 | clock-noncontinuous;
36 | link-frequencies =
37 | /bits/ 64 <297000000>;
38 | };
39 | };
40 | };
41 | };
42 | };
43 |
44 | fragment@1 {
45 | target = <&csi1>;
46 | __overlay__ {
47 | status = "okay";
48 | port {
49 | csi1_ep: endpoint {
50 | remote-endpoint = <&veye327_0>;
51 | clock-lanes = <0>;
52 | data-lanes = <1 2>;
53 | clock-noncontinuous;
54 | };
55 | };
56 | };
57 | };
58 | fragment@2 {
59 | target = <&i2c0>;
60 | __overlay__ {
61 | #address-cells = <1>;
62 | #size-cells = <0>;
63 | status = "okay";
64 |
65 | veye327@3b {
66 | compatible = "veye,veye327";
67 | reg = <0x3b>;
68 | status = "okay";
69 | clocks = <&veye327_clk>;
70 | clock-names = "xclk";
71 |
72 | VANA-supply = <&cam1_reg>; /* 2.8v */
73 | VDIG-supply = <&veye327_vdig>; /* 1.8v */
74 | VDDL-supply = <&veye327_vddl>; /* 1.2v */
75 | rotation = <0>;
76 | port {
77 | veye327_1: endpoint {
78 | remote-endpoint = <&csi0_ep>;
79 | clock-lanes = <0>;
80 | data-lanes = <1 2>;
81 | clock-noncontinuous;
82 | link-frequencies =
83 | /bits/ 64 <297000000>;
84 | };
85 | };
86 | };
87 | };
88 | };
89 |
90 | fragment@3 {
91 | target = <&csi0>;
92 | __overlay__ {
93 | status = "okay";
94 | port {
95 | csi0_ep: endpoint {
96 | remote-endpoint = <&veye327_1>;
97 | clock-lanes = <0>;
98 | data-lanes = <1 2>;
99 | clock-noncontinuous;
100 | };
101 | };
102 | };
103 | };
104 | fragment@4 {
105 | target = <&i2c0if>;
106 | __overlay__ {
107 | status = "okay";
108 | };
109 | };
110 |
111 | fragment@5 {
112 | target = <&i2c0mux>;
113 | __overlay__ {
114 | status = "okay";
115 | };
116 | };
117 |
118 | fragment@6 {
119 | target-path="/";
120 | __overlay__ {
121 |
122 | veye327_vdig: fixedregulator@1 {
123 | compatible = "regulator-fixed";
124 | regulator-name = "veye327_vdig";
125 | regulator-min-microvolt = <1800000>;
126 | regulator-max-microvolt = <1800000>;
127 | };
128 | veye327_vddl: fixedregulator@2 {
129 | compatible = "regulator-fixed";
130 | regulator-name = "veye327_vddl";
131 | regulator-min-microvolt = <1200000>;
132 | regulator-max-microvolt = <1200000>;
133 | };
134 |
135 | veye327_clk: camera-clk {
136 | compatible = "fixed-clock";
137 | #clock-cells = <0>;
138 | clock-frequency = <24000000>;
139 | };
140 | };
141 | };
142 | fragment@7 {
143 | target = <&cam1_reg>;
144 | __overlay__ {
145 | status = "okay";
146 | regulator-name = "veye327_vana";
147 | regulator-min-microvolt = <2800000>;
148 | regulator-max-microvolt = <2800000>;
149 | };
150 | };
151 | };
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.y/veye327-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE327 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veye327: veye327@3b {
19 | compatible = "veye,veye327";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veye327_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&veye327_vdig>; /* 1.8v */
28 | VDDL-supply = <&veye327_vddl>; /* 1.2v */
29 | rotation = <0>;
30 |
31 | port {
32 | veye327_0: endpoint {
33 | remote-endpoint = <&csi1_ep>;
34 | clock-lanes = <0>;
35 | data-lanes = <1 2>;
36 | clock-noncontinuous;
37 | link-frequencies =
38 | /bits/ 64 <297000000>;
39 | };
40 | };
41 | };
42 | };
43 | };
44 |
45 | fragment@1 {
46 | target = <&csi1>;
47 | __overlay__ {
48 | status = "okay";
49 |
50 | port {
51 | csi1_ep: endpoint {
52 | remote-endpoint = <&veye327_0>;
53 | clock-lanes = <0>;
54 | data-lanes = <1 2>;
55 | clock-noncontinuous;
56 | };
57 | };
58 | };
59 | };
60 |
61 | fragment@2 {
62 | target = <&i2c0if>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 | fragment@3 {
69 | target-path="/";
70 | __overlay__ {
71 |
72 | veye327_vdig: fixedregulator@1 {
73 | compatible = "regulator-fixed";
74 | regulator-name = "veye327_vdig";
75 | regulator-min-microvolt = <1800000>;
76 | regulator-max-microvolt = <1800000>;
77 | };
78 | veye327_vddl: fixedregulator@2 {
79 | compatible = "regulator-fixed";
80 | regulator-name = "veye327_vddl";
81 | regulator-min-microvolt = <1200000>;
82 | regulator-max-microvolt = <1200000>;
83 | };
84 |
85 | veye327_clk: camera-clk {
86 | compatible = "fixed-clock";
87 | #clock-cells = <0>;
88 | clock-frequency = <24000000>;
89 | };
90 | };
91 | };
92 |
93 | fragment@4 {
94 | target = <&i2c0mux>;
95 | __overlay__ {
96 | status = "okay";
97 | };
98 | };
99 |
100 | fragment@5 {
101 | target = <&cam1_reg>;
102 | __overlay__ {
103 | status = "okay";
104 | regulator-name = "veye327_vana";
105 | regulator-min-microvolt = <2800000>;
106 | regulator-max-microvolt = <2800000>;
107 | };
108 | };
109 |
110 | __overrides__ {
111 | rotation = <&veye327>,"rotation:0";
112 | };
113 | };
114 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.y/veyecam2m-dual-cm4-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MIPI CAMERA 2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veyecam2m@3b {
19 | compatible = "veye,veyecam2m";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veyecam2m_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
28 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
29 | rotation = <0>;
30 | port {
31 | veyecam2m_0: endpoint {
32 | remote-endpoint = <&csi1_ep>;
33 | clock-lanes = <0>;
34 | data-lanes = <1 2>;
35 | clock-noncontinuous;
36 | link-frequencies =
37 | /bits/ 64 <297000000>;
38 | };
39 | };
40 | };
41 | };
42 | };
43 |
44 | fragment@1 {
45 | target = <&csi1>;
46 | __overlay__ {
47 | status = "okay";
48 | port {
49 | csi1_ep: endpoint {
50 | remote-endpoint = <&veyecam2m_0>;
51 | clock-lanes = <0>;
52 | data-lanes = <1 2>;
53 | clock-noncontinuous;
54 | };
55 | };
56 | };
57 | };
58 | fragment@2 {
59 | target = <&i2c0>;
60 | __overlay__ {
61 | #address-cells = <1>;
62 | #size-cells = <0>;
63 | status = "okay";
64 |
65 | veyecam2m@3b {
66 | compatible = "veye,veyecam2m";
67 | reg = <0x3b>;
68 | status = "okay";
69 | clocks = <&veyecam2m_clk>;
70 | clock-names = "xclk";
71 |
72 | VANA-supply = <&cam1_reg>; /* 2.8v */
73 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
74 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
75 | rotation = <0>;
76 | port {
77 | veyecam2m_1: endpoint {
78 | remote-endpoint = <&csi0_ep>;
79 | clock-lanes = <0>;
80 | data-lanes = <1 2>;
81 | clock-noncontinuous;
82 | link-frequencies =
83 | /bits/ 64 <297000000>;
84 | };
85 | };
86 | };
87 | };
88 | };
89 |
90 | fragment@3 {
91 | target = <&csi0>;
92 | __overlay__ {
93 | status = "okay";
94 | port {
95 | csi0_ep: endpoint {
96 | remote-endpoint = <&veyecam2m_1>;
97 | clock-lanes = <0>;
98 | data-lanes = <1 2>;
99 | clock-noncontinuous;
100 | };
101 | };
102 | };
103 | };
104 | fragment@4 {
105 | target = <&i2c0if>;
106 | __overlay__ {
107 | status = "okay";
108 | };
109 | };
110 |
111 | fragment@5 {
112 | target = <&i2c0mux>;
113 | __overlay__ {
114 | status = "okay";
115 | };
116 | };
117 |
118 | fragment@6 {
119 | target-path="/";
120 | __overlay__ {
121 |
122 | veyecam2m_vdig: fixedregulator@1 {
123 | compatible = "regulator-fixed";
124 | regulator-name = "veyecam2m_vdig";
125 | regulator-min-microvolt = <1800000>;
126 | regulator-max-microvolt = <1800000>;
127 | };
128 | veyecam2m_vddl: fixedregulator@2 {
129 | compatible = "regulator-fixed";
130 | regulator-name = "veyecam2m_vddl";
131 | regulator-min-microvolt = <1200000>;
132 | regulator-max-microvolt = <1200000>;
133 | };
134 |
135 | veyecam2m_clk: camera-clk {
136 | compatible = "fixed-clock";
137 | #clock-cells = <0>;
138 | clock-frequency = <24000000>;
139 | };
140 | };
141 | };
142 | fragment@7 {
143 | target = <&cam1_reg>;
144 | __overlay__ {
145 | status = "okay";
146 | regulator-name = "veyecam2m_vana";
147 | regulator-min-microvolt = <2800000>;
148 | regulator-max-microvolt = <2800000>;
149 | };
150 | };
151 | };
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.10.y/veyecam2m-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veyecam2m: veyecam2m@3b {
19 | compatible = "veye,veyecam2m";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veyecam2m_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&veyecam2m_vdig>; /* 1.8v */
28 | VDDL-supply = <&veyecam2m_vddl>; /* 1.2v */
29 | rotation = <0>;
30 |
31 | port {
32 | veyecam2m_0: endpoint {
33 | remote-endpoint = <&csi1_ep>;
34 | clock-lanes = <0>;
35 | data-lanes = <1 2>;
36 | clock-noncontinuous;
37 | link-frequencies =
38 | /bits/ 64 <297000000>;
39 | };
40 | };
41 | };
42 | };
43 | };
44 |
45 | fragment@1 {
46 | target = <&csi1>;
47 | __overlay__ {
48 | status = "okay";
49 |
50 | port {
51 | csi1_ep: endpoint {
52 | remote-endpoint = <&veyecam2m_0>;
53 | clock-lanes = <0>;
54 | data-lanes = <1 2>;
55 | clock-noncontinuous;
56 | };
57 | };
58 | };
59 | };
60 |
61 | fragment@2 {
62 | target = <&i2c0if>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 | fragment@3 {
69 | target-path="/";
70 | __overlay__ {
71 |
72 | veyecam2m_vdig: fixedregulator@1 {
73 | compatible = "regulator-fixed";
74 | regulator-name = "veyecam2m_vdig";
75 | regulator-min-microvolt = <1800000>;
76 | regulator-max-microvolt = <1800000>;
77 | };
78 | veyecam2m_vddl: fixedregulator@2 {
79 | compatible = "regulator-fixed";
80 | regulator-name = "veyecam2m_vddl";
81 | regulator-min-microvolt = <1200000>;
82 | regulator-max-microvolt = <1200000>;
83 | };
84 |
85 | veyecam2m_clk: camera-clk {
86 | compatible = "fixed-clock";
87 | #clock-cells = <0>;
88 | clock-frequency = <24000000>;
89 | };
90 | };
91 | };
92 |
93 | fragment@4 {
94 | target = <&i2c0mux>;
95 | __overlay__ {
96 | status = "okay";
97 | };
98 | };
99 |
100 | fragment@5 {
101 | target = <&cam1_reg>;
102 | __overlay__ {
103 | status = "okay";
104 | regulator-name = "veyecam2m_vana";
105 | regulator-min-microvolt = <2800000>;
106 | regulator-max-microvolt = <2800000>;
107 | };
108 | };
109 |
110 | __overrides__ {
111 | rotation = <&veyecam2m>,"rotation:0";
112 | };
113 | };
114 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.15.y/build_dtbo.sh:
--------------------------------------------------------------------------------
1 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam.dtbo veye_mvcam-overlay.dts
2 | dtc -@ -Hepapr -I dts -O dtb -o csimx307.dtbo csimx307-overlay.dts
3 | dtc -@ -Hepapr -I dts -O dtb -o cssc132.dtbo cssc132-overlay.dts
4 | dtc -@ -Hepapr -I dts -O dtb -o veyecam2m.dtbo veyecam2m-overlay.dts
5 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.15.y/csimx307-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c0if>;
13 | __overlay__ {
14 | status = "okay";
15 | };
16 | };
17 |
18 | clk_frag: fragment@1 {
19 | target = <&cam1_clk>;
20 | __overlay__ {
21 | status = "okay";
22 | clock-frequency = <24000000>;
23 | };
24 | };
25 |
26 | fragment@2 {
27 | target = <&i2c0mux>;
28 | __overlay__ {
29 | status = "okay";
30 | };
31 | };
32 | i2c_frag: fragment@100 {
33 | target = <&i2c_csi_dsi>;
34 | __overlay__ {
35 | #address-cells = <1>;
36 | #size-cells = <0>;
37 | status = "okay";
38 |
39 | cam_node: csimx307@3b {
40 | compatible = "veye,csimx307";
41 | reg = <0x3b>;
42 | status = "okay";
43 |
44 |
45 | rotation = <180>;
46 | orientation = <2>;
47 |
48 | port {
49 | cam_endpoint: endpoint {
50 | remote-endpoint = <&csi_ep>;
51 | clock-lanes = <0>;
52 | data-lanes = <1 2>;
53 | clock-noncontinuous;
54 | link-frequencies =
55 | /bits/ 64 <297000000>;
56 | };
57 | };
58 | };
59 | };
60 | };
61 |
62 | csi_frag: fragment@101 {
63 | target = <&csi1>;
64 | csi: __overlay__ {
65 | status = "okay";
66 |
67 | port {
68 | csi_ep: endpoint {
69 | remote-endpoint = <&cam_endpoint>;
70 | clock-lanes = <0>;
71 | data-lanes = <1 2>;
72 | clock-noncontinuous;
73 | };
74 | };
75 | };
76 | };
77 |
78 |
79 | __overrides__ {
80 | rotation = <&cam_node>,"rotation:0";
81 | orientation = <&cam_node>,"orientation:0";
82 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
83 | <&csi_frag>, "target:0=",<&csi0>,
84 | <&clk_frag>, "target:0=",<&cam0_clk>;
85 | };
86 |
87 |
88 | };
89 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.15.y/csimx307.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-5.15.y/csimx307.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.15.y/cssc132-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-SC132 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c0if>;
13 | __overlay__ {
14 | status = "okay";
15 | };
16 | };
17 |
18 | clk_frag: fragment@1 {
19 | target = <&cam1_clk>;
20 | __overlay__ {
21 | status = "okay";
22 | clock-frequency = <24000000>;
23 | };
24 | };
25 |
26 | fragment@2 {
27 | target = <&i2c0mux>;
28 | __overlay__ {
29 | status = "okay";
30 | };
31 | };
32 | i2c_frag: fragment@100 {
33 | target = <&i2c_csi_dsi>;
34 | __overlay__ {
35 | #address-cells = <1>;
36 | #size-cells = <0>;
37 | status = "okay";
38 |
39 | cam_node: cssc132@3b {
40 | compatible = "veye,cssc132";
41 | reg = <0x3b>;
42 | status = "okay";
43 |
44 |
45 | rotation = <180>;
46 | orientation = <2>;
47 |
48 | port {
49 | cam_endpoint: endpoint {
50 | remote-endpoint = <&csi_ep>;
51 | clock-lanes = <0>;
52 | data-lanes = <1 2>;
53 | clock-noncontinuous;
54 | link-frequencies =
55 | /bits/ 64 <297000000>;
56 | };
57 | };
58 | };
59 | };
60 | };
61 |
62 | csi_frag: fragment@101 {
63 | target = <&csi1>;
64 | csi: __overlay__ {
65 | status = "okay";
66 |
67 | port {
68 | csi_ep: endpoint {
69 | remote-endpoint = <&cam_endpoint>;
70 | clock-lanes = <0>;
71 | data-lanes = <1 2>;
72 | clock-noncontinuous;
73 | };
74 | };
75 | };
76 | };
77 |
78 |
79 |
80 | __overrides__ {
81 | rotation = <&cam_node>,"rotation:0";
82 | orientation = <&cam_node>,"orientation:0";
83 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
84 | <&csi_frag>, "target:0=",<&csi0>,
85 | <&clk_frag>, "target:0=",<&cam0_clk>;
86 |
87 | };
88 |
89 |
90 | };
91 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.15.y/cssc132.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-5.15.y/cssc132.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.15.y/veye_mvcam-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 | fragment@0 {
11 | target = <&i2c0if>;
12 | __overlay__ {
13 | status = "okay";
14 | };
15 | };
16 |
17 | clk_frag: fragment@1 {
18 | target = <&cam1_clk>;
19 | __overlay__ {
20 | status = "okay";
21 | clock-frequency = <24000000>;
22 | };
23 | };
24 |
25 | fragment@2 {
26 | target = <&i2c0mux>;
27 | __overlay__ {
28 | status = "okay";
29 | };
30 | };
31 | i2c_frag: fragment@100 {
32 | target = <&i2c_csi_dsi>;
33 | __overlay__ {
34 | #address-cells = <1>;
35 | #size-cells = <0>;
36 | status = "okay";
37 |
38 | cam_node: veyemvcam@3b {
39 | compatible = "veye,mvcam";
40 | reg = <0x3b>;
41 | status = "okay";
42 |
43 | clocks = <&cam1_clk>;
44 | clock-names = "xclk";
45 |
46 | VANA-supply = <&cam1_reg>; /* 2.8v */
47 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
48 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
49 | rotation = <180>;
50 | orientation = <2>;
51 |
52 | port {
53 | cam_endpoint: endpoint {
54 | remote-endpoint = <&csi_ep>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2>;
57 | clock-noncontinuous;
58 | link-frequencies =
59 | /bits/ 64 <750000000>;
60 | };
61 | };
62 | };
63 | };
64 | };
65 |
66 | csi_frag: fragment@101 {
67 | target = <&csi1>;
68 | csi: __overlay__ {
69 | status = "okay";
70 |
71 | port {
72 | csi_ep: endpoint {
73 | remote-endpoint = <&cam_endpoint>;
74 | clock-lanes = <0>;
75 | data-lanes = <1 2>;
76 | clock-noncontinuous;
77 | };
78 | };
79 | };
80 | };
81 |
82 | __overrides__ {
83 | rotation = <&cam_node>,"rotation:0";
84 | orientation = <&cam_node>,"orientation:0";
85 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
86 | <&csi_frag>, "target:0=",<&csi0>,
87 | <&clk_frag>, "target:0=",<&cam0_clk>,
88 | <&cam_node>, "clocks:0=",<&cam0_clk>,
89 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
90 | };
91 | };
92 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.15.y/veye_mvcam.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-5.15.y/veye_mvcam.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.15.y/veyecam2m-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 | fragment@0 {
11 | target = <&i2c0if>;
12 | __overlay__ {
13 | status = "okay";
14 | };
15 | };
16 |
17 | clk_frag: fragment@1 {
18 | target = <&cam1_clk>;
19 | __overlay__ {
20 | status = "okay";
21 | clock-frequency = <24000000>;
22 | };
23 | };
24 |
25 | fragment@2 {
26 | target = <&i2c0mux>;
27 | __overlay__ {
28 | status = "okay";
29 | };
30 | };
31 | i2c_frag: fragment@100 {
32 | target = <&i2c_csi_dsi>;
33 | __overlay__ {
34 | #address-cells = <1>;
35 | #size-cells = <0>;
36 | status = "okay";
37 |
38 | cam_node: veyecam2m@3b {
39 | compatible = "veye,veyecam2m";
40 | reg = <0x3b>;
41 | status = "okay";
42 |
43 | clocks = <&cam1_clk>;
44 | clock-names = "xclk";
45 |
46 | VANA-supply = <&cam1_reg>; /* 2.8v */
47 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
48 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
49 | rotation = <180>;
50 | orientation = <2>;
51 |
52 | port {
53 | cam_endpoint: endpoint {
54 | remote-endpoint = <&csi_ep>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2>;
57 | clock-noncontinuous;
58 | link-frequencies =
59 | /bits/ 64 <297000000>;
60 | };
61 | };
62 | };
63 | };
64 | };
65 |
66 | csi_frag: fragment@101 {
67 | target = <&csi1>;
68 | csi: __overlay__ {
69 | status = "okay";
70 |
71 | port {
72 | csi_ep: endpoint {
73 | remote-endpoint = <&cam_endpoint>;
74 | clock-lanes = <0>;
75 | data-lanes = <1 2>;
76 | clock-noncontinuous;
77 | };
78 | };
79 | };
80 | };
81 |
82 |
83 |
84 | __overrides__ {
85 | rotation = <&cam_node>,"rotation:0";
86 | orientation = <&cam_node>,"orientation:0";
87 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
88 | <&csi_frag>, "target:0=",<&csi0>,
89 | <&clk_frag>, "target:0=",<&cam0_clk>,
90 | <&cam_node>, "clocks:0=",<&cam0_clk>,
91 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
92 | };
93 | };
94 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.15.y/veyecam2m.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-5.15.y/veyecam2m.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.4_all/csimx307-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | csimx307: csimx307@3b {
19 | compatible = "veye,csimx307";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veye327_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&veye327_vana>; /* 2.8v */
27 | VDIG-supply = <&veye327_vdig>; /* 1.8v */
28 | VDDL-supply = <&veye327_vddl>; /* 1.2v */
29 | rotation = <0>;
30 |
31 | port {
32 | veye327_0: endpoint {
33 | remote-endpoint = <&csi1_ep>;
34 | clock-lanes = <0>;
35 | data-lanes = <1 2>;
36 | clock-noncontinuous;
37 | link-frequencies =
38 | /bits/ 64 <297000000>;
39 | };
40 | };
41 | };
42 | };
43 | };
44 |
45 | fragment@1 {
46 | target = <&csi1>;
47 | __overlay__ {
48 | status = "okay";
49 |
50 | port {
51 | csi1_ep: endpoint {
52 | remote-endpoint = <&veye327_0>;
53 | clock-lanes = <0>;
54 | data-lanes = <1 2>;
55 | clock-noncontinuous;
56 | };
57 | };
58 | };
59 | };
60 |
61 | fragment@2 {
62 | target = <&i2c0if>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 | fragment@3 {
69 | target-path="/";
70 | __overlay__ {
71 | veye327_vana: fixedregulator@0 {
72 | compatible = "regulator-fixed";
73 | regulator-name = "veye327_vana";
74 | regulator-min-microvolt = <2800000>;
75 | regulator-max-microvolt = <2800000>;
76 | gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
77 | enable-active-high;
78 | };
79 | veye327_vdig: fixedregulator@1 {
80 | compatible = "regulator-fixed";
81 | regulator-name = "veye327_vdig";
82 | regulator-min-microvolt = <1800000>;
83 | regulator-max-microvolt = <1800000>;
84 | };
85 | veye327_vddl: fixedregulator@2 {
86 | compatible = "regulator-fixed";
87 | regulator-name = "veye327_vddl";
88 | regulator-min-microvolt = <1200000>;
89 | regulator-max-microvolt = <1200000>;
90 | };
91 |
92 | veye327_clk: camera-clk {
93 | compatible = "fixed-clock";
94 | #clock-cells = <0>;
95 | clock-frequency = <24000000>;
96 | };
97 | };
98 | };
99 |
100 | fragment@4 {
101 | target = <&i2c0mux>;
102 | __overlay__ {
103 | status = "okay";
104 | };
105 | };
106 |
107 | fragment@5 {
108 | target-path="/__overrides__";
109 | __overlay__ {
110 | cam0-pwdn-ctrl = <&veye327_vana>,"gpio:0";
111 | cam0-pwdn = <&veye327_vana>,"gpio:4";
112 | };
113 | };
114 |
115 | __overrides__ {
116 | rotation = <&csimx307>,"rotation:0";
117 | };
118 | };
119 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.4_all/cssc132-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-SC132 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cssc132: cssc132@3b {
19 | compatible = "veye,cssc132";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veye327_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&veye327_vana>; /* 2.8v */
27 | VDIG-supply = <&veye327_vdig>; /* 1.8v */
28 | VDDL-supply = <&veye327_vddl>; /* 1.2v */
29 | rotation = <0>;
30 |
31 | port {
32 | veye327_0: endpoint {
33 | remote-endpoint = <&csi1_ep>;
34 | clock-lanes = <0>;
35 | data-lanes = <1 2>;
36 | clock-noncontinuous;
37 | link-frequencies =
38 | /bits/ 64 <297000000>;
39 | };
40 | };
41 | };
42 | };
43 | };
44 |
45 | fragment@1 {
46 | target = <&csi1>;
47 | __overlay__ {
48 | status = "okay";
49 |
50 | port {
51 | csi1_ep: endpoint {
52 | remote-endpoint = <&veye327_0>;
53 | clock-lanes = <0>;
54 | data-lanes = <1 2>;
55 | clock-noncontinuous;
56 | };
57 | };
58 | };
59 | };
60 |
61 | fragment@2 {
62 | target = <&i2c0if>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 | fragment@3 {
69 | target-path="/";
70 | __overlay__ {
71 | veye327_vana: fixedregulator@0 {
72 | compatible = "regulator-fixed";
73 | regulator-name = "veye327_vana";
74 | regulator-min-microvolt = <2800000>;
75 | regulator-max-microvolt = <2800000>;
76 | gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
77 | enable-active-high;
78 | };
79 | veye327_vdig: fixedregulator@1 {
80 | compatible = "regulator-fixed";
81 | regulator-name = "veye327_vdig";
82 | regulator-min-microvolt = <1800000>;
83 | regulator-max-microvolt = <1800000>;
84 | };
85 | veye327_vddl: fixedregulator@2 {
86 | compatible = "regulator-fixed";
87 | regulator-name = "veye327_vddl";
88 | regulator-min-microvolt = <1200000>;
89 | regulator-max-microvolt = <1200000>;
90 | };
91 |
92 | veye327_clk: camera-clk {
93 | compatible = "fixed-clock";
94 | #clock-cells = <0>;
95 | clock-frequency = <24000000>;
96 | };
97 | };
98 | };
99 |
100 | fragment@4 {
101 | target = <&i2c0mux>;
102 | __overlay__ {
103 | status = "okay";
104 | };
105 | };
106 |
107 | fragment@5 {
108 | target-path="/__overrides__";
109 | __overlay__ {
110 | cam0-pwdn-ctrl = <&veye327_vana>,"gpio:0";
111 | cam0-pwdn = <&veye327_vana>,"gpio:4";
112 | };
113 | };
114 |
115 | __overrides__ {
116 | rotation = <&cssc132>,"rotation:0";
117 | };
118 | };
119 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-5.4_all/veye327-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE327 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | #include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veye327: veye327@3b {
19 | compatible = "veye,veye327";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&veye327_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&veye327_vana>; /* 2.8v */
27 | VDIG-supply = <&veye327_vdig>; /* 1.8v */
28 | VDDL-supply = <&veye327_vddl>; /* 1.2v */
29 | rotation = <0>;
30 |
31 | port {
32 | veye327_0: endpoint {
33 | remote-endpoint = <&csi1_ep>;
34 | clock-lanes = <0>;
35 | data-lanes = <1 2>;
36 | clock-noncontinuous;
37 | link-frequencies =
38 | /bits/ 64 <297000000>;
39 | };
40 | };
41 | };
42 | };
43 | };
44 |
45 | fragment@1 {
46 | target = <&csi1>;
47 | __overlay__ {
48 | status = "okay";
49 |
50 | port {
51 | csi1_ep: endpoint {
52 | remote-endpoint = <&veye327_0>;
53 | clock-lanes = <0>;
54 | data-lanes = <1 2>;
55 | clock-noncontinuous;
56 | };
57 | };
58 | };
59 | };
60 |
61 | fragment@2 {
62 | target = <&i2c0if>;
63 | __overlay__ {
64 | status = "okay";
65 | };
66 | };
67 |
68 | fragment@3 {
69 | target-path="/";
70 | __overlay__ {
71 | veye327_vana: fixedregulator@0 {
72 | compatible = "regulator-fixed";
73 | regulator-name = "veye327_vana";
74 | regulator-min-microvolt = <2800000>;
75 | regulator-max-microvolt = <2800000>;
76 | gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
77 | enable-active-high;
78 | };
79 | veye327_vdig: fixedregulator@1 {
80 | compatible = "regulator-fixed";
81 | regulator-name = "veye327_vdig";
82 | regulator-min-microvolt = <1800000>;
83 | regulator-max-microvolt = <1800000>;
84 | };
85 | veye327_vddl: fixedregulator@2 {
86 | compatible = "regulator-fixed";
87 | regulator-name = "veye327_vddl";
88 | regulator-min-microvolt = <1200000>;
89 | regulator-max-microvolt = <1200000>;
90 | };
91 |
92 | veye327_clk: camera-clk {
93 | compatible = "fixed-clock";
94 | #clock-cells = <0>;
95 | clock-frequency = <24000000>;
96 | };
97 | };
98 | };
99 |
100 | fragment@4 {
101 | target = <&i2c0mux>;
102 | __overlay__ {
103 | status = "okay";
104 | };
105 | };
106 |
107 | fragment@5 {
108 | target-path="/__overrides__";
109 | __overlay__ {
110 | cam0-pwdn-ctrl = <&veye327_vana>,"gpio:0";
111 | cam0-pwdn = <&veye327_vana>,"gpio:4";
112 | };
113 | };
114 |
115 | __overrides__ {
116 | rotation = <&veye327>,"rotation:0";
117 | };
118 | };
119 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/build_dtbo.sh:
--------------------------------------------------------------------------------
1 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam.dtbo veye_mvcam-overlay.dts
2 | dtc -@ -Hepapr -I dts -O dtb -o csimx307.dtbo csimx307-overlay.dts
3 | dtc -@ -Hepapr -I dts -O dtb -o cssc132.dtbo cssc132-overlay.dts
4 | dtc -@ -Hepapr -I dts -O dtb -o veyecam2m.dtbo veyecam2m-overlay.dts
5 | dtc -@ -Hepapr -I dts -O dtb -o veye_vbyone-1500.dtbo veye_vbyone-overlay-1500.dts
6 | dtc -@ -Hepapr -I dts -O dtb -o veye_vbyone-1188.dtbo veye_vbyone-overlay-1188.dts
7 | dtc -@ -Hepapr -I dts -O dtb -o ds90ub954.dtbo ds90ub954-overlay.dts
8 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam_4lane.dtbo veye_mvcam_4lane-overlay.dts
9 |
10 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/csimx307-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | i2c_frag: fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cam_node: csimx307@3b {
19 | compatible = "veye,csimx307";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&cam1_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
28 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
29 | rotation = <0>;
30 | orientation = <2>;
31 |
32 | port {
33 | cam_endpoint: endpoint {
34 | remote-endpoint = <&csi_ep>;
35 | clock-lanes = <0>;
36 | data-lanes = <1 2>;
37 | clock-noncontinuous;
38 | link-frequencies =
39 | /bits/ 64 <297000000>;
40 | };
41 | };
42 | };
43 | };
44 | };
45 |
46 | csi_frag: fragment@1 {
47 | target = <&csi1>;
48 | csi: __overlay__ {
49 | status = "okay";
50 | brcm,media-controller;
51 |
52 | port {
53 | csi_ep: endpoint {
54 | remote-endpoint = <&cam_endpoint>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2>;
57 | clock-noncontinuous;
58 | };
59 | };
60 | };
61 | };
62 |
63 | fragment@2 {
64 | target = <&i2c0if>;
65 | __overlay__ {
66 | status = "okay";
67 | };
68 | };
69 |
70 | clk_frag: fragment@3 {
71 | target = <&cam1_clk>;
72 | __overlay__ {
73 | clock-frequency = <24000000>;
74 | status = "okay";
75 | };
76 | };
77 |
78 | fragment@4 {
79 | target = <&i2c0mux>;
80 | __overlay__ {
81 | status = "okay";
82 | };
83 | };
84 |
85 |
86 | __overrides__ {
87 | media-controller = <&csi>,"brcm,media-controller?";
88 | rotation = <&cam_node>,"rotation:0";
89 | orientation = <&cam_node>,"orientation:0";
90 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
91 | <&csi_frag>, "target:0=",<&csi0>,
92 | <&clk_frag>, "target:0=",<&cam0_clk>,
93 | <&cam_node>, "clocks:0=",<&cam0_clk>,
94 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
95 | };
96 | };
97 |
98 | &cam_endpoint {
99 | remote-endpoint = <&csi_ep>;
100 | };
101 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/csimx307.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y-bookworm/csimx307.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/cssc132-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-SC132 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | i2c_frag: fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cam_node: cssc132@3b {
19 | compatible = "veye,cssc132";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 |
24 | rotation = <0>;
25 | orientation = <2>;
26 |
27 | port {
28 | cam_endpoint: endpoint {
29 | remote-endpoint = <&csi_ep>;
30 | clock-lanes = <0>;
31 | data-lanes = <1 2>;
32 | clock-continuous;
33 | link-frequencies =
34 | /bits/ 64 <297000000>;
35 | };
36 | };
37 | };
38 | };
39 | };
40 |
41 | csi_frag: fragment@1 {
42 | target = <&csi1>;
43 | csi: __overlay__ {
44 | status = "okay";
45 | brcm,media-controller;
46 |
47 | port {
48 | csi_ep: endpoint {
49 | remote-endpoint = <&cam_endpoint>;
50 | clock-lanes = <0>;
51 | data-lanes = <1 2>;
52 | clock-continuous;
53 | };
54 | };
55 | };
56 | };
57 |
58 | fragment@2 {
59 | target = <&i2c0if>;
60 | __overlay__ {
61 | status = "okay";
62 | };
63 | };
64 |
65 | clk_frag: fragment@3 {
66 | target = <&cam1_clk>;
67 | __overlay__ {
68 | clock-frequency = <24000000>;
69 | status = "okay";
70 | };
71 | };
72 |
73 | fragment@4 {
74 | target = <&i2c0mux>;
75 | __overlay__ {
76 | status = "okay";
77 | };
78 | };
79 |
80 | __overrides__ {
81 | media-controller = <&csi>,"brcm,media-controller?";
82 | rotation = <&cam_node>,"rotation:0";
83 | orientation = <&cam_node>,"orientation:0";
84 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
85 | <&csi_frag>, "target:0=",<&csi0>,
86 | <&clk_frag>, "target:0=",<&cam0_clk>,
87 | <&cam_node>, "clocks:0=",<&cam0_clk>,
88 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
89 | };
90 | };
91 |
92 | &cam_endpoint {
93 | remote-endpoint = <&csi_ep>;
94 | };
95 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/cssc132.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y-bookworm/cssc132.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/ds90ub954-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's Fpdlink-III
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | ds90ub954@30 {
28 | compatible = "ti,ds90ub954";
29 | priority = <(-1)>;
30 | reg = <0x30>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | csi-lane-speed = <800>;
34 | //continuous-clock;
35 | //pdb-gpio = <&gpio TEGRA_GPIO(S, 7) 0>;
36 | //pass-gpio = <&gpio TEGRA_GPIO(S, 0) 0>;
37 | //lock-gpio = <&gpio TEGRA_GPIO(T, 0) 0>;
38 | i2c_address_s0: num-alias-pairs0 {list-cells = <1>;};
39 | serializers {
40 | status = "okay";
41 | num-channels = <1>;
42 | #address-cells = <1>;
43 | #size-cells = <0>;
44 | serializer@0 {
45 | status = "okay";
46 | rx-channel=<0>;
47 | i2c-address=<0x19>;
48 | csi-lane-count = <2>;
49 | i2c-slave = <&i2c_address_s0 0x3b>;
50 | slave-alias = <&i2c_address_s0 0x3b>;
51 | };
52 | };
53 | };
54 | };
55 | };
56 | __overrides__ {
57 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_csi_dsi0>;
58 | };
59 | };
60 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/ds90ub954.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y-bookworm/ds90ub954.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veye_mvcam-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | i2c_frag: fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cam_node: veyemvcam@3b {
19 | compatible = "veye,mvcam";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&cam1_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
28 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
29 | rotation = <0>;
30 | orientation = <2>;
31 |
32 | port {
33 | cam_endpoint: endpoint {
34 | remote-endpoint = <&csi_ep>;
35 | clock-lanes = <0>;
36 | data-lanes = <1 2>;
37 | clock-noncontinuous;
38 | link-frequencies =
39 | /bits/ 64 <750000000>;
40 | };
41 | };
42 | };
43 | };
44 | };
45 |
46 | csi_frag: fragment@1 {
47 | target = <&csi1>;
48 | csi: __overlay__ {
49 | status = "okay";
50 | brcm,media-controller;
51 |
52 | port {
53 | csi_ep: endpoint {
54 | remote-endpoint = <&cam_endpoint>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2>;
57 | clock-noncontinuous;
58 | };
59 | };
60 | };
61 | };
62 | fragment@2 {
63 | target = <&i2c0if>;
64 | __overlay__ {
65 | status = "okay";
66 | };
67 | };
68 |
69 | clk_frag: fragment@3 {
70 | target = <&cam1_clk>;
71 | __overlay__ {
72 | clock-frequency = <24000000>;
73 | status = "okay";
74 |
75 | };
76 | };
77 |
78 | fragment@4 {
79 | target = <&i2c0mux>;
80 | __overlay__ {
81 | status = "okay";
82 | };
83 | };
84 | __overrides__ {
85 | media-controller = <&csi>,"brcm,media-controller?";
86 | rotation = <&cam_node>,"rotation:0";
87 | orientation = <&cam_node>,"orientation:0";
88 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
89 | <&csi_frag>, "target:0=",<&csi0>,
90 | <&clk_frag>, "target:0=",<&cam0_clk>,
91 | <&cam_node>, "clocks:0=",<&cam0_clk>,
92 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
93 | };
94 | };
95 |
96 | &cam_endpoint {
97 | remote-endpoint = <&csi_ep>;
98 | };
99 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veye_mvcam.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y-bookworm/veye_mvcam.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veye_mvcam_4lane-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | i2c_frag: fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cam_node: veyemvcam@3b {
19 | compatible = "veye,mvcam";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&cam1_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
28 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
29 | rotation = <0>;
30 | orientation = <2>;
31 |
32 | port {
33 | cam_endpoint: endpoint {
34 | remote-endpoint = <&csi_ep>;
35 | clock-lanes = <0>;
36 | data-lanes = <1 2 3 4>;
37 | clock-noncontinuous;
38 | link-frequencies =
39 | /bits/ 64 <750000000>;
40 | };
41 | };
42 | };
43 | };
44 | };
45 |
46 | csi_frag: fragment@1 {
47 | target = <&csi1>;
48 | csi: __overlay__ {
49 | status = "okay";
50 | brcm,media-controller;
51 |
52 | port {
53 | csi_ep: endpoint {
54 | remote-endpoint = <&cam_endpoint>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2 3 4>;
57 | clock-noncontinuous;
58 | };
59 | };
60 | };
61 | };
62 | fragment@2 {
63 | target = <&i2c0if>;
64 | __overlay__ {
65 | status = "okay";
66 | };
67 | };
68 |
69 | clk_frag: fragment@3 {
70 | target = <&cam1_clk>;
71 | __overlay__ {
72 | clock-frequency = <24000000>;
73 | status = "okay";
74 |
75 | };
76 | };
77 |
78 | fragment@4 {
79 | target = <&i2c0mux>;
80 | __overlay__ {
81 | status = "okay";
82 | };
83 | };
84 | __overrides__ {
85 | rotation = <&cam_node>,"rotation:0";
86 | orientation = <&cam_node>,"orientation:0";
87 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
88 | <&csi_frag>, "target:0=",<&csi0>,
89 | <&clk_frag>, "target:0=",<&cam0_clk>,
90 | <&cam_node>, "clocks:0=",<&cam0_clk>,
91 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
92 | };
93 | };
94 |
95 | &cam_endpoint {
96 | remote-endpoint = <&csi_ep>;
97 | };
98 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veye_mvcam_4lane.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y-bookworm/veye_mvcam_4lane.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veye_vbyone-1188.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y-bookworm/veye_vbyone-1188.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veye_vbyone-1500.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y-bookworm/veye_vbyone-1500.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veye_vbyone-overlay-1188.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's V-by-ONE thca242a
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | veye_vbyone: vbyone@65 {
28 | compatible = "veye,vbyone";
29 | priority = <(-1)>;
30 | reg = <0x65>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | coax-num = <1>;
34 | cam-i2c-pt-setting = <0x13>;
35 | camera-i2c-address=<0x3b>;
36 |
37 | trgin-gpio-mode = <0>;
38 | out1-gpio-mode = <0>;
39 | out2-gpio-mode = <0>;
40 |
41 | serializer {
42 | i2c-address=<0x34>;
43 | csi-lane-count = <2>;
44 | csi-lane-speed = <1188>;
45 | };
46 | };
47 | };
48 | };
49 | __overrides__ {
50 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_csi_dsi0>;
51 | };
52 | };
53 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veye_vbyone-overlay-1500.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's V-by-ONE thca242a
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | veye_vbyone: vbyone@65 {
28 | compatible = "veye,vbyone";
29 | priority = <(-1)>;
30 | reg = <0x65>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | coax-num = <1>;
34 | cam-i2c-pt-setting = <0x13>;
35 | camera-i2c-address=<0x3b>;
36 |
37 | trgin-gpio-mode = <1>;
38 | out1-gpio-mode = <1>;
39 | out2-gpio-mode = <1>;
40 |
41 | serializer {
42 | i2c-address=<0x34>;
43 | csi-lane-count = <2>;
44 | csi-lane-speed = <1500>;
45 | };
46 | };
47 | };
48 | };
49 | __overrides__ {
50 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_csi_dsi0>;
51 | };
52 | };
53 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veye_vbyone-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's V-by-ONE thca242a
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | veye_vbyone: vbyone@65 {
28 | compatible = "veye,vbyone";
29 | priority = <(-1)>;
30 | reg = <0x65>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | coax-num = <1>;
34 | cam-i2c-pt-setting = <0x13>;
35 | camera-i2c-address=<0x3b>;
36 |
37 | trgin-gpio-mode = <0>;
38 | out1-gpio-mode = <0>;
39 | out2-gpio-mode = <0>;
40 |
41 | serializer {
42 | i2c-address=<0x34>;
43 | csi-lane-count = <2>;
44 | csi-lane-speed = <1188>;
45 | };
46 | };
47 | };
48 | };
49 | __overrides__ {
50 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_csi_dsi0>;
51 | };
52 | };
53 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veyecam2m-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | i2c_frag: fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cam_node: veyecam2m@3b {
19 |
20 | compatible = "veye,veyecam2m";
21 | reg = <0x3b>;
22 | status = "okay";
23 |
24 | clocks = <&cam1_clk>;
25 | clock-names = "xclk";
26 |
27 | VANA-supply = <&cam1_reg>; /* 2.8v */
28 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
29 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
30 | rotation = <0>;
31 | orientation = <2>;
32 |
33 | port {
34 | cam_endpoint: endpoint {
35 | remote-endpoint = <&csi_ep>;
36 | clock-lanes = <0>;
37 | data-lanes = <1 2>;
38 | clock-noncontinuous;
39 | link-frequencies =
40 | /bits/ 64 <297000000>;
41 | };
42 | };
43 | };
44 | };
45 | };
46 |
47 | csi_frag: fragment@1 {
48 | target = <&csi1>;
49 | csi: __overlay__ {
50 | status = "okay";
51 | brcm,media-controller;
52 |
53 | port {
54 | csi_ep: endpoint {
55 | remote-endpoint = <&cam_endpoint>;
56 | clock-lanes = <0>;
57 | data-lanes = <1 2>;
58 | clock-noncontinuous;
59 | };
60 | };
61 | };
62 | };
63 |
64 | fragment@2 {
65 | target = <&i2c0if>;
66 | __overlay__ {
67 | status = "okay";
68 | };
69 | };
70 |
71 | clk_frag: fragment@3 {
72 | target = <&cam1_clk>;
73 | __overlay__ {
74 | clock-frequency = <24000000>;
75 | status = "okay";
76 | };
77 | };
78 |
79 | fragment@4 {
80 | target = <&i2c0mux>;
81 | __overlay__ {
82 | status = "okay";
83 | };
84 | };
85 |
86 |
87 | __overrides__ {
88 | media-controller = <&csi>,"brcm,media-controller?";
89 | rotation = <&cam_node>,"rotation:0";
90 | orientation = <&cam_node>,"orientation:0";
91 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
92 | <&csi_frag>, "target:0=",<&csi0>,
93 | <&clk_frag>, "target:0=",<&cam0_clk>,
94 | <&cam_node>, "clocks:0=",<&cam0_clk>,
95 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
96 | };
97 | };
98 |
99 | &cam_endpoint {
100 | remote-endpoint = <&csi_ep>;
101 | };
102 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y-bookworm/veyecam2m.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y-bookworm/veyecam2m.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/build_dtbo.sh:
--------------------------------------------------------------------------------
1 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam.dtbo veye_mvcam-overlay.dts
2 | dtc -@ -Hepapr -I dts -O dtb -o csimx307.dtbo csimx307-overlay.dts
3 | dtc -@ -Hepapr -I dts -O dtb -o cssc132.dtbo cssc132-overlay.dts
4 | dtc -@ -Hepapr -I dts -O dtb -o veyecam2m.dtbo veyecam2m-overlay.dts
5 | dtc -@ -Hepapr -I dts -O dtb -o veye_vbyone-1500.dtbo veye_vbyone-overlay-1500.dts
6 | dtc -@ -Hepapr -I dts -O dtb -o veye_vbyone-1188.dtbo veye_vbyone-overlay-1188.dts
7 | dtc -@ -Hepapr -I dts -O dtb -o ds90ub954.dtbo ds90ub954-overlay.dts
8 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam_4lane.dtbo veye_mvcam_4lane-overlay.dts
9 |
10 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/csimx307-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c0if>;
13 | __overlay__ {
14 | status = "okay";
15 | };
16 | };
17 |
18 | clk_frag: fragment@1 {
19 | target = <&cam1_clk>;
20 | __overlay__ {
21 | status = "okay";
22 | clock-frequency = <24000000>;
23 | };
24 | };
25 |
26 | fragment@2 {
27 | target = <&i2c0mux>;
28 | __overlay__ {
29 | status = "okay";
30 | };
31 | };
32 | i2c_frag: fragment@100 {
33 | target = <&i2c_csi_dsi>;
34 | __overlay__ {
35 | #address-cells = <1>;
36 | #size-cells = <0>;
37 | status = "okay";
38 |
39 | cam_node: csimx307@3b {
40 | compatible = "veye,csimx307";
41 | reg = <0x3b>;
42 | status = "okay";
43 |
44 |
45 | rotation = <180>;
46 | orientation = <2>;
47 |
48 | port {
49 | cam_endpoint: endpoint {
50 | remote-endpoint = <&csi_ep>;
51 | clock-lanes = <0>;
52 | data-lanes = <1 2>;
53 | clock-noncontinuous;
54 | link-frequencies =
55 | /bits/ 64 <297000000>;
56 | };
57 | };
58 | };
59 | };
60 | };
61 |
62 | csi_frag: fragment@101 {
63 | target = <&csi1>;
64 | csi: __overlay__ {
65 | status = "okay";
66 |
67 | port {
68 | csi_ep: endpoint {
69 | remote-endpoint = <&cam_endpoint>;
70 | clock-lanes = <0>;
71 | data-lanes = <1 2>;
72 | clock-noncontinuous;
73 | };
74 | };
75 | };
76 | };
77 |
78 |
79 | __overrides__ {
80 | rotation = <&cam_node>,"rotation:0";
81 | orientation = <&cam_node>,"orientation:0";
82 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
83 | <&csi_frag>, "target:0=",<&csi0>,
84 | <&clk_frag>, "target:0=",<&cam0_clk>;
85 | };
86 |
87 |
88 | };
89 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/csimx307.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y/csimx307.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/cssc132-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-SC132 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | fragment@0 {
12 | target = <&i2c0if>;
13 | __overlay__ {
14 | status = "okay";
15 | };
16 | };
17 |
18 | clk_frag: fragment@1 {
19 | target = <&cam1_clk>;
20 | __overlay__ {
21 | status = "okay";
22 | clock-frequency = <24000000>;
23 | };
24 | };
25 |
26 | fragment@2 {
27 | target = <&i2c0mux>;
28 | __overlay__ {
29 | status = "okay";
30 | };
31 | };
32 | i2c_frag: fragment@100 {
33 | target = <&i2c_csi_dsi>;
34 | __overlay__ {
35 | #address-cells = <1>;
36 | #size-cells = <0>;
37 | status = "okay";
38 |
39 | cam_node: cssc132@3b {
40 | compatible = "veye,cssc132";
41 | reg = <0x3b>;
42 | status = "okay";
43 |
44 |
45 | rotation = <180>;
46 | orientation = <2>;
47 |
48 | port {
49 | cam_endpoint: endpoint {
50 | remote-endpoint = <&csi_ep>;
51 | clock-lanes = <0>;
52 | data-lanes = <1 2>;
53 | clock-noncontinuous;
54 | link-frequencies =
55 | /bits/ 64 <297000000>;
56 | };
57 | };
58 | };
59 | };
60 | };
61 |
62 | csi_frag: fragment@101 {
63 | target = <&csi1>;
64 | csi: __overlay__ {
65 | status = "okay";
66 |
67 | port {
68 | csi_ep: endpoint {
69 | remote-endpoint = <&cam_endpoint>;
70 | clock-lanes = <0>;
71 | data-lanes = <1 2>;
72 | clock-noncontinuous;
73 | };
74 | };
75 | };
76 | };
77 |
78 |
79 |
80 | __overrides__ {
81 | rotation = <&cam_node>,"rotation:0";
82 | orientation = <&cam_node>,"orientation:0";
83 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
84 | <&csi_frag>, "target:0=",<&csi0>,
85 | <&clk_frag>, "target:0=",<&cam0_clk>;
86 |
87 | };
88 |
89 |
90 | };
91 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/cssc132.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y/cssc132.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/ds90ub954-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's Fpdlink-III
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | ds90ub954@30 {
28 | compatible = "ti,ds90ub954";
29 | priority = <(-1)>;
30 | reg = <0x30>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | csi-lane-speed = <800>;
34 | //continuous-clock;
35 | //pdb-gpio = <&gpio TEGRA_GPIO(S, 7) 0>;
36 | //pass-gpio = <&gpio TEGRA_GPIO(S, 0) 0>;
37 | //lock-gpio = <&gpio TEGRA_GPIO(T, 0) 0>;
38 | i2c_address_s0: num-alias-pairs0 {list-cells = <1>;};
39 | serializers {
40 | status = "okay";
41 | num-channels = <1>;
42 | #address-cells = <1>;
43 | #size-cells = <0>;
44 | serializer@0 {
45 | status = "okay";
46 | rx-channel=<0>;
47 | i2c-address=<0x19>;
48 | csi-lane-count = <2>;
49 | i2c-slave = <&i2c_address_s0 0x3b>;
50 | slave-alias = <&i2c_address_s0 0x3b>;
51 | };
52 | };
53 | };
54 | };
55 | };
56 | __overrides__ {
57 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_vc>;
58 | };
59 | };
60 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/ds90ub954.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y/ds90ub954.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_mvcam-overlay-xyz.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 | fragment@0 {
11 | target = <&i2c0if>;
12 | __overlay__ {
13 | status = "okay";
14 | };
15 | };
16 |
17 | clk_frag: fragment@1 {
18 | target = <&cam1_clk>;
19 | __overlay__ {
20 | status = "okay";
21 | clock-frequency = <24000000>;
22 | };
23 | };
24 |
25 | fragment@2 {
26 | target = <&i2c0mux>;
27 | __overlay__ {
28 | status = "okay";
29 | };
30 | };
31 | i2c_frag: fragment@100 {
32 | target = <&i2c_vc>;
33 | __overlay__ {
34 | #address-cells = <1>;
35 | #size-cells = <0>;
36 | status = "okay";
37 |
38 | cam_node: veyemvcam@3b {
39 | compatible = "veye,mvcam";
40 | reg = <0x3b>;
41 | status = "okay";
42 |
43 | clocks = <&cam1_clk>;
44 | clock-names = "xclk";
45 |
46 | VANA-supply = <&cam1_reg>; /* 2.8v */
47 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
48 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
49 | rotation = <180>;
50 | orientation = <2>;
51 |
52 | port {
53 | cam_endpoint: endpoint {
54 | remote-endpoint = <&csi_ep>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2>;
57 | clock-noncontinuous;
58 | link-frequencies =
59 | /bits/ 64 <750000000>;
60 | };
61 | };
62 | };
63 | };
64 | };
65 |
66 | csi_frag: fragment@101 {
67 | target = <&csi1>;
68 | csi: __overlay__ {
69 | status = "okay";
70 |
71 | port {
72 | csi_ep: endpoint {
73 | remote-endpoint = <&cam_endpoint>;
74 | clock-lanes = <0>;
75 | data-lanes = <1 2>;
76 | clock-noncontinuous;
77 | };
78 | };
79 | };
80 | };
81 |
82 | __overrides__ {
83 | rotation = <&cam_node>,"rotation:0";
84 | orientation = <&cam_node>,"orientation:0";
85 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi>,
86 | <&csi_frag>, "target:0=",<&csi0>,
87 | <&clk_frag>, "target:0=",<&cam0_clk>,
88 | <&cam_node>, "clocks:0=",<&cam0_clk>,
89 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
90 | };
91 | };
92 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_mvcam-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 | fragment@0 {
11 | target = <&i2c0if>;
12 | __overlay__ {
13 | status = "okay";
14 | };
15 | };
16 |
17 | clk_frag: fragment@1 {
18 | target = <&cam1_clk>;
19 | __overlay__ {
20 | status = "okay";
21 | clock-frequency = <24000000>;
22 | };
23 | };
24 |
25 | fragment@2 {
26 | target = <&i2c0mux>;
27 | __overlay__ {
28 | status = "okay";
29 | };
30 | };
31 | i2c_frag: fragment@100 {
32 | target = <&i2c_csi_dsi>;
33 | __overlay__ {
34 | #address-cells = <1>;
35 | #size-cells = <0>;
36 | status = "okay";
37 |
38 | cam_node: veyemvcam@3b {
39 | compatible = "veye,mvcam";
40 | reg = <0x3b>;
41 | status = "okay";
42 |
43 | clocks = <&cam1_clk>;
44 | clock-names = "xclk";
45 |
46 | VANA-supply = <&cam1_reg>; /* 2.8v */
47 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
48 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
49 | rotation = <180>;
50 | orientation = <2>;
51 |
52 | port {
53 | cam_endpoint: endpoint {
54 | remote-endpoint = <&csi_ep>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2>;
57 | clock-noncontinuous;
58 | link-frequencies =
59 | /bits/ 64 <750000000>;
60 | };
61 | };
62 | };
63 | };
64 | };
65 |
66 | csi_frag: fragment@101 {
67 | target = <&csi1>;
68 | csi: __overlay__ {
69 | status = "okay";
70 |
71 | port {
72 | csi_ep: endpoint {
73 | remote-endpoint = <&cam_endpoint>;
74 | clock-lanes = <0>;
75 | data-lanes = <1 2>;
76 | clock-noncontinuous;
77 | };
78 | };
79 | };
80 | };
81 |
82 | __overrides__ {
83 | rotation = <&cam_node>,"rotation:0";
84 | orientation = <&cam_node>,"orientation:0";
85 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
86 | <&csi_frag>, "target:0=",<&csi0>,
87 | <&clk_frag>, "target:0=",<&cam0_clk>,
88 | <&cam_node>, "clocks:0=",<&cam0_clk>,
89 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
90 | };
91 | };
92 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_mvcam.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y/veye_mvcam.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_mvcam_4lane-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 | fragment@0 {
11 | target = <&i2c0if>;
12 | __overlay__ {
13 | status = "okay";
14 | };
15 | };
16 |
17 | clk_frag: fragment@1 {
18 | target = <&cam1_clk>;
19 | __overlay__ {
20 | status = "okay";
21 | clock-frequency = <24000000>;
22 | };
23 | };
24 |
25 | fragment@2 {
26 | target = <&i2c0mux>;
27 | __overlay__ {
28 | status = "okay";
29 | };
30 | };
31 | i2c_frag: fragment@100 {
32 | target = <&i2c_csi_dsi>;
33 | __overlay__ {
34 | #address-cells = <1>;
35 | #size-cells = <0>;
36 | status = "okay";
37 |
38 | cam_node: veyemvcam@3b {
39 | compatible = "veye,mvcam";
40 | reg = <0x3b>;
41 | status = "okay";
42 |
43 | clocks = <&cam1_clk>;
44 | clock-names = "xclk";
45 |
46 | VANA-supply = <&cam1_reg>; /* 2.8v */
47 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
48 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
49 | rotation = <180>;
50 | orientation = <2>;
51 |
52 | port {
53 | cam_endpoint: endpoint {
54 | remote-endpoint = <&csi_ep>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2 3 4>;
57 | clock-noncontinuous;
58 | link-frequencies =
59 | /bits/ 64 <750000000>;
60 | };
61 | };
62 | };
63 | };
64 | };
65 |
66 | csi_frag: fragment@101 {
67 | target = <&csi1>;
68 | csi: __overlay__ {
69 | status = "okay";
70 |
71 | port {
72 | csi_ep: endpoint {
73 | remote-endpoint = <&cam_endpoint>;
74 | clock-lanes = <0>;
75 | data-lanes = <1 2 3 4>;
76 | clock-noncontinuous;
77 | };
78 | };
79 | };
80 | };
81 |
82 | __overrides__ {
83 | rotation = <&cam_node>,"rotation:0";
84 | orientation = <&cam_node>,"orientation:0";
85 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
86 | <&csi_frag>, "target:0=",<&csi0>,
87 | <&clk_frag>, "target:0=",<&cam0_clk>,
88 | <&cam_node>, "clocks:0=",<&cam0_clk>,
89 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
90 | };
91 | };
92 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_mvcam_4lane.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y/veye_mvcam_4lane.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_vbyone-1188.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y/veye_vbyone-1188.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_vbyone-1500.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y/veye_vbyone-1500.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_vbyone-overlay-1188.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's V-by-ONE thca242a
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | veye_vbyone: vbyone@65 {
28 | compatible = "veye,vbyone";
29 | priority = <(-1)>;
30 | reg = <0x65>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | coax-num = <1>;
34 | cam-i2c-pt-setting = <0x13>;
35 | camera-i2c-address=<0x3b>;
36 |
37 | trgin-gpio-mode = <0>;
38 | out1-gpio-mode = <0>;
39 | out2-gpio-mode = <0>;
40 |
41 | serializer {
42 | i2c-address=<0x34>;
43 | csi-lane-count = <2>;
44 | csi-lane-speed = <1188>;
45 | };
46 | };
47 | };
48 | };
49 | __overrides__ {
50 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_vc>;
51 | };
52 | };
53 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_vbyone-overlay-1500.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's V-by-ONE thca242a
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | veye_vbyone: vbyone@65 {
28 | compatible = "veye,vbyone";
29 | priority = <(-1)>;
30 | reg = <0x65>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | coax-num = <1>;
34 | cam-i2c-pt-setting = <0x13>;
35 | camera-i2c-address=<0x3b>;
36 |
37 | trgin-gpio-mode = <1>;
38 | out1-gpio-mode = <1>;
39 | out2-gpio-mode = <1>;
40 |
41 | serializer {
42 | i2c-address=<0x34>;
43 | csi-lane-count = <2>;
44 | csi-lane-speed = <1500>;
45 | };
46 | };
47 | };
48 | };
49 | __overrides__ {
50 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_vc>;
51 | };
52 | };
53 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_vbyone-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's V-by-ONE thca242a
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | veye_vbyone: vbyone@65 {
28 | compatible = "veye,vbyone";
29 | priority = <(-1)>;
30 | reg = <0x65>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | coax-num = <1>;
34 | cam-i2c-pt-setting = <0x13>;
35 | camera-i2c-address=<0x3b>;
36 |
37 | trgin-gpio-mode = <0>;
38 | out1-gpio-mode = <0>;
39 | out2-gpio-mode = <0>;
40 |
41 | serializer {
42 | i2c-address=<0x34>;
43 | csi-lane-count = <2>;
44 | csi-lane-speed = <1188>;
45 | };
46 | };
47 | };
48 | };
49 | __overrides__ {
50 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_vc>;
51 | };
52 | };
53 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veye_vbyone.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y/veye_vbyone.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veyecam2m-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 | fragment@0 {
11 | target = <&i2c0if>;
12 | __overlay__ {
13 | status = "okay";
14 | };
15 | };
16 |
17 | clk_frag: fragment@1 {
18 | target = <&cam1_clk>;
19 | __overlay__ {
20 | status = "okay";
21 | clock-frequency = <24000000>;
22 | };
23 | };
24 |
25 | fragment@2 {
26 | target = <&i2c0mux>;
27 | __overlay__ {
28 | status = "okay";
29 | };
30 | };
31 | i2c_frag: fragment@100 {
32 | target = <&i2c_csi_dsi>;
33 | __overlay__ {
34 | #address-cells = <1>;
35 | #size-cells = <0>;
36 | status = "okay";
37 |
38 | cam_node: veyecam2m@3b {
39 | compatible = "veye,veyecam2m";
40 | reg = <0x3b>;
41 | status = "okay";
42 |
43 | clocks = <&cam1_clk>;
44 | clock-names = "xclk";
45 |
46 | VANA-supply = <&cam1_reg>; /* 2.8v */
47 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
48 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
49 | rotation = <180>;
50 | orientation = <2>;
51 |
52 | port {
53 | cam_endpoint: endpoint {
54 | remote-endpoint = <&csi_ep>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2>;
57 | clock-noncontinuous;
58 | link-frequencies =
59 | /bits/ 64 <297000000>;
60 | };
61 | };
62 | };
63 | };
64 | };
65 |
66 | csi_frag: fragment@101 {
67 | target = <&csi1>;
68 | csi: __overlay__ {
69 | status = "okay";
70 |
71 | port {
72 | csi_ep: endpoint {
73 | remote-endpoint = <&cam_endpoint>;
74 | clock-lanes = <0>;
75 | data-lanes = <1 2>;
76 | clock-noncontinuous;
77 | };
78 | };
79 | };
80 | };
81 |
82 |
83 |
84 | __overrides__ {
85 | rotation = <&cam_node>,"rotation:0";
86 | orientation = <&cam_node>,"orientation:0";
87 | cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
88 | <&csi_frag>, "target:0=",<&csi0>,
89 | <&clk_frag>, "target:0=",<&cam0_clk>,
90 | <&cam_node>, "clocks:0=",<&cam0_clk>,
91 | <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
92 | };
93 | };
94 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.1.y/veyecam2m.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.1.y/veyecam2m.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/build_dtbo.sh:
--------------------------------------------------------------------------------
1 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam.dtbo veye_mvcam-overlay.dts
2 | dtc -@ -Hepapr -I dts -O dtb -o csimx307.dtbo csimx307-overlay.dts
3 | dtc -@ -Hepapr -I dts -O dtb -o cssc132.dtbo cssc132-overlay.dts
4 | dtc -@ -Hepapr -I dts -O dtb -o veyecam2m.dtbo veyecam2m-overlay.dts
5 | dtc -@ -Hepapr -I dts -O dtb -o veye_vbyone-1500.dtbo veye_vbyone-overlay-1500.dts
6 | dtc -@ -Hepapr -I dts -O dtb -o veye_vbyone-1188.dtbo veye_vbyone-overlay-1188.dts
7 | dtc -@ -Hepapr -I dts -O dtb -o ds90ub954.dtbo ds90ub954-overlay.dts
8 | dtc -@ -Hepapr -I dts -O dtb -o veye_mvcam_4lane.dtbo veye_mvcam_4lane-overlay.dts
9 |
10 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/csimx307-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-IMX307 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | i2c_frag: fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | csimx307_node: csimx307@3b {
19 | compatible = "veye,csimx307";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&cam1_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
28 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
29 | rotation = <0>;
30 | orientation = <2>;
31 |
32 | port {
33 | csimx307_0: endpoint {
34 | remote-endpoint = <&csi_ep>;
35 | clock-lanes = <0>;
36 | data-lanes = <1 2>;
37 | clock-noncontinuous;
38 | link-frequencies =
39 | /bits/ 64 <297000000>;
40 | };
41 | };
42 | };
43 | };
44 | };
45 |
46 | csi_frag: fragment@1 {
47 | target = <&csi1>;
48 | csi: __overlay__ {
49 | status = "okay";
50 | brcm,media-controller;
51 |
52 | port {
53 | csi_ep: endpoint {
54 | remote-endpoint = <&csimx307_0>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2>;
57 | clock-noncontinuous;
58 | };
59 | };
60 | };
61 | };
62 |
63 | fragment@2 {
64 | target = <&i2c0if>;
65 | __overlay__ {
66 | status = "okay";
67 | };
68 | };
69 |
70 | clk_frag: fragment@3 {
71 | target = <&cam1_clk>;
72 | __overlay__ {
73 | clock-frequency = <24000000>;
74 | status = "okay";
75 | };
76 | };
77 |
78 | fragment@4 {
79 | target = <&i2c0mux>;
80 | __overlay__ {
81 | status = "okay";
82 | };
83 | };
84 |
85 |
86 | __overrides__ {
87 | media-controller = <&csi>,"brcm,media-controller?";
88 | rotation = <&csimx307_node>,"rotation:0";
89 | orientation = <&csimx307_node>,"orientation:0";
90 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
91 | <&csi_frag>, "target:0=",<&csi0>,
92 | <&clk_frag>, "target:0=",<&cam0_clk>,
93 | <&csimx307_node>, "clocks:0=",<&cam0_clk>,
94 | <&csimx307_node>, "VANA-supply:0=",<&cam0_reg>;
95 | };
96 | };
97 |
98 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/csimx307.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.6.y/csimx307.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/cssc132-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for CS-MIPI-SC132 camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | i2c_frag: fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | cssc132_node: cssc132@3b {
19 | compatible = "veye,cssc132";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 |
24 | rotation = <0>;
25 | orientation = <2>;
26 |
27 | port {
28 | cssc132_0: endpoint {
29 | remote-endpoint = <&csi_ep>;
30 | clock-lanes = <0>;
31 | data-lanes = <1 2>;
32 | clock-continuous;
33 | link-frequencies =
34 | /bits/ 64 <297000000>;
35 | };
36 | };
37 | };
38 | };
39 | };
40 |
41 | csi_frag: fragment@1 {
42 | target = <&csi1>;
43 | csi: __overlay__ {
44 | status = "okay";
45 | brcm,media-controller;
46 |
47 | port {
48 | csi_ep: endpoint {
49 | remote-endpoint = <&cssc132_0>;
50 | clock-lanes = <0>;
51 | data-lanes = <1 2>;
52 | clock-continuous;
53 | };
54 | };
55 | };
56 | };
57 |
58 | fragment@2 {
59 | target = <&i2c0if>;
60 | __overlay__ {
61 | status = "okay";
62 | };
63 | };
64 |
65 | clk_frag: fragment@3 {
66 | target = <&cam1_clk>;
67 | __overlay__ {
68 | clock-frequency = <24000000>;
69 | status = "okay";
70 | };
71 | };
72 |
73 | fragment@4 {
74 | target = <&i2c0mux>;
75 | __overlay__ {
76 | status = "okay";
77 | };
78 | };
79 |
80 | __overrides__ {
81 | media-controller = <&csi>,"brcm,media-controller?";
82 | rotation = <&cssc132_node>,"rotation:0";
83 | orientation = <&cssc132_node>,"orientation:0";
84 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
85 | <&csi_frag>, "target:0=",<&csi0>,
86 | <&clk_frag>, "target:0=",<&cam0_clk>,
87 | <&cssc132_node>, "clocks:0=",<&cam0_clk>,
88 | <&cssc132_node>, "VANA-supply:0=",<&cam0_reg>;
89 | };
90 | };
91 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/cssc132.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.6.y/cssc132.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/ds90ub954-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's Fpdlink-III
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | ds90ub954@30 {
28 | compatible = "ti,ds90ub954";
29 | priority = <(-1)>;
30 | reg = <0x30>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | csi-lane-speed = <800>;
34 | //continuous-clock;
35 | //pdb-gpio = <&gpio TEGRA_GPIO(S, 7) 0>;
36 | //pass-gpio = <&gpio TEGRA_GPIO(S, 0) 0>;
37 | //lock-gpio = <&gpio TEGRA_GPIO(T, 0) 0>;
38 | i2c_address_s0: num-alias-pairs0 {list-cells = <1>;};
39 | serializers {
40 | status = "okay";
41 | num-channels = <1>;
42 | #address-cells = <1>;
43 | #size-cells = <0>;
44 | serializer@0 {
45 | status = "okay";
46 | rx-channel=<0>;
47 | i2c-address=<0x19>;
48 | csi-lane-count = <2>;
49 | i2c-slave = <&i2c_address_s0 0x3b>;
50 | slave-alias = <&i2c_address_s0 0x3b>;
51 | };
52 | };
53 | };
54 | };
55 | };
56 | __overrides__ {
57 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_csi_dsi0>;
58 | };
59 | };
60 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/ds90ub954.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.6.y/ds90ub954.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veye_mvcam-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 |
12 | i2c_frag: fragment@0 {
13 | target = <&i2c_csi_dsi>;
14 | __overlay__ {
15 | #address-cells = <1>;
16 | #size-cells = <0>;
17 | status = "okay";
18 |
19 | veyemvcam_node: veyemvcam@3b {
20 | compatible = "veye,mvcam";
21 | reg = <0x3b>;
22 | status = "okay";
23 |
24 | clocks = <&cam1_clk>;
25 | clock-names = "xclk";
26 |
27 | VANA-supply = <&cam1_reg>; /* 2.8v */
28 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
29 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
30 | rotation = <0>;
31 | orientation = <2>;
32 |
33 | port {
34 | veye_mvcam_0: endpoint {
35 | remote-endpoint = <&csi_ep>;
36 | clock-lanes = <0>;
37 | data-lanes = <1 2>;
38 | clock-noncontinuous;
39 | link-frequencies =
40 | /bits/ 64 <750000000>;
41 | };
42 | };
43 | };
44 | };
45 | };
46 |
47 | csi_frag: fragment@1 {
48 | target = <&csi1>;
49 | csi: __overlay__ {
50 | status = "okay";
51 | brcm,media-controller;
52 |
53 | port {
54 | csi_ep: endpoint {
55 | remote-endpoint = <&veye_mvcam_0>;
56 | clock-lanes = <0>;
57 | data-lanes = <1 2>;
58 | clock-noncontinuous;
59 | };
60 | };
61 | };
62 | };
63 | fragment@2 {
64 | target = <&i2c0if>;
65 | __overlay__ {
66 | status = "okay";
67 | };
68 | };
69 |
70 | clk_frag: fragment@3 {
71 | target = <&cam1_clk>;
72 | __overlay__ {
73 | clock-frequency = <24000000>;
74 | status = "okay";
75 |
76 | };
77 | };
78 |
79 | fragment@4 {
80 | target = <&i2c0mux>;
81 | __overlay__ {
82 | status = "okay";
83 | };
84 | };
85 |
86 | __overrides__ {
87 |
88 | media-controller = <&csi>,"brcm,media-controller?";
89 | rotation = <&veyemvcam_node>,"rotation:0";
90 | orientation = <&veyemvcam_node>,"orientation:0";
91 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
92 | <&csi_frag>, "target:0=",<&csi0>,
93 | <&clk_frag>, "target:0=",<&cam0_clk>,
94 |
95 | <&veyemvcam_node>, "clocks:0=",<&cam0_clk>,
96 | <&veyemvcam_node>, "VANA-supply:0=",<&cam0_reg>;
97 |
98 | };
99 | };
100 |
101 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veye_mvcam.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.6.y/veye_mvcam.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veye_mvcam_4lane-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE MV camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | i2c_frag: fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veyemvcam_node: veyemvcam@3b {
19 | compatible = "veye,mvcam";
20 | reg = <0x3b>;
21 | status = "okay";
22 |
23 | clocks = <&cam1_clk>;
24 | clock-names = "xclk";
25 |
26 | VANA-supply = <&cam1_reg>; /* 2.8v */
27 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
28 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
29 | rotation = <0>;
30 | orientation = <2>;
31 |
32 | port {
33 | veye_mvcam_0: endpoint {
34 | remote-endpoint = <&csi_ep>;
35 | clock-lanes = <0>;
36 | data-lanes = <1 2 3 4>;
37 | clock-noncontinuous;
38 | link-frequencies =
39 | /bits/ 64 <750000000>;
40 | };
41 | };
42 | };
43 | };
44 | };
45 |
46 | csi_frag: fragment@1 {
47 | target = <&csi1>;
48 | csi: __overlay__ {
49 | status = "okay";
50 | brcm,media-controller;
51 |
52 | port {
53 | csi_ep: endpoint {
54 | remote-endpoint = <&veye_mvcam_0>;
55 | clock-lanes = <0>;
56 | data-lanes = <1 2 3 4>;
57 | clock-noncontinuous;
58 | };
59 | };
60 | };
61 | };
62 | fragment@2 {
63 | target = <&i2c0if>;
64 | __overlay__ {
65 | status = "okay";
66 | };
67 | };
68 |
69 | clk_frag: fragment@3 {
70 | target = <&cam1_clk>;
71 | __overlay__ {
72 | clock-frequency = <24000000>;
73 | status = "okay";
74 |
75 | };
76 | };
77 |
78 | fragment@4 {
79 | target = <&i2c0mux>;
80 | __overlay__ {
81 | status = "okay";
82 | };
83 | };
84 | __overrides__ {
85 |
86 | media-controller = <&csi>,"brcm,media-controller?";
87 | rotation = <&veyemvcam_node>,"rotation:0";
88 | orientation = <&veyemvcam_node>,"orientation:0";
89 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
90 | <&csi_frag>, "target:0=",<&csi0>,
91 | <&clk_frag>, "target:0=",<&cam0_clk>,
92 |
93 | <&veyemvcam_node>, "clocks:0=",<&cam0_clk>,
94 | <&veyemvcam_node>, "VANA-supply:0=",<&cam0_reg>;
95 |
96 | };
97 | };
98 |
99 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veye_mvcam_4lane.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.6.y/veye_mvcam_4lane.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veye_vbyone-1188.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.6.y/veye_vbyone-1188.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veye_vbyone-1500.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.6.y/veye_vbyone-1500.dtbo
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veye_vbyone-overlay-1188.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's V-by-ONE thca242a
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | veye_vbyone: vbyone@65 {
28 | compatible = "veye,vbyone";
29 | priority = <(-1)>;
30 | reg = <0x65>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | coax-num = <1>;
34 | cam-i2c-pt-setting = <0x13>;
35 | camera-i2c-address=<0x3b>;
36 |
37 | trgin-gpio-mode = <0>;
38 | out1-gpio-mode = <0>;
39 | out2-gpio-mode = <0>;
40 |
41 | serializer {
42 | i2c-address=<0x34>;
43 | csi-lane-count = <2>;
44 | csi-lane-speed = <1188>;
45 | };
46 | };
47 | };
48 | };
49 | __overrides__ {
50 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_csi_dsi0>;
51 | };
52 | };
53 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veye_vbyone-overlay-1500.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's V-by-ONE thca242a
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | veye_vbyone: vbyone@65 {
28 | compatible = "veye,vbyone";
29 | priority = <(-1)>;
30 | reg = <0x65>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | coax-num = <1>;
34 | cam-i2c-pt-setting = <0x13>;
35 | camera-i2c-address=<0x3b>;
36 |
37 | trgin-gpio-mode = <1>;
38 | out1-gpio-mode = <1>;
39 | out2-gpio-mode = <1>;
40 |
41 | serializer {
42 | i2c-address=<0x34>;
43 | csi-lane-count = <2>;
44 | csi-lane-speed = <1500>;
45 | };
46 | };
47 | };
48 | };
49 | __overrides__ {
50 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_csi_dsi0>;
51 | };
52 | };
53 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veye_vbyone-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYE IMAGING's V-by-ONE thca242a
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | /{
7 | compatible = "brcm,bcm2835";
8 | fragment@0 {
9 | target = <&i2c0if>;
10 | __overlay__ {
11 | status = "okay";
12 | };
13 | };
14 | fragment@1 {
15 | target = <&i2c0mux>;
16 | __overlay__ {
17 | status = "okay";
18 | };
19 | };
20 | i2c_fragment:fragment@2 {
21 | target = <&i2c_csi_dsi>;
22 | __overlay__ {
23 | #address-cells = <1>;
24 | #size-cells = <0>;
25 | status = "okay";
26 |
27 | veye_vbyone: vbyone@65 {
28 | compatible = "veye,vbyone";
29 | priority = <(-1)>;
30 | reg = <0x65>;
31 | status = "okay";
32 | csi-lane-count = <2>;
33 | coax-num = <1>;
34 | cam-i2c-pt-setting = <0x13>;
35 | camera-i2c-address=<0x3b>;
36 |
37 | trgin-gpio-mode = <0>;
38 | out1-gpio-mode = <0>;
39 | out2-gpio-mode = <0>;
40 |
41 | serializer {
42 | i2c-address=<0x34>;
43 | csi-lane-count = <2>;
44 | csi-lane-speed = <1188>;
45 | };
46 | };
47 | };
48 | };
49 | __overrides__ {
50 | cam0 = <&i2c_fragment>, "target:0=",<&i2c_csi_dsi0>;
51 | };
52 | };
53 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veyecam2m-overlay.dts:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: GPL-2.0-only
2 | // Definitions for VEYECAM2M camera module on VC I2C bus
3 | /dts-v1/;
4 | /plugin/;
5 |
6 | //#include
7 |
8 | /{
9 | compatible = "brcm,bcm2835";
10 |
11 | i2c_frag: fragment@0 {
12 | target = <&i2c_csi_dsi>;
13 | __overlay__ {
14 | #address-cells = <1>;
15 | #size-cells = <0>;
16 | status = "okay";
17 |
18 | veyecam2m_node: veyecam2m@3b {
19 |
20 | compatible = "veye,veyecam2m";
21 | reg = <0x3b>;
22 | status = "okay";
23 |
24 | clocks = <&cam1_clk>;
25 | clock-names = "xclk";
26 |
27 | VANA-supply = <&cam1_reg>; /* 2.8v */
28 | VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
29 | VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
30 | rotation = <0>;
31 | orientation = <2>;
32 |
33 | port {
34 | veyecam2m_0: endpoint {
35 | remote-endpoint = <&csi_ep>;
36 | clock-lanes = <0>;
37 | data-lanes = <1 2>;
38 | clock-noncontinuous;
39 | link-frequencies =
40 | /bits/ 64 <297000000>;
41 | };
42 | };
43 | };
44 | };
45 | };
46 |
47 | csi_frag: fragment@1 {
48 | target = <&csi1>;
49 | csi: __overlay__ {
50 | status = "okay";
51 | brcm,media-controller;
52 |
53 | port {
54 | csi_ep: endpoint {
55 | remote-endpoint = <&veyecam2m_0>;
56 | clock-lanes = <0>;
57 | data-lanes = <1 2>;
58 | clock-noncontinuous;
59 | };
60 | };
61 | };
62 | };
63 |
64 | fragment@2 {
65 | target = <&i2c0if>;
66 | __overlay__ {
67 | status = "okay";
68 | };
69 | };
70 |
71 | clk_frag: fragment@3 {
72 | target = <&cam1_clk>;
73 | __overlay__ {
74 | clock-frequency = <24000000>;
75 | status = "okay";
76 | };
77 | };
78 |
79 | fragment@4 {
80 | target = <&i2c0mux>;
81 | __overlay__ {
82 | status = "okay";
83 | };
84 | };
85 |
86 |
87 | __overrides__ {
88 | media-controller = <&csi>,"brcm,media-controller?";
89 | rotation = <&veyecam2m_node>,"rotation:0";
90 | orientation = <&veyecam2m_node>,"orientation:0";
91 | cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
92 | <&csi_frag>, "target:0=",<&csi0>,
93 | <&clk_frag>, "target:0=",<&cam0_clk>,
94 | <&veyecam2m_node>, "clocks:0=",<&cam0_clk>,
95 | <&veyecam2m_node>, "VANA-supply:0=",<&cam0_reg>;
96 | };
97 | };
98 |
99 |
--------------------------------------------------------------------------------
/driver_source/dts/rpi-6.6.y/veyecam2m.dtbo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/driver_source/dts/rpi-6.6.y/veyecam2m.dtbo
--------------------------------------------------------------------------------
/i2c_cmd/i2c_read:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/i2c_cmd/i2c_read
--------------------------------------------------------------------------------
/i2c_cmd/i2c_write:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/i2c_cmd/i2c_write
--------------------------------------------------------------------------------
/i2c_cmd/source/i2c_comm.h:
--------------------------------------------------------------------------------
1 |
2 | #ifndef _I2C_COMM_H
3 | #define _I2C_COMM_H
4 |
5 | #define LOCALFUNC
6 | #define HI_RET int
7 | #define IN
8 | #define OUT
9 | #define U32 unsigned int
10 | #define U8 unsigned char
11 | #define CHAR char
12 | #define UCHAR unsigned char
13 | #define uint32_t unsigned int
14 | #define uint16_t unsigned short
15 | #define uint8_t unsigned char
16 |
17 | #define HI_SUCCESS 0
18 | #define HI_FAILURE (-1)
19 |
20 |
21 | struct sensor_regs {
22 | uint16_t reg;
23 | uint16_t data;
24 | };
25 |
26 | HI_RET StrToNumber(IN CHAR *str , OUT U32 * pulValue);
27 |
28 | #endif
29 |
30 |
--------------------------------------------------------------------------------
/i2c_cmd/source/i2c_read.c:
--------------------------------------------------------------------------------
1 |
2 |
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | #include
11 | #include
12 | #include
13 | #include
14 |
15 | #include "i2c_comm.h"
16 |
17 | #define I2C_DEVICE_NAME_LEN 13 // "/dev/i2c-XXX"+NULL
18 | static char i2c_device_name[I2C_DEVICE_NAME_LEN];
19 |
20 | static int i2c_rd(int fd, uint8_t i2c_addr, uint16_t reg, uint8_t *values, uint32_t n)
21 | {
22 | int err;
23 | int i = 0;
24 | uint8_t buf[2] = { reg >> 8, reg & 0xff };
25 | struct i2c_rdwr_ioctl_data msgset;
26 | struct i2c_msg msgs[2] = {
27 | {
28 | .addr = i2c_addr,
29 | .flags = 0,
30 | .len = 2,
31 | .buf = buf,
32 | },
33 | {
34 | .addr = i2c_addr,
35 | .flags = I2C_M_RD,
36 | .len = n,
37 | .buf = values,
38 | },
39 | };
40 |
41 | msgset.msgs = msgs;
42 | msgset.nmsgs = 2;
43 |
44 | err = ioctl(fd, I2C_RDWR, &msgset);
45 | printf("Read i2c addr %02X\n", i2c_addr);
46 | if (err != msgset.nmsgs)
47 | return -1;
48 | for(i = 0; i < n;++i)
49 | {
50 | printf("addr %04x : value %02x \n",reg+i,values[i]);
51 | }
52 |
53 | return 0;
54 | }
55 |
56 |
57 | int main(int argc, char *argv[])
58 | {
59 | U32 I2C_port;
60 | U32 device_addr;
61 | U32 reg_addr;
62 | U32 new_data;
63 | U8 value[512];
64 | U32 num = 1;
65 | int result;
66 | if (argc < 4)
67 | {
68 | printf("usage: %s . sample: %s 0x0 0xA0 0x1000 0x2\n", argv[0], argv[0]);
69 | return -1;
70 | }
71 |
72 | if(StrToNumber(argv[1], &I2C_port) != HI_SUCCESS ) {
73 | printf("Please input i2c port like 0x100 or 256.\r\n");
74 | return -1;
75 | }
76 |
77 | if(StrToNumber(argv[2], &device_addr) != HI_SUCCESS ) {
78 | printf("Please input dev addr like 0x100 or 256.\r\n");
79 | return -1;
80 | }
81 |
82 | if(StrToNumber(argv[3], ®_addr) != HI_SUCCESS ) {
83 | printf("Please input reg addr like 0x100 0r 256.\r\n");
84 | return -1;
85 | }
86 | if(argc >=5)
87 | {
88 | if(StrToNumber(argv[4], &num) != HI_SUCCESS ) {
89 | printf("Please input reg addr like 0x100 0r 256.\r\n");
90 | return -1;
91 | }
92 | }
93 | snprintf(i2c_device_name, sizeof(i2c_device_name), "/dev/i2c-%d", I2C_port);
94 | printf("Using i2C device %s\n", i2c_device_name);
95 |
96 | printf("====I2C read:<%#x> <%#x> <%#x>====\n", device_addr, reg_addr, num);
97 |
98 | int fd;
99 | fd = open(i2c_device_name, O_RDWR);
100 | if (!fd)
101 | {
102 | printf("Couldn't open I2C device\n");
103 | return -1;
104 | }
105 | if (ioctl(fd, I2C_SLAVE_FORCE, device_addr) < 0)
106 | {
107 | printf("Failed to set I2C address\n");
108 | return -1;
109 | }
110 |
111 |
112 | i2c_rd(fd, device_addr,reg_addr, &value, num);
113 |
114 | close(fd);
115 |
116 |
117 | return value[0];
118 |
119 | }
120 |
121 |
--------------------------------------------------------------------------------
/i2c_cmd/source/i2c_write.c:
--------------------------------------------------------------------------------
1 |
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | #include
10 | #include
11 | #include
12 | #include
13 |
14 | #include "i2c_comm.h"
15 |
16 | #define I2C_DEVICE_NAME_LEN 13 // "/dev/i2c-XXX"+NULL
17 | static char i2c_device_name[I2C_DEVICE_NAME_LEN];
18 |
19 | void send_regs(int fd, const struct sensor_regs *regs, int num_regs)
20 | {
21 | int i;
22 | for (i=0; i>8, regs[i].reg, regs[i].data};
38 | int len = 3;
39 |
40 | if (write(fd, msg, len) != len)
41 | {
42 | printf("Failed to write register index %d", i);
43 | }
44 |
45 | }
46 | }
47 | }
48 |
49 | int main(int argc, char *argv[])
50 | {
51 | U32 I2C_port;
52 | U32 device_addr;
53 | U32 reg_addr;
54 | U32 new_data;
55 | U8 value;
56 | struct sensor_regs regs;
57 |
58 | int result;
59 | if (argc < 5)
60 | {
61 | printf("usage: %s . sample: %s 0x0 0xA0 0x10 0x40\n", argv[0], argv[0]);
62 | return -1;
63 | }
64 |
65 | if(StrToNumber(argv[1], &I2C_port) != HI_SUCCESS ) {
66 | printf("Please input i2c port like 0x100 or 256.\r\n");
67 | return -1;
68 | }
69 |
70 | if(StrToNumber(argv[2], &device_addr) != HI_SUCCESS ) {
71 | printf("Please input dev addr like 0x100 or 256.\r\n");
72 | return -1;
73 | }
74 |
75 | if(StrToNumber(argv[3], ®_addr) != HI_SUCCESS ) {
76 | printf("Please input reg addr like 0x100 0r 256.\r\n");
77 | return -1;
78 | }
79 |
80 | if(StrToNumber(argv[4], &new_data) != HI_SUCCESS ) {
81 | printf("Please input len like 0x100\n");
82 | return -1;
83 | }
84 | value = (U8)new_data;
85 | printf("====I2C write:<%#x> <%#x> <%#x>====\n", device_addr, reg_addr, new_data);
86 |
87 | snprintf(i2c_device_name, sizeof(i2c_device_name), "/dev/i2c-%d", I2C_port);
88 | //printf("Using i2C device %s\n", i2c_device_name);
89 |
90 | int fd;
91 | fd = open(i2c_device_name, O_RDWR);
92 | if (!fd)
93 | {
94 | printf("Couldn't open I2C device\n");
95 | return -1;
96 | }
97 | if (ioctl(fd, I2C_SLAVE_FORCE, device_addr) < 0)
98 | {
99 | printf("Failed to set I2C address\n");
100 | return -1;
101 | }
102 | regs.reg = reg_addr;
103 | regs.data = new_data;
104 |
105 | send_regs(fd, ®s, 1);
106 | close(fd);
107 |
108 | return 0;
109 |
110 | }
111 |
112 |
--------------------------------------------------------------------------------
/i2c_cmd/source/make.sh:
--------------------------------------------------------------------------------
1 |
2 | gcc -o ../i2c_read i2c_read.c strfunc.c
3 | gcc -o ../i2c_write i2c_write.c strfunc.c
4 |
5 |
--------------------------------------------------------------------------------
/i2c_cmd/source/strfunc.c:
--------------------------------------------------------------------------------
1 | /******************************************************************************
2 |
3 | Copyright (C), 2001-2011, Hisilicon Tech. Co., Ltd.
4 |
5 | ******************************************************************************
6 | File Name : strfunc.c
7 | Version : Initial Draft
8 | Author : Hisilicon multimedia software group
9 | Created : 2005/7/27
10 | Last Modified :
11 | Description : String functions
12 | Function List :
13 | History :
14 | 1.Date : 2005/7/27
15 | Author : T41030
16 | Modification: Created file
17 |
18 | ******************************************************************************/
19 |
20 | #include
21 | #include
22 | //#include "hi.h"
23 | //#include "strfunc.h"
24 | #include "i2c_comm.h"
25 |
26 |
27 | LOCALFUNC HI_RET atoul(IN CHAR *str,OUT U32 * pulValue);
28 | LOCALFUNC HI_RET atoulx(IN CHAR *str,OUT U32 * pulValue);
29 |
30 | /*****************************************************************************
31 | Prototype : StrToNumber
32 | Description : convert string to unsigned integer
33 | Input args : IN CHAR *str
34 |
35 | Output args : U32* pulValue, result value
36 | Return value : HI_RET HI_SUCCESS
37 | HI_FAILURE
38 | Calls : isdigit
39 |
40 | Called By :
41 |
42 | History :
43 | 1.Date : 2005.07.10
44 | Author : t41030
45 | Modification : Created function
46 | *****************************************************************************/
47 |
48 | HI_RET StrToNumber(IN CHAR *str , OUT U32 * pulValue)
49 | {
50 | /* check hex string */
51 | if ( *str == '0' && (*(str+1) == 'x' || *(str+1) == 'X') )
52 | {
53 | if (*(str+2) == '\0')
54 | {
55 | return HI_FAILURE;
56 | }
57 | else
58 | {
59 | return atoulx(str+2,pulValue);
60 | }
61 | }
62 | else
63 | {
64 | return atoul(str,pulValue);
65 | }
66 | }
67 |
68 | /*****************************************************************************
69 | Prototype : atoul
70 | Description : convert decimal string to unsigned integer
71 | Input args : IN CHAR *str, can't support minus symbol
72 | Output args : U32* pulValue, result value
73 | Return value : HI_RET HI_SUCCESS
74 | HI_FAILURE
75 | Calls : isdigit
76 |
77 | Called By :
78 |
79 | History :
80 | 1.Date : 2005.07.10
81 | Author : t41030
82 | Modification : Created function
83 | *****************************************************************************/
84 | HI_RET atoul(IN CHAR *str,OUT U32 * pulValue)
85 | {
86 | U32 ulResult=0;
87 |
88 | while (*str)
89 | {
90 | if (isdigit((int)*str))
91 | {
92 | /* max value: 0xFFFFFFFF(4294967295),
93 | X * 10 + (*str)-48 <= 4294967295
94 | so, X = 429496729 */
95 | if ((ulResult<429496729) || ((ulResult==429496729) && (*str<'6')))
96 | {
97 | ulResult = ulResult*10 + (*str)-48;
98 | }
99 | else
100 | {
101 | *pulValue = ulResult;
102 | return HI_FAILURE;
103 | }
104 | }
105 | else
106 | {
107 | *pulValue=ulResult;
108 | return HI_FAILURE;
109 | }
110 | str++;
111 | }
112 | *pulValue=ulResult;
113 | return HI_SUCCESS;
114 | }
115 |
116 |
117 |
118 | /*****************************************************************************
119 | Prototype : atoulx
120 | Description : Convert HEX string to unsigned integer. Hex string without "0x", ex ABCDE
121 | Input args : IN CHAR *str
122 | Output args : U32* pulValue, result value
123 | Return value : HI_RET HI_SUCCESS
124 | HI_FAILURE
125 | Calls : toupper
126 | isdigit
127 |
128 | Called By :
129 |
130 | History :
131 | 1.Date : 2005.07.10
132 | Author : t41030
133 | Modification : Created function
134 | *****************************************************************************/
135 | #define ASC2NUM(ch) (ch - '0')
136 | #define HEXASC2NUM(ch) (ch - 'A' + 10)
137 |
138 | HI_RET atoulx(IN CHAR *str,OUT U32 * pulValue)
139 | {
140 | U32 ulResult=0;
141 | UCHAR ch;
142 |
143 | while (*str)
144 | {
145 | ch=toupper(*str);
146 | if (isdigit(ch) || ((ch >= 'A') && (ch <= 'F' )))
147 | {
148 | if (ulResult < 0x10000000)
149 | {
150 | ulResult = (ulResult << 4) + ((ch<='9')?(ASC2NUM(ch)):(HEXASC2NUM(ch)));
151 | }
152 | else
153 | {
154 | *pulValue=ulResult;
155 | return HI_FAILURE;
156 | }
157 | }
158 | else
159 | {
160 | *pulValue=ulResult;
161 | return HI_FAILURE;
162 | }
163 | str++;
164 | }
165 |
166 | *pulValue=ulResult;
167 | return HI_SUCCESS;
168 | }
169 |
170 |
171 |
172 |
--------------------------------------------------------------------------------
/mv_tools_rpi/enable_i2c_vc.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # load i2c-dev moudle
3 | sudo modprobe i2c-dev
4 | # add dtparam=i2c_vc=on to /boot/config.txt
5 | awk 'BEGIN{ count=0 } \
6 | { \
7 | if($1 == "dtparam=i2c_vc=on"){ \
8 | count++; \
9 | } \
10 | }END{ \
11 | if(count <= 0){ \
12 | system("sudo sh -c '\''echo dtparam=i2c_vc=on >> /boot/config.txt'\''"); \
13 | } \
14 | }' /boot/config.txt
15 |
16 | echo "reboot now?(y/n):"
17 | read USER_INPUT
18 | case $USER_INPUT in
19 | 'y'|'Y')
20 | echo "reboot"
21 | sudo reboot
22 | ;;
23 | *)
24 | echo "cancel"
25 | ;;
26 | esac
27 |
28 |
29 |
--------------------------------------------------------------------------------
/mv_tools_rpi/falling.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import RPi.GPIO as GPIO
4 |
5 | import time
6 |
7 | GPIO.setmode(GPIO.BCM)
8 |
9 | GPIO.setup(21,GPIO.OUT,initial=GPIO.HIGH)
10 |
11 | print ("ready? falling coming in 3 seconds")
12 | time.sleep(3)
13 |
14 | GPIO.output(21,GPIO.LOW)
15 | time.sleep(0.01)
16 | #GPIO.output(21,GPIO.LOW)
17 |
18 | GPIO.cleanup()
--------------------------------------------------------------------------------
/mv_tools_rpi/gpio_trigger.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import RPi.GPIO as GPIO
4 |
5 | import time
6 |
7 | GPIO.setmode(GPIO.BCM)
8 |
9 | GPIO.setup(21,GPIO.OUT)
10 |
11 | #while True:
12 | for num in range(0,10):
13 |
14 | GPIO.output(21,GPIO.HIGH)
15 |
16 | time.sleep(0.001)
17 |
18 | GPIO.output(21,GPIO.LOW)
19 |
20 | time.sleep(1)
21 |
22 | print (num)
23 |
24 |
25 | GPIO.cleanup()
--------------------------------------------------------------------------------
/mv_tools_rpi/i2c_4read:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/mv_tools_rpi/i2c_4read
--------------------------------------------------------------------------------
/mv_tools_rpi/i2c_4write:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/mv_tools_rpi/i2c_4write
--------------------------------------------------------------------------------
/mv_tools_rpi/lut_rw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/mv_tools_rpi/lut_rw
--------------------------------------------------------------------------------
/mv_tools_rpi/lut_samples/lut_gamma0.8_10bitdepth.txt:
--------------------------------------------------------------------------------
1 | 0,0,0,0,1,1,2,2,3,3,3,4,4,5,5,6,6,7,8,8,9,9,10,10,11,11,12,13,13,14,14,15,16,16,17,17,18,19,19,20,20,21,22,22,23,24,24,25,26,26,27,27,28,29,29,30,31,31,32,33,34,34,35,36,36,37,38,38,39,40,40,41,42,43,43,44,45,45,46,47,48,48,49,50,50,51,52,53,53,54,55,56,56,57,58,59,59,60,61,62,62,63,64,65,65,66,67,68,68,69,70,71,71,72,73,74,75,75,76,77,78,78,79,80,81,82,82,83,84,85,86,86,87,88,89,90,90,91,92,93,94,94,95,96,97,98,98,99,100,101,102,102,103,104,105,106,107,107,108,109,110,111,112,112,113,114,115,116,117,117,118,119,120,121,122,122,123,124,125,126,127,128,128,129,130,131,132,133,133,134,135,136,137,138,139,139,140,141,142,143,144,145,146,146,147,148,149,150,151,152,152,153,154,155,156,157,158,159,160,160,161,162,163,164,165,166,167,167,168,169,170,171,172,173,174,175,176,176,177,178,179,180,181,182,183,184,184,185,186,187,188,189,190,191,192,193,194,194,195,196,197,198,199,200,201,202,203,204,205,205,206,207,208,209,210,211,212,213,214,215,216,217,217,218,219,220,221,222,223,224,225,226,227,228,229,230,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,522,523,524,525,526,527,528,529,530,531,532,533,534,536,537,538,539,540,541,542,543,544,545,546,547,548,550,551,552,553,554,555,556,557,558,559,560,561,563,564,565,566,567,568,569,570,571,572,573,575,576,577,578,579,580,581,582,583,584,585,587,588,589,590,591,592,593,594,595,596,598,599,600,601,602,603,604,605,606,607,609,610,611,612,613,614,615,616,617,618,620,621,622,623,624,625,626,627,628,629,631,632,633,634,635,636,637,638,639,641,642,643,644,645,646,647,648,649,651,652,653,654,655,656,657,658,659,661,662,663,664,665,666,667,668,670,671,672,673,674,675,676,677,678,680,681,682,683,684,685,686,687,689,690,691,692,693,694,695,696,698,699,700,701,702,703,704,705,707,708,709,710,711,712,713,715,716,717,718,719,720,721,722,724,725,726,727,728,729,730,732,733,734,735,736,737,738,739,741,742,743,744,745,746,747,749,750,751,752,753,754,755,757,758,759,760,761,762,763,765,766,767,768,769,770,771,773,774,775,776,777,778,779,781,782,783,784,785,786,787,789,790,791,792,793,794,796,797,798,799,800,801,802,804,805,806,807,808,809,810,812,813,814,815,816,817,819,820,821,822,823,824,826,827,828,829,830,831,832,834,835,836,837,838,839,841,842,843,844,845,846,848,849,850,851,852,853,855,856,857,858,859,860,862,863,864,865,866,867,869,870,871,872,873,874,876,877,878,879,880,881,883,884,885,886,887,888,890,891,892,893,894,895,897,898,899,900,901,903,904,905,906,907,908,910,911,912,913,914,915,917,918,919,920,921,923,924,925,926,927,928,930,931,932,933,934,936,937,938,939,940,941,943,944,945,946,947,949,950,951,952,953,954,956,957,958,959,960,962,963,964,965,966,968,969,970,971,972,973,975,976,977,978,979,981,982,983,984,985,987,988,989,990,991,993,994,995,996,997,999,1000,1001,1002,1003,1005,1006,1007,1008,1009,1011,1012,1013,1014,1015,1017,1018,1019,1020,1021,1023,
--------------------------------------------------------------------------------
/mv_tools_rpi/lut_samples/lut_gamma1.2_10bitdepth.txt:
--------------------------------------------------------------------------------
1 | 0,3,6,9,12,14,16,18,21,23,25,27,29,31,33,34,36,38,40,42,43,45,47,49,50,52,54,55,57,59,60,62,63,65,67,68,70,71,73,74,76,78,79,81,82,84,85,87,88,89,91,92,94,95,97,98,100,101,102,104,105,107,108,110,111,112,114,115,116,118,119,121,122,123,125,126,127,129,130,131,133,134,135,137,138,139,141,142,143,145,146,147,148,150,151,152,154,155,156,157,159,160,161,163,164,165,166,168,169,170,171,173,174,175,176,178,179,180,181,182,184,185,186,187,189,190,191,192,193,195,196,197,198,200,201,202,203,204,206,207,208,209,210,211,213,214,215,216,217,219,220,221,222,223,224,226,227,228,229,230,231,233,234,235,236,237,238,239,241,242,243,244,245,246,247,249,250,251,252,253,254,255,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,286,287,288,289,290,291,292,293,294,295,296,298,299,300,301,302,303,304,305,306,307,308,309,311,312,313,314,315,316,317,318,319,320,321,322,323,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,564,565,566,567,568,569,570,571,572,573,574,575,576,576,577,578,579,580,581,582,583,584,585,586,587,588,588,589,590,591,592,593,594,595,596,597,598,599,599,600,601,602,603,604,605,606,607,608,609,609,610,611,612,613,614,615,616,617,618,619,619,620,621,622,623,624,625,626,627,628,629,629,630,631,632,633,634,635,636,637,638,638,639,640,641,642,643,644,645,646,647,647,648,649,650,651,652,653,654,655,655,656,657,658,659,660,661,662,663,664,664,665,666,667,668,669,670,671,672,672,673,674,675,676,677,678,679,680,680,681,682,683,684,685,686,687,687,688,689,690,691,692,693,694,695,695,696,697,698,699,700,701,702,702,703,704,705,706,707,708,709,709,710,711,712,713,714,715,716,716,717,718,719,720,721,722,723,723,724,725,726,727,728,729,730,730,731,732,733,734,735,736,737,737,738,739,740,741,742,743,743,744,745,746,747,748,749,750,750,751,752,753,754,755,756,756,757,758,759,760,761,762,762,763,764,765,766,767,768,768,769,770,771,772,773,774,774,775,776,777,778,779,780,780,781,782,783,784,785,786,786,787,788,789,790,791,792,792,793,794,795,796,797,798,798,799,800,801,802,803,803,804,805,806,807,808,809,809,810,811,812,813,814,815,815,816,817,818,819,820,820,821,822,823,824,825,826,826,827,828,829,830,831,831,832,833,834,835,836,836,837,838,839,840,841,842,842,843,844,845,846,847,847,848,849,850,851,852,852,853,854,855,856,857,857,858,859,860,861,862,862,863,864,865,866,867,867,868,869,870,871,872,872,873,874,875,876,877,877,878,879,880,881,882,882,883,884,885,886,887,887,888,889,890,891,892,892,893,894,895,896,896,897,898,899,900,901,901,902,903,904,905,906,906,907,908,909,910,911,911,912,913,914,915,915,916,917,918,919,920,920,921,922,923,924,924,925,926,927,928,929,929,930,931,932,933,934,934,935,936,937,938,938,939,940,941,942,943,943,944,945,946,947,947,948,949,950,951,951,952,953,954,955,956,956,957,958,959,960,960,961,962,963,964,964,965,966,967,968,969,969,970,971,972,973,973,974,975,976,977,977,978,979,980,981,981,982,983,984,985,986,986,987,988,989,990,990,991,992,993,994,994,995,996,997,998,998,999,1000,1001,1002,1002,1003,1004,1005,1006,1006,1007,1008,1009,1010,1010,1011,1012,1013,1014,1014,1015,1016,1017,1018,1018,1019,1020,1021,1022,1023,
--------------------------------------------------------------------------------
/mv_tools_rpi/mv_mipi_i2c.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Default values
4 | function_name=""
5 | param1=""
6 | param2=""
7 | param3=""
8 | param4=""
9 | bus=""
10 | read_write=""
11 |
12 | # Function to parse the arguments manually
13 | while [[ $# -gt 0 ]]; do
14 | case "$1" in
15 | -r)
16 | read_write="-r"
17 | shift
18 | ;;
19 | -w)
20 | read_write="-w"
21 | shift
22 | ;;
23 | -f)
24 | function_name="$2"
25 | shift 2
26 | ;;
27 | -p1)
28 | param1="$2"
29 | shift 2
30 | ;;
31 | -p2)
32 | param2="$2"
33 | shift 2
34 | ;;
35 | -p3)
36 | param3="$2"
37 | shift 2
38 | ;;
39 | -p4)
40 | param4="$2"
41 | shift 2
42 | ;;
43 | -b)
44 | bus="-b $2"
45 | shift 2
46 | ;;
47 | *)
48 | echo "Invalid option: $1"
49 | exit 1
50 | ;;
51 | esac
52 | done
53 |
54 | # If function_name is empty, print an error
55 | if [ -z "$function_name" ]; then
56 | echo "Error: function name must be provided."
57 | exit 1
58 | fi
59 |
60 | # Construct the parameters for the second script
61 | params="$read_write $function_name"
62 |
63 | # Add the parameters p1, p2, p3, and p4 if they are provided
64 | if [ -n "$param1" ]; then
65 | params="$params $param1"
66 | fi
67 | if [ -n "$param2" ]; then
68 | params="$params $param2"
69 | fi
70 | if [ -n "$param3" ]; then
71 | params="$params $param3"
72 | fi
73 | if [ -n "$param4" ]; then
74 | params="$params $param4"
75 | fi
76 |
77 | # If -b bus is provided, include it in the parameters
78 | if [ -n "$bus" ]; then
79 | params="$params $bus"
80 | fi
81 |
82 | # Print the final command for debugging
83 | echo "Executing: ./mv_mipi_i2c_new.sh $params"
84 |
85 | # Call the second script with the constructed parameters
86 | ./mv_mipi_i2c_new.sh $params
87 |
--------------------------------------------------------------------------------
/mv_tools_rpi/mv_probe.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #usage source ./mv_probe.sh
3 | # This script is used to probe the connected camera and set the environment variables
4 | # CAMERAMODEL, FPS, HEIGHT, and WIDTH based on the contents of the files in the veye_mvcam directory.
5 | # The script will iterate through all I2C buses in /sys/bus/i2c/devices and look for the veye_mvcam directory.
6 | # please make sure that the camera is connected to the I2C bus and the driver is loaded.
7 | # Please make sure the mvcam driver version is 1.1.06 or later.
8 |
9 | for i2c_device in /sys/bus/i2c/devices/i2c-*; do
10 | # Extract the I2C bus name (e.g., i2c-10)
11 | i2c_bus=$(basename "$i2c_device")
12 |
13 | # Check each subdirectory under the I2C bus
14 | for sub_device in "$i2c_device"/*; do
15 | # Check if the subdirectory exists
16 | if [ -d "$sub_device" ]; then
17 | # Check if the subdirectory matches the expected format (e.g., 11-003b)
18 | if [[ "$sub_device" == *-003b ]]; then
19 | #echo "Found device directory: $sub_device on $i2c_bus"
20 | # Check if the veye_mvcam directory exists
21 | if [ -d "$sub_device/veye_mvcam" ]; then
22 | echo "Found veye_mvcam camera on $i2c_bus."
23 | # Read and set the contents of the files as environment variables
24 | #echo "Reading files in $sub_device/veye_mvcam:"
25 | for file in camera_model fps width height; do
26 | file_path="$sub_device/veye_mvcam/$file"
27 | if [ -f "$file_path" ]; then
28 | value=$(cat "$file_path")
29 | case $file in
30 | camera_model)
31 | export CAMERAMODEL="$value"
32 | echo "Setenv CAMERAMODEL = $value"
33 | ;;
34 | fps)
35 | export FPS="$value"
36 | echo "Setenv FPS = $value"
37 | ;;
38 | width)
39 | export WIDTH="$value"
40 | echo "Setenv WIDTH = $value"
41 | ;;
42 | height)
43 | export HEIGHT="$value"
44 | echo "Setenv HEIGHT = $value"
45 | ;;
46 | esac
47 | else
48 | echo "$file: File not found"
49 | fi
50 | done
51 | return 0 # Use return instead of exit
52 | else
53 | # If the subdirectory exists but veye_mvcam is missing
54 | echo "The mvcam driver is loaded on $i2c_bus, but the camera is not detected!"
55 | fi
56 | fi
57 | fi
58 | done
59 | done
60 |
61 | echo "No device found. The driver may be too old or not loaded."
62 | return 1
--------------------------------------------------------------------------------
/mv_tools_rpi/rising.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import RPi.GPIO as GPIO
4 |
5 | import time
6 |
7 | GPIO.setmode(GPIO.BCM)
8 |
9 |
10 | GPIO.setup(21,GPIO.OUT,initial=GPIO.LOW)
11 |
12 |
13 | print ("ready? rising coming in 3 seconds")
14 |
15 | time.sleep(3)
16 |
17 | GPIO.output(21,GPIO.HIGH)
18 |
19 | time.sleep(0.01)
20 |
21 | GPIO.output(21,GPIO.LOW)
22 |
23 |
24 |
25 | GPIO.cleanup()
26 |
--------------------------------------------------------------------------------
/mv_tools_rpi/rpi3-gpiovirtbuf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/mv_tools_rpi/rpi3-gpiovirtbuf
--------------------------------------------------------------------------------
/mv_tools_rpi/sources/i2c_4comm.h:
--------------------------------------------------------------------------------
1 |
2 | #ifndef _I2C_COMM_H
3 | #define _I2C_COMM_H
4 |
5 | #define LOCALFUNC
6 | #define HI_RET int
7 | #define IN
8 | #define OUT
9 | #define U32 unsigned int
10 | #define U8 unsigned char
11 | #define CHAR char
12 | #define UCHAR unsigned char
13 | #define uint32_t unsigned int
14 | #define uint16_t unsigned short
15 | #define uint8_t unsigned char
16 |
17 | #define HI_SUCCESS 0
18 | #define HI_FAILURE (-1)
19 |
20 |
21 | struct sensor_regs {
22 | uint16_t reg;
23 | uint32_t data;
24 | };
25 |
26 | HI_RET StrToNumber(IN CHAR *str , OUT U32 * pulValue);
27 |
28 | #endif
29 |
30 |
--------------------------------------------------------------------------------
/mv_tools_rpi/sources/i2c_4read.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 |
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include "i2c_4comm.h"
14 |
15 | #define I2C_DEVICE_NAME_LEN 13 // "/dev/i2c-XXX"+NULL
16 | static char i2c_device_name[I2C_DEVICE_NAME_LEN];
17 |
18 | static int i2c_rd(int fd, uint8_t i2c_addr, uint16_t reg, uint32_t *values, uint32_t n)
19 | {
20 | int err;
21 | int i = 0;
22 | uint8_t buf[2] = { reg >> 8, reg & 0xff };
23 | uint8_t bufout[8] = {0};
24 | struct i2c_rdwr_ioctl_data msgset;
25 | struct i2c_msg msgs[2] = {
26 | {
27 | .addr = i2c_addr,
28 | .flags = 0,
29 | .len = 2,
30 | .buf = buf,
31 | },
32 | {
33 | .addr = i2c_addr,
34 | .flags = I2C_M_RD ,
35 | .len = 4,
36 | .buf = bufout,
37 | },
38 | };
39 |
40 | msgset.msgs = msgs;
41 | msgset.nmsgs = 2;
42 |
43 | err = ioctl(fd, I2C_RDWR, &msgset);
44 | //printf("Read i2c addr %02X\n", i2c_addr);
45 | if (err != msgset.nmsgs)
46 | {
47 | printf("Read i2c err %d\n", err);
48 | return -1;
49 | }
50 | for(i = 0; i < n;++i)
51 | {
52 | *values = ntohl(*(uint32_t*)bufout);
53 | //*values = ntohl(*values );
54 | fprintf(stderr,"addr %04x : value %08x \n",reg+i,values[i]);
55 | }
56 |
57 | return 0;
58 | }
59 |
60 |
61 | U32 main(int argc, char *argv[])
62 | {
63 | U32 I2C_port;
64 | U32 device_addr;
65 | U32 reg_addr;
66 | U32 new_data;
67 | U32 value[128];
68 | U32 num = 1;
69 |
70 | int result;
71 | if (argc < 4)
72 | {
73 | printf("usage: %s . sample: %s 0x0 0xA0 0x1000 0x2\n", argv[0], argv[0]);
74 | return -1;
75 | }
76 |
77 | if(StrToNumber(argv[1], &I2C_port) != HI_SUCCESS ) {
78 | printf("Please input i2c port like 0x100 or 256.\r\n");
79 | return -1;
80 | }
81 |
82 | if(StrToNumber(argv[2], &device_addr) != HI_SUCCESS ) {
83 | printf("Please input dev addr like 0x100 or 256.\r\n");
84 | return -1;
85 | }
86 |
87 | if(StrToNumber(argv[3], ®_addr) != HI_SUCCESS ) {
88 | printf("Please input reg addr like 0x100 0r 256.\r\n");
89 | return -1;
90 | }
91 | if(argc >=5)
92 | {
93 | if(StrToNumber(argv[4], &num) != HI_SUCCESS ) {
94 | printf("Please input reg addr like 0x100 0r 256.\r\n");
95 | return -1;
96 | }
97 | }
98 | snprintf(i2c_device_name, sizeof(i2c_device_name), "/dev/i2c-%d", I2C_port);
99 | //printf("Using i2C device %s\n", i2c_device_name);
100 |
101 | //printf("====I2C read:<%#x> <%#x> <%#x>====\n", device_addr, reg_addr, num);
102 |
103 | int fd;
104 | fd = open(i2c_device_name, O_RDWR);
105 | if (!fd)
106 | {
107 | printf("Couldn't open I2C device\n");
108 | return -1;
109 | }
110 | if (ioctl(fd, I2C_SLAVE_FORCE, device_addr) < 0)
111 | {
112 | printf("Failed to set I2C address\n");
113 | return -1;
114 | }
115 |
116 |
117 |
118 |
119 | i2c_rd(fd, device_addr,reg_addr, value, num);
120 |
121 | close(fd);
122 |
123 | fprintf(stdout,"%d",value[0]);
124 | return value[0];
125 |
126 | }
127 |
128 |
--------------------------------------------------------------------------------
/mv_tools_rpi/sources/i2c_4write.c:
--------------------------------------------------------------------------------
1 |
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | #include
10 | #include
11 | #include
12 | #include
13 |
14 | #include "i2c_4comm.h"
15 |
16 | #define I2C_DEVICE_NAME_LEN 13 // "/dev/i2c-XXX"+NULL
17 | static char i2c_device_name[I2C_DEVICE_NAME_LEN];
18 |
19 | void send_regs(int fd, const struct sensor_regs *regs, int num_regs)
20 | {
21 | int i;
22 | for (i=0; i>8, regs[i].reg, regs[i].data>>24,
26 | regs[i].data>>16,regs[i].data>>8,regs[i].data,};
27 | int len = 6;
28 |
29 | if (write(fd, msg, len) != len)
30 | {
31 | printf("Failed to write register index %d", i);
32 | }
33 | }
34 | }
35 | }
36 |
37 | int main(int argc, char *argv[])
38 | {
39 | U32 I2C_port;
40 | U32 device_addr;
41 | U32 reg_addr;
42 | U32 new_data;
43 | //U32 value;
44 | struct sensor_regs regs;
45 |
46 | int result;
47 | if (argc < 5)
48 | {
49 | printf("usage: %s . sample: %s 0x0 0xA0 0x10 0x40\n", argv[0], argv[0]);
50 | return -1;
51 | }
52 |
53 | if(StrToNumber(argv[1], &I2C_port) != HI_SUCCESS ) {
54 | printf("Please input i2c port like 0x100 or 256.\r\n");
55 | return -1;
56 | }
57 |
58 | if(StrToNumber(argv[2], &device_addr) != HI_SUCCESS ) {
59 | printf("Please input dev addr like 0x100 or 256.\r\n");
60 | return -1;
61 | }
62 |
63 | if(StrToNumber(argv[3], ®_addr) != HI_SUCCESS ) {
64 | printf("Please input reg addr like 0x100 0r 256.\r\n");
65 | return -1;
66 | }
67 |
68 | if(StrToNumber(argv[4], &new_data) != HI_SUCCESS ) {
69 | printf("Please input len like 0x100\n");
70 | return -1;
71 | }
72 | //value = new_data;
73 | printf("====I2C write:<%#x> <%#x> <%#x>====\n", device_addr, reg_addr, new_data);
74 |
75 | snprintf(i2c_device_name, sizeof(i2c_device_name), "/dev/i2c-%d", I2C_port);
76 | //printf("Using i2C device %s\n", i2c_device_name);
77 |
78 | int fd;
79 | fd = open(i2c_device_name, O_RDWR);
80 | if (!fd)
81 | {
82 | printf("Couldn't open I2C device\n");
83 | return -1;
84 | }
85 | if (ioctl(fd, I2C_SLAVE_FORCE, device_addr) < 0)
86 | {
87 | printf("Failed to set I2C address\n");
88 | return -1;
89 | }
90 | regs.reg = reg_addr;
91 | regs.data = new_data;
92 |
93 | send_regs(fd, ®s, 1);
94 | close(fd);
95 |
96 | return 0;
97 |
98 | }
99 |
100 |
--------------------------------------------------------------------------------
/mv_tools_rpi/sources/make.sh:
--------------------------------------------------------------------------------
1 |
2 | gcc -o ../i2c_4read i2c_4read.c strfunc.c
3 | gcc -o ../i2c_4write i2c_4write.c strfunc.c
4 | gcc -o ../lut_rw lut_rw.c strfunc.c
5 |
--------------------------------------------------------------------------------
/mv_tools_rpi/veye_i2c_upgrade:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/mv_tools_rpi/veye_i2c_upgrade
--------------------------------------------------------------------------------
/mv_tools_rpi/veye_i2c_upgrade_64bit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/mv_tools_rpi/veye_i2c_upgrade_64bit
--------------------------------------------------------------------------------
/rpi5_scripts/find_entity.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #set -x
4 | g_cm5=0
5 |
6 | I2CBUS_CAM1=11
7 | I2CBUS_CAM0=10
8 |
9 |
10 | media_device="/dev/media0"
11 | # 寻找包含 "veyecam2m 4-003b" entity 的设备节点
12 |
13 | find_entity_device() {
14 | local entity_name="$1"
15 | local entity_id="$2"
16 |
17 | for media_device in /dev/media*; do
18 | #echo "Checking $media_device..."
19 | entity_info=$(media-ctl -d $media_device -p 2>/dev/null | grep "$entity_name $entity_id-003b")
20 | if [ -n "$entity_info" ]; then
21 | echo "Found $entity_name @ i2c-$entity_id entity on $media_device"
22 | g_video_device=$(media-ctl -e rp1-cfe-csi2_ch0 -d $media_device)
23 | g_video_subdevice=$(media-ctl -e "$entity_name $entity_id-003b" -d $media_device)
24 | echo "Plese get frame from $g_video_device and use $g_video_subdevice for camera setting."
25 | fi
26 | done
27 | }
28 | check_rpi_board()
29 | {
30 | model=$(tr -d '\0' r_major)) || \
55 | ((k_major == r_major && k_minor > r_minor)) || \
56 | ((k_major == r_major && k_minor == r_minor && k_patch >= r_patch)); then
57 | if ((g_cm5 == 1));then
58 | I2CBUS_CAM1=0
59 | else
60 | I2CBUS_CAM1=11
61 | fi
62 | I2CBUS_CAM0=10
63 |
64 | else
65 | if ((g_cm5 == 1));then
66 | I2CBUS_CAM1=0
67 | else
68 | I2CBUS_CAM1=4
69 | fi
70 | I2CBUS_CAM1=6
71 | fi
72 | echo "Kernel version is $kernel_version, use i2c-$I2CBUS_CAM0 for CAM0 and i2c-$I2CBUS_CAM1 for CAM1."
73 | }
74 |
75 | check_rpi_board;
76 | check_i2c_bus;
77 |
78 | find_entity_device "veyecam2m" $I2CBUS_CAM0
79 | find_entity_device "veyecam2m" $I2CBUS_CAM1
80 |
81 | find_entity_device "mvcam" $I2CBUS_CAM0
82 | find_entity_device "mvcam" $I2CBUS_CAM1
83 |
84 | find_entity_device "csimx307" $I2CBUS_CAM0
85 | find_entity_device "csimx307" $I2CBUS_CAM1
86 |
87 | find_entity_device "cssc132" $I2CBUS_CAM0
88 | find_entity_device "cssc132" $I2CBUS_CAM1
--------------------------------------------------------------------------------
/samples/opencv/raw_camera/rawfile_to_opencv_show.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import numpy as np
3 | import cv2
4 |
5 | # Define command-line arguments
6 | parser = argparse.ArgumentParser(description='Read and display raw image file')
7 | parser.add_argument('filename', type=str, help='raw image filename')
8 | parser.add_argument('width', type=int, help='image width')
9 | parser.add_argument('height', type=int, help='image height')
10 | parser.add_argument('bits', type=int, help='bits per pixel (8, 10, or 12)')
11 |
12 | # Parse command-line arguments
13 | args = parser.parse_args()
14 |
15 | # Read raw image data from file
16 | with open(args.filename, 'rb') as f:
17 | if args.bits == 8:
18 | data = np.fromfile(f, dtype=np.uint8)
19 | elif args.bits == 10:
20 | data = np.fromfile(f, dtype=np.uint16)
21 | data = ((data >> 2) & 0x3FF).astype(np.uint8)
22 | elif args.bits == 12:
23 | data = np.fromfile(f, dtype=np.uint16)
24 | data = ((data >> 4) & 0xFF).astype(np.uint8)
25 |
26 | # reshape image data into a two-dimensional array:
27 | image_data = data.reshape(args.height, args.width)
28 |
29 | # Display image
30 | cv2.imshow('Image', image_data)
31 | cv2.waitKey(0)
32 | cv2.destroyAllWindows()
33 |
--------------------------------------------------------------------------------
/samples/opencv/raw_camera/v4l2dev_2_opencv_show_grey.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import argparse
3 | import subprocess
4 | import cv2
5 |
6 | def read_cam(width, height, fps, ctldev):
7 |
8 | v4l2_cmd = f"v4l2-ctl -d {ctldev} --set-ctrl roi_x=0"
9 | subprocess.run(v4l2_cmd, shell=True)
10 | v4l2_cmd = f"v4l2-ctl -d {ctldev} --set-ctrl roi_y=0"
11 | subprocess.run(v4l2_cmd, shell=True)
12 | v4l2_cmd = f"v4l2-ctl -d /dev/video0 --set-fmt-video=width={width},height={height}"
13 | subprocess.run(v4l2_cmd, shell=True)
14 | v4l2_cmd = f"v4l2-ctl -d {ctldev} --set-ctrl frame_rate={fps}"
15 | subprocess.run(v4l2_cmd, shell=True)
16 |
17 | cap = cv2.VideoCapture(f"v4l2src io-mode=dmabuf device=/dev/video0 ! video/x-raw, format=(string)GRAY8, width=(int){width}, height=(int){height} ! appsink")
18 | if cap.isOpened():
19 | cv2.namedWindow("demo", cv2.WINDOW_AUTOSIZE)
20 | while True:
21 | ret_val, img = cap.read();
22 | cv2.imshow('demo',img)
23 | cv2.waitKey(1)
24 | else:
25 | print ("camera open failed");
26 |
27 | cv2.destroyAllWindows()
28 |
29 | if __name__ == '__main__':
30 | parser = argparse.ArgumentParser(description='Read camera video stream')
31 | parser.add_argument('--width', type=int, default=1080, help='width of the video stream')
32 | parser.add_argument('--height', type=int, default=1080, help='height of the video stream')
33 | parser.add_argument('--fps', type=int, default=30, help='fps of the video stream')
34 | parser.add_argument('--ctldev', type=str, default='/dev/video0', help='For rpi5 only,subdevice for param setting')
35 | args = parser.parse_args()
36 |
37 | read_cam(args.width, args.height, args.fps, args.ctldev)
--------------------------------------------------------------------------------
/samples/opencv/raw_camera/v4l2dev_2_opencv_show_grey2.py:
--------------------------------------------------------------------------------
1 | import cv2
2 | import argparse
3 | import subprocess
4 |
5 | def main():
6 | # Set up command-line argument parser
7 | parser = argparse.ArgumentParser(description='Real-time display of GREY image from /dev/video0')
8 | parser.add_argument('--width', type=int, default=640, help='image width (default: 640)')
9 | parser.add_argument('--height', type=int, default=480, help='image height (default: 480)')
10 | parser.add_argument('--fps', type=int, default=30, help='frame rate (default: 30)')
11 | parser.add_argument('--ctldev', type=str, default='/dev/video0', help='For rpi5 only,subdevice for param setting')
12 | args = parser.parse_args()
13 |
14 | v4l2_cmd = f"v4l2-ctl -d {args.ctldev} --set-ctrl roi_x=0"
15 | subprocess.run(v4l2_cmd, shell=True)
16 | v4l2_cmd = f"v4l2-ctl -d {args.ctldev} --set-ctrl roi_y=0"
17 | subprocess.run(v4l2_cmd, shell=True)
18 | v4l2_cmd = f"v4l2-ctl -d '/dev/video0' --set-fmt-video=width={args.width},height={args.height}"
19 | subprocess.run(v4l2_cmd, shell=True)
20 |
21 | v4l2_cmd = f"v4l2-ctl -d {args.ctldev} --set-ctrl frame_rate={args.fps}"
22 | subprocess.run(v4l2_cmd, shell=True)
23 |
24 | # Open the /dev/video0 device
25 | cap = cv2.VideoCapture('/dev/video0')
26 | if not cap.isOpened():
27 | print("Failed to open video device")
28 | return
29 |
30 | # Set the image size
31 | cap.set(cv2.CAP_PROP_FRAME_WIDTH, args.width)
32 | cap.set(cv2.CAP_PROP_FRAME_HEIGHT, args.height)
33 |
34 | # Loop over frames and display them
35 | while True:
36 | # Read a frame
37 | ret, frame = cap.read()
38 |
39 | # Check if reading was successful
40 | if not ret:
41 | print("Failed to read frame")
42 | break
43 |
44 | # Display the frame
45 | cv2.imshow('VEYE MV camera GREY image preview', frame)
46 |
47 | # Exit if 'q' key is pressed
48 | if cv2.waitKey(1) & 0xFF == ord('q'):
49 | break
50 |
51 | # Release resources
52 | cap.release()
53 | cv2.destroyAllWindows()
54 |
55 | if __name__ == '__main__':
56 | main()
57 |
--------------------------------------------------------------------------------
/samples/opencv/raw_camera/y10-640x480_0001.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/samples/opencv/raw_camera/y10-640x480_0001.raw
--------------------------------------------------------------------------------
/samples/opencv/raw_camera/y8-640x480_0001.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veyeimaging/raspberrypi_v4l2/e763b90fe86a98abe13e298584d77cd2ccd8d3ff/samples/opencv/raw_camera/y8-640x480_0001.raw
--------------------------------------------------------------------------------
/samples/opencv/yuv_camera/v4l2_opencv_show1.py:
--------------------------------------------------------------------------------
1 | import cv2
2 |
3 | # Open the device at the ID 0
4 | # Use the camera ID based on
5 | # /dev/videoID needed
6 | cap = cv2.VideoCapture(0)
7 |
8 | #Check if camera was opened correctly
9 | if not (cap.isOpened()):
10 | print("Could not open video device")
11 |
12 |
13 | #Set the resolution
14 | cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
15 | cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
16 |
17 | # Capture frame-by-frame
18 | while(True):
19 | ret, frame = cap.read()
20 |
21 | # Display the resulting frame
22 |
23 | cv2.imshow("preview",frame)
24 |
25 | #cv2.imwrite("outputImage.jpg", frame)
26 |
27 | #Waits for a user input to quit the application
28 | if cv2.waitKey(1) & 0xFF == ord('q'):
29 | break
30 |
31 | # When everything done, release the capture
32 | cap.release()
33 | cv2.destroyAllWindows()
--------------------------------------------------------------------------------
/samples/opencv/yuv_camera/v4l2_opencv_show2.py:
--------------------------------------------------------------------------------
1 |
2 | import sys
3 | import cv2
4 |
5 | def read_cam():
6 | cap = cv2.VideoCapture("v4l2src io-mode=dmabuf device=/dev/video0 ! video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080 ! appsink")
7 | if cap.isOpened():
8 | cv2.namedWindow("demo", cv2.WINDOW_AUTOSIZE)
9 | while True:
10 | ret_val, img = cap.read();
11 | img2 = cv2.cvtColor(img, cv2.COLOR_YUV2BGR_UYVY);
12 | cv2.imshow('demo',img2)
13 | cv2.waitKey(1)
14 | else:
15 | print ("camera open failed");
16 |
17 | cv2.destroyAllWindows()
18 |
19 |
20 | if __name__ == '__main__':
21 | read_cam()
--------------------------------------------------------------------------------
/samples/opencv/yuv_camera/v4l2_opencv_show3.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import cv2
3 |
4 | def read_cam():
5 | cap = cv2.VideoCapture("v4l2src io-mode=dmabuf device=/dev/video0 ! video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080 ! v4l2convert capture-io-mode=dmabuf ! video/x-raw, format=(string)BGR ! appsink")
6 | if cap.isOpened():
7 | cv2.namedWindow("demo", cv2.WINDOW_AUTOSIZE)
8 | while True:
9 | ret_val, img = cap.read();
10 | #img2 = cv2.cvtColor(img, cv2.COLOR_YUV2BGR_I420);
11 | cv2.imshow('demo',img)
12 | cv2.waitKey(1)
13 | else:
14 | print ("camera open failed");
15 |
16 | cv2.destroyAllWindows()
17 |
18 |
19 | if __name__ == '__main__':
20 | read_cam()
--------------------------------------------------------------------------------