2017-06-23 27 views
0

学習用にiioを使用せずにmcp3008ドライバを作成しています。 この段階では、ドライバのプローブを呼びたいと思っています。raspbery piのLinux 4.9デバイスツリーにSPIスレーブデバイスを追加

私が追加されているDTアーチ/腕/ブーツ/ DTS/bcm2708-RPI-b.dtsで私のコード

&spi0 { 
    pinctrl-names = "default"; 
    pinctrl-0 = <&spi0_pins &spi0_cs_pins>; 
    cs-gpios = <&gpio 8 1>, <&gpio 7 1>; 

    spidev0: [email protected]{ 
      compatible = "spidev"; 
      reg = <0>;  /* CE0 */ 
      #address-cells = <1>; 
      #size-cells = <0>; 
      spi-max-frequency = <500000>; 
    }; 

    spidev1: [email protected]{ 
      compatible = "spidev"; 
      reg = <1>;  /* CE1 */ 
      #address-cells = <1>; 
      #size-cells = <0>; 
      spi-max-frequency = <500000>; 
    }; 

    /* new device for mcp3008 */ 
    aartyaa_3008{ 
      compatible = "aartyaa_mcp3008"; 
      reg = <0>; 
      #address-cells = <1>; 
      #size-cells = <0>; 
      spi-max-frequency = <1600000>; 
    }; 
}; 

、それができない

static int mcp3008_probe(struct spi_device *spi) 
{ 
    int ret = 0; 
    struct mcp3008 *mcp = NULL; 
    const struct mcp3008_chip_info *chip_info; 

    dev_dbg(&spi->dev, "aaartyaa came in probe, master dev = %s\n", 
        dev_name(&spi->master->dev)); 

    . 
    . 
    . 
    . 

} 

static const struct of_device_id mcp3008_of_ids[] = { 
    { 
      .compatible = "aartyaa_mcp3008", 
    }, 

    { }, 
}; 

MODULE_DEVICE_TABLE(of, mcp3008_of_ids); 

static const struct spi_device_id mcp3008_ids[] = { 
    {"aartyaa_mcp3008", MCP3008}, 
    {}, 
}; 

MODULE_DEVICE_TABLE(spi, mcp3008_ids); 

static struct spi_driver mcp3008_driver = { 
    .driver = { 
      .name = "aartyaa_mcp3008", 
      .of_match_table = of_match_ptr(mcp3008_of_ids), 
    }, 
    .id_table = mcp3008_ids, 
    .probe = mcp3008_probe, 
    //.remove = devm_mcp3008_device_release, 
}; 

module_spi_driver(mcp3008_driver); 

ように私のドライバのコードを探しますSPIデバイスを登録して作成する のdmesg =>

[ 213.352758] spi-bcm2835 20204000.spi: chipselect 0 already in use 
[ 213.352781] spi_master spi0: spi_device register error /soc/[email protected]/aartyaa_3008 
[ 213.352799] spi_master spi0: Failed to create SPI device for /soc/[email protected]/aartyaa_3008 

spi_bcm2835とspi_bcm2835auxを添加しますシステムに。 私が気づいたように、モジュールは/ sys/bus/spi/driversに挿入された後で追加されます。 一致するデバイスが見つからないため、プローブが呼び出されません。

ドライバのプローブが呼び出される方法

、そしてどのようにデバイスツリー

任意の助けが理解されるであろう

と感謝でSPIデバイスを追加します。

+1

3つのSPIスレーブにアクセスする場合でも、SPIマスタにはチップセレクト用に2つのピンしか定義されていません。 – sawdust

+1

spi1には3つのCEピンがあります。または、spi0を使用してspidevデバイスの1つを無効にして、デバイスのCEピンを盗むことができます。 40ウェイヘッダーでどのピンを使用しているかによって異なります。基本DTファイルを変更するのではなく、DTオーバーレイを使用する方がよいでしょう。 –

答えて

0

入力いただきありがとうございます。 今のところ私はspi0デバイスを新しいものに置き換えました。 ドライバプローブが呼び出されています

関連する問題