i.MX6/7 Pcie legacy interrupt

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

i.MX6/7 Pcie legacy interrupt

ソリューションへジャンプ
4,001件の閲覧回数
andreagreco
Contributor I

Hello,

I get some trouble with the PCIe, problem occur with Pcie legacy interrupt, interrupt never fire.

i.MX6 with Apalis Evaluation Board

i.MX7 with Sabre RevD

Tested with Linux rel_imx_4.1.15_2.1.0_ga:

In this release all works also pcie legacy interrupt.

Linux rel_imx_4.9.x_1.0.0_ga:

In this release legacy interrupt is broken, and not working.

MSI interrupt working.

My Pcie endpoint is a Ath9K and Ath10k.

Consideration over Linux Pcie Host driver.

The pci Host code in linux is hardly-changed from 4.1 to 4.9, so i think some change break, imx6/7 initialization.

A big change of Designware host drivers is example ATU support added.

In i.MX6/7 Manual is not described how PCIe RootComplex is connected i.MX6/7 platform.

Other Pcie Host drivers

Other Soc with "i suppose" same Pcie silicon implementations, initialize legacy interrupt, and handle it.

I'm referring to: pci-exynos.c and pci-keystone-dw.c

It also write some register, called IRQ_INTA_ASSERT and friends.

So, i think a help from NXP is required for let this works in Linux 4.9 and later.

Regards,

Andrea

タグ(1)
1 解決策
2,806件の閲覧回数
MT
NXP Employee
NXP Employee

Solution is to disable MSI:

u-boot

setenv mmcargs setenv bootargs console=${console} root=${mmcroot} pci=nomsi

saveenv

BR

Mark

元の投稿で解決策を見る

0 件の賞賛
返信
2 返答(返信)
2,806件の閲覧回数
garyjiang
Contributor II

Hi,

I do not know if this could help. It seems that I am facing the similar issue with the legacy interrupt (imx8 kernel 4.9). I think the below test could prove that. I changed the ath10k driver to legacy mode(see patch below). after that the wlan driver failed to bring up. However in default mode the wlan driver works fine. In default it uses MSI interrupt.

diff -uNr kernel-source-patched/drivers/net/wireless/ath/ath10k/pci.c kernel-source-debug/drivers/net/wireless/ath/ath10k/pci.c
--- kernel-source-patched/drivers/net/wireless/ath/ath10k/pci.c 2018-04-16 10:57:55.504484324 +0100
+++ kernel-source-debug/drivers/net/wireless/ath/ath10k/pci.c 2018-05-23 13:43:48.270960913 +0100
@@ -38,11 +38,11 @@
ATH10K_PCI_RESET_WARM_ONLY = 1,
};

-static unsigned int ath10k_pci_irq_mode = ATH10K_PCI_IRQ_AUTO;
+static unsigned int ath10k_pci_irq_mode = ATH10K_PCI_IRQ_LEGACY;
static unsigned int ath10k_pci_reset_mode = ATH10K_PCI_RESET_AUTO;

module_param_named(irq_mode, ath10k_pci_irq_mode, uint, 0644);
-MODULE_PARM_DESC(irq_mode, "0: auto, 1: legacy, 2: msi (default: 0)");
+MODULE_PARM_DESC(irq_mode, "0: auto, 1: legacy, 2: msi (default: 1)");

module_param_named(reset_mode, ath10k_pci_reset_mode, uint, 0644);
MODULE_PARM_DESC(reset_mode, "0: auto, 1: warm only (default: 0)");

==dmesg legacy==

....

[    2.362793] ath10k_pci 0000:01:00.0: pci irq legacy oper_irq_mode 1 irq_mode 1 reset_mode 0

.....

[   10.271765] ath10k_pci 0000:01:00.0: failed to connect htt (-110)

....

0 件の賞賛
返信
2,807件の閲覧回数
MT
NXP Employee
NXP Employee

Solution is to disable MSI:

u-boot

setenv mmcargs setenv bootargs console=${console} root=${mmcroot} pci=nomsi

saveenv

BR

Mark

0 件の賞賛
返信