imx8q PCIE internal clock master

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

imx8q PCIE internal clock master

1,525 次查看
giuseppepagano1
Contributor III

Hi all,

on a custom board based on NXP i.MX8Q we are trying to use internal PCIE clock generation, but it seems not to work.

During kernel startup (using the scope) we can see the PCIE_SATA_REFCLK100M_P/ PCIE_SATA_REFCLK100M_N moving to an high level when bus scan starts, and going to low level et the end (few msec later), but no clock waveform is generated ...

If we use an external pci clock generator coming from the chip 9FGV0241AKLFT, everything works well, PCIE bus is correctly activated and PCIE devices are correctly detected.

So the problem is just in the internal pcie clock generation. Is there any extra configuration I need to use to activate it?

Here is the section I'm currently using in dts from kernel 4.14.98.

&pciea {
     // ext_osc = <1>;

     ext_osc = <0>;

     pinctrl-names = "default";
     pinctrl-0 = <&pinctrl_pcie0>;
    // clkreq-gpio = <&gpio4 27 GPIO_ACTIVE_LOW>;
    reset-gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
    status = "okay";
};

Regards

Giuseppe

 

0 项奖励
3 回复数

1,484 次查看
kessionxiao
Contributor I

hello Giuseppe,

I have the same problem, have you solved it?

0 项奖励

1,476 次查看
giuseppepagano1
Contributor III

Hi, we tested the solution proposed by igorpadykov, but unfortunately in our case that didn't solve the issue.

We are still using an external PCIE clock because the internal configuration does not works on our environment.

 

Bye

Giuseppe

 

0 项奖励

1,522 次查看
igorpadykov
NXP Employee
NXP Employee

Hi Giuseppe

 

one can try to update SCFW SCFW Porting Kit as following:

diff --git a/firmware/platform/board/mx8qm_mek/board.c b/firmware/platform/board/mx8qm_mek/board.c
index dc510f1..86dda91 100755
--- a/firmware/platform/board/mx8qm_mek/board.c
+++ b/firmware/platform/board/mx8qm_mek/board.c
@@ -417,7 +417,7 @@ board_parm_rtn_t board_parameter(board_parm_t parm)
/* Used whenever HSIO SS powered up. Valid return values are
BOARD_PARM_RTN_EXTERNAL or BOARD_PARM_RTN_INTERNAL */
case BOARD_PARM_PCIE_PLL :
- rtn = BOARD_PARM_RTN_EXTERNAL;
+ rtn = BOARD_PARM_RTN_INTERNAL;
break;
case BOARD_PARM_KS1_RESUME_USEC:
rtn = BOARD_KS1_RESUME_USEC;

 

Best regards
igor

0 项奖励