Openwrt/target/linux/imx6/base-files/lib/imx6.sh
Vladimir Vid 6cda4f6861 imx6: Initial support for SolidRun CuBox-i devices based on i.MX6 processors (i1, i2, i2eX, and i4Pro).
- Specifications -

CuBox i1:
- SoC: i.MX6 Solo
- Cores: 1
- Memory Size: 512MB
- GPU: GC880
- Wifi/Bluetooth: Optional
- USB 2.0 ports: 2
- Ethernet: 10/100/1000 Mbps

CuBox i2 | i2eX:
- SoC: i.MX6 Dual Lite
- Cores: 2
- Memory Size: 1GB
- GPU: GC2000
- Wifi/Bluetooth: Optional
- USB 2.0 ports: 2
- Ethernet: 10/100/1000 Mbps

CuBox i4Pro | i4x4:
- SoC: i.MX6 Quad
- Cores: 4
- Memory Size: 2/4 GB
- GPU: GC2000
- Wifi/Bluetooth: Build In
- USB 2.0 ports: 2
- Ethernet: 10/100/1000 Mbps

Built-in u-boot requires SPL (secondary program loader) to be present on the SD-card regardless of the image type which will be loaded.
SPL is generated by the u-boot-mx6cuboxi package which is preselected by the target device and can be found in bin/u-boot-mx6cuboxi directory.

Flashing the SPL:
dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=4
dd if=bin/targets/imx6/generic/u-boot-mx6cuboxi/SPL of=/dev/mmcblk0 bs=1K seek=1

Preparing the firmware on the SD-card:
(echo o; echo n; echo p; echo 1; echo ''; echo ''; echo w) | fdisk /dev/mmcblk0
mkfs.ext4 /dev/mmcblk0p1
mount /dev/mmcblk0p1 /mnt
tar -xzf bin/targets/imx6/generic/openwrt-imx6-device-cubox-i-rootfs.tar.gz -C /mnt/
mkdir -p /mnt/boot
cp bin/targets/imx6/generic/{*-uImage,*.dtb,*.scr} /mnt/boot/

Generated u-boot.img needs to be placed on the first partition:
cp bin/targets/imx6/generic/u-boot-mx6cuboxi/u-boot.img /mnt/

To boot from the SD card:

Boot script which sets mmc/dtb parameters and boots the board is automatically sourced.
If this does not work for any reason:
mmc dev 0; load mmc 0:1 $scriptaddr boot/boot.scr; source $scriptaddr

Currently imx6dl-cubox-i.dtb (Dual Lite) and imx6q-cubox-i.dtb (Quad) device trees are available.

Tested on i4Pro, MMC, USB (+ HiD), HDMI and ethernet ports are working.
Wireless and bluetooth are broken ATM. According to SolidRun forums, BCM4329/BCM4330 firmware is used which works fine on older kernels.

Signed-off-by: Vladimir Vid <vladimir.vid@sartura.hr>
2018-08-25 15:40:23 +02:00

79 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright (C) 2010-2013 OpenWrt.org
#
IMX6_BOARD_NAME=
IMX6_MODEL=
imx6_board_detect() {
local machine
local name
machine=$(cat /proc/device-tree/model)
case "$machine" in
"Gateworks Ventana i.MX6 DualLite/Solo GW51XX" |\
"Gateworks Ventana i.MX6 Dual/Quad GW51XX")
name="gw51xx"
;;
"Gateworks Ventana i.MX6 DualLite/Solo GW52XX" |\
"Gateworks Ventana i.MX6 Dual/Quad GW52XX")
name="gw52xx"
;;
"Gateworks Ventana i.MX6 DualLite/Solo GW53XX" |\
"Gateworks Ventana i.MX6 Dual/Quad GW53XX")
name="gw53xx"
;;
"Gateworks Ventana i.MX6 DualLite/Solo GW54XX" |\
"Gateworks Ventana i.MX6 Dual/Quad GW54XX" |\
"Gateworks Ventana GW5400-A")
name="gw54xx"
;;
"Gateworks Ventana i.MX6 Dual/Quad GW551X" |\
"Gateworks Ventana i.MX6 DualLite/Solo GW551X")
name="gw551x"
;;
"Gateworks Ventana i.MX6 DualLite/Solo GW552X" |\
"Gateworks Ventana i.MX6 Dual/Quad GW552X")
name="gw552x"
;;
"Gateworks Ventana i.MX6 DualLite/Solo GW553X" |\
"Gateworks Ventana i.MX6 Dual/Quad GW553X")
name="gw553x"
;;
"Gateworks Ventana i.MX6 DualLite/Solo GW5904" |\
"Gateworks Ventana i.MX6 Dual/Quad GW5904")
name="gw5904"
;;
"SolidRun Cubox-i Solo/DualLite" |\
"SolidRun Cubox-i Dual/Quad")
name="cubox-i"
;;
"Wandboard i.MX6 Dual Lite Board")
name="wandboard"
;;
*)
name="generic"
;;
esac
[ -z "$IMX6_BOARD_NAME" ] && IMX6_BOARD_NAME="$name"
[ -z "$IMX6_MODEL" ] && IMX6_MODEL="$machine"
[ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"
echo "$IMX6_BOARD_NAME" > /tmp/sysinfo/board_name
echo "$IMX6_MODEL" > /tmp/sysinfo/model
}