diff options
author | Vladimir Vid <vladimir.vid@sartura.hr> | 2018-07-09 11:09:53 +0200 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2018-08-25 15:40:23 +0200 |
commit | 6cda4f68619ec139be7897ea61b7f22c72c38b59 (patch) | |
tree | 76e77a670a9896c044be6e9689714a4fe66833d6 /target/linux | |
parent | 672c430d6e2a1dbc5f99fd5d8d9d47e6af02ad5e (diff) | |
download | upstream-6cda4f68619ec139be7897ea61b7f22c72c38b59.tar.gz upstream-6cda4f68619ec139be7897ea61b7f22c72c38b59.tar.bz2 upstream-6cda4f68619ec139be7897ea61b7f22c72c38b59.zip |
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>
Diffstat (limited to 'target/linux')
-rwxr-xr-x | target/linux/imx6/base-files/etc/board.d/02_network | 1 | ||||
-rwxr-xr-x | target/linux/imx6/base-files/lib/imx6.sh | 5 | ||||
-rw-r--r-- | target/linux/imx6/image/Makefile | 16 | ||||
-rw-r--r-- | target/linux/imx6/image/bootscript-cubox | 26 |
4 files changed, 48 insertions, 0 deletions
diff --git a/target/linux/imx6/base-files/etc/board.d/02_network b/target/linux/imx6/base-files/etc/board.d/02_network index 3f269dfae8..6ec667346d 100755 --- a/target/linux/imx6/base-files/etc/board.d/02_network +++ b/target/linux/imx6/base-files/etc/board.d/02_network @@ -10,6 +10,7 @@ board=$(board_name) board_config_update case "$board" in +cubox-i |\ *gw51xx |\ *gw52xx |\ *gw5904) diff --git a/target/linux/imx6/base-files/lib/imx6.sh b/target/linux/imx6/base-files/lib/imx6.sh index e211f54e54..1bf1439523 100755 --- a/target/linux/imx6/base-files/lib/imx6.sh +++ b/target/linux/imx6/base-files/lib/imx6.sh @@ -54,6 +54,11 @@ imx6_board_detect() { name="gw5904" ;; + "SolidRun Cubox-i Solo/DualLite" |\ + "SolidRun Cubox-i Dual/Quad") + name="cubox-i" + ;; + "Wandboard i.MX6 Dual Lite Board") name="wandboard" ;; diff --git a/target/linux/imx6/image/Makefile b/target/linux/imx6/image/Makefile index cef08f227e..540692d817 100644 --- a/target/linux/imx6/image/Makefile +++ b/target/linux/imx6/image/Makefile @@ -51,6 +51,13 @@ define Build/bootfs.tar.gz -czvf $@ . endef +define Build/boot-scr + mkimage -A arm -O linux -T script -C none -a 0 -e 0 \ + -n '$(DEVICE_ID) OpenWrt bootscript' \ + -d ./bootscript-$(DEVICE_NAME) \ + $(BIN_DIR)/boot.scr +endef + ################################################# # Devices ################################################# @@ -123,4 +130,13 @@ define Device/wandboard endef TARGET_DEVICES += wandboard +define Device/cubox-i + KERNEL := kernel-bin | install-dtb | boot-scr + DEVICE_NAME := cubox + DEVICE_TITLE := SolidRun CuBox-i + DEVICE_PACKAGES := u-boot-mx6cuboxi kmod-drm-imx kmod-drm-imx-hdmi kmod-usb-hid + DEVICE_DTS := imx6q-cubox-i imx6dl-cubox-i +endef +TARGET_DEVICES += cubox-i + $(eval $(call BuildImage)) diff --git a/target/linux/imx6/image/bootscript-cubox b/target/linux/imx6/image/bootscript-cubox new file mode 100644 index 0000000000..b639590720 --- /dev/null +++ b/target/linux/imx6/image/bootscript-cubox @@ -0,0 +1,26 @@ +echo "CuBox OpenWrt Boot script" + +# Set console variable for both UART and HDMI +setenv console console=ttymxc0,115200 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 + +# Find correct dtb +if test ${board_name} = CUBOXI && test ${board_rev} = MX6DL; then + setenv fdt_name imx6dl.dtb; +elif test ${board_name} = CUBOXI && test ${board_rev} = MX6Q; then + setenv fdt_name imx6q-cubox-i.dtb; +fi + +# Set correct devtype and partition +if test ${devtype} != mmc; then setenv devtype mmc; fi +if mmc dev 0; then + setenv mmcdev 0 +elif mmc dev 1; then + setenv mmcdev 1 +fi + +# Boot from the SD card is supported at the moment +setenv bootargs "${console} root=/dev/mmcblk1p1 rw rootwait" +mmc dev ${mmcdev} +load ${devtype} ${mmcdev}:${devplist} ${kernel_addr_r} /boot/openwrt-imx6-cubox-i-uImage +load ${devtype} ${mmcdev}:${devplist} ${fdt_addr_r} /boot/openwrt-imx6-${fdt_name} +bootz ${kernel_addr_r} - ${fdt_addr_r} |