장치 트리 오버레이 조각 알림 및 하위 항목 두 번 로드

장치 트리 오버레이 조각 알림 및 하위 항목 두 번 로드

spidev로드할 때 두 번 추가되는 다음 장치 트리 오버레이 조각이 있습니다 .

fragment@0 {
    target = <&fpga>;
    __overlay__ {
        #address-cells = <1>;
        #size-cells = <1>;

        spi2@600 {
            status = "okay";
            compatible = "opencores,spiocv2";
            #address-cells = <1>;
            #size-cells = <0>;
            reg = <0 0x800>;
            cell-index = <2>; // bus number

            spidev0 {
                 spi-max-frequency = <25000000>;
                 reg = <0>;
                 compatible = "spidev";
            };
        };
    };
};
  1. 첫 번째 통로of_overlay_create -> ... -> notifier_call_chain -> of_platform_notify -> ... -> device_attach -> ... -> spioc_driver_probe -> spi_register_master -> of_register_spi_devices -> of_register_spi_device -> spi_add_device
  2. 그럼 또 합격of_overlay_create -> ... -> notifier_call_chain -> of_spi_notify -> of_register_spi_device -> spi_add_device

처음에는 올바르게 로드되고 /dev/spidev2.0사용 가능하며 잘 작동하지만 두 번째 호출에서는 보기 흉한 오류가 발생합니다.

[    1.814623] opencores_spi 13e0000f3300000.spi2: chipselect 0 already in use
[    1.836491] spi_master spi2: spi_device register error /fpga/spi2@600/spidev0
[    1.857652] of_spi_notify: failed to create for '/fpga/spi2@600/spidev0'
[    1.877495] __of_changeset_entry_notify: notifier error @/fpga/spi2@600/spidev0

중복 로딩을 방지하는 깨끗하고 올바른 방법은 무엇입니까? 또는 알리미가 플랫폼에 알리는 것을 중지하는 방법그리고SPI?

관련 정보