spidev
ロード時に2回追加される次のデバイスツリーオーバーレイフラグメントがあります。
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";
};
};
};
};
- 最初の通路
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
- それからまた合格
of_overlay_create -> ... -> notifier_call_chain -> of_spi_notify -> of_register_spi_device -> spi_add_device
最初は正しくロードされ、/dev/spidev2.0
使用可能で、うまく機能しますが、2番目の呼び出しでは見苦しいエラーが発生します。
[ 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?