XHCIのINTERRUPT INについて 2
1,pciからxhciコントローラを取得する。
pciのclass codeのbase,sub,interfaceが0x0c,0x03,0x30のものを探して取得する。
2,msiを設定する。
0xfee00020からlocal apic idを取得する。
1で取得したpciデバイスとlocal apic idでmsiを設定する。
3,barを取得する。
1で取得したpciデバイスからbarを取得する。
barからmmio baseを計算する
4,各種registerを取得する。
mmio baseから次を取得する。
capabiliry registers
operational registers
runtime registers
interrupter register set
port register set
doorbell register
5,xhc controllerを設定する。
xhc controllerをリセットする。
operational registerのdevice context base address array pointerを設定する。
command ringをcrcrに設定する。
event ringにinterrupter register setの0番を設定する。
interrupter register setの0番の設定をする。
割り込みの設定をする。
6,xhc controllerを開始する。
xhc controllerの開始の設定をする。