Драйвер ISP Allwinner от Bootlin, как задать дерево устройств
Сейчас так (убраны все поля кроме эндпойнтов для наглядности)
&i2c1 {
gc0403: camera@3c {
compatible = "galaxycore,gc0403";
reg = <0x3c>;
port {
gc0403_ep: endpoint {
remote-endpoint = <&csi1_in_ep>;
bus-type = <5>;
};
};
};
};
&csi1 {
ports {
port@0 {
reg = <0>;
csi1_in_ep: endpoint {
remote-endpoint = <&gc0403_ep>;
bus-type = <5>;
};
};
port@1{
reg = <1>;
};
port@2 {
reg = <2>;
csi1_out_ep: endpoint {
remote-endpoint = <&isp_in>;
};
};
};
};
&isp {
ports {
port@0 {
reg = <0>;
};
port@1 {
reg = <1>;
isp_in: endpoint {
remote-endpoint = <&csi1_out_ep>;
};
};
};
};
Вопрос в том что если не включать сборку ISP то все нормально, появляется медиа устройство камера и можно осуществить захват, пример:
# media-ctl -p
Media controller API version 6.4.16
Media device information
------------------------
driver sun6i-csi
model Allwinner A31 CSI Device
serial
bus info platform:1cb4000.camera
hw revision 0x0
driver version 6.4.16
Device topology
- entity 1: sun6i-csi-bridge (2 pads, 2 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
pad0: Sink
[fmt:unknown/0x0]
<- "m00_f_gc0403 1-003c":0 [ENABLED]
pad1: Source
[fmt:unknown/0x0]
-> "sun6i-csi-capture":0 [ENABLED,IMMUTABLE]
- entity 4: m00_f_gc0403 1-003c (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev1
pad0: Source
[fmt:SRGGB10_1X10/768x576@10000/300000 field:none]
-> "sun6i-csi-bridge":0 [ENABLED]
- entity 12: sun6i-csi-capture (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video0
pad0: Sink
<- "sun6i-csi-bridge":1 [ENABLED,IMMUTABLE]
Если же включить драйвер ISP камера исчезает
# media-ctl -p
Media controller API version 6.4.16
Media device information
------------------------
driver sun6i-isp
model Allwinner A31 ISP Device
serial
bus info platform:1cb8000.isp
hw revision 0x0
driver version 6.4.16
Device topology
- entity 1: sun6i-isp-proc (3 pads, 3 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
pad0: Sink
[fmt:unknown/0x0]
<- "sun6i-csi-bridge":1 [ENABLED]
pad1: Sink
[fmt:unknown/0x0]
<- "sun6i-isp-params":0 [ENABLED,IMMUTABLE]
pad2: Source
[fmt:unknown/0x0]
-> "sun6i-isp-capture":0 [ENABLED,IMMUTABLE]
- entity 5: sun6i-isp-capture (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video0
pad0: Sink
<- "sun6i-isp-proc":2 [ENABLED,IMMUTABLE]
- entity 11: sun6i-isp-params (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video1
pad0: Source
-> "sun6i-isp-proc":1 [ENABLED,IMMUTABLE]
- entity 17: sun6i-csi-bridge (2 pads, 1 link)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev1
pad0: Sink
[fmt:unknown/0x0]
pad1: Source
[fmt:unknown/0x0]
-> "sun6i-isp-proc":0 [ENABLED]
Linux 6.4.17, драйвер камеры был для Linux 3.4, модифицировал минимально, захват с камеры на Linux 5.4.180 например вообще без вопросов ( ну разве что с разрядностью данных еще не разобрался).
Почему не работает драйвер ISP? Нужно ли в дереве устройств еще какое то описание - например csi-capture?