首先爲什麼是否需要將SPI設備節點暴露給用戶空間?
我能想象兩種可能:
- 您正在創建將使用用戶空間的驅動程序
- 您與不同的設備試驗(即顯然沒有內核空間的驅動程序尚)
物聯網軟件
在任何情況下:
根據馬rk Brown(內核中SPI子系統的維護者):
spidev不應該直接出現在ACPI或DT中,因爲我們關於控制硬件的最佳方法的想法可能會改變。
查看完整的discussion的詳細信息。
不過馬克用於支持在ACPI特殊SPI節點暴露spidev您可以使用
由於固件是很難改變對市場上現有的主板,您需要升級ACPI表中OS。目前一些工程師正在研究如何使這件事更容易的機制。現在你可以嘗試最新的香草核心。讓我們說V4.8-RC3爲寫這篇文章,並採取其中的一部分以使SPI設備(這只是一個例子,你需要調整它對於正在使用的硬件):
>
/*
* Intel Joule
*
* This adds an SPI test device to the SPI host controller available on
* Intel Joule breakout #1 header:
*
* pin name pin number
* -----------------------------
* SPI_1_MISO_LS 2
* SPI_1_MOSI_LS 4
* SPI_1_FS2_LS 8
* SPI_1_CLK_LS 10
*
* In Linux you need to set CONFIG_SPI_SPIDEV=y (or m) to be able to use
* this device.
*/
DefinitionBlock ("spidev.aml", "SSDT", 5, "INTEL", "SPIDEV", 1)
{
External (_SB_.PCI0.SPI2, DeviceObj)
Scope (\_SB.PCI0.SPI2)
{
Device (TP0) {
Name (_HID, "SPT0001")
Name (_DDN, "SPI test device connected to CS2")
Name (_CRS, ResourceTemplate() {
SpiSerialBus (
2, // Chip select
PolarityLow, // Chip select is active low
FourWireMode, // Full duplex
8, // Bits per word is 8 (byte)
ControllerInitiated, // Don't care
1000000, // 1 MHz
ClockPolarityLow, // SPI mode 0
ClockPhaseFirst, // SPI mode 0
"\\_SB.PCI0.SPI2", // SPI host controller
0 // Must be 0
)
})
}
}
}
既然你沒有指出確切的規格,你可能需要做一個額外的工作。對於較舊的Atom,vanilla Linux內核缺少一個補丁到propagate ACPI handle to the platform driver。
請詳細說明使用什麼板的確切的規格。 – 0andriy
@Andy:添加板規格 – jackhab
嗯......沒有看到任何東西,除了名稱。我們都可以谷歌嗎? – 0andriy