LS1012a PCI-e Endpoint problem

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

LS1012a PCI-e Endpoint problem

6,235件の閲覧回数
Pashahod
Contributor I

Hello, everyone!

I kindly ask for help with pci express controller on ls1012a.

My company developed a custom design board with a ls1012a cpu at heart.
This board is designed to work with PC, so it has a pci-e x1 male plug(as usual GPU board for example).

The problem is: it does not perform link training. LTSSM is in Polling.Compliance state.

I have:
- two custom boards
- ls1012ardb eval board
- two pci-e raisers
- minipci-e wifi module from a notebook
- handmade adaptor from minipci-e-female to pci-e-male (to connect ls1012ardb to PC)

What i have done:
I managed to build bl2 and fip_uboot binaries with flex-builder and flash them
to QSPI flash of my custom board.
So the board starts and i am able to load linux. DDR/USB/i2s/spi are ok.
I made one of my custom boards as a root-complex and the other as an endpoint and connected them
to each other via raisers and they do perform link training, and the LTSSM is L0.

I but if i connect my custom board made as root-complex to wifi module - LTSSM state is Polling.Compliance.

I made a minor changes in rcw(serdes protocol on my custom board is 3305 and i changed it to 3508 for eval board)
and loaded my bl2/fip binaries to BANK2 of ls1012ardb qspi flash. It also starts ok.
I made ls1012ardb as a root-complex and connected it via handmade-adapter and raisers to a
wifi module and they do see each other and perform link training. Also ls1012ardb performs link training
with my custom board(custom board made as an endpoint).

LS1012ARDB made as an endpoint and connected to PC via adapter does not perform link training and LTSSM is Polling.Compliance.


Summary:
- All ls1012a cpu in my possession can work with each other via pci-e.
- None of them can work with PC.
- Only cpu on ls1012ardb can work as root-complex with none-ls1012a endpoint.

There is a chance that the problem is in electrician/circuit technique.
But i would like to exclude software problems before standing my ground.

So are this statements correct?
- initial initialisation of pci-e controller is done by pre-bootloader and depends on RCW
- link training is performed automatically after power up and  minimal initialization
  and if rcw is correct, no problems should occure

A file with an RCW, PLL and SerDes register values is attached.

Thank, you=)

 

 

0 件の賞賛
返信
6 返答(返信)

6,220件の閲覧回数
ufedor
NXP Employee
NXP Employee

> So are this statements correct?

The statements are correct.

Please provide the processor connection schematics for inspection as searchable PDF.

0 件の賞賛
返信

6,211件の閲覧回数
Pashahod
Contributor I

Thank you for fast reply. 

I was not allowed to provide full schematics. There is a shema of pci related connections in attached file.

Hope that helps. If not, please give me a list of questions and I will try to answer them ASAP.

Best regards,

Pashahod

0 件の賞賛
返信

6,206件の閲覧回数
ufedor
NXP Employee
NXP Employee

In the provided RCW the SerDes_INT_REFCLK=1.

In this case PC must not use spread-spectrum reference clock.

0 件の賞賛
返信

6,199件の閲覧回数
Pashahod
Contributor I

I can see your request for U-boot log only in my e-mail letter but not here, that's strange...

Anyway, log is in attached file.

About checking SerDes clock. In my RCW an option for INT_REFCLCK is selected, so as far as I understand no external clock from PC is used. In such case, how do I check SerDes clock? I have checked PLL_Lock bit in SerDes Control register 0 - it  is set, the frequency generator is checked and considered to be ok. Any other interconnections are inside  cpu chip.

I have made an experiment and set SerDes protocol to 0005 and set according rcw bits to supply SerDes  with external reference clock. The LTSSM state became L2.

I checked several PC's uefi settings and none of them had an option "spread spectrum clock" or something similar. Only one of PCs has an option to set PCIe base clock but it does not work=) Hence the board with ls1012a will work with PC via PCIe only if SerDes protocol is 0005 and external clock is provided to SerDes or SerDes is clocked via internal clock and PC is smart enough to not use spread spectrum clock. Is that correct?

Best regards,

Pashahod

 

 

0 件の賞賛
返信

6,187件の閲覧回数
ufedor
NXP Employee
NXP Employee

For the SerDes protocol 0005 external spread-spectrum clock can be used.

0 件の賞賛
返信

6,196件の閲覧回数
Pashahod
Contributor I

Do not see an attached file, thought i uploaded it...

0 件の賞賛
返信