i.MX6 Solo X SABRE for smart devices with HDMI card

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

i.MX6 Solo X SABRE for smart devices with HDMI card

3,048 Views
markoroganovic
Contributor II

Hallo.

I am using i.MX6 Solo X SABRE board for Smart Devices and I am trying to display to HDMI monitor over HDMI card (MCIMXHDMICARD) instead of LVDS as in Quick Start Guide, but without succsess. I tried modifing mmcargs variable in U-boot, but with no luck. Can someone help me and say what modification should be done in U-boot in order to display things over LCD extention port and HDMI card.

The default printenv in U-boot is:

printenv

baudrate=115200

boot_fdt=try

bootcmd=mmc dev ${mmcdev};if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi

bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};

bootdelay=3

bootscript=echo Running bootscript from mmc ...; source

console=ttymxc0

ethact=FEC0

ethaddr=00:04:9f:03:85:a6

ethprime=FEC

fdt_addr=0x83000000

fdt_file=imx6sx-sdb.dtb

fdt_high=0xffffffff

image=zImage

initrd_addr=0x83800000

initrd_high=0xffffffff

ip_dyn=yes

loadaddr=0x80800000

loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};

loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}

loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}

loadm4image=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${m4image}

m4boot=sf probe 1:0; bootaux 0x78000000

m4image=m4_qspi.bin

mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber=""

mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}

mmcautodetect=yes

mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;

mmcdev=2

mmcpart=1

mmcroot=/dev/mmcblk3p2 rootwait rw

netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp

netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;

panel=Hannstar-XGA

script=boot.scr

update_m4_from_sd=if sf probe 1:0; then if run loadm4image; then setexpr fw_sz ${filesize} + 0xffff; setexpr fw_sz ${fw_sz} / 0x10000; setexpr fw_sz ${fw_sz} * 0x10000; sf erase 0x0 ${fw_sz}; sf write ${loadaddr} 0x0 ${filesize}; fi; fi

Environment size: 2377/8188 bytes

Begin of boot information:

mmc2 is current device

reading boot.scr

** Unable to read file boot.scr **

reading zImage

5545424 bytes read in 257 ms (20.6 MiB/s)

Booting from mmc ...

reading imx6sx-sdb.dtb

48951 bytes read in 19 ms (2.5 MiB/s)

Kernel image @ 0x80800000 [ 0x000000 - 0x549dd0 ]

## Flattened Device Tree blob at 83000000

   Booting using the fdt blob at 0x83000000

   Using Device Tree in place at 83000000, end 8300ef36

switch to ldo_bypass mode!

Starting kernel ...

Booting Linux on physical CPU 0x0

Linux version 3.10.53-1.1.0_ga+g496fbe0 (jenkins@scmbl1) (gcc version 4.8.2 (GCC) ) #1 SMP PREEMPT Mon Jan 5 15:55:14 CST 2015

CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d

CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

Machine: Freescale i.MX6 SoloX (Device Tree), model: Freescale i.MX6 SoloX SDB Board

cma: CMA: reserved 320 MiB at ac000000

Memory policy: ECC disabled, Data cache writealloc

PERCPU: Embedded 8 pages/cpu @81598000 s8960 r8192 d15616 u32768

Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260096

Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk3p2 rootwait rw

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: 1024MB = 1024MB total

Memory: 697256k/697256k available, 351320k reserved, 0K highmem

I appretiate any help.

Labels (4)
Tags (5)
7 Replies

977 Views
CarlosCasillas
NXP Employee
NXP Employee

Hi Marko,

I have consulted with AE team the option of using the MCIMXHDMICARD with the MCIMX6SX-SDB board, as it was originally designed for the i.MX53QSB.

I will post an update as soon as having news.


Best regards!

/Carlos

977 Views
CarlosCasillas
NXP Employee
NXP Employee

Hi Marko,

It is supposed that Linux 3.14.28 should have external HDMI (sii902x) support. It is required to ensure that the correct dtb file is being used. imx6sx-sdb-lcdif1.dtb is for HDMI.

Hope this will be useful for you.
Best regards!
/Carlos

0 Kudos

977 Views
CarlosCasillas
NXP Employee
NXP Employee

Hi Marko,

As commented before, imx6sx-sdb-lcdif1.dtb should be used. Considering a just flashed bootable SD for the MCIMX6SX-SDB board, try adding the following on u-boot command line:

    setenv panel 'MCIMX28LCD'

    setenv fdt_file 'imx6sx-sdb-lcdif1.dtb'

    saveenv

    boot

Reference:MCIMX28LCD on i.MX 6SoloX SABRE board


Hope this will be useful for you.
Best regards!
/Carlos

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

977 Views
markoroganovic
Contributor II

Hi Carlos,

I have tried to do the environment variable changes as suggested, (see the printenv below), but it resulted in kernel panic:

=> printenv

baudrate=115200

boot_fdt=try

bootcmd=run m4boot; mmc dev ${mmcdev};if mmc rescan;then if run loadbootscript;then run bootscript;else if run loadimage;then run mmcboot;else run netboot;fi;fi; else run netboot;fi;

bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};

bootdelay=3

bootscript=echo Running bootscript from mmc ...; source

console=ttymxc0

ethact=FEC0

ethaddr=00:04:9f:03:85:a6

ethprime=FEC

fdt_addr=0x83000000

fdt_file=imx6sx-sdb-lcdif1.dtb

fdt_high=0xffffffff

image=zImage

initrd_addr=0x83800000

initrd_high=0xffffffff

ip_dyn=yes

loadaddr=0x80800000

loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};

loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}

loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}

loadm4image=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${m4image}

m4boot=sf probe 1:0; bootaux 0x78000000

m4image=m4_qspi.bin

mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber=""

mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}

mmcautodetect=yes

mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;

mmcdev=2

mmcpart=1

mmcroot=/dev/mmcblk3p2 rootwait rw

netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp

netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;

panel=MCIMX28LCD

script=boot.scr

update_m4_from_sd=if sf probe 1:0; then if run loadm4image; then setexpr fw_sz ${filesize} + 0xffff; setexpr fw_sz ${fw_sz} / 0x10000; setexpr fw_sz ${fw_sz} * 0x10000; sf erase 0x0 ${fw_sz}; sf write ${loadaddr} 0x0 ${filesize}; fi; fi

Environment size: 2387/8188 bytes

Kernel panic at the end:

r7 : 80dc9a5c  r6 : 00000014  r5 : 80dc9a5c  r4 : 00000001

r3 : 00000000  r2 : a800f200  r1 : 00000001  r0 : 00000000

Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel

Control: 10c53c7d  Table: 8000404a  DAC: 00000015

Process swapper/0 (pid: 1, stack limit = 0xa8072238)

Stack: (0xa8073ee8 to 0xa8074000)

3ee0:                   a8072000 80d2c1d4 80d56fb8 80dc8ac0 80dc8ac0 8000889c

3f00: a800e900 80c171ec a80a2f00 806dfe84 00000000 00000000 00008ac0 80129438

3f20: 00000000 80d788f0 60000113 00000001 00000008 00000000 abfffa34 80045808

3f40: 80c0c4a4 00000007 00000007 abfffa36 80d788e0 80d62c88 00000007 80d56fb8

3f60: 80dc8ac0 80dc8ac0 0000010a 80d56fbc 00000000 80d13c54 00000007 00000007

3f80: 80d13514 8004e520 00000000 806d34d0 00000000 00000000 00000000 00000000

3fa0: 00000000 806d34d8 00000000 8000e538 00000000 00000000 00000000 00000000

3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 75be27af edf71d27

[<80d2c260>] (imx_amp_power_init) from [<8000889c>] (do_one_initcall+0xf8/0x154)

[<8000889c>] (do_one_initcall) from [<80d13c54>] (kernel_init_freeable+0x138/0x1d8)

[<80d13c54>] (kernel_init_freeable) from [<806d34d8>] (kernel_init+0x8/0xe8)

[<806d34d8>] (kernel_init) from [<8000e538>] (ret_from_fork+0x14/0x3c)

Code: e0233496 e0872102 e0844001 e5922004 (e5c31018)

---[ end trace 88d1c1c35acf052f ]---

Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

Should I add video variable to mmcargs? This is what is written in boot log regarding display:

MIPI DSI driver module loaded

mxsfb 2220000.lcdif: failed to find mxc display driver

DISPLAY: Power-on latency exceeded, new value 31000 ns

DISPLAY: Power-off latency exceeded, new value 24334 ns

Console: switching to colour frame buffer device 100x30

DISPLAY: Power-off latency exceeded, new value 25000 ns

mxsfb 2220000.lcdif: initialized

  1. 2224000.lcdif supply lcd not found, using dummy regulator

mxsfb 2224000.lcdif: registered mxc display driver ldb

mxsfb 2224000.lcdif: initialized

Thanks and Best Regards,

Marko Roganovic

0 Kudos

977 Views
CarlosCasillas
NXP Employee
NXP Employee

Hi Marko,

You should try with a recently flashed SD card using Linux 3.14.28 (L3.14.28_1.0.0_iMX6SX_BUNDLE on the i.MX6SX downloads). In my case, I have used “fsl-image-gui-x11-imx6sxsabresd.sdcard”, and I didn’t get kernel panic issues.


Hope this will be useful for you.
Best regards!
/Carlos

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

977 Views
markoroganovic
Contributor II

Hi Carlos,

We added video variable in mmcargs: video=mxc_lcdif:SEIKO-WVGA,bpp=16 (beside fdt_file and panel changes as suggested), and now it is functioning.

Thanks!

Best Regards!

Marko

0 Kudos

977 Views
CarlosCasillas
NXP Employee
NXP Employee

Hi Marko,

Yes, that was also mentioned on the referenced document MCIMX28LCD on i.MX 6SoloX SABRE board.

I'm glad to hear that it is working now!

Best regards!
/Carlos

-----------------------------------------------------------------------------------------------------------------------
Note: If a post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos