This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SK-AM62A-LP: How to enable IMX327 camera sensor

Part Number: SK-AM62A-LP


Tool/software:

Hi,

We've been trying to run our board with IMX327 camera but with no success. Based on this link we've decided to follow installation steps for IMX290 camera, please look into the attached overlay .dtso file which was based on the already existing IMX219 overlay file. First, we tried to compile the file and upload it to the board and next build fresh kernel following Enable A New CSI-2 Sensor instruction. For both cases the board couldn't detect the camera. To clarify, .dtbo file can be found on the board and we changed uEnv.txt file to include it. 

 

// SPDX-License-Identifier: GPL-2.0
/*
 * IMX290 Camera Module
 */

 /dts-v1/;
 /plugin/;

#include <dt-bindings/gpio/gpio.h>

&{/} {
	clk_imx290_fixed: imx290-xclk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <37125000>;  /* 37.125 MHz clock */
	};
};

&main_i2c2 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	i2c-switch@71 {
		compatible = "nxp,pca9543";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x71>;

		/* CAM port */
		i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;

			imx290: camera@1a {
				compatible = "sony,imx290lqr";
				reg = <0x1a>;

				clocks = <&clk_imx290_fixed>;
				clock-names = "xclk";
				clock-frequency = <37125000>;

				reset-gpios = <&exp1 13 GPIO_ACTIVE_HIGH>;

				port {
					csi2_cam0: endpoint {
						remote-endpoint = <&csi2rx0_in_sensor>;
						link-frequencies = /bits/ 64 <445500000 297000000>;
						clock-lanes = <0>;
						data-lanes = <1 2>;
					};
				};
			};
		};
	};
};

&cdns_csi2rx0 {
	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		csi0_port0: port@0 {
			reg = <0>;
			status = "okay";

			csi2rx0_in_sensor: endpoint {
				remote-endpoint = <&csi2_cam0>;
				bus-type = <4>;  /* CSI2 DPHY */
				clock-lanes = <0>;
				data-lanes = <1 2>;
			};
		};
	};
};

&ti_csi2rx0 {
	status = "okay";
};

&dphy0 {
	status = "okay";
};


Best regards,
Konrad

  • Hi Konrad,

    Can you first follow this FAQ to do some debugging and then give us an update: What are the common reasons a CSI sensor fails to probe in V4L2 environment?

    Thank you.

    Jianzhong

  • Hi Jianzhong,

    Thanks for sharing that link with us. We've run this test on a board built with the latest tisdk-edgeai-image-am62a-evm.wic.xz image (10.01.00.05). The device tree file for IMX290 camera sensor was compiled on the local machine and uploaded to the board. No further kernel build was made. 

    Command: 

    dmesg | grep csi

    produces following results:

    [    7.618514] cdns-csi2rx 30101000.csi-bridge: Probed CSI2RX with 2/4 lanes, 4 streams, external D-PHY

    Additionally:

    i2cdetect -y -r 4
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- UU -- -- -- -- -- --   

    We believe that the bridge has been detected properly.

    However, 

    dmesg | grep -i imx

    produces nothing.

    On top of that no drivers for imx290 can be found in lib/modules, therefore we assume that the kernel build is necessary. Although we run into some other issues while following Build Kernel instruction that we need to address now. While installing freshly built kernel on a SD card with the aforementioned image our board runs into problems with a partition. If you've dealt with similar issues before we'd highly appreciate if you could provide some links to the solution.

    Best,
    Konrad

  • Hi Konrad,

    On top of that no drivers for imx290 can be found in lib/modules

    This means you probably didn't build the driver and kernel properly. I would recommend you to rebuild the kernel using the top level makefile:

    1. go to your SDK 10.1 installation root folder

    2. edit file Rules.make and change ROOTFS_PART and BOOT_PART accordingly:

    #root of the target file system for installing applications
    ROOTFS_PART?=__ROOTFS_PART__
    # Root of the boot partition to install boot binaries
    BOOT_PART?=__BOOT_PART__
    
    

    You can find the ROOTFS and BOOT partition directories by doing "lsblk" on your host PC. 

    3. then run the following commands:

    $ make linux

    $ sudo make linux_install

    Regards,

    Jianzhong