天天看點

hi3531的pcie控制器使能

1. 關閉pcie 控制器:

通過向系統控制寄存器periphctrl30[pcie0_app_ltssm_enabl]寫入0 關閉pcie0 控制

器。

通過向系統控制寄存器periphctrl77[pcie1_app_ltssm_enabl]寫入0 關閉pcie1 控制

2. 使能pcie 控制器相關的時鐘:

設定crg 寄存器peri_crg30[pcie0_cken]使能pcie0 控制器時鐘。

設定crg 寄存器peri_crg30[pcie1_cken]使能pcie1 控制器時鐘。

3. 設定pcie 控制器的工作模式(rc 模式/ep 模式):

通過系統控制寄存器中的periphctrl23[pcie0_slv_device_type]寄存器設定pcie0 控

制器的工作模式。通過系統控制寄存器中的periphctrl70[pcie1_slv_device_type]寄存器設定pcie1 控

制器的工作模式。

4. 設定pcie 控制器軟複位以複位pcie 控制器。

向crg 寄存器peri_crg30[pcie0_srst_req]寫1 以複位pcie0 控制器。

向crg 寄存器peri_crg30[pcie1_srst_req]寫1 以複位pcie1 控制器。

5. 撤銷pcie 控制器軟複位。

向crg 寄存器peri_crg30[pcie0_srst_req]寫0 以撤銷pcie0 控制器複位。

向crg 寄存器peri_crg30[pcie1_srst_req]寫0 以撤銷pcie1 控制器複位。

6. 設定pcie 控制器的類代碼:

當工作在rc 模式時,需要配置對應的控制器的類代碼寄存器(class code

register)為0x060400(對應為pci 到pci 橋裝置)。pcie0 控制器和pcie1 控制器的

類代碼寄存器位于各自的pcie 配置寄存器空間内。

ep 模式下無需設定(預設值)。

7. 使能pcie 控制器:

通過向系統控制寄存器periphctrl30[pcie0_app_ltssm_enable]寫入1 使能pcie0 控制

器。pcie0 控制器使能後,pcie0 控制器開始鍊路建立過程。

通過向系統控制寄存器periphctrl77[pcie1_app_ltssm_enable]寫入1 使能pcie1 控制

器。pcie1 控制器使能後,pcie1 控制器開始鍊路建立過程。

----結束

若pcie 控制器與對端裝置之間的連接配接未建立,不可向對端裝置發起任何pcie 事務。

軟體通過查詢系統控制寄存器perictrl39[pcie0_rdlh_link_up]可以确定pcie0 控制器

是否已與對端裝置建立連接配接。

軟體通過查詢系統控制寄存器perictrl40[pcie1_rdlh_link_up]可以确定pcie1 控制器

請參考系統控制器中關于perictrl39 和perictrl40 寄存器的定義