I need the i.MX6 (sabre lite) to connect to a PCIe device .
we reference sabre lite board, and connect pcie pins to a fpga, and download a pcie-core to fpga.
our linux L3.0.35_Version is 4.1.0,but imx pcie port can not link up , here is boot message:
U-Boot 2009.08 (May 31 2013 - 10:50:52)
CPU: Freescale i.MX6 family TO1.2 at 792 MHz
Temperature: 14 C, calibration data 0x5864c77d
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 264000000Hz
emi_slow clock: 132000000Hz
ddr clock : 528000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: MX6Q-SABRELITE:[ POR]
Boot Device: I2C
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1
JEDEC ID: 0xbf:0x25:0x41
Reading SPI NOR flash 0xc0000 [0x2000 bytes] -> ram 0x276009b8
SUCCESS
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: got MAC address from IIM: 11:22:33:44:55:66
FEC0 [PRIME]
Warning: FEC0 MAC addresses don't match:
Address in SROM is 11:22:33:44:55:66
Address in environment is 00:01:02:03:04:05
Hit any key to stop autoboot: 0
mmc1 is current device
MMC read: dev # 1, block # 2048, count 8192 ... 8192 blocks read: OK
## Booting kernel from Legacy Image at 10800000 ...
Image Name: Linux-3.0.35
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3759612 Bytes = 3.6 MB
Load Address: 10008000
Entry Point: 10008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Linux version 3.0.35 (gongyf@gongyf-virtual-machine) (gcc version 4.6.2 20110630 (prerelease) (Freescale MAD -- Linaro 2011.07 -- Built at 2011/08/10 09:20) ) #29 SMP PREEMPT Mon Jan 20 21:54:43 CST 2014
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: Boundary Devices Nitrogen6X/SABRE Lite Board
Memory policy: ECC disabled, Data cache writealloc
CPU identified as i.MX6Q, silicon rev 1.2
PERCPU: Embedded 7 pages/cpu @8c008000 s5440 r8192 d15040 u32768
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 227328
Kernel command line: console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 640MB 256MB = 896MB total
Memory: 900780k/900780k available, 147796k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xf4600000 - 0xffe00000 ( 184 MB)
vmalloc : 0xc0800000 - 0xf2000000 ( 792 MB)
lowmem : 0x80000000 - 0xc0000000 (1024 MB)
pkmap : 0x7fe00000 - 0x80000000 ( 2 MB)
modules : 0x7f000000 - 0x7fe00000 ( 14 MB)
.init : 0x80008000 - 0x80039000 ( 196 kB)
.text : 0x80039000 - 0x806caa04 (6727 kB)
.data : 0x806cc000 - 0x80723720 ( 350 kB)
.bss : 0x80723744 - 0x80767aa4 ( 273 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Preemptible hierarchical RCU implementation.
NR_IRQS:624
MXC GPIO hardware
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms
arm_max_freq=1GHz
MXC_Early serial console at MMIO 0x21e8000 (options '115200')
bootconsole [ttymxc1] enabled
Console: colour dummy device 80x30
Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
CPU1: Booted secondary processor
CPU2: Booted secondary processor
CPU3: Booted secondary processor
Brought up 4 CPUs
SMP: Total of 4 processors activated (6324.22 BogoMIPS).
devtmpfs: initialized
print_constraints: dummy:
NET: Registered protocol family 16
print_constraints: vddpu: 725 <--> 1300 mV at 700 mV fast normal
print_constraints: vddcore: 725 <--> 1300 mV at 1150 mV fast normal
print_constraints: vddsoc: 725 <--> 1300 mV at 1200 mV fast normal
print_constraints: vdd2p5: 2000 <--> 2775 mV at 2400 mV fast normal
print_constraints: vdd1p1: 800 <--> 1400 mV at 1100 mV fast normal
print_constraints: vdd3p0: 2625 <--> 3400 mV at 3000 mV fast normal
lcd_disable_pins
------------ Board type Sabre Lite
imx_add_mxc_pwm:pdata= (null)
imx_add_mxc_pwm:pdata= (null)
imx_add_mxc_pwm:pdata=806ef528
imx_add_mxc_pwm:pdata= (null)
Flexcan NXP tja1040
hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.
hw-breakpoint: maximum watchpoint size is 4 bytes.
L310 cache controller enabled
l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x02070000, Cache size: 1048576 B
bio: create slab <bio-0> at 0
print_constraints: VDDA: 2500 mV
print_constraints: VDDIO: 3300 mV
machine_constraints_voltage: VDDD: unsupportable voltage constraints
reg-fixed-voltage reg-fixed-voltage.2: Failed to register regulator: -22
reg-fixed-voltage: probe of reg-fixed-voltage.2 failed with error -22
print_constraints: vmmc: 3300 mV
vgaarb: loaded
SCSI subsystem initialized
spi_imx imx6q-ecspi.0: probed
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Freescale USB OTG Driver loaded, $Revision: 1.55 $
imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
imx-ipuv3 imx-ipuv3.1: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 driver probed
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 dphy version is 0x3130302a
MIPI CSI2 driver module loaded
Advanced Linux Sound Architecture Driver Version 1.0.24.
Bluetooth: Core ver 2.16
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
cfg80211: Calling CRDA to update world regulatory domain
Switching to clocksource mxc_timer1
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
TCP reno registered
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
PMU: registered new PMU device of type 0
Static Power Management for Freescale i.MX6
wait mode is enabled for i.MX6
cpaddr = c0880000 suspend_iram_base=c0918000
PM driver module loaded
iMX6 PCIe PCIe RC mode imx_pcie_pltfm_probe entering.
CONFIG_IMX_PCIE_RC_MODE_IN_EP_RC_SYS = 1 .
PCIE: imx_pcie_pltfm_probe start link up.
link up failed, DB_R0:0x00b03200, DB_R1:0x08200000!
IMX PCIe port: link down!
IMX usb wakeup probe
add wake up source irq 75
IMX usb wakeup probe
cpu regulator mode:ldo_enable
i.MXC CPU frequency driver
squashfs: version 4.0 (2009/01/31) Phillip Lougher
msgmni has been set to 1759
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
pwm_config: pwm freq = 32786, clk_select=2 clock_rate=22000000
pwm_config: pwm freq = 20000, clk_select=2 clock_rate=22000000
MIPI DSI driver module loaded
mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver hdmi
mxc_hdmi mxc_hdmi: Detected HDMI controller 0x13:0xa:0xa0:0xc1
fbcvt: 1920x1080@60: CVT Name - 2.073M9
ipu_init_sync_panel: disp=1, pixel_clk=148500000 148500000
imx-ipuv3 imx-ipuv3.0: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)
pwm_config: pwm freq = 32786, clk_select=2 clock_rate=22000000
pwm_config: pwm freq = 20000, clk_select=2 clock_rate=22000000
ipu_init_sync_panel: disp=1, pixel_clk=148500000 148500000
Console: switching to colour frame buffer device 240x67
mxc_sdc_fb mxc_sdc_fb.1: register mxc display driver lcd
lcd_enable_pins
ipu_init_sync_panel: disp=0, pixel_clk=27000000 27000000
pwm_config: pwm freq = 32786, clk_select=2 clock_rate=22000000
pwm_config: pwm freq = 20000, clk_select=2 clock_rate=22000000
mxc_sdc_fb mxc_sdc_fb.2: register mxc display driver ldb
_regulator_get: get() with no identifier
ldb_disp_init: ret=3, 1280x800
ldb_disp_init:r=59, x=1280, y=800, p=14065, l=40, r=40, upper=10, lower=3, h=80, v=10
ldb_disp_init: 1024x768
ipu_init_sync_panel: disp=0, pixel_clk=71098000 71458646
pwm_config: pwm freq = 32786, clk_select=2 clock_rate=22000000
pwm_config: pwm freq = 20000, clk_select=2 clock_rate=22000000
mxc_sdc_fb mxc_sdc_fb.3: register mxc display driver ldb
ldb_disp_init: ret=3, 1280x800
ldb_disp_init:r=59, x=1280, y=800, p=14065, l=40, r=40, upper=10, lower=3, h=80, v=10
ldb_disp_init: 1024x768
ipu_init_sync_panel: disp=1, pixel_clk=71098000 71458646
pwm_config: pwm freq = 32786, clk_select=2 clock_rate=22000000
pwm_config: pwm freq = 20000, clk_select=2 clock_rate=22000000
imx-sdma imx-sdma: loaded firmware 1.1
imx-sdma imx-sdma: initialized
Serial: IMX driver
imx-uart.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX
imx-uart.1: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX
old_ufcr=a81 new_ufcr=b01, old_ucr2=4027 new_ucr2=4027, old_ubir=f num=1f7, old_ubmr=15b denom=c34
clk=80000000 div=7 num=504 denom=3125 baud=115200
console [ttymxc1] enabled, bootconsole disabled
console [ttymxc1] enabled, bootconsole disabled
loop: module loaded
Can't recover from RESET HBA!
No sata disk.
m25p80 spi0.0: sst25vf016b (2048 Kbytes)
Creating 3 MTD partitions on "m25p80":
0x000000000000-0x0000000c0000 : "bootloader"
0x0000000c0000-0x0000000c2000 : "ubparams"
0x0000000c2000-0x000000200000 : "unused"
vcan: Virtual CAN interface driver
CAN device driver interface
flexcan netdevice driver
flexcan imx6q-flexcan.0: device registered (reg_base=c09a8000, irq=142)
FEC Ethernet Driver
fec_enet_mii_bus: probed
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
fsl-ehci fsl-ehci.0: irq 75, io base 0x02184000
fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
add wake up source irq 72
fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2
fsl-ehci fsl-ehci.1: irq 72, io base 0x02184200
fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver usbserial
usbserial: USB Serial Driver core
USB Serial support registered for GSM modem (1-port)
usbcore: registered new interface driver option
option: v0.7.2:USB Driver for GSM modems
USB Serial support registered for Qualcomm USB modem
usbcore: registered new interface driver qcserial
ARC USBOTG Device Controller driver (1 August 2005)
mousedev: PS/2 mouse device common for all mice
input: gpio-keys as /devices/platform/gpio-keys/input/input0
tsc2004_prepare_for_reading: write_cmd -5
tsc2004: probe of 2-0048 failed with error -5
egalax_ts 2-0004: egalax_ts: failed to read firmware version
egalax_ts: probe of 2-0004 failed with error -5
ft5x06-ts 2-0038: ft5x06: Could not detect touch screen.
ft5x06: Jan 5 2014
check_alarm_past: alarm in the past
snvs_rtc snvs_rtc.0: rtc core: registered snvs_rtc as rtc0
i2c /dev entries driver
Linux video capture interface: v2.00
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video16
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video17
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video18
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video19
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video20
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video21
i2c-core: driver [mma8450] using legacy suspend method
i2c-core: driver [mma8450] using legacy resume method
add mma8450 i2c driver
imx2-wdt imx2-wdt.0: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=1)
device-mapper: ioctl: 4.20.0-ioctl (2011-02-02) initialised: dm-devel@redhat.com
Bluetooth: HCI UART driver ver 2.2
Bluetooth: HCILL protocol initialized
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
mmc0: SDHCI controller on platform [sdhci-esdhc-imx.2] using DMA
sdhci sdhci-esdhc-imx.3: no write-protect pin available!
mmc1: SDHCI controller on platform [sdhci-esdhc-imx.3] using DMA
mxc_vdoa mxc_vdoa: i.MX Video Data Order Adapter(VDOA) driver probed
VPU initialized
mxc_asrc registered
Galcore version 4.6.9.6622
Thermal calibration data is 0x5864c77d
Thermal sensor with ratio = 183
Anatop Thermal registered as thermal_zone0
anatop_thermal_probe: default cooling device is cpufreq!
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
usbcore: registered new interface driver snd-usb-audio
mxc_hdmi_soc mxc_hdmi_soc.0: MXC HDMI Audio
sgtl5000 0-000a: Failed to get supply 'VDDD': -19
print_constraints: 0-000a: 850 <--> 1600 mV at 1200 mV normal
sgtl5000 0-000a: Device with ID register 0 is not a sgtl5000
sgtl5000 0-000a: asoc: failed to probe CODEC sgtl5000.0-000a: -19
asoc: failed to instantiate card sgtl5000-audio: -19
asoc: mxc-hdmi-soc <-> imx-hdmi-soc-dai.0 mapping ok
ALSA device list:
#0: imx-hdmi-soc
NET: Registered protocol family 26
TCP cubic registered
NET: Registered protocol family 17
can: controller area network core (rev 20090105 abi 8)
NET: Registered protocol family 29
can: raw protocol (rev 20090105)
can: broadcast manager protocol (rev 20090105 t)
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP filters: protocol multicast
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
lib80211: common routines for IEEE802.11 drivers
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
Bus freq driver module loaded
Bus freq driver Enabled
mxc_dvfs_core_probe
DVFS driver module loaded
regulator_init_complete: VDDIO: incomplete constraints, leaving on
regulator_init_complete: VDDA: incomplete constraints, leaving on
snvs_rtc snvs_rtc.0: setting system clock to 1970-01-01 00:00:00 UTC (0)
Waiting for root device /dev/mmcblk0p1...
mmc1: host does not support reading read-only switch. assuming write-enable.
mmc1: new high speed SDHC card at address e624
mmcblk0: mmc1:e624 SU08G 7.40 GiB
mmcblk0: p1
EXT3-fs: barriers not enabled
kjournald starting. Commit interval 5 seconds
EXT3-fs (mmcblk0p1): using internal journal
EXT3-fs (mmcblk0p1): recovery complete
EXT3-fs (mmcblk0p1): mounted filesystem with writeback data mode
VFS: Mounted root (ext3 filesystem) on device 179:1.
devtmpfs: mounted
Freeing init memory: 196K
init started: BusyBox v1.20.2 (2013-05-30 08:10:42 EDT)
Setting hotplug handler: [ OK ]
Creating device files: Auto-mount of [/media/mmcblk0p1] successful
[ OK ]
mount: mounting none on /dev/pts failed: No such file or directory
mount: mounting tmpfs on /dev/shm failed: No such file or directory
modprobe: chdir(3.0.35): No such file or directory
modprobe: chdir(3.0.35): No such file or directory
modprobe: chdir(3.0.35): No such file or directory
Setting timezone and system clock: [OK]
Starting system logging.
Configuring network interfaces: done
Finding touchscreen using legacy method:[FAIL]
Starting demo...
BusyBox v1.20.2 (2013-05-30 08:10:42 EDT) built-in shell (ash)
Enter 'help' for a list of built-in commands.
# pwm_config: pwm freq = 32786, clk_select=2 clock_rate=22000000
pwm_config: pwm freq = 20000, clk_select=2 clock_rate=22000000
Has anybody seen this problem before ?
Is there anything to do in the kernel to make PCIe port link up?
Desperately looking for answers, thank you.
For most PCIe devices, all you need to do is hook up the transmit (J23, pins 4-5) and receive (J23, pins 2-3) pairs.
I have heard of some devices recently that require PCIe reset though, and our daughter board has this pulled high with a weak pullup.
Are you using one of our daughter boards?
Does your configuration have a standard connector such that you can test another device? (I'm wondering whether this is a systemic issue or specific to the FPGA)
we don't use daughter boards, we reference the sabrelite board and design a new board, connect pcie pins to a fpga.
so we cannot test other pcie device.
we can try pulled the pcie reset to high to test.
Is this working yet? If not, can you post what your kernel config is?