From f3f9bd9697e32fca5faa55fc9b968c2a32fb1973 Mon Sep 17 00:00:00 2001 From: Ryan Bray Date: Mon, 15 Jul 2019 01:24:43 -0600 Subject: [PATCH] Odroid xu4 updates (#425) * Odroid-XU4: Attempt to fix some eMMC devices * Linux-firmware: add s5p to buildroot * Odroid-XU4: fix uboot env size --- .../board/hardkernel/odroid-xu4/kernel.config | 4 +- .../board/hardkernel/odroid-xu4/meta | 2 +- ...e_the_default_dma_coherent_pool_size.patch | 42 ------------------- ...ed_strobe_timing_for_emmc_hs400_mode.patch | 13 ++++++ .../hardkernel/odroid-xu4/uboot-boot.ush | 13 ++++-- .../configs/odroid_xu4_defconfig | 4 +- .../0010-odroid-ux4-firmware.patch | 34 +++++++++++++++ buildroot/package/linux-firmware/Config.in | 6 +++ .../package/linux-firmware/linux-firmware.mk | 6 +++ 9 files changed, 74 insertions(+), 50 deletions(-) delete mode 100644 buildroot-external/board/hardkernel/odroid-xu4/patches/linux/000-arm-exynos_change_the_default_dma_coherent_pool_size.patch create mode 100644 buildroot-external/board/hardkernel/odroid-xu4/patches/linux/000-odroid_xu4_modified_strobe_timing_for_emmc_hs400_mode.patch create mode 100644 buildroot-patches/0010-odroid-ux4-firmware.patch diff --git a/buildroot-external/board/hardkernel/odroid-xu4/kernel.config b/buildroot-external/board/hardkernel/odroid-xu4/kernel.config index 524be0e50..70f913b5d 100644 --- a/buildroot-external/board/hardkernel/odroid-xu4/kernel.config +++ b/buildroot-external/board/hardkernel/odroid-xu4/kernel.config @@ -1583,8 +1583,8 @@ CONFIG_STANDALONE=y # CONFIG_PREVENT_FIRMWARE_BUILD is not set CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y -#CONFIG_EXTRA_FIRMWARE="edid/480x320.bin edid/1920x1080_24hz.bin edid/1920x1080_23_976hz.bin edid/848x480.bin edid/1152x864_75hz.bin edid/1280x768.bin edid/1920x800.bin edid/1400x1050.bin edid/1792x1344.bin edid/1024x768.bin edid/1280x800.bin edid/1920x1080.bin edid/720x480.bin edid/800x600.bin edid/800x480.bin edid/480x800.bin edid/1280x1024.bin edid/1280x720.bin edid/1440x900.bin edid/1680x1050.bin edid/1360x768.bin edid/1366x768.bin edid/1600x1200.bin edid/1600x900.bin edid/1920x1200_30hz.bin edid/1920x1200_60hz.bin edid/1920x1080_50hz.bin edid/640x480.bin edid/720x576.bin edid/1024x600.bin" -#CONFIG_EXTRA_FIRMWARE_DIR="firmware" +CONFIG_EXTRA_FIRMWARE="s5p-mfc-v8.fw" +CONFIG_EXTRA_FIRMWARE_DIR="/build/buildroot/output/target/usr/lib/firmware/" # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set CONFIG_WANT_DEV_COREDUMP=y CONFIG_ALLOW_DEV_COREDUMP=y diff --git a/buildroot-external/board/hardkernel/odroid-xu4/meta b/buildroot-external/board/hardkernel/odroid-xu4/meta index 6faf5412f..41110e03d 100644 --- a/buildroot-external/board/hardkernel/odroid-xu4/meta +++ b/buildroot-external/board/hardkernel/odroid-xu4/meta @@ -4,4 +4,4 @@ CHASSIS=embedded BOOTLOADER=uboot KERNEL_FILE=zImage BOOT_SYS=mbr -BOOT_ENV_SIZE=0x2000 +BOOT_ENV_SIZE=0x4000 diff --git a/buildroot-external/board/hardkernel/odroid-xu4/patches/linux/000-arm-exynos_change_the_default_dma_coherent_pool_size.patch b/buildroot-external/board/hardkernel/odroid-xu4/patches/linux/000-arm-exynos_change_the_default_dma_coherent_pool_size.patch deleted file mode 100644 index 26642d590..000000000 --- a/buildroot-external/board/hardkernel/odroid-xu4/patches/linux/000-arm-exynos_change_the_default_dma_coherent_pool_size.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h -index bf02dbd9ccda3..8029e21eee149 100644 ---- a/arch/arm/include/asm/dma-mapping.h -+++ b/arch/arm/include/asm/dma-mapping.h -@@ -5,7 +5,9 @@ - - #include - #include -+#include - #include -+#include - - #include - -diff --git a/arch/arm/mach-exynos/firmware.c b/arch/arm/mach-exynos/firmware.c -index fd6da5419b510..5b3abc935e7fc 100644 ---- a/arch/arm/mach-exynos/firmware.c -+++ b/arch/arm/mach-exynos/firmware.c -@@ -13,12 +13,14 @@ - #include - #include - #include -+#include - - #include - #include - #include - #include - #include -+#include - - #include "common.h" - #include "smc.h" -@@ -225,6 +227,8 @@ void __init exynos_firmware_init(void) - outer_cache.write_sec = exynos_l2_write_sec; - outer_cache.configure = exynos_l2_configure; - } -+ -+ init_dma_coherent_pool_size(SZ_1M); - } - - #define REG_CPU_STATE_ADDR (sysram_ns_base_addr + 0x28) diff --git a/buildroot-external/board/hardkernel/odroid-xu4/patches/linux/000-odroid_xu4_modified_strobe_timing_for_emmc_hs400_mode.patch b/buildroot-external/board/hardkernel/odroid-xu4/patches/linux/000-odroid_xu4_modified_strobe_timing_for_emmc_hs400_mode.patch new file mode 100644 index 000000000..6f30398a3 --- /dev/null +++ b/buildroot-external/board/hardkernel/odroid-xu4/patches/linux/000-odroid_xu4_modified_strobe_timing_for_emmc_hs400_mode.patch @@ -0,0 +1,13 @@ +diff --git a/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi b/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi +index d0ae8c5315048..3ccf2c5be034c 100755 +--- a/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi ++++ b/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi +@@ -402,7 +402,7 @@ + samsung,dw-mshc-sdr-timing = <0 4>; + samsung,dw-mshc-ddr-timing = <0 2>; + samsung,dw-mshc-hs400-timing = <0 2>; +- samsung,read-strobe-delay = <90>; ++ samsung,read-strobe-delay = <150>; + pinctrl-names = "default"; + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_cd &sd0_rclk>; + bus-width = <8>; diff --git a/buildroot-external/board/hardkernel/odroid-xu4/uboot-boot.ush b/buildroot-external/board/hardkernel/odroid-xu4/uboot-boot.ush index ee4cbded6..b5bcc1d29 100644 --- a/buildroot-external/board/hardkernel/odroid-xu4/uboot-boot.ush +++ b/buildroot-external/board/hardkernel/odroid-xu4/uboot-boot.ush @@ -3,15 +3,20 @@ part start mmc ${devnum} 9 mmc_env mmc dev ${devnum} + +# Note that import is performed twice for backwards compatability. setenv loadbootstate " \ echo 'loading env...'; \ - mmc read ${ramdisk_addr_r} ${mmc_env} 0x10; \ - env import -c ${ramdisk_addr_r} 0x2000;" + mw.b ${ramdisk_addr_r} 0 0x4000; \ + mmc read ${ramdisk_addr_r} ${mmc_env} 0x20; \ + env import -c ${ramdisk_addr_r} 0x2000 || \ + env import -c ${ramdisk_addr_r} 0x4000;" setenv storebootstate " \ echo 'storing env...'; \ - env export -c -s 0x2000 ${ramdisk_addr_r} BOOT_ORDER BOOT_A_LEFT BOOT_B_LEFT; \ - mmc write ${ramdisk_addr_r} ${mmc_env} 0x10;" + mw.b ${ramdisk_addr_r} 0 0x4000; \ + env export -c -s 0x4000 ${ramdisk_addr_r} BOOT_ORDER BOOT_A_LEFT BOOT_B_LEFT; \ + mmc write ${ramdisk_addr_r} ${mmc_env} 0x20;" run loadbootstate test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B" diff --git a/buildroot-external/configs/odroid_xu4_defconfig b/buildroot-external/configs/odroid_xu4_defconfig index a920fb296..cb8ff9757 100644 --- a/buildroot-external/configs/odroid_xu4_defconfig +++ b/buildroot-external/configs/odroid_xu4_defconfig @@ -3,7 +3,7 @@ BR2_cortex_a7=y BR2_DL_DIR="/cache/dl" BR2_CCACHE=y BR2_CCACHE_DIR="/cache/cc" -BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches" +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-xu4/patches" BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_GCC_VERSION_7_X=y BR2_TOOLCHAIN_BUILDROOT_CXX=y @@ -40,6 +40,8 @@ BR2_PACKAGE_JQ=y BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y BR2_PACKAGE_SQUASHFS=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_UBOOT_TOOLS=y diff --git a/buildroot-patches/0010-odroid-ux4-firmware.patch b/buildroot-patches/0010-odroid-ux4-firmware.patch new file mode 100644 index 000000000..ecbfab213 --- /dev/null +++ b/buildroot-patches/0010-odroid-ux4-firmware.patch @@ -0,0 +1,34 @@ +diff --git a/buildroot/package/linux-firmware/Config.in b/buildroot/package/linux-firmware/Config.in +index 6b182dc6..8e3be238 100644 +--- a/buildroot/package/linux-firmware/Config.in ++++ b/buildroot/package/linux-firmware/Config.in +@@ -44,6 +44,12 @@ config BR2_PACKAGE_LINUX_FIRMWARE_QCOM_ADRENO + help + Firmware files for Qualcomm Adreno GPU firmware + ++ ++config BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8 ++ bool "Samsung MFC video encoder/decoder driver v8" ++ help ++ Firmware files for samsung MFC video encoder/decoder driver v8 ++ + endmenu # Video + + menu "Bluetooth firmware" +diff --git a/buildroot/package/linux-firmware/linux-firmware.mk b/buildroot/package/linux-firmware/linux-firmware.mk +index 86e1d1e7..6453c402 100644 +--- a/buildroot/package/linux-firmware/linux-firmware.mk ++++ b/buildroot/package/linux-firmware/linux-firmware.mk +@@ -39,6 +39,12 @@ LINUX_FIRMWARE_FILES += qcom/a* + LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom qcom/NOTICE.txt + endif + ++ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8),y) ++LINUX_FIRMWARE_FILES += s5p-mfc-v8.fw ++# No license file; the license is in the file WHENCE ++# which is installed unconditionally ++endif ++ + # Intel Wireless Bluetooth + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IBT),y) + LINUX_FIRMWARE_FILES += intel/ibt-* diff --git a/buildroot/package/linux-firmware/Config.in b/buildroot/package/linux-firmware/Config.in index 6b182dc64..8e3be238a 100644 --- a/buildroot/package/linux-firmware/Config.in +++ b/buildroot/package/linux-firmware/Config.in @@ -44,6 +44,12 @@ config BR2_PACKAGE_LINUX_FIRMWARE_QCOM_ADRENO help Firmware files for Qualcomm Adreno GPU firmware + +config BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8 + bool "Samsung MFC video encoder/decoder driver v8" + help + Firmware files for samsung MFC video encoder/decoder driver v8 + endmenu # Video menu "Bluetooth firmware" diff --git a/buildroot/package/linux-firmware/linux-firmware.mk b/buildroot/package/linux-firmware/linux-firmware.mk index 86e1d1e75..6453c4022 100644 --- a/buildroot/package/linux-firmware/linux-firmware.mk +++ b/buildroot/package/linux-firmware/linux-firmware.mk @@ -39,6 +39,12 @@ LINUX_FIRMWARE_FILES += qcom/a* LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom qcom/NOTICE.txt endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8),y) +LINUX_FIRMWARE_FILES += s5p-mfc-v8.fw +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + # Intel Wireless Bluetooth ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IBT),y) LINUX_FIRMWARE_FILES += intel/ibt-*