特定のドライバをそのチップセレクトのデバイスにバインドできるように、特定のチップセレクトからSPIDEVのバインドを解除しようとしています(SPIDEVを完全にrmmodingせずに)。
カスタムデバイスツリー(+ Renesas DTオーバーライドconfigfsパッチ)を使用してメインラインカーネルを起動するAM335Xプロセッサを搭載したマザーボードがあります。
一部のユーザー空間SPIドライバを実行できるようにカーネルにSPIDEVが組み込まれていますが、バスの他の一部のデバイスにはカーネルドライバを使用したいと思います。
ハードウェア構成を確認するためにBeaglebone Greenをテストしています。
バスの一部のチップ選択にはSPIDEVを使用し、他のチップ選択にはカーネルドライバを使用できますか?
デバイスツリーオーバーレイを介してSPIDEVバインディングを無効にする方法は?
私は最終的にカスタムボードに移動する前に、より安価なBeaglebone Greenでハードウェア構成をテストしてきました。
私のデフォルトのデバイスツリーは、SPIノードを次のように定義します。 [am33xx-bone/bonegreen dtsを含めた後に適用]
&spi1 {
status = "okay";
channel@0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "ti,omap24xx-spi";
reg = <0>;
spi-max-frequency = <16000000>;
spi-cpha;
};
channel@1 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "ti,omap24xx-spi";
reg = <1>;
spi-max-frequency = <16000000>;
};
};
私は現在、テストに次のDTカバレッジを使用してAdafruit BMP280ボードを使用しています。
/dts-v1/;
/plugin/;
/ {
compatible = "ti,am335x-bone-green", "ti,am335x-bone", "ti,am33xx";
fragment@0 {
target-path = "/ocp/spi0/channel@0";
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
};
fragment@1 {
target = <&spi0>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
bmp280_spi: bmp280@0 {
compatible = "bosch,bmp280", "bosch,bme280";
reg = <0>;
spi-max-frequency = <500000>;
default-oversampling = <1>;
status = "okay";
};
};
};
};
spi0
また、チャネル@0`を見つけて上書きしようとしましたが、どちらの/delete-node/' for
場合も、上書きを適用しようとすると、SPIドライバはチップ選択の競合について不平を言います。これは、チップ選択でSPIDEVが正しくバインド解除されていないことを示します。
間違ったサイトならすみません。しかし、デバイスツリーはOS /プラットフォームに拘束されていないので、これが最高の場所のようです。