Skip to main content
Explorer II
July 19, 2024
Question

stm32mp135f-dk camera problem

  • July 19, 2024
  • 1 reply
  • 1744 views

Hello,

 

I have stm32mp135f-DK board also gc2145 camera which works perfectly fine

but when ı connect Raspberry pi camera module v2

it does not appear with 

 v4l2-ctl --list-devices

So I wonder is it possible to use that camera with modifying linux kernel device tree etc or is it's just impossible ?

    This topic has been closed for replies.

    1 reply

    Explorer II
    July 22, 2024

    I discovered When I connect usb camera or gc2145 I can get stream them from the app on the board without stm32mp135f-dk.stb on the boot folder but I could not get stream with raspberry pi.
    So is it possible to use Raspberry pi camera with stm32mp135f-dk board 

    Also for example I bought a new camera which can work with stm32mp135f-dk

    Should I modify linux kernel device tree etc. Or just modify dtb file is enough ( take dtb from boot folder make it dts make configuration that I want make it dtb again and upload the board's boot folder  is this enough)

    @Erwan SZYMANSKI 

    Technical Moderator
    July 23, 2024

    Hello @kagan_senkeser ,
    USB camera has a driver that is supported by default in our deliveries, this is the reason why you can manipulate this kind of camera.
    Concerning the CSI camera gc2145this is the default camera we provide with the Discovery Kit, so by default yes you are right, this is configured inside the device tree.

    Let's take a look together, take a look at https://github.com/STMicroelectronics/linux/blob/v6.1-stm32mp/arch/arm/boot/dts/stm32mp135f-dk.dts

    You can see : 

    gc2145: gc2145@3c {
    		compatible = "galaxycore,gc2145";
    		reg = <0x3c>;
    		clocks = <&clk_ext_camera>;
    		IOVDD-supply = <&scmi_v3v3_sw>;
    		AVDD-supply = <&scmi_v3v3_sw>;
    		DVDD-supply = <&scmi_v3v3_sw>;
    		powerdown-gpios = <&mcp23017 3 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
    		reset-gpios = <&mcp23017 4 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
    		status = "okay";
    
    		port {
    			gc2145_ep: endpoint {
    				remote-endpoint = <&mipid02_0>;
    				clock-lanes = <0>;
    				data-lanes = <1 2>;
    			};
    		};
    	};

    The node gc2145 configures everything to use this camera, with status = "okay".
    Just behind you can see on this same file that you have a node called ov5640 that has status= "disabled". It is the configuration for another camera (the old one we had by default in our delivery). If you want to use this one, you will put the status at "okay" and the status of the other one(s) at "disabled".

    Now, what about your Raspi camera ? 

    You now understand that a one CSI camera = one Device tree configuration. You also see the compatible property that is here to target the camera driver. Please check if your camera has a driver already supported in the Linux kernel, then adapt the device tree to probe your camera driver/config instead of the default one configured in our deliveries.

    I hope it will help you to go forward.

    Kind Regards,
    Erwan.

    Explorer II
    July 26, 2024

    Hello I enabled IMX219 driver which is raspberry pi camera sensor 
    and modified device tree but my board still don't see the camera 
    Can you check my dts
    I added port@3 and IMX219 are these correct @Erwan SZYMANSKI 

     

     

     

    ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    			port@0 {
    				reg = <0>;
    
    				mipid02_0: endpoint {
    					data-lanes = <1 2>;
    					lane-polarities = <0 0 0>;
    					remote-endpoint = <&gc2145_ep>;
    				};
    			};
    			port@2 {
    				reg = <2>;
    
    				mipid02_2: endpoint {
    					bus-width = <8>;
    					hsync-active = <0>;
    					vsync-active = <0>;
    					pclk-sample = <0>;
    					remote-endpoint = <&dcmipp_0>;
    				};
    			};
    			
    			port@3 {
    				csi_in: endpoint {
    				 remote-endpoint = <&imx219_out>;
    				 data-lanes = <1 2>;
    				 clock-lanes = <0>;
    				 clock-noncontinuous;
    				};
    			};
    		};
    	};
    	
    	
    	
    
    	gc2145: gc2145@3c {
    		compatible = "galaxycore,gc2145";
    		reg = <0x3c>;
    		clocks = <&clk_ext_camera>;
    		IOVDD-supply = <&scmi_v3v3_sw>;
    		AVDD-supply = <&scmi_v3v3_sw>;
    		DVDD-supply = <&scmi_v3v3_sw>;
    		powerdown-gpios = <&mcp23017 3 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
    		reset-gpios = <&mcp23017 4 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
    		status = "okay";
    
    		port {
    			gc2145_ep: endpoint {
    				remote-endpoint = <&mipid02_0>;
    				clock-lanes = <0>;
    				data-lanes = <1 2>;
    			};
    		};
    	};
    
    	ov5640: camera@3c {
    		compatible = "ovti,ov5640";
    		reg = <0x3c>;
    		clocks = <&clk_ext_camera>;
    		clock-names = "xclk";
    		DOVDD-supply = <&scmi_v3v3_sw>;
    		status = "disabled";
    		powerdown-gpios = <&mcp23017 3 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
    		reset-gpios = <&mcp23017 4 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
    
    		port {
    			ov5640_0: endpoint {
    				/*remote-endpoint = <&mipid02_0>;*/
    				clock-lanes = <0>;
    				data-lanes = <1 2>;
    			};
    		};
    	};
    	
    	imx219@10 {
    		compatible = "sony,imx219";
    		reg = <0x10>;
    		status = "okay";
    
    		/* Clock configuration */
    		clocks = <&clk_ext_camera>;
    		clock-names = "xclk";
    
    		/* GPIO pins configuration */
    		powerdown-gpios = <&mcp23017 3 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
    		reset-gpios = <&mcp23017 4 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
    
    		/* Power supplies */
    		avdd-supply = <&scmi_v3v3_sw>;
    		dovdd-supply = <&scmi_v3v3_sw>;
    		dvdd-supply = <&scmi_v3v3_sw>;
    
    		/* I2C settings */
    		i2c-bus = <&i2c1>;
    
    		/* MIPI CSI-2 settings */
    		port {
    		 imx219_out: endpoint {
    		 remote-endpoint = <&csi_in>;
    		 data-lanes = <1 2>;
    		 clock-lanes = <0>;
    		 clock-noncontinuous;
    		 link-frequencies = /bits/ 64 <600000000>;
    		 };
    		};
     	};
    ​