0
我正在寫mcp3008驅動程序而不使用iio進行學習。 在這個階段,我想要調用驅動程序的探測器。在Linux 4.9設備樹中添加SPI slave設備rapbery pi
我已經附加我在DT弓/ ARM /開機/ 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中。 探針未被調用,因爲找不到匹配設備。
驅動程序的probe是如何調用,以及如何添加SPI設備在設備樹
任何幫助將受到讚賞和感謝。
即使您想訪問三個SPI從機,您的SPI主機也只有兩個爲芯片選擇定義的引腳。 – sawdust
spi1有3個CE引腳。或者您可以使用spi0並禁用其中一個spidev設備來竊取您的設備的CE引腳。它取決於您在40路接頭上使用哪個引腳。最好使用DT覆蓋而不是修改基本DT文件。 –