Hi,
I am currently working on the i.MX8ULP device tree files to have the OV5640 camera working with libcamera on the MCIMX8ULP-EVK9 evaluation kit.
The modifications
Among the changes I have made, I replaced the following in imx8ulp.dtsi:
- mipi_csi0: csi@2daf0000 {
- compatible = "fsl,imx8ulp-mipi-csi2", "fsl,mxc-mipi-csi2";
- reg = <0x2daf0000 0x10000>,
- <0x2dad0000 0x10000>;
- clocks = <&pcc5 IMX8ULP_CLK_CSI>,
- <&pcc5 IMX8ULP_CLK_CSI_CLK_UI>,
- <&pcc5 IMX8ULP_CLK_CSI_CLK_ESC>,
- <&pcc5 IMX8ULP_CLK_CSI_REGS>;
- clock-names = "clk_core", "clk_ui", "clk_esc", "clk_regs";
- power-domains = <&scmi_devpd IMX8ULP_PD_MIPI_CSI>;
- assigned-clocks = <&cgc2 IMX8ULP_CLK_PLL4_PFD1>,
- <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV1>,
- <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV2>,
- <&pcc5 IMX8ULP_CLK_CSI>,
- <&pcc5 IMX8ULP_CLK_CSI_CLK_UI>,
- <&pcc5 IMX8ULP_CLK_CSI_CLK_ESC>;
- assigned-clock-parents = <0>, <0>, <0>,
- <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV1>,
- <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV2>,
- <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV2>;
- assigned-clock-rates = <316800000>,
- <316800000>,
- <316800000>,
- <105600000>,
- <79200000>,
- <79200000>;
- runtime_suspend;
- status = "disabled";
+ mipi_csi0: csi@2daf0000 {
+ compatible = "fsl,imx8mp-mipi-csi2", "fsl,imx8mm-mipi-csi2";
+ reg = <0x2daf0000 0x10000>,
+ <0x2dad0000 0x10000>;
+ interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cgc2 IMX8ULP_CLK_LPAV_BUS_DIV>,
+ <&pcc5 IMX8ULP_CLK_CSI_CLK_UI>,
+ <&pcc5 IMX8ULP_CLK_CSI>;
+ clock-names = "pclk", "wrap", "phy";
+ power-domains = <&scmi_devpd IMX8ULP_PD_MIPI_CSI>;
+ assigned-clocks = <&cgc2 IMX8ULP_CLK_PLL4_PFD1>,
+ <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV1>,
+ <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV2>,
+ <&pcc5 IMX8ULP_CLK_CSI>,
+ <&pcc5 IMX8ULP_CLK_CSI_CLK_UI>,
+ <&pcc5 IMX8ULP_CLK_CSI_CLK_ESC>;
+ assigned-clock-parents = <0>, <0>, <0>,
+ <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV1>,
+ <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV2>,
+ <&cgc2 IMX8ULP_CLK_PLL4_PFD1_DIV2>;
+ assigned-clock-rates = <316800000>,
+ <316800000>,
+ <316800000>,
+ <105600000>,
+ <79200000>,
+ <79200000>;
+ runtime_suspend;
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ };
+
+ port@1 {
+ reg = <1>;
+
+ mipi_csi_0_out: endpoint {
+ remote-endpoint = <&isi_in_0>;
+ };
+ };
};
};
I know those modification are not likely to be enough as they are, but the imx-mipi-csis driver does not support i.MX8ULP so I am trying to baby step towards a working device tree. (I am using this binding documentation https://github.com/nxp-imx/linux-imx/blob/lf-6.6.y/Documentation/devicetree/bindings/media/nxp%2Cimx... and looking at the associated driver source code https://github.com/nxp-imx/linux-imx/blob/lf-6.6.y/drivers/media/platform/nxp/imx-mipi-csis.c).
The patch is attached to this message (0002-remove-camdev-modify-csi-and-isi-drivers-change-clocks-dtsi.patch)
Now, when I flash the imx-image-full to the board, everything boots but the mipi-csi node is not binding. When I check why, I have the following log:
root@imx8ulp-9x9-lpddr4-evk:~# dmesg | grep 2daf
[ 2.175433] /soc@0/bus@2d800000/csi@2daf0000: Relaxing link with /i2c-rpbus-0/ov5640_mipi@3c/port/endpoint
[ 2.175476] /i2c-rpbus-0/ov5640_mipi@3c: Relaxing link with /soc@0/bus@2d800000/csi@2daf0000/ports/port@0/endpoint
[ 2.175523] i2c 0-003c: Fixed dependency cycle(s) with /soc@0/bus@2d800000/csi@2daf0000/ports/port@0/endpoint
[ 2.246985] /i2c-rpbus-0/ov5640_mipi@3c Dropping the fwnode link to /soc@0/bus@2d800000/csi@2daf0000/ports/port@0/endpoint
[ 2.247043] /soc@0/bus@2d800000/csi@2daf0000 Linked as a fwnode consumer to /i2c-rpbus-0/ov5640_mipi@3c
[ 2.247072] /soc@0/bus@2d800000/csi@2daf0000 Dropping the fwnode link to /i2c-rpbus-0/ov5640_mipi@3c/port/endpoint
[ 2.247125] device: 'i2c:0-003c--platform:2daf0000.csi': device_add
[ 2.247220] platform 2daf0000.csi: Linked as a sync state only consumer to 0-003c
[ 2.247233] /soc@0/bus@2d800000/csi@2daf0000 Dropping the fwnode link to /i2c-rpbus-0/ov5640_mipi@3c
[ 2.712236] platform 2daf0000.csi: Retrying from deferred list
[ 2.713521] bus: 'platform': __driver_probe_device: matched device 2daf0000.csi with driver imx-mipi-csis
[ 2.713542] bus: 'platform': really_probe: probing driver imx-mipi-csis with device 2daf0000.csi
[ 2.713573] imx-mipi-csis 2daf0000.csi: no pinctrl handle
[ 2.713793] imx-mipi-csis 2daf0000.csi: adding to PM domain MIPI_CSI
[ 2.713809] imx-mipi-csis 2daf0000.csi: genpd_add_device()
[ 2.714562] imx-mipi-csis 2daf0000.csi: error -ENOENT: Failed to get clk 'axi'
[ 2.721895] imx-mipi-csis 2daf0000.csi: removing from PM domain MIPI_CSI
[ 2.721910] imx-mipi-csis 2daf0000.csi: genpd_remove_device()
[ 2.722391] imx-mipi-csis: probe of 2daf0000.csi failed with error -2
The line [ 2.713573] imx-mipi-csis 2daf0000.csi: no pinctrl handle indicates that I should add some pinctrl management in the node. When I look in the IOMUXC chapter of the i.MX8ULP reference manual, an IOMUX spreadsheet that could help me with this is mentioned but I can't find it.
Does somebody know where I can get this IOMUX spreadsheet ?
Thanks
Karim
解決済! 解決策の投稿を見る。
Hi,
Thank you for your interest in NXP Semiconductor products,
For the DTS side, you can refer to the EVK reference.
For the IOMUX matrix, please install Config Tools:
Download latest exe.
Execute installer and CFG Tools for first time as admin. Make sure your device complies with:
The following lists the minimum system requirements to install and run the software:
– Microsoft Windows 10 (64-bit)
– Ubuntu 22.04 LTS
Note: Linux-hosted variants of tools are distributed on Linux as 64-bit binaries, which may not work on 32-bit systems.
– Supported desktop environments: GNOME
– Mac OS X (12.x)
Regards
Hi,
Thanks for your reply, I was finally able to directly get the spreadsheet attached to the reference manual.
Regards,
Karim
Hi,
Thank you for your interest in NXP Semiconductor products,
For the DTS side, you can refer to the EVK reference.
For the IOMUX matrix, please install Config Tools:
Download latest exe.
Execute installer and CFG Tools for first time as admin. Make sure your device complies with:
The following lists the minimum system requirements to install and run the software:
– Microsoft Windows 10 (64-bit)
– Ubuntu 22.04 LTS
Note: Linux-hosted variants of tools are distributed on Linux as 64-bit binaries, which may not work on 32-bit systems.
– Supported desktop environments: GNOME
– Mac OS X (12.x)
Regards