HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施
背景技術(shù):諸如移動電話、媒體播放器和平板電腦的消費(fèi)者設(shè)備通常支持用于在內(nèi)部通過諸如內(nèi)部集成電路(I2C雙線接口總線)和/或串行外圍接口(SPI)總線的簡單外圍總線(SPB)外圍進(jìn)行連接的設(shè)備的平臺。然而,這些簡單外圍總線并沒有針對運(yùn)行內(nèi)部、外部和/或嵌入式設(shè)備而定義標(biāo)準(zhǔn),上述設(shè)備諸如觸摸屏顯示器、鍵盤、鼠標(biāo)輸入設(shè)備、傳感器、加速計(jì)和其它人機(jī)接口設(shè)備(HID)類的設(shè)備。由于這些類別的設(shè)備并沒有用來通過簡單外圍總線進(jìn)行通信的標(biāo)準(zhǔn)協(xié)議,所以這些設(shè)備的制造商通常為該設(shè)備提供專用驅(qū)動器。消費(fèi)者系統(tǒng)可能包括來自若干不同的第三方制造商和硬件提供商的內(nèi)部連接設(shè)備,并且相對應(yīng)的驅(qū)動器具有不同接口,這可以造成系統(tǒng)集成挑戰(zhàn)、帶來系統(tǒng)質(zhì)量缺陷和穩(wěn)定性的問題,和/或限制執(zhí)行統(tǒng)一系統(tǒng)驅(qū)動器更新和驅(qū)動器驗(yàn)證的能力。消費(fèi)者系統(tǒng)可能包括多種不同的專用供應(yīng)商驅(qū)動器,其中的許多將是內(nèi)核驅(qū)動器,這通常將必須利用片上系統(tǒng)(SoC)I2C芯片驅(qū)動器來通過標(biāo)識(logo)和驗(yàn)證。
技術(shù)實(shí)現(xiàn)要素:該發(fā)明內(nèi)容介紹了針對HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的簡化概念,并且該概念在下文中在具體實(shí)施方式中進(jìn)一步進(jìn)行描述和/或在附圖中示出。該發(fā)明內(nèi)容并不應(yīng)當(dāng)被認(rèn)為是描述了所請求保護(hù)主題的必要特征,也并非被用來確定或限制所請求保護(hù)主題的范圍。描述了針對HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例。在實(shí)施例中,計(jì)算系統(tǒng)包括人機(jī)接口設(shè)備(HID)軟件棧,其實(shí)施諸如用于嵌入式設(shè)備的設(shè)備軟件,該設(shè)備軟件將通過I2C經(jīng)由HID將該計(jì)算系統(tǒng)對接至外圍設(shè)備。HIDI2C驅(qū)動器將該HID軟件棧與外圍設(shè)備進(jìn)行對接,該外圍設(shè)備均包括到設(shè)備的HIDI2C接口,其經(jīng)由I2C數(shù)據(jù)總線在該計(jì)算系統(tǒng)中傳輸數(shù)據(jù)。該HIDI2C驅(qū)動器與I2C控制器驅(qū)動器以及可選地該設(shè)備的GPIO控制器驅(qū)動器兼容并對接,其中該I2C控制器驅(qū)動器和GPIO控制器驅(qū)動器均可具有不同的實(shí)施配置來支持不同I2C控制器硬件。在其它實(shí)施例中,該HIDI2C驅(qū)動器減少內(nèi)核模式到用戶模式事務(wù)以便在該計(jì)算系統(tǒng)的操作系統(tǒng)中進(jìn)行性能和功率優(yōu)化。該HIDI2C驅(qū)動器可以針對快速讀取事務(wù)進(jìn)行實(shí)施,因?yàn)樵揌IDI2C驅(qū)動器執(zhí)行I2C設(shè)備上的地址的隱含數(shù)據(jù)讀取而無需在先的到設(shè)備的I2C寫入事務(wù)。該HIDI2C驅(qū)動器還針對單一事務(wù)數(shù)據(jù)讀取進(jìn)行實(shí)施,因?yàn)樵揌IDI2C驅(qū)動器針對每個(gè)數(shù)據(jù)讀取而從I2C數(shù)據(jù)總線上的相同地址進(jìn)行隱含數(shù)據(jù)讀取而無需在先的針對每個(gè)事務(wù)的數(shù)據(jù)寫入。在其它實(shí)施例中,該HIDI2C驅(qū)動器實(shí)施被動中斷處理,因?yàn)樵揌IDI2C驅(qū)動器在被中斷發(fā)起時(shí)讀取設(shè)備數(shù)據(jù)并且在軟件中卸掉(offload)中斷處理以對快速對中斷去優(yōu)先級(de-prioritize)。這允許操作系統(tǒng)繼續(xù)處理來自其它設(shè)備的高優(yōu)先級的請求而不被該特定設(shè)備所耽擱。該HIDI2C驅(qū)動器還實(shí)施被動中斷確認(rèn),因?yàn)樵揌IDI2C驅(qū)動器在被中斷發(fā)起時(shí)讀取設(shè)備數(shù)據(jù),隱含讀取的數(shù)據(jù)確認(rèn)該設(shè)備中斷。該HIDI2C驅(qū)動器還能夠在計(jì)算系統(tǒng)進(jìn)入較低功率狀態(tài)時(shí)和/或當(dāng)設(shè)備固件沒有在設(shè)備級別檢測到活動時(shí)發(fā)起將設(shè)備閑置為低功率狀態(tài)。此外,該HIDI2C驅(qū)動器被實(shí)施為針對中斷和設(shè)備喚醒事件采用共享或單一的輸入連接以便進(jìn)行管腳(pin)計(jì)數(shù)優(yōu)化。該HIDI2C驅(qū)動器還對在I2C數(shù)據(jù)總線上所檢測的錯(cuò)誤條件實(shí)施智能錯(cuò)誤處理和錯(cuò)誤校正。附圖說明參考以下附圖對HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例進(jìn)行描述。始終使用相同的附圖標(biāo)記來引用圖中所示的同樣特征和組件:圖1圖示了能夠在其中實(shí)施HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例的示例系統(tǒng)。圖2進(jìn)一步圖示了能夠在其中實(shí)施HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例的示例系統(tǒng)。圖3圖示了能夠在其中實(shí)施HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例的示例片上系統(tǒng)(SoC)。圖4圖示了依據(jù)一個(gè)或多個(gè)實(shí)施例的HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的(多種)示例方法。圖5圖示了能夠?qū)嵤〩IDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例的示例設(shè)備的各種組件。具體實(shí)施方式對HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例進(jìn)行了描述,其通過I2C規(guī)范而提供了標(biāo)準(zhǔn)化HID。HIDI2C驅(qū)動器通過I2C規(guī)范實(shí)施HID并且將簡單外圍總線(SPB)類擴(kuò)展與計(jì)算系統(tǒng)中的人機(jī)接口設(shè)備(HID)軟件棧進(jìn)行連接。該HIDI2C驅(qū)動器是在現(xiàn)有HID棧和I2C棧之間進(jìn)行對接的一類驅(qū)動器。計(jì)算系統(tǒng)的主機(jī)側(cè)包括HIDI2C驅(qū)動器和HID軟件棧,后者與計(jì)算設(shè)備的操作系統(tǒng)平臺中所實(shí)施的HIDI2C驅(qū)動器相關(guān)聯(lián)。該HIDI2C驅(qū)動器能夠在表現(xiàn)出符合操作系統(tǒng)SPB規(guī)范的I2C傳輸和通用輸入/輸出(GPIO)傳輸?shù)娜我庵鳈C(jī)上運(yùn)行(與其中驅(qū)動器需要以每個(gè)平臺為基礎(chǔ)進(jìn)行研發(fā)的常規(guī)平臺上有所不同)。在沒有SPB規(guī)范的情況下,仍然能夠開發(fā)HIDI2C類的驅(qū)動器,但是這將需要針對每種I2C實(shí)施進(jìn)行定制。在實(shí)施例中,HIDI2C驅(qū)動器是可調(diào)適的并且能夠利用來自各種提供商的多種不同的I2C控制器驅(qū)動器來實(shí)施。該HIDI2C驅(qū)動器還保持有與對接計(jì)算系統(tǒng)的設(shè)備的現(xiàn)有HID應(yīng)用的軟件兼容性。該HIDI2C驅(qū)動器還為了計(jì)算系統(tǒng)的操作系統(tǒng)的效率而實(shí)施HIDI2C驅(qū)動器的功率、性能和管腳計(jì)數(shù)的優(yōu)化。雖然HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的特征和概念能夠在任意數(shù)量的不同設(shè)備、系統(tǒng)、環(huán)境和/或配置中實(shí)施,但是HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例在以下示例設(shè)備、系統(tǒng)和方法的背景下進(jìn)行描述。圖1圖示了能夠在其中實(shí)施HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例的示例系統(tǒng)100。該系統(tǒng)包括計(jì)算系統(tǒng)102,其能夠以任意類型的計(jì)算設(shè)備來實(shí)施,諸如計(jì)算機(jī)、服務(wù)器、通信設(shè)備、便攜式設(shè)備、平板電腦、移動電話、導(dǎo)航設(shè)備、媒體播放器、游戲設(shè)備等。在實(shí)施例中,計(jì)算系統(tǒng)可以被實(shí)施為如參考圖3中所示的示例片上系統(tǒng)(SoC)系統(tǒng)而描述的SoC,以X86型PC來實(shí)施,或者被實(shí)施為任意其它類型的計(jì)算系統(tǒng)設(shè)計(jì)。包括計(jì)算系統(tǒng)102的計(jì)算設(shè)備可以利用各種組件來實(shí)施,諸如處理器和/或存儲器設(shè)備系統(tǒng),以及如參考圖5所示的示例設(shè)備所進(jìn)一步描述的任意數(shù)量和組合的不同組件。另外,計(jì)算系統(tǒng)能夠利用如參考圖3所示的示例SoC系統(tǒng)進(jìn)一步描述的附加組件來實(shí)施。計(jì)算系統(tǒng)102還被圖示為計(jì)算機(jī)芯片,其包括I2C數(shù)據(jù)總線104和外圍設(shè)備,該外圍設(shè)備由外圍設(shè)備106所表示,其連同擴(kuò)展性應(yīng)用110一起實(shí)施HIDI2C接口108。該HIDI2C接口能夠?qū)鞲衅?、嵌入式設(shè)備、內(nèi)部和/或外部設(shè)備(例如,人機(jī)交互設(shè)備(HID))和/或其它集成組件與計(jì)算系統(tǒng)進(jìn)行對接。該HIDI2C接口108和外圍設(shè)備106的擴(kuò)展性應(yīng)用110能夠被實(shí)施為計(jì)算機(jī)可執(zhí)行指令,諸如以固件實(shí)施??商鎿Q地或除此之外,該HIDI2C接口可以以硬件來實(shí)施。外圍設(shè)備的擴(kuò)展性應(yīng)用110可以被實(shí)施為經(jīng)由I2C數(shù)據(jù)總線104而將用于設(shè)備的專用功能和/或特征的擴(kuò)展性數(shù)據(jù)與計(jì)算系統(tǒng)102進(jìn)行對接。HIDI2C接口108建立了外圍設(shè)備可操作性標(biāo)準(zhǔn)。第三方的獨(dú)立硬件提供商能夠經(jīng)由外圍設(shè)備106的HIDI2C接口108對接內(nèi)部、外部或嵌入式設(shè)備,而且還經(jīng)由外圍設(shè)備的擴(kuò)展性應(yīng)用110區(qū)分并實(shí)施專用功能和/或特征。外圍設(shè)備106的HIDI2C接口108還被實(shí)施為指示(例如,識別、展現(xiàn)、轉(zhuǎn)化、枚舉等)內(nèi)部、外部和/或嵌入式設(shè)備或傳感器是針對計(jì)算系統(tǒng)102的HID兼容設(shè)備。外圍設(shè)備106還能夠確定設(shè)備和/或傳感器的配置(例如,根據(jù)數(shù)據(jù)結(jié)構(gòu)、報(bào)告描述符等),從計(jì)算系統(tǒng)102接收配置數(shù)據(jù)以配置設(shè)備或傳感器,和/或?qū)⑴渲脭?shù)據(jù)從計(jì)算系統(tǒng)傳輸至設(shè)備或傳感器。外圍設(shè)備106的示例包括能夠被實(shí)施為傳感器的外圍設(shè)備112,該傳感器諸如溫度、加速計(jì)、陀螺儀、指南針或其它類型的傳感器。外圍設(shè)備112的HIDI2C接口經(jīng)由I2C數(shù)據(jù)總線104而將外圍設(shè)備與計(jì)算系統(tǒng)102進(jìn)行對接。在其它實(shí)施方式中,外圍設(shè)備的HIDI2C接口108能夠被實(shí)施為經(jīng)由HID數(shù)據(jù)格式的I2C數(shù)據(jù)總線將外圍設(shè)備與計(jì)算系統(tǒng)102進(jìn)行對接,并且數(shù)據(jù)作為HID數(shù)據(jù)結(jié)構(gòu)經(jīng)由I2C數(shù)據(jù)總線進(jìn)行通信。外圍設(shè)備106的其它示例包括經(jīng)由I2C數(shù)據(jù)總線將諸如平板電腦觸摸屏顯示設(shè)備的觸摸板116與計(jì)算系統(tǒng)進(jìn)行對接的外圍設(shè)備114,在另一個(gè)示例中,外圍設(shè)備118經(jīng)由I2C數(shù)據(jù)總線將諸如鍵盤或鼠標(biāo)輸入設(shè)備之類的計(jì)算機(jī)輸入設(shè)備120與計(jì)算系統(tǒng)進(jìn)行對接。外圍設(shè)備118還可以經(jīng)由I2C數(shù)據(jù)總線將傳感器或其它集成設(shè)備(例如,內(nèi)部、外部或嵌入式設(shè)備)與計(jì)算系統(tǒng)102進(jìn)行對接。例如,外圍設(shè)備118可以被實(shí)施為通過HID數(shù)據(jù)形式的I2C接口橋接傳感器或設(shè)備輸出。設(shè)備制造商能夠?qū)嵤┰O(shè)備(例如,觸摸板、輸入設(shè)備、嵌入式設(shè)備、傳感器等)以通過HID展現(xiàn)其功能。例如,觸摸屏控制器能夠被實(shí)施為讀取原始觸摸傳感器數(shù)據(jù),該傳感器可以是模擬傳感器,并且生成被傳輸至計(jì)算系統(tǒng)的CPU的數(shù)字信號。這些類型的控制器能夠被更新以通過HID協(xié)議向CPU展現(xiàn)觸摸數(shù)據(jù)。在該示例中,計(jì)算系統(tǒng)102中的軟件棧包括傳感器棧122、輸入棧124和HID軟件棧126。該計(jì)算系統(tǒng)還包括HIDI2C驅(qū)動器128,其實(shí)施HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例,而且與I2C控制器驅(qū)動器130和通用輸入/輸出(GPIO)控制器驅(qū)動器132進(jìn)行對接。在實(shí)施中,外圍設(shè)備106的每個(gè)示例(例如,外圍設(shè)備112、114和118)包括HIDI2C接口108,并且關(guān)聯(lián)至I2C控制器的HIDI2C驅(qū)動器被實(shí)施為在外圍設(shè)備和HID軟件棧之間傳輸HID數(shù)據(jù)。在實(shí)施例中,HIDI2C驅(qū)動器128保持與HID軟件棧126中的設(shè)備應(yīng)用的軟件兼容性。HIDI2C驅(qū)動器128將HID軟件棧126與外圍設(shè)備(例如,外圍設(shè)備106)進(jìn)行對接,該外圍設(shè)備包括到設(shè)備的HIDI2C接口108,該設(shè)備經(jīng)由I2C數(shù)據(jù)總線104在計(jì)算系統(tǒng)中傳輸數(shù)據(jù)。該HIDI2C驅(qū)動器還將HID軟件棧126與設(shè)備的I2C控制器驅(qū)動器130和GPIO控制器驅(qū)動器132進(jìn)行對接。該HIDI2C驅(qū)動器還針對與I2C控制器驅(qū)動器130的兼容性而實(shí)施,該I2C控制器驅(qū)動器均具有不同實(shí)施配置以支持不同的I2C控制器硬件,諸如來自不同提供商的控制器驅(qū)動器。該HIDI2C驅(qū)動器128可針對多種不同專用的、第三方控制器進(jìn)行調(diào)適,并且在實(shí)施中,可以經(jīng)由API輸入進(jìn)行調(diào)適或者包括可編程注冊表。在實(shí)施例中,HIDI2C驅(qū)動器128被實(shí)施為減少內(nèi)核模式到用戶模式的事務(wù)以便進(jìn)行內(nèi)核模式功率優(yōu)化,這已經(jīng)存在于操作系統(tǒng)的內(nèi)核模式之中。HIDI2C驅(qū)動器還被實(shí)施用于快速讀取事務(wù),因?yàn)樵揌IDI2C驅(qū)動器對I2C設(shè)備上的地址執(zhí)行隱含數(shù)據(jù)讀取而無需在先的到I2C設(shè)備的I2C寫入事務(wù)。例如,不同于數(shù)據(jù)總線上常規(guī)的數(shù)據(jù)寫入以及隨后進(jìn)行數(shù)據(jù)讀取的事務(wù),該HIDI2C驅(qū)動器能夠發(fā)起單一輸入數(shù)據(jù)讀取事務(wù)以對數(shù)據(jù)總線性能進(jìn)行優(yōu)化。從針對數(shù)據(jù)總線上的寄存器地址的數(shù)據(jù)寫入暗示了數(shù)據(jù)讀取以便進(jìn)行快速讀取事務(wù),這也被稱作“無寫入讀取”事務(wù)。如最為常見的主機(jī)到設(shè)備的操作,寄存器地址可以是隱含的并且設(shè)備固件默認(rèn)為輸入寄存器。設(shè)備固件能夠支持在任何使用明確寄存器地址的事務(wù)之后將其運(yùn)行的“寄存器地址指針”移動回輸入寄存器。HIDI2C驅(qū)動器128還被實(shí)施用于單一事務(wù)數(shù)據(jù)讀取,因?yàn)樵揌IDI2C驅(qū)動器針對每個(gè)數(shù)據(jù)讀取而從I2C數(shù)據(jù)總線上的相同地址進(jìn)行隱含數(shù)據(jù)讀取而并無需在先的針對該事務(wù)的數(shù)據(jù)寫入。SPB多傳輸序列將數(shù)據(jù)寫入和數(shù)據(jù)讀取組合為單個(gè)事務(wù)。在實(shí)施例中,HIDI2C驅(qū)動器128還被實(shí)施用于被動中斷處理,因?yàn)樵揌IDI2C驅(qū)動器在被中斷發(fā)起時(shí)讀取設(shè)備數(shù)據(jù)并且在軟件中卸去中斷處理以對快速去除中斷的優(yōu)先級。在實(shí)施中,該HIDI2C驅(qū)動器能夠利用工作項(xiàng)作為機(jī)制來向上層驅(qū)動器棧(例如,HID軟件棧126)輸送輸入報(bào)告。這從中斷服務(wù)例程(ISR)卸去了工作并且允許較低優(yōu)先級的工作項(xiàng)或服務(wù)提供方完成中斷請求。HIDI2C驅(qū)動器128還被配置用于被動中斷確認(rèn),因?yàn)樵揌IDI2C驅(qū)動器在被中斷發(fā)起時(shí)讀取設(shè)備數(shù)據(jù),數(shù)據(jù)讀取隱含地確認(rèn)該設(shè)備中斷。該HIDI2C驅(qū)動器支持被動GPIO中斷,并且能夠使用簡單外圍總線(SPB)輸入/輸出來確認(rèn)中斷處理。在實(shí)施例中,HIDI2C驅(qū)動器128被實(shí)施用于功率優(yōu)化,并且能夠在計(jì)算系統(tǒng)102進(jìn)入較低功率狀態(tài)時(shí)或者當(dāng)設(shè)備固件沒有在設(shè)備級別檢測到活動時(shí)開始將設(shè)備空置為低功率狀態(tài)。此外,HIDI2C驅(qū)動器128還被實(shí)施用于管腳計(jì)數(shù)優(yōu)化,并且能夠針對中斷和設(shè)備喚醒事件采用共享或單一的輸入連接。例如,該HIDI2C驅(qū)動器可以使用GPIO作為共享的和可喚醒的中斷機(jī)制。該HIDI2C驅(qū)動器支持可喚醒中斷線路并且能夠利用將設(shè)備喚醒事件與空閑轉(zhuǎn)換進(jìn)行同步的預(yù)處理例程。在實(shí)施例中,HIDI2C驅(qū)動器128還被實(shí)施用于I2C數(shù)據(jù)總線上所檢測到的錯(cuò)誤條件的錯(cuò)誤處理和錯(cuò)誤校正。該HIDI2C驅(qū)動器嘗試識別并自動校正I2C數(shù)據(jù)總線上的錯(cuò)誤條件而并不影響終端用戶的可用性。例如,(例如,通過HIDI2C驅(qū)動器所對接的)計(jì)算系統(tǒng)的主機(jī)側(cè)可以從設(shè)備接收未預(yù)計(jì)到的NAK(否定應(yīng)答),該設(shè)備諸如經(jīng)由外圍設(shè)備106而對接到計(jì)算系統(tǒng)的嵌入式設(shè)備或傳感器。HIDI2C驅(qū)動器128被實(shí)施為自動重試向設(shè)備發(fā)送數(shù)據(jù),或者丟棄該事務(wù)并且繼續(xù)進(jìn)行下一個(gè)事務(wù)。可替換地或除此之外,該設(shè)備可以被掛起并且僅部分作出響應(yīng),并且在缺省計(jì)時(shí)器超時(shí)之后,主機(jī)側(cè)軟件取消針對該設(shè)備的數(shù)據(jù)事務(wù)并且繼續(xù)進(jìn)行下一個(gè)事務(wù)。這允許用戶盡管在諸如丟失的按鍵敲擊或鼠標(biāo)輸入移動之類的潛在輸入丟失的情況下也繼續(xù)使用設(shè)備??商鎿Q地或除此之外,該設(shè)備可以被掛起并且無響應(yīng),在這種情況下,主機(jī)軟件識別出錯(cuò)誤條件并且在試圖恢復(fù)設(shè)備的工作狀態(tài)時(shí)發(fā)起該設(shè)備的重置,而并不向用戶指示錯(cuò)誤條件并且沒有用戶可感知到的影響。圖2進(jìn)一步以實(shí)施200圖示了圖1所示的示例系統(tǒng)的組件和設(shè)備的軟件,該實(shí)施200包括HIDI2C驅(qū)動器128,其將I2C控制器驅(qū)動器130和GPIO控制器驅(qū)動器132進(jìn)行對接并與之通信。雖然僅示出了一個(gè)I2C控制器和一個(gè)GPIO控制器驅(qū)動器,但是HIDI2C驅(qū)動器能夠被實(shí)施為與多個(gè)I2C控制器驅(qū)動器和/或GPIO控制器驅(qū)動器進(jìn)行對接。HIDI2C驅(qū)動器128還被實(shí)施為與計(jì)算系統(tǒng)應(yīng)用和諸如HID類202的軟件棧進(jìn)行對接并與之通信。例如,HIDI2C驅(qū)動器128能夠在設(shè)備206在該設(shè)備的觸摸屏上檢測到接觸點(diǎn)輸入208時(shí)從I2C控制器驅(qū)動器130和/或GPIO控制器驅(qū)動器132接收中斷204。HIDI2C驅(qū)動器128隨后能夠?qū)⒃撝袛鄠鬏斨料到y(tǒng)應(yīng)用和軟件棧,例如用于對該接觸點(diǎn)輸入進(jìn)行處理的數(shù)字化軟件。HIDI2C驅(qū)動器128還被實(shí)施為與先進(jìn)配置和功率接口(ACPI)210進(jìn)行對接并與之通信,后者監(jiān)視設(shè)備的功率狀態(tài)。該ACPI與GPIO物理設(shè)備對象(PDO)212、I2CPDO214和HIDPDO216進(jìn)行對接以首先列舉出這些設(shè)備并且隨后對該設(shè)備的功率狀態(tài)進(jìn)行監(jiān)視。圖3圖示了示例的片上系統(tǒng)(SoC)300,其能夠?qū)嵤┤邕@里所描述的HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的各個(gè)實(shí)施例。SoC300可以在固定或移動設(shè)備中實(shí)施,諸如消費(fèi)者、電子、通信、導(dǎo)航、媒體、計(jì)算設(shè)備和/或其它類型的電子設(shè)備中的任意一種或者其組合。SoC300可以與電路、微處理器、存儲器、輸入-輸出(I/O)邏輯控制、通信接口和組件,以及其它硬件、固件和/或軟件進(jìn)行整合以實(shí)施計(jì)算設(shè)備。在該示例中,SoC300與微處理器302(例如,任意的微控制器或數(shù)字信號處理器)以及輸入-輸出(I/O)邏輯控制304進(jìn)行整合(例如,以包括電路)。SoC還包括存儲器控制器306(以包括存儲器,諸如任意類型的非易失性存儲器和/或其它適當(dāng)電子數(shù)據(jù)存儲)。該SoC還可以包括各種固件和/或軟件,諸如由存儲器所保存并且由微處理器所執(zhí)行的操作系統(tǒng)308。該操作系統(tǒng)包括諸如參考圖1和2所描述的HIDI2C驅(qū)動器310,其實(shí)施如這里所描述的HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例。SoC300包括設(shè)備接口312以便諸如在安裝于計(jì)算設(shè)備中時(shí)與設(shè)備、傳感器、嵌入式設(shè)備或其它集成組件進(jìn)行對接。SoC300還包括集成數(shù)據(jù)總線314,其將SoC的各個(gè)組件進(jìn)行耦合以便在組件之間進(jìn)行數(shù)據(jù)通信。在該示例中,SoC中的數(shù)據(jù)總線能夠被實(shí)施為I2C數(shù)據(jù)總線,其它類型的簡單外圍總線(SPB),或者串行外圍接口(SPI)數(shù)據(jù)總線,并且還可以被實(shí)施為任意一種不同總線結(jié)構(gòu)和/或總線架構(gòu)或者其組合。SoC300還包括I2C驅(qū)動器316和/或GPIO驅(qū)動器318,其對接諸如參考圖1所示的外圍設(shè)備(例如,外圍設(shè)備106)的各個(gè)示例所描述的一個(gè)或多個(gè)外圍設(shè)備320。與I2C驅(qū)動器316和GPIO驅(qū)動器318相關(guān)聯(lián)的驅(qū)動器軟件嵌入在操作系統(tǒng)308中。外圍設(shè)備320實(shí)施HIDI2C接口322和/或GPIO接口324。HIDI2C接口和GPIO接口的示例以及相對應(yīng)的功能和特征參考圖1和2所示的相應(yīng)組件進(jìn)行描述??商鎿Q地或除此之外,外圍設(shè)備的組件能夠被實(shí)施為硬件、固件、固定邏輯電路,或者結(jié)合I/O邏輯控制304和/或SoC或外圍設(shè)備的其它處理和控制電路所實(shí)施的其任意組合。依據(jù)HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的一個(gè)或多個(gè)實(shí)施例而參考圖4對示例方法400進(jìn)行描述??傮w而言,這里所描述的任意服務(wù)、功能、方法、過程、組件和模塊都能夠使用軟件、固件、硬件(例如,固定邏輯電路)、人工處理或者其任意組合來實(shí)施。軟件實(shí)施表示在被計(jì)算機(jī)處理器執(zhí)行時(shí)執(zhí)行所指定任務(wù)的程序代碼。示例方法可以以計(jì)算機(jī)可執(zhí)行指令的總體環(huán)境進(jìn)行描述,其能夠包括軟件、應(yīng)用、例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)、過程、模塊、函數(shù)等。程序代碼能夠存儲在處于計(jì)算機(jī)處理器本地和/或遠(yuǎn)程的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲媒體設(shè)備之中。該方法還可以由多個(gè)計(jì)算機(jī)設(shè)備在分布式計(jì)算環(huán)境中進(jìn)行實(shí)踐。另外,這里所描述的特征是獨(dú)立于平臺的并且能夠在具有各種處理器的各種計(jì)算平臺上得以實(shí)施。圖4圖示了HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的(多種)示例方法400,并且參考HIDI2C驅(qū)動器進(jìn)行描述。對該方法的框進(jìn)行描述的順序并非意在被理解為限制,并且任意數(shù)量的所描述方法的框能夠以任意順序進(jìn)行組合以實(shí)施方法或者替換方法。在框402,在計(jì)算系統(tǒng)的人機(jī)接口設(shè)備(HID)軟件棧中實(shí)施設(shè)備軟件。例如,計(jì)算系統(tǒng)102(圖1)的主機(jī)側(cè)中的HID軟件棧126實(shí)施設(shè)備軟件,其諸如用于經(jīng)由HIDI2C驅(qū)動器128與計(jì)算系統(tǒng)進(jìn)行對接并且經(jīng)由I2C數(shù)據(jù)總線104與相對應(yīng)的外圍設(shè)備106進(jìn)行對接的內(nèi)部、外部和/或嵌入式設(shè)備或傳感器。在框404,HID軟件棧與均包括到設(shè)備的HIDI2C接口的外圍設(shè)備進(jìn)行對接。例如,計(jì)算系統(tǒng)102的主機(jī)側(cè)中的HIDI2C驅(qū)動器128將HID軟件棧126與外圍設(shè)備(例如,外圍設(shè)備106)進(jìn)行對接,后者均包括到設(shè)備(例如,嵌入式設(shè)備或其它集成組件)的HIDI2C接口108。該設(shè)備可以是被實(shí)施用于經(jīng)由I2C數(shù)據(jù)總線104而在計(jì)算系統(tǒng)102內(nèi)進(jìn)行數(shù)據(jù)通信的內(nèi)部、外部或嵌入式設(shè)備和/或傳感器。在框406,該HID軟件棧與設(shè)備的I2C控制器驅(qū)動器和通用輸入/輸出(GPIO)控制器驅(qū)動器進(jìn)行對接。例如,計(jì)算系統(tǒng)102的主機(jī)側(cè)中的HIDI2C驅(qū)動器128還將HID軟件棧126與設(shè)備的I2C控制器驅(qū)動器130和通用輸入/輸出(GPIO)控制器驅(qū)動器132進(jìn)行對接。在框408,針對快速讀取事務(wù),執(zhí)行I2C設(shè)備上的地址的隱含數(shù)據(jù)讀取而無需在先的對設(shè)備的I2C寫入事務(wù)。例如,計(jì)算系統(tǒng)102的主機(jī)側(cè)中的HIDI2C驅(qū)動器128將快速讀取事務(wù)執(zhí)行為I2C設(shè)備上的地址的隱含數(shù)據(jù)讀取而無需在先的對設(shè)備的I2C寫入事務(wù)。在框410,從I2C數(shù)據(jù)總線上用于隱含數(shù)據(jù)讀取的相同地址讀取數(shù)據(jù)而無需在先的針對單一事務(wù)數(shù)據(jù)讀取的數(shù)據(jù)寫入。例如,計(jì)算系統(tǒng)102的HIDI2C驅(qū)動器128在從I2C數(shù)據(jù)總線104上用于隱含數(shù)據(jù)讀取的相同地址讀取數(shù)據(jù)而無需在先的數(shù)據(jù)寫入時(shí)發(fā)起單一事務(wù)數(shù)據(jù)讀取。在框412,在被中斷所發(fā)起時(shí)讀取設(shè)備數(shù)據(jù)并且在軟件中卸去中斷處理以去除該中斷的優(yōu)先級。例如,計(jì)算系統(tǒng)102的主機(jī)側(cè)中的HIDI2C驅(qū)動器128在被中斷所發(fā)起時(shí)讀取設(shè)備數(shù)據(jù),并且在軟件中卸去中斷處理以快速解除該中斷的優(yōu)先級。在框414,設(shè)備中斷基于被該中斷發(fā)起時(shí)對設(shè)備數(shù)據(jù)的讀取而隱含地得到確認(rèn)。例如,計(jì)算系統(tǒng)102的主機(jī)側(cè)中的HIDI2C驅(qū)動器128基于中斷發(fā)起時(shí)對設(shè)備數(shù)據(jù)的讀取而隱含地對設(shè)備中斷進(jìn)行確認(rèn)。在框416,在計(jì)算系統(tǒng)進(jìn)入較低功率狀態(tài)時(shí)或者當(dāng)設(shè)備固件并沒有在設(shè)備級別檢測到活動時(shí),設(shè)備被空置為低功率狀態(tài)。例如,計(jì)算系統(tǒng)102的主機(jī)側(cè)中的HIDI2C驅(qū)動器128在計(jì)算系統(tǒng)102進(jìn)入較低功率狀態(tài)時(shí)或者當(dāng)設(shè)備固件并沒有在設(shè)備級別檢測到活動時(shí)將設(shè)備(例如,對接至計(jì)算系統(tǒng)102的嵌入式設(shè)備或傳感器)空置為低功率狀態(tài)。在框418,針對中斷和設(shè)備喚醒事件共享輸入連接。例如,計(jì)算系統(tǒng)102的主機(jī)側(cè)中的HIDI2C驅(qū)動器128針對中斷和設(shè)備喚醒事件共享GPIO輸入連接。在框420,對在I2C數(shù)據(jù)總線上所檢測的錯(cuò)誤條件進(jìn)行校正。例如,計(jì)算系統(tǒng)102的HIDI2C驅(qū)動器128對I2C數(shù)據(jù)總線104上所檢測的處于HIDI2C協(xié)議級別的錯(cuò)誤條件進(jìn)行校正。如以上所提到的,任意所描述的方法框能夠以任意順序進(jìn)行組合以實(shí)施方法或替換方法。因此,框420處的I2C數(shù)據(jù)總線上的錯(cuò)誤條件的檢測和校正可以在任意其它所描述的方法框402-418之前、期間或之后進(jìn)行。圖5圖示了示例設(shè)備500的各個(gè)組件,該設(shè)備500能夠被實(shí)施為參考之前的圖1-4所描述的任意設(shè)備或者由設(shè)備所實(shí)施的服務(wù)和軟件。在實(shí)施例中,該設(shè)備可以被實(shí)施為消費(fèi)者、計(jì)算機(jī)、服務(wù)器、便攜式、用戶、通信、電話、導(dǎo)航、電視、電器、游戲、媒體播放、相機(jī)和/或電子設(shè)備的任意形式的固定或移動設(shè)備中的任意一種或者其組合。該設(shè)備還可以與操作該設(shè)備的用戶(即,人)和/或?qū)嶓w相關(guān)聯(lián)而使得該設(shè)備描述包括用戶、軟件、固件、硬件的邏輯設(shè)備和/或設(shè)備組合。設(shè)備500包括通信設(shè)備502,其使得能夠?qū)υO(shè)備數(shù)據(jù)504進(jìn)行有線和/或無線通信。設(shè)備數(shù)據(jù)或其它設(shè)備內(nèi)容可以包括設(shè)備的配置設(shè)置、存儲在設(shè)備上的媒體內(nèi)容和/或與設(shè)備用戶相關(guān)聯(lián)的信息。存儲在設(shè)備上的媒體內(nèi)容可以包括任意類型的音頻、視頻和/或圖像數(shù)據(jù)。設(shè)備包括能夠經(jīng)由其接收任意類型的數(shù)據(jù)、媒體內(nèi)容和/或輸入的一個(gè)或多個(gè)數(shù)據(jù)輸入506,諸如用戶可選擇輸入以及從任意內(nèi)容和/或數(shù)據(jù)源所接收的任意其它類型的音頻、視頻和/或圖像數(shù)據(jù)。設(shè)備500還包括通信接口508,諸如任意的一個(gè)或多個(gè)串行、并行、網(wǎng)絡(luò)或無線接口。通信接口提供設(shè)備與通信網(wǎng)絡(luò)之間的連接和/或通信鏈路,其它電子、計(jì)算和通信設(shè)備通過所述通信網(wǎng)絡(luò)與該設(shè)備進(jìn)行數(shù)據(jù)通信。設(shè)備500包括一個(gè)或多個(gè)處理器510(例如,任意微處理器、控制器等)或者處理器和存儲器系統(tǒng)(例如,在SoC中實(shí)施),其對計(jì)算機(jī)可執(zhí)行指令進(jìn)行處理以控制設(shè)備的操作。可替換地或除此之外,該設(shè)備能夠利用結(jié)合總體上以512所標(biāo)示的處理和控制電路而實(shí)施的軟件、硬件、固件或固定邏輯電路中的任意一種或其組合來實(shí)施。雖然并未示出,但是該設(shè)備可以包括對設(shè)備內(nèi)的各個(gè)組件進(jìn)行耦合的系統(tǒng)總線或數(shù)據(jù)傳輸總線。系統(tǒng)總線可以包括不同總線結(jié)構(gòu)中的任意一種或者其組合,諸如存儲器總線或存儲器控制器、外圍總線、通用串行總線和/或采用任意各種總線架構(gòu)的處理器或局部總線。設(shè)備500還包括一個(gè)或多個(gè)支持?jǐn)?shù)據(jù)存儲的存儲器設(shè)備514(例如,計(jì)算機(jī)可讀存儲媒體),諸如隨機(jī)訪問存儲器(RAM)、非易失性存儲器(例如只讀存儲器(ROM),快閃存儲器等)和碟片存儲設(shè)備。碟片存儲設(shè)備可以被實(shí)施為任意類型的磁性或光學(xué)存儲設(shè)備,諸如硬盤驅(qū)動、可記錄和/或可重寫盤等。計(jì)算機(jī)可讀存儲媒體可以是計(jì)算設(shè)備所訪問的任意可用介質(zhì)或媒體。存儲器設(shè)備514提供數(shù)據(jù)存儲機(jī)制以存儲設(shè)備數(shù)據(jù)504、其它類型的信息和/或數(shù)據(jù)以及設(shè)備應(yīng)用516。例如,操作系統(tǒng)518能夠利用存儲器設(shè)備而被保存為軟件應(yīng)用并且在處理器上執(zhí)行。在該示例中,HIDI2C驅(qū)動器520在操作系統(tǒng)中進(jìn)行實(shí)施以實(shí)施如這里所描述的HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例。設(shè)備應(yīng)用還可以包括設(shè)備管理器,諸如任意形式的控制應(yīng)用、軟件應(yīng)用、信號處理和控制模塊、特定設(shè)備本地的代碼、特定設(shè)備的硬件抽象層,等等。在該示例中,該設(shè)備還包括與嵌入式設(shè)備524進(jìn)行對接的一個(gè)或多個(gè)外圍設(shè)備522。設(shè)備500還包括音頻和/或視頻處理系統(tǒng)526,其生成用于音頻系統(tǒng)526的音頻數(shù)據(jù)和/或生成用于顯示系統(tǒng)528的顯示數(shù)據(jù)。該音頻系統(tǒng)和/或顯示系統(tǒng)可以包括處理、顯示和/或以其它方式呈現(xiàn)音頻、視頻、顯示和/或圖像數(shù)據(jù)的任意設(shè)備。在實(shí)施中,該音頻系統(tǒng)和/或顯示系統(tǒng)是設(shè)備的外部組件,或者是示例設(shè)備的集成組件。雖然已經(jīng)以特定于特征和/或方法的語言對HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的實(shí)施例進(jìn)行了描述,但是所附權(quán)利要求的主題并非必然局限于所描述的具體特征或方法。相反,具體特征和方法是作為HIDI2C數(shù)據(jù)總線的主機(jī)側(cè)實(shí)施的示例實(shí)施所公開。