Hello,
I am working with the i.MX93 to read a camera using the AP1302 ISP and the AR1335 sensor. I am using the imx-image-core, and here is my device tree:
ap1302: ap1302_mipi@3c {
compatible = "onsemi,ap1302";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x3c>;
reset-gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
standby-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
clocks = <&ap1302_clk>;
DVDD-supply = <®_dvdd_1v2>;
VDDIO-supply = <®_vddio_1v8>;
AVDD-supply = <®_avdd_2v8>;
status = "okay";
sensors {
#address-cells = <1>;
#size-cells = <0>;
onnn,model = "onnn,ar1335";
sensor,resolution = <3840 2160>;
sensor,format = <0x300a>; // MEDIA_BUS_FMT_SGRBG10_1X10
sensor@0 {
reg = <0>;
status = "okay";
sip = <0xf36c>;
vdd-supply = <®_dvdd_1v2>;
vddio-supply = <®_dvdd_1v2>;
vaa-supply = <®_avdd_2v8>;
};
};
ports {
reg = <0>;
port@0 {
ar1335_mipi_ep: endpoint {
remote-endpoint = <&mipi_csi_ep>;
data-lanes = <1 2 3 4>;
};
};
};
};
&cameradev {
status = "okay";
};
&isi_0 {
status = "okay";
cap_device {
status = "okay";
};
};
&mipi_csi {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
port@0 {
reg = <0>;
mipi_csi_ep: endpoint {
remote-endpoint = <&ar1335_mipi_ep>;
data-lanes = <1 2 3 4>;
};
};
};
cameradev: camera {
compatible = "fsl,mxc-md", "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges;
status = "disabled";
isi_0: isi@4ae40000{
compatible = "fsl,imx93-isi", "fsl,imx8-isi";
reg = <0x4ae40000 0x10000>;
interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX93_CLK_ISI_GATE>,
<&clk IMX93_CLK_MEDIA_AXI>;
clock-names = "per", "axi";
assigned-clocks = <&clk IMX93_CLK_MEDIA_AXI>,
<&clk IMX93_CLK_MEDIA_APB>;
assigned-clock-parents = <&clk IMX93_CLK_SYS_PLL_PFD1>,
<&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>;
assigned-clock-rates = <400000000>, <133333333>;
interface = <2 0 2>;
no-reset-control;
power-domains = <&media_blk_ctrl IMX93_MEDIABLK_PD_ISI>;
gasket = <&media_blk_ctrl>;
status = "disabled";
cap_device {
compatible = "imx-isi-capture";
status = "disabled";
};
};
mipi_csi: csi@4ae00000 {
compatible = "fsl,dwc-mipi-csi2-host";
reg = <0x4ae00000 0x10000>;
interrupts = <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX93_CLK_MIPI_CSI_GATE>,
<&clk IMX93_CLK_CAM_PIX>,
<&clk IMX93_CLK_MIPI_PHY_CFG>;
clock-names = "clk_core", "clk_pixel", "phy_cfg";
assigned-clocks = <&clk IMX93_CLK_CAM_PIX>,
<&clk IMX93_CLK_MIPI_PHY_CFG>;
assigned-clock-parents = <&clk IMX93_CLK_VIDEO_PLL>,
<&clk IMX93_CLK_24M>;
assigned-clock-rates = <140000000>, <24000000>;
gasket = <&media_blk_ctrl>;
power-domains = <&media_blk_ctrl IMX93_MEDIABLK_PD_MIPI_CSI>;
status = "disabled";
};
parallel_csi: pcsi@4ac10070 {
compatible = "fsl,imx93-parallel-csi";
reg = <0x4ac10070 0x10>;
clocks = <&clk IMX93_CLK_MIPI_CSI_GATE>,
<&clk IMX93_CLK_MEDIA_APB>;
clock-names = "pixel", "ipg";
assigned-clocks = <&clk IMX93_CLK_CAM_PIX>;
assigned-clock-parents = <&clk IMX93_CLK_VIDEO_PLL>;
assigned-clock-rates = <140000000>;
pi_gpr = <&media_blk_ctrl>;
power-domains = <&media_blk_ctrl IMX93_MEDIABLK_PD_MIPI_CSI>;
status = "disabled";
};
};
Here is my log:
root@imx93evk:~# dmesg | grep -E 'ap1302|mx8-img-md'
[ 1.933992] ap1302_mipi 2-003c: AP1302 Chip ID is 0x265
[ 1.939282] ap1302_mipi 2-003c: Direct firmware load for imx/camera/ap1302.fw failed with error -2 [ 1.941955] ap1302_mipi 2-003c: AP1302 is found
[ 1.948287] ap1302_mipi 2-003c: Falling back to sysfs fallback for: imx/camera/ap1302.fw
[ 1.992892] mx8-img-md: Registered mxc_isi.0.capture as /dev/video0
[ 2.077440] mx8-img-md: Registered mxc_isi.0.capture as /dev/video0 [ 2.083876] mxc-md 42800000.bus:camera: Entity type for entity ap1302_mipi 2-003c was not initialized!
[ 2.098878] mx8-img-md: Registered sensor subdevice: ap1302_mipi 2-003c (1)
[ 2.112324] mx8-img-md: created link [mxc_isi.0] => [mxc_isi.0.capture]
[ 2.118959] mx8-img-md: created link [mxc-mipi-csi2.0] => [mxc_isi.0]
[ 2.125397] mx8-img-md: created link [ap1302_mipi 2-003c] => [mxc-mipi-csi2.0]
[ 8.726263] ap1302_mipi 2-003c: Load firmware successfully.
However, when I run the command:
gst-launch-1.0 -v v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720,framerate=15/1 ! videoconvert ! pngenc snapshot=true ! filesink location=TestPNG.png
The result is that the file TestPNG.png has no data.
Please help me resolve this issue.
what board do you use? nxp board or your own board? did you try the demo images?
Our company's board design is based on the I.MX93-EVK kit to use imx-image-core. Below are the adjustments I made in the project:
where did you get the firmware for your ap1302+ar1335? did you use "ap1302_60fps_ar0144_27M_2Lane_awb_tuning.bin"?