장치 트리 오버레이 파일(dtbo)을 사용하여 i2c-2 노드의 하드웨어 참조를 장치 트리에 추가합니다. 이 장치는 가속도계이며 여기에서 찾을 수 있는 기존 드라이버를 구현합니다.https://elixir.bootlin.com/linux/v4.19.94/source/drivers/iio/accel/mma8452.c
내 장치가 iio:device0
/dev 디렉터리에 나타납니다.
debian@beaglebone:/dev$ ls
accel log spi tty27 tty53 urandom
apm_bios loop-control spidev1.0 tty28 tty54 vcs
autofs mapper spidev1.1 tty29 tty55 vcs1
block mem spidev2.0 tty3 tty56 vcs2
btrfs-control memory_bandwidth spidev2.1 tty30 tty57 vcs3
bus mmcblk0 stderr tty31 tty58 vcs4
char mmcblk0p1 stdin tty32 tty59 vcs5
console mmcblk1 stdout tty33 tty6 vcs6
cpu_dma_latency mmcblk1boot0 tty tty34 tty60 vcsa
cuse mmcblk1boot1 tty0 tty35 tty61 vcsa1
disk mmcblk1p1 tty1 tty36 tty62 vcsa2
dri mmcblk1rpmb tty10 tty37 tty63 vcsa3
fb0 mqueue tty11 tty38 tty7 vcsa4
fd net tty12 tty39 tty8 vcsa5
full network_latency tty13 tty4 tty9 vcsa6
fuse network_throughput tty14 tty40 ttyGS0 vcsu
gpiochip0 null tty15 tty41 ttyO0 vcsu1
gpiochip1 ppp tty16 tty42 ttyO1 vcsu2
gpiochip2 ptmx tty17 tty43 ttyO2 vcsu3
gpiochip3 pts tty18 tty44 ttyO4 vcsu4
hwrng pwm tty19 tty45 ttyO5 vcsu5
i2c-0 random tty2 tty46 ttyS0 vcsu6
i2c-1 remoteproc tty20 tty47 ttyS1 vhci
i2c-2 rfkill tty21 tty48 ttyS2 watchdog
iio:device0 rtc tty22 tty49 ttyS4 watchdog0
initctl rtc0 tty23 tty5 ttyS5 watchdog1
input shm tty24 tty50 ubi_ctrl zero
ion snapshot tty25 tty51 uhid
kmsg snd tty26 tty52 uinput
내 장치는 다음에서도 볼 수 있습니다.
debian@beaglebone:/sys/class/i2c-dev/i2c-2/subsystem/i2c-2/device/2-001c$ ls
driver modalias of_node subsystem uevent
iio:device0 name power trigger0
여기에서 장치 이름 지정에 대한 특정 정보를 볼 수 있습니다.
debian@beaglebone:/sys/class/i2c-dev/i2c-2/subsystem/i2c-2/device/2-001c/iio:device0$ cat uevent
MAJOR=248
MINOR=0
DEVNAME=iio:device0
DEVTYPE=iio_device
OF_NAME=accelerometer
OF_FULLNAME=/ocp/i2c@4819c000/accelerometer@1C
OF_COMPATIBLE_0=fsl,mma8451
OF_COMPATIBLE_N=1
내 질문은 이 장치의 이름이 어디서 유래되었느냐는 것입니다 iio:device0
.지정하지 않았기 때문에 그냥 기본 이름인 것 같아요.따라서 내 질문은 다음과 같습니다. 장치 트리에서 내 장치에 이름을 어떻게 할당합니까? 어떻게든 DEVNAME을 변경하고 싶은 것 같습니다.
다음과 같이 dtbo 파일에서 이 이름에 대한 이유를 찾을 수 없습니다.
/*
* MIRA custom cape device tree overlay
* Supports MMA8451Q Accelerometer
*/
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/irq.h>
/ {
/*
* Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
*/
fragment@0 {
target-path="/";
__overlay__ {
chosen {
overlays {
MIRA_EXTENSIONS = __TIMESTAMP__;
};
};
};
};
fragment@1 {
target = <&i2c2>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
accelerometer@1C {
compatible = "fsl,mma8451";
reg = <0x1C>;
interrupt-parent = <&gpio1>;
interrupts = <16 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "INT1";
};
};
};
};