2016-12-27 202 views
1

我的i2c clock-frequency值來自BIOS。i2c時鐘頻率值如何從BIOS傳遞到驅動程序?

我已提取的DSDTi2c clock-frequency字段如下:

  Device (I2C1) 
     { 
      Name (_ADR, 0x00160001) // _ADR: Address 
      Name (_DDN, "Intel(R) I2C Controller #1") // _DDN: DOS Device Name 
      Name (_UID, 0x02) // _UID: Unique ID 
      Name (LINK, "\\_SB.PCI0.I2C1") 
      Name (RBUF, ResourceTemplate() 
      { 
      }) 
      Name (_DSD, Package (0x02) 
      { 
       Buffer (0x10) 
       { 
        /* 0000 */ 0x14, 0xD8, 0xFF, 0xDA, 0xBA, 0x6E, 0x8C, 0x4D, 
        /* 0008 */ 0x8A, 0x91, 0xBC, 0x9B, 0xBF, 0x4A, 0xA3, 0x01 
       }, 

       Package (0x01) 
       { 
        Package (0x02) 
        { 
         "clock-frequency", 
         IC1S 
        } 
       } 
      }) 

但有不同的模式,如400K沒有提及I2C時鐘頻率值的,1M等哪裏這些值定義?它是如何從BIOS傳遞到驅動程序的?

+0

模式由連接到主機** **從屬設備來限定。這就是爲什麼上述_DSD感覺不對。否則,I2C時鐘被定義爲連接最慢的設備。看到這裏http://www.spinics.net/lists/linux-i2c/msg24857.html一些細節 – 0andriy

+0

我有這些'I2C-時鐘frequency'值已經在BIOS源代碼中定義的強烈的感覺。因爲自從我們在'BIOS'的選項,選擇'標準模式(100K)','快速模式(400K)','快速加(1M)'&'高速(3.4M)',這些值應該是匹配BIOS源代碼中的某處。內核API'device_property_read_u32(pdev-> dev的, 「時鐘頻率」, &的dev-> clk_freq);''的 「時鐘頻率」''propname'字段匹配在'ACPI'&取入'的I2C時鐘 - 來自ACPI對象的頻率值。 –

+0

等一下,我們在野外討論**現有的** BIOS嗎?! – 0andriy

回答

0

這些i2c-clock-frequency值已在BIOS source code(明顯地)被定義。因爲自從我們在BIOS的選項選擇Standard Mode (100k), Fast Mode (400k), Fast Plus (1M) & High Speed (3.4M),這些數值應在某處的BIOS源代碼相匹配。內核API

`device_property_read_u32(&pdev->dev, "clock-frequency", &dev->clk_freq);` 

"clock-frequency" propname場比賽中ACPI &取出由ACPI objecti2c-clock-frequency值。

相關問題