├── .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() --------------------------------------------------------------------------------