Синтаксис Device Tree
Имеется следующий dtsi файл
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/sun8i-v3s-ccu.h>
#include <dt-bindings/clock/sun8i-de2.h>
#include <dt-bindings/reset/sun8i-v3s-ccu.h>
pio: pinctrl@1c20800 {
compatible = "allwinner,sun8i-v3s-pinctrl";
reg = <0x01c20800 0x400>;
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>;
clock-names = "apb", "hosc", "losc";
gpio-controller;
#gpio-cells = <3>;
interrupt-controller;
#interrupt-cells = <3>;
i2c1_pe_pins: i2c1-pe-pins {
pins = "PE21", "PE22";
function = "i2c1";
};
csi1_8bit_pins: csi1-8bit-pins {
pins = "PE0", "PE2", "PE3", "PE8", "PE9",
"PE10", "PE11", "PE12", "PE13", "PE14",
"PE15";
function = "csi";
};
csi1_mclk_pin: csi1-mclk-pin {
pins = "PE1";
function = "csi";
};
uart0_pb_pins: uart0-pb-pins {
pins = "PB8", "PB9";
function = "uart0";
};
В каком месте происходит связка что PE0 это PCLK для подключенной камеры, а PB8 превращается в TX for UART?
Что значит свойство function ="csi"? Почему csi1_mclk_pin выделен отдельно?
Этот файл включен в конечный dts файл и там уже такая магия
&csi1 {
pinctrl-names = "default";
pinctrl-0 = <&csi1_8bit_pins>;
status = "okay";
port {
#address-cells = <1>;
#size-cells = <0>;
csi1_ep: endpoint {
remote-endpoint = <&gc0403_ep>;
bus-width = <8>;
hsync-active = <1>;
vsync-active = <0>;
data-active = <1>;
pclk-sample = <1>;
};
};
};
&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&i2c1_pe_pins>;
status = "okay";
gc0403: camera@78 {
compatible = "galaxycore,gc0403";
reg = <0x78>;
pinctrl-names = "default";
pinctrl-0 = <&csi1_mclk_pin>;
clocks = <&ccu CLK_CSI1_MCLK>;
clock-names = "xvclk";
port {mm
gc0403_ep: endpoint {
remote-endpoint = <&csi1_ep>;
bus-width = <8>;
hsync-active = <1>;
vsync-active = <0>;
data-active = <1>;
pclk-sample = <1>;
};
};
};
Почему csi1_mclk_pin выделен в отдельное свойство да еще и с таким странным именем pinctrl-0?
Правильно ли я понимаю что в ноде i2c1 свойство reg это адрес на i2c шине?