Linux API/linux
linux device tree(dtb) 문법...?
구차니
2024. 12. 4. 14:18
고통 받고 있는 ptn5110에 대해서 검색하는데
리눅스 소스상에 dtb로만 존재해서 문법을 찾아보는 중.
봐야할 부분은 source-pdos의 <PDO_FIXED()>; 인데
ptn5110: tcpc@50 {
compatible = "nxp,ptn5110", "tcpci";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_typec>;
reg = <0x50>;
interrupt-parent = <&lsio_gpio1>;
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
usb_con1: connector {
compatible = "usb-c-connector";
label = "USB-C";
power-role = "source";
data-role = "dual";
source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
typec_dr_sw: endpoint {
remote-endpoint = <&usb3_drd_sw>;
};
};
port@1 {
reg = <1>;
typec_con_ss: endpoint {
remote-endpoint = <&usb3_data_ss>;
};
};
};
};
};
<> 는 cell 이라고 부르고
[링크 : https://kernel.bz/boardPost/118684/3]
unsigned int로 된 배열인것 같은데
|
[링크 : https://jung-max.github.io/2019/10/22/Device_Tree_문법/]
도대체 저 매크로는 어떻게 dtb에서 인식을 하고 쓰는거지? 하고 찾아보니
아래의 경로에서 dt-bindings 라는 곳에서 정의가 되어있었다.
linux-master/scripts/dtc/include-prefixes/dt-bindings/usb |
선언을 하도 여러군데서 하다보니 일반소스에서만 선언된 줄 알았는데..
#define PDO_FIXED(mv, ma, flags) \
(PDO_TYPE(PDO_TYPE_FIXED) | (flags) | \
PDO_FIXED_VOLT(mv) | PDO_FIXED_CURR(ma))
|
device tress binding 이라는 녀석이 또 추가 되었나 보다..
[링크 : https://docs.zephyrproject.org/latest/build/dts/bindings.html]