imx8q PCIE internal clock master

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

imx8q PCIE internal clock master

1,833 Views
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 Kudos
Reply
3 Replies

1,792 Views
kessionxiao
Contributor I

hello Giuseppe,

I have the same problem, have you solved it?

0 Kudos
Reply

1,784 Views
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 Kudos
Reply

1,830 Views
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 Kudos
Reply