Accessing DDR on PCIe EP from RC on i.MX 8

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

Accessing DDR on PCIe EP from RC on i.MX 8

306 Views
acosara
Contributor IV

Does anyone have example code on how to configure a PCIe endpoint on an i.MX8M processor so that it's attached DDR memory is enumerated property by the root complex?

We are using MIMX8M CPU on our board that is configured as PCIe endpoint and successfully enumerated from the root complex. However, we are having some issues to configure the iMX8 to export a BAR that will provide an access to the portion of DRAM where we store the application data.

We are using 4.14.98 kernel with drivers/pci/dwc/pci-imx6.c IMX PCIe driver. The issue is related to the BARs which assumed to export endpoint's RAM memory. Per our debug we made sure that endpoint driver is configuring 6 BARs with different sizes, but at root complex side we are getting only BAR0 available as IO device with 4 byte length.   

 

# lspci -s 0a:00.0 -vvvv

0a:00.0 RAM memory: Device beaf:dead (rev 01)

Subsystem: Device beaf:dead

Physical Slot: 19

Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-

Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort+ <TAbort- <MAbort- >SERR- <PERR- INTx-

Interrupt: pin A routed to IRQ 16

Region 0: I/O ports at 8000 [size=4]

[virtual] Expansion ROM at fe200000 [disabled] [size=64K]

Capabilities: [40] Power Management version 3

Flags: PMEClk- DSI- D1+ D2- AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold+)

Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+

Address: 0000000000000000  Data: 0000

Masking: 00000000  Pending: 00000000

Capabilities: [70] Express (v2) Endpoint, MSI 00

DevCap:  MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us

ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-

DevCtl:  Report errors: Correctable- Non-Fatal- Fatal- Unsupported-

RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-

MaxPayload 128 bytes, MaxReadReq 512 bytes

DevSta:  CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-

LnkCap:  Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 <8us

ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+

LnkCtl:  ASPM Disabled; RCB 64 bytes Disabled- CommClk-

ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-

LnkSta:  Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-

DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported

DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled

LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-

Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-

Compliance De-emphasis: -6dB

LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-

EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-

Capabilities: [100 v2] Advanced Error Reporting

UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-

UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-

UESvrt:  DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-

CESta:  RxErr- BadTLP- BadDLLP- Rollover+ Timeout+ NonFatalErr-

CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+

AERCap:  First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-

Capabilities: [148 v1] L1 PM Substates

L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1+ L1_PM_Substates+

  PortCommonModeRestoreTime=10us PortTPowerOnTime=10us

 

Also, we are unable to write to this port and always read the same value when trying read from this IO port via inb/outb commands.

0 Kudos
1 Reply

282 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

0 Kudos