Hello, All!
I have two custom boards based on 6678 evm. I try to connect them together via SRIO interface in linux. Linux source I get from git master brunch on linux-c6x.org.
Reference clock for CPU_RIOCLK_P/N pins on my board is 156.25 MHz. I made some changes in file board-evm6678.c on struct evm6678_serdes_config[4] to correct register values related to my clock. Please look at the diff patch:
Registers configuration:
PER_SET_CNTL = 0x10
SRIO_SERDES_CFGPLL = 0x251
PRESCALAR_SRV_CLK = 0x0C053860 <-------- leave unchanged (it is correct or not?)
SRIO_SERDES_CFGRX[0-3] = 0x00440495 <-------- leave unchanged
SRIO_SERDES_CFGTX[0-3] = 0x00180795 <-------- leave unchanged
Then I boot linux on every board with such bootargs for rio driver:
board1: riohdid=0 rioports=1,2,3,4 rioinit=enum riomode=0 rioedma-threshold=32768
borad2: riohdid=-1 rioports=1,2,3,4 rioinit=discov riomode=0 rioedma-threshold=32768
But in kernel boot log the same result:
Board 1:
TI KeyStone QMSS driver v1.1
KeyStone RapidIO driver v1.1
RIO: register sRIO controller for hostid 0
RIO: port 1 not ready
RIO: port 2 not ready
RIO: port 3 not ready
RIO: port 4 not ready
board 2:
TI KeyStone QMSS driver v1.1
KeyStone RapidIO driver v1.1
RIO: register sRIO controller for hostid 255
RIO: port 1 not ready
RIO: port 2 not ready
RIO: port 3 not ready
RIO: port 4 not ready
1) Please, tell me that else I must change in kernel driver for new reference clock?
2) Kernel parameters that I pass to kernel correct or not for properly driver initialization?
Thank you.