Test setup: - Odroid C2 - Class 10 micro SD card - Hardkernel 8GB eMMC - LG FHD TV (HDMI) - ODROID VU7 Plus - Tested with 1080p60 - USB keyboard and mouse - 2.5" USB HDD (only for kernel build) - Cinergy HTC USB XS DVB-C/T stick (em28xx) - LogiLink UA0025C Fast Ethernet USB 2.0 to RJ45 Adapter (mcs7830, only for testing) - Onboard Network Port connected to gigabit switch - Debian 9 XFCE - Partitions /dev/mmcblk0p1 /media/boot vfat /dev/mmcblk0p2 / ext4 Test software: - cat /proc/cpuinfo - fbset - glmark2-es2 (not working) - mpv - chromium-browser - xfce4-sensors-plugin # 1. prepare and build mainline u-boot (needs gcc-6 or later) tar xzf u-boot-2018.03-odroidc2-build.tar.gz sudo bash -e build-deps-u-boot.sh bash -e prepare-u-boot.sh bash -e build-u-boot.sh # only installs the debian package, fusing later sudo bash -e install-u-boot.sh # 2. prepare and build mainline kernel tar xzf linux-4.18-odroidc2-build.tar.gz sudo bash -e build-deps.sh bash -e prepare-linux.sh bash -e prepare-mali-driver.sh bash -e config-linux.sh bash -e build-linux.sh bash -e build-mali-driver.sh # 3. prepare and build video driver unzip xserver-xorg-video-armsoc-c2.zip sudo bash -e build-deps-armsoc.sh bash -e prepare-armsoc.sh bash -e build-armsoc.sh # 4. install u-boot, kernel and video driver cd /usr/lib/u-boot/odroid-c2/ sudo ./sd_fusing.sh /dev/mmcblkX cd - sudo bash -e install-linux.sh sudo bash -e install-mali-driver.sh sudo bash -e install-armsoc.sh # Install binary only without build apt-get install unzip wget wget -N http://seafile.servator.de/sbc/odroid/next/u-boot-2018.03.001-c2.zip unzip u-boot-2018.03.001-c2.zip sudo bash -e install-u-boot.sh cd /usr/lib/u-boot/odroid-c2/ sudo ./sd_fusing.sh /dev/mmcblk0 cd - wget -N http://seafile.servator.de/sbc/odroid/next/linux-image-4.18.1-20180815-c2-arm64.zip unzip linux-image-4.18.1-20180815-c2-arm64.zip sudo bash -e install-linux.sh # Optional, Mali without UMP wget -N http://seafile.servator.de/sbc/odroid/next/mali450-meson-gx-arm64.zip unzip mali450-meson-gx-arm64.zip sudo bash -e install-mali-driver.sh wget -N http://seafile.servator.de/sbc/odroid/next/xserver-xorg-video-armsoc-c2-stretch-arm64.zip unzip xserver-xorg-video-armsoc-c2-stretch-arm64.zip sudo bash -e install-armsoc.sh # Optional, keeping Mali with UMP wget -N http://seafile.servator.de/sbc/odroid/fbturbo/xserver-xorg-video-fbturbo-c2-stretch-arm64.zip unzip xserver-xorg-video-fbturbo-c2-stretch-arm64.zip sudo bash -e install-fbturbo.sh # Hints - check /etc/fstab and /media/boot/boot.cmd that partitions use correct LABEL=x or UUID=x - reboot - if you get black screen, switch to another HDMI port on TV, then switch back to C2 HDMI port - if you get green screen, reboot again # Notes - Enabled frequency scaling with: https://raw.githubusercontent.com/asavah/odroid-c2-mainline-patches/4.14.y/odroidc2-enable-scpi-dvfs.patch - Added thermal zone with passive cooling with: linux-4.14.y-le-amlogic-gx-scpi-1004-mailbox-revert_switch_to_hrtimer_for_tx_complete_polling.patch odroidc2-enable-scpi-cpu-thermal.patch - Added audio with: linux-4.16-le-amlogic-gx-1000-extra.patch linux-4.14-le-amlogic-gx-1001-dts-meson-gxbb-add_sound-dai-cells_to_hdmi_node.patch - Some cleanup (not related to C2): linux-4.16-le-amlogic-gx-dts-1000-dts-meson-gx-remove_duplicate_hdmi_5v_regulator.patch - Almost all other patches cherry picked from https://github.com/superna9999/linux # References https://github.com/xypron/u-boot-odroid-c2 https://github.com/asavah/odroid-c2-mainline-patches https://github.com/superna9999/linux/commits/linux-4.14-le-amlogic-gx https://github.com/superna9999/linux/commits/linux-4.16-le-amlogic-gx https://github.com/superna9999/linux/commits/linux-4.16-le-amlogic-gx-dts https://github.com/superna9999/meson_gx_mali_450 # Changes Update 20180429 - Kernel 4.16.5 - Added linux-4.14.y-le-amlogic-gx-scpi-1004-mailbox-revert_switch_to_hrtimer_for_tx_complete_polling.patch - Removed all other scpi workaround patches Update 20180430 - Kernel 4.16.6 - Added linux-4.16-le-amlogic-gx-1001-usb-enable-otg-as-host.patch https://github.com/tobetter/linux/blob/odroidc2-v3.16.y/drivers/amlogic/usb/phy/usbphy.c#L269 https://github.com/tobetter/linux/blob/odroidc2-v4.16/drivers/phy/amlogic/phy-meson8b-usb2.c#L184 Update 20180506 - Kernel 4.16.7 - Added some drm backport patches (linux-4.17.y-amlogic-drm-00*.patch) - Added linux-4.17.y-amlogic-drm-1000-wip_calculate_display_params-fix.patch - Added support for ODROID VU7 Plus MultiTouch (linux-4.17.y-amlogic-drm-1001-drm-mode-quirks-vu7plus.patch and linux-4.16.y-input_touchscreen-vu5-vu7plus.patch) Update 20180522 - Kernel 4.16.10 - Removed linux-4.17.y-amlogic-drm-1001-drm-mode-quirks-vu7plus.patch - Added linux-4.17.y-amlogic-drm-1001-drm-mode-32khz-vu7plus.patch linux-4.16-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.16-odroidc2-build.tar.gz linux-image-4.16.10-20180522-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.16.10-20180522-c2-arm64.zip linux-4.14-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.14-odroidc2-build.tar.gz linux-image-4.14.43-20180522-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.14.43-20180522-c2-arm64.zip Update 20180526 - Kernel 4.16.12 - Removed linux-4.17.y-amlogic-drm-1001-drm-mode-32khz-vu7plus.patch - Added linux-4.17.y-amlogic-drm-1001-drm-mode-32000khz-vu7plus.patch linux-4.16-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.16-odroidc2-build.tar.gz linux-image-4.16.12-20180526-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.16.12-20180526-c2-arm64.zip linux-4.14-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.14-odroidc2-build.tar.gz linux-image-4.14.44-20180526-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.14.44-20180526-c2-arm64.zip Update 20180602 - Kernel 4.17.0 - Removed linux-4.17.y-amlogic-drm-0016-[wip]_calculate_display_params.patch - Removed linux-4.17.y-amlogic-drm-1000-wip_calculate_display_params-fix.patch - Removed linux-4.17.y-amlogic-drm-1001-drm-mode-32000khz-vu7plus.patch - Added linux-4.17-amlogic-dmt-extended-0001-make_dmt_timings_parameter_generic_and_add_more_frequencies.patch (by baylibre) - Added linux-4.17-amlogic-dmt-extended-1001-fix-32000khz.patch - Added linux-4.17-amlogic-dmt-extended-1002-custom-mode.patch linux-4.14-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.14-odroidc2-build.tar.gz linux-image-4.14.47-20180602-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.14.47-20180602-c2-arm64.zip linux-4.17-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.17-odroidc2-build.tar.gz linux-image-4.17.0-20180602-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.17.0-20180602-c2-arm64.zip Update 20180610 - Kernel 4.17.1 - Added linux-4.17-amlogic-dmt-extended-1003-calculate-clock-dividers.patch - Added linux-4.17-le-amlogic-gx-0027-arm64-dts-meson-activate_hdmi_audio_hdmi_enabled_boards.patch - Added linux-4.14.y-le-amlogic-gx-1002-dts-meson-gxbb-rename_audio_card.patch - Added linux-4.17.y-amlogic-clk-1001-clk-meson-fix_broken_audio.patch linux-4.14-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.14-odroidc2-build.tar.gz linux-image-4.14.49-20180610-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.14.49-20180610-c2-arm64.zip linux-4.17-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.17-odroidc2-build.tar.gz linux-image-4.17.1-20180610-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.17.1-20180610-c2-arm64.zip migrate the audio divider clock to clk_regmap https://github.com/torvalds/linux/commit/88a4e1283681e0f07048b2bd867cc81fbbae57cc 4.14: https://github.com/superna9999/linux/blob/linux-4.14-le-amlogic-gx/drivers/clk/meson/clk-audio-divider.c#L71 4.17: https://github.com/torvalds/linux/blob/master/drivers/clk/meson/clk-audio-divider.c#L54 https://github.com/superna9999/linux/blob/linux-4.17-le-amlogic-gx/sound/soc/meson/i2s-dai.c#L148 https://github.com/superna9999/linux/blob/linux-4.17-le-amlogic-gx/sound/soc/meson/i2s-dai.c#L231 Update 20180617 - Kernel 4.17.2 - Reduced 4.17 patchset - Synchronized 4.14 patchset with 4.17 - install-mali-driver.sh: Removed symlinking libwayland-egl.so.1.0.0 with libMali.so linux-4.14-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.14-odroidc2-build.tar.gz linux-image-4.14.50-20180617-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.14.50-20180617-c2-arm64.zip linux-4.17-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.17-odroidc2-build.tar.gz linux-image-4.17.2-20180617-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.17.2-20180617-c2-arm64.zip libsdl2-c2.zip http://seafile.servator.de/sbc/odroid/build/libsdl2-c2.zip libsdl2-2.0.8-c2-bionic-arm64.zip http://seafile.servator.de/sbc/odroid/sdl2/libsdl2-2.0.8-c2-bionic-arm64.zip Update 20180726 - Kernel 4.17.11 - Added UMP ioctls to drm fb (linux-4.14.y-drm-fb_helper-ump-ioctls.patch) - Added Mali and UMP compatibility patches for Kernel 4.1x (series-mali-r6p2 and mali-r6p2-*.patch) - Added meson drm to fbturbo (fbturbo-add-meson-and-sun4i-drm.patch) linux-4.14-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.14-odroidc2-build.tar.gz linux-image-4.14.59-20180726-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.14.59-20180726-c2-arm64.zip linux-4.17-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.17-odroidc2-build.tar.gz linux-image-4.17.11-20180726-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.17.11-20180726-c2-arm64.zip xserver-xorg-video-fbturbo-c2.zip http://seafile.servator.de/sbc/odroid/build/xserver-xorg-video-fbturbo-c2.zip xserver-xorg-video-fbturbo-c2-stretch-arm64.zip http://seafile.servator.de/sbc/odroid/fbturbo/xserver-xorg-video-fbturbo-c2-stretch-arm64.zip xserver-xorg-video-fbturbo-c2-bionic-arm64.zip http://seafile.servator.de/sbc/odroid/fbturbo/xserver-xorg-video-fbturbo-c2-bionic-arm64.zip Replacing mali and fbturbo is now optional. I added UMP support to mainline kernel. I just added the missing ioctls to drm_fb_helper.c and added drm_fb_ump.c, which is based on osd_ump.c from kernel 3.14/3.16 so I kept the Hardkernel copyright statement. Why UMP again? Because on kernel 4.14/4.17 - with armsoc and without UMP I get a glmark2-es2 score of 38 and below, sometimes if all glmark-es2 tests are done the application hangs. - with fbturbo and UMP I get a glmark2-es2 score of 90 and even higher, nothing hangs. Anyway the same kernel works with both variants now. And the same fbturbo works with kernel 3.14/3.16 and 4.14/4.17 now. Tested with UMP libs: mali-x11 (20161003-r6p1-ee42997-15 from http://deb.odroid.in/c2/ xenial main) mali-x11 (20180710-r6p1-10 from http://deb.odroid.in/c2/ bionic main) mali450-odroid (20161218-r6p1-1 from http://oph.mdrjr.net/meveric/ all c2 main) ...and libs without UMP: mali450-meson (20170630-r6p1-1, from amlogic buildroot openlinux 20170630) Update 20180815 - Kernel 4.18.1 - Added yocto-meson64 v4l2-m2m patches (https://github.com/superna9999/meta-meson/tree/topic/v4l2-m2m/recipes-kernel/linux/linux-yocto-meson64-4.18) - Conversion from boot.ini to boot.cmd supports eMMC now (install-linux.sh) linux-4.14-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.14-odroidc2-build.tar.gz linux-image-4.14.63-20180815-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.14.63-20180815-c2-arm64.zip linux-4.18-odroidc2-build.tar.gz http://seafile.servator.de/sbc/odroid/build/next/linux-4.18-odroidc2-build.tar.gz linux-image-4.18.1-20180815-c2-arm64.zip http://seafile.servator.de/sbc/odroid/next/linux-image-4.18.1-20180815-c2-arm64.zip