diff --git a/packages/linux/package.mk b/packages/linux/package.mk index af5d2cba83..b706d452ce 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -40,7 +40,7 @@ case "$LINUX" in PKG_SOURCE_DIR="$PKG_NAME-amlogic-$PKG_VERSION*" ;; amlogic-3.14) - PKG_VERSION="c733661" + PKG_VERSION="a0d96f4" PKG_URL="https://github.com/LibreELEC/linux-amlogic/archive/$PKG_VERSION.tar.gz" PKG_SOURCE_DIR="$PKG_NAME-amlogic-$PKG_VERSION*" ;; diff --git a/packages/tools/u-boot/scripts/update-c2.sh b/packages/tools/u-boot/scripts/update-c2.sh index 7dde62898c..c063567c0a 100644 --- a/packages/tools/u-boot/scripts/update-c2.sh +++ b/packages/tools/u-boot/scripts/update-c2.sh @@ -55,8 +55,10 @@ dd if=$SYSTEM_ROOT/usr/share/bootloader/u-boot of=$BOOT_DISK conv=fsync bs=1 cou dd if=$SYSTEM_ROOT/usr/share/bootloader/u-boot of=$BOOT_DISK conv=fsync bs=512 skip=1 seek=1 # monkey patch boot.ini for updated kernel - sed -i '/setenv bootcmd "${kernel}; ${dtb}; ${bootseq}"/i \setenv timer "fdt addr 0x1000000; fdt rm /timer"' /flash/boot.ini - sed -i 's|setenv bootcmd "${kernel}; ${dtb}; ${bootseq}"|setenv bootcmd "${kernel}; ${dtb}; ${timer}; ${bootseq}"|' /flash/boot.ini + sed -i 's|setenv odroidp1 "no_console_suspend hdmimode=${video_output} m_bpp=${video_bpp} vout=${video_mode}"|setenv odroidp1 "no_console_suspend logo=${logoopt} vout=${outputmode},enable hdmimode=${hdmimode} cvbsmode=nocvbs"|' /flash/boot.ini + sed -i 's|setenv odroidp2 "${disableuhs} consoleblank=0|setenv odroidp2 "mac=${ethaddr} consoleblank=0|' /flash/boot.ini + sed -i 's|setenv bootcmd "${kernel}; ${dtb}; ${timer}; ${bootseq}"|setenv bootcmd "${kernel}; ${dtb}; ${bootseq}"|' /flash/boot.ini + sed -i 's|setenv bootargs "${console} ${bootrootfs} ${odroid} ${cec} ${hpd} ${dac} ${libreelec}"|setenv bootargs "${console} ${bootrootfs} ${odroid} ${cec} ${libreelec}"|' /flash/boot.ini # mount $BOOT_ROOT r/o sync diff --git a/projects/Odroid_C2/bootloader/boot.ini b/projects/Odroid_C2/bootloader/boot.ini index 1d5516845b..224485b4da 100644 --- a/projects/Odroid_C2/bootloader/boot.ini +++ b/projects/Odroid_C2/bootloader/boot.ini @@ -25,62 +25,44 @@ setenv console "console=tty0" #------------------------------------------------------------------------------------------------------ # # Video -# Setup the video output +# Setup the video output (default is 1080p60hz) # 480 Lines (720x480) -# setenv video_output "480i60hz" # Interlaced 60Hz -# setenv video_output "480i_rpt" # Interlaced for Rear Projection Televisions 60Hz -# setenv video_output "480p60hz" # 480 Progressive 60Hz -# setenv video_output "480p_rpt" # 480 Progressive for Rear Projection Televisions 60Hz +# setenv hdmimode "480i60hz" # Interlaced 60Hz +# setenv hdmimode "480i_rpt" # Interlaced for Rear Projection Televisions 60Hz +# setenv hdmimode "480p60hz" # 480 Progressive 60Hz +# setenv hdmimode "480p_rpt" # 480 Progressive for Rear Projection Televisions 60Hz # 576 Lines (720x576) -# setenv video_output "576i50hz" # Interlaced 50Hz -# setenv video_output "576i_rpt" # Interlaced for Rear Projection Televisions 50Hz -# setenv video_output "576p50hz" # Progressive 50Hz -# setenv video_output "576p_rpt" # Progressive for Rear Projection Televisions 50Hz +# setenv hdmimode "576i50hz" # Interlaced 50Hz +# setenv hdmimode "576i_rpt" # Interlaced for Rear Projection Televisions 50Hz +# setenv hdmimode "576p50hz" # Progressive 50Hz +# setenv hdmimode "576p_rpt" # Progressive for Rear Projection Televisions 50Hz # 720 Lines (1280x720) -# setenv video_output "720p50hz" # Progressive 50Hz -# setenv video_output "720p60hz" # Progressive 60Hz +# setenv hdmimode "720p60hz" # Progressive 60Hz +# setenv hdmimode "720p50hz" # Progressive 50Hz # 1080 Lines (1920x1080) -# setenv video_output "1080i60hz" # Interlaced 60Hz -# setenv video_output "1080p60hz" # Progressive 60Hz -# setenv video_output "1080i50hz" # Interlaced 50Hz -# setenv video_output "1080p50hz" # Progressive 50Hz -# setenv video_output "1080p24hz" # Progressive 24Hz +# setenv hdmimode "1080i60hz" # Interlaced 60Hz +# setenv hdmimode "1080p60hz" # Progressive 60Hz +# setenv hdmimode "1080i50hz" # Interlaced 50Hz +# setenv hdmimode "1080p50hz" # Progressive 50Hz +# setenv hdmimode "1080p30hz" # Progressive 30Hz +# setenv hdmimode "1080p25hz" # Progressive 25Hz +# setenv hdmimode "1080p24hz" # Progressive 24Hz # 4K (3840x2160) -# setenv video_output "2160p30hz" # Progressive 30Hz -# setenv video_output "2160p25hz" # Progressive 25Hz -# setenv video_output "2160p24hz" # Progressive 24Hz -# setenv video_output "smpte24hz" # Progressive 24Hz SMPTE -# setenv video_output "2160p50hz" # Progressive 50Hz -# setenv video_output "2160p60hz" # Progressive 60Hz -# setenv video_output "2160p50hz420" # Progressive 50Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) -# setenv video_output "2160p60hz420" # Progressive 60Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) -# VESA modes -# setenv video_output "640x480p60hz" -# setenv video_output "800x480p60hz" -# setenv video_output "800x600p60hz" -# setenv video_output "1024x600p60hz" -# setenv video_output "1024x768p60hz" -# setenv video_output "1280x800p60hz" -# setenv video_output "1280x1024p60hz" -# setenv video_output "1360x768p60hz" -# setenv video_output "1366x768p60hz" -# setenv video_output "1440x900p60hz" -# setenv video_output "1600x900p60hz" -# setenv video_output "1680x1050p60hz" -# setenv video_output "1920x1200p60hz" -# -# Setup the HDMI video mode (Must be one or the other) -# setenv video_mode "dvi" # DVI -# setenv video_mode "vga" # VGA -# -# Setup the HDMI BPP Mode -# setenv video_bpp "32" # 32-bit -# setenv video_bpp "24" # 24-bit -# setenv video_bpp "16" # 16-bit -# -# Enable|Disable HDMI Hotplug Detection -# setenv hdmihotplug "0" # Disabled -# setenv hdmihotplug "1" # Enabled +# setenv hdmimode "2160p60hz" # Progressive 60Hz +# setenv hdmimode "2160p50hz" # Progressive 50Hz +# setenv hdmimode "2160p30hz" # Progressive 30Hz +# setenv hdmimode "2160p25hz" # Progressive 25Hz +# setenv hdmimode "2160p24hz" # Progressive 24Hz +# setenv hdmimode "2160p60hz420" # Progressive 60Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# setenv hdmimode "2160p50hz420" # Progressive 50Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# 4K2K (4096x2160) +# setenv hdmimode "smpte60hz" # Progressive 60Hz SMPTE +# setenv hdmimode "smpte50hz" # Progressive 50Hz SMPTE +# setenv hdmimode "smpte30hz" # Progressive 30Hz SMPTE +# setenv hdmimode "smpte25hz" # Progressive 25Hz SMPTE +# setenv hdmimode "smpte24hz" # Progressive 24Hz SMPTE +# setenv hdmimode "smpte60hz420" # Progressive 60Hz SMPTE with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# setenv hdmimode "smpte50hz420" # Progressive 50Hz SMPTE with YCbCr 4:2:0 (Requires TV/Monitor that supports it) # # Enable|Disable HDMI (Saves RAM) # setenv hdmioutput "0" # Disabled @@ -91,10 +73,6 @@ setenv console "console=tty0" # setenv vpu "1" # Enabled # #------------------------------------------------------------------------------------------------------ -setenv video_output "1080p60hz" -setenv video_mode "hdmi" -setenv video_bpp "32" -setenv hdmihotplug "1" setenv hdmioutput "1" setenv vpu "1" @@ -107,15 +85,6 @@ setenv vpu "1" #------------------------------------------------------------------------------------------------------ setenv libreelec "quiet" -#------------------------------------------------------------------------------------------------------ -# -# UHS Card Configuration -# Uncomment the line below to __DISABLE__ UHS-1 MicroSD support -# This might break boot for some brand models of cards. -# -#------------------------------------------------------------------------------------------------------ -# setenv disableuhs "disableuhs" - #------------------------------------------------------------------------------------------------------ # # Enable|Disable HDMI CEC Control @@ -125,17 +94,6 @@ setenv libreelec "quiet" #------------------------------------------------------------------------------------------------------ setenv hdmi_cec "1" -#------------------------------------------------------------------------------------------------------ -# -# PCM5102 I2S Audio DAC (HiFi Shield) -# PCM5102 is an I2S Audio DAC Addon board for ODROID-C1+ -# -# Enable|Disable Audio DAC -# setenv audio_dac "0" # Disabled -# setenv audio_dac "1" # Enabled -#------------------------------------------------------------------------------------------------------ -setenv audio_dac "0" - #------------------------------------------------------------------------------------------------------ # # CPU Frequency / Cores control @@ -167,11 +125,11 @@ setenv max_freq "1536" #------------------------------------------------------------------------------------------------------ # -# Odroid C1 specific +# Odroid C2 specific # #------------------------------------------------------------------------------------------------------ -setenv odroidp1 "no_console_suspend hdmimode=${video_output} m_bpp=${video_bpp} vout=${video_mode}" -setenv odroidp2 "${disableuhs} consoleblank=0 max_freq=${max_freq} maxcpus=${maxcpus}" +setenv odroidp1 "no_console_suspend logo=${logoopt} vout=${outputmode},enable hdmimode=${hdmimode} cvbsmode=nocvbs" +setenv odroidp2 "mac=${ethaddr} consoleblank=0 max_freq=${max_freq} maxcpus=${maxcpus}" setenv odroid "${odroidp1} ${odroidp2}" #------------------------------------------------------------------------------------------------------ @@ -182,8 +140,7 @@ setenv odroid "${odroidp1} ${odroidp2}" setenv kernel "fatload mmc 0:1 0x11000000 KERNEL" setenv dtb "fatload mmc 0:1 0x1000000 meson64_odroidc2.dtb" setenv bootseq "booti 0x11000000 - 0x1000000" -setenv timer "fdt addr 0x1000000; fdt rm /timer" -setenv bootcmd "${kernel}; ${dtb}; ${timer}; ${bootseq}" +setenv bootcmd "${kernel}; ${dtb}; ${bootseq}" #------------------------------------------------------------------------------------------------------ # @@ -193,13 +150,11 @@ setenv bootcmd "${kernel}; ${dtb}; ${timer}; ${bootseq}" # Prepare to boot if test "${hdmi_cec}" = "1"; then setenv cec "hdmitx=cec17"; fi -if test "${hdmi_hotplug}" = "0"; then setenv hpd "disablehpd=true"; fi -if test "${audio_dac}" = "1"; then setenv dac "enabledac"; fi if test "${vpu}" = "0"; then fdt rm /mesonstream; fdt rm /vdec; fdt rm /ppmgr; fi if test "${hdmioutput}" = "0"; then fdt rm /mesonfb; fi # Populate the final bootcmd -setenv bootargs "${console} ${bootrootfs} ${odroid} ${cec} ${hpd} ${dac} ${libreelec}" +setenv bootargs "${console} ${bootrootfs} ${odroid} ${cec} ${libreelec}" # Boot the board run bootcmd diff --git a/projects/Odroid_C2/filesystem/usr/lib/modules-load.d/mali.conf b/projects/Odroid_C2/filesystem/usr/lib/modules-load.d/mali.conf deleted file mode 100644 index 29c66fc8c8..0000000000 --- a/projects/Odroid_C2/filesystem/usr/lib/modules-load.d/mali.conf +++ /dev/null @@ -1 +0,0 @@ -mali diff --git a/projects/Odroid_C2/filesystem/usr/lib/udev/rules.d/10-odroid.rules b/projects/Odroid_C2/filesystem/usr/lib/udev/rules.d/10-odroid.rules deleted file mode 100644 index 3f927bf6e0..0000000000 --- a/projects/Odroid_C2/filesystem/usr/lib/udev/rules.d/10-odroid.rules +++ /dev/null @@ -1,8 +0,0 @@ -KERNEL=="mali",SUBSYSTEM=="misc",MODE="0777" -KERNEL=="mali0",SUBSYSTEM=="misc",MODE="0777" -KERNEL=="ump",SUBSYSTEM=="ump",MODE="0777" -KERNEL=="ttySAC0", SYMLINK+="ttyACM99" -KERNEL=="event*", SUBSYSTEM=="input", MODE="0777" -KERNEL=="CEC", MODE="0777" -KERNEL=="amvideo", MODE="0666" -KERNEL=="amstream*", MODE="0666" diff --git a/projects/Odroid_C2/initramfs/platform_init b/projects/Odroid_C2/initramfs/platform_init index b529283cc1..d99783f0ba 100644 --- a/projects/Odroid_C2/initramfs/platform_init +++ b/projects/Odroid_C2/initramfs/platform_init @@ -1,50 +1,69 @@ #!/bin/sh +################################################################################ +# This file is part of LibreELEC - https://LibreELEC.tv +# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ -for x in $(cat /proc/cmdline); do - case ${x} in - m_bpp=*) export bpp=${x#*=} ;; - hdmimode=*) export mode=${x#*=} ;; +hdmimode=1080p60hz + +# Parse command line arguments +for arg in $(cat /proc/cmdline); do + case $arg in + hdmimode=*) + hdmimode="${arg#*=}" + ;; esac done -common_display_setup() { - M="0 0 $(($X - 1)) $(($Y - 1))" - Y_VIRT=$(($Y * 2)) - fbset -fb /dev/fb0 -g $X $Y $X $Y_VIRT $bpp - fbset -fb /dev/fb1 -g 32 32 32 32 32 - echo $mode > /sys/class/display/mode - echo 0 > /sys/class/graphics/fb0/free_scale - echo 1 > /sys/class/graphics/fb0/freescale_mode - echo $M > /sys/class/graphics/fb0/free_scale_axis - echo $M > /sys/class/graphics/fb0/window_axis - echo 0 > /sys/class/graphics/fb1/free_scale - echo 1 > /sys/class/video/disable_video -} +# Enable first framebuffer +echo 0 > /sys/class/graphics/fb0/blank -case $mode in - 480*) export X=720 Y=480 ;; - 576*) export X=720 Y=576 ;; - 720p*) export X=1280 Y=720 ;; - 1080*) export X=1920 Y=1080 ;; - 2160p*) export X=3840 Y=2160 ;; - smpte24hz*) export X=3840 Y=2160 ;; - 640x480p60hz*) export X=640 Y=480 ;; - 800x480p60hz*) export X=800 Y=480 ;; - 800x600p60hz*) export X=800 Y=600 ;; - 1024x600p60hz*) export X=1024 Y=600 ;; - 1024x768p60hz*) export X=1024 Y=768 ;; - 1280x800p60hz*) export X=1280 Y=800 ;; - 1280x1024p60hz*) export X=1280 Y=1024 ;; - 1360x768p60hz*) export X=1360 Y=768 ;; - 1366x768p60hz*) export X=1366 Y=768 ;; - 1440x900p60hz*) export X=1440 Y=900 ;; - 1600x900p60hz*) export X=1600 Y=900 ;; - 1680x1050p60hz*) export X=1680 Y=1050 ;; - 1920x1200p60hz*) export X=1920 Y=1200 ;; +# Disable second framebuffer +echo 1 > /sys/class/graphics/fb1/blank + +# Disable framebuffer scaling +echo 0 > /sys/class/graphics/fb0/free_scale +echo 0 > /sys/class/graphics/fb1/free_scale + +# set initial video state +echo 1 > /sys/class/video/disable_video + +# Set framebuffer geometry to match the resolution +case $hdmimode in + 480*) X=720 Y=480 ;; + 576*) X=720 Y=576 ;; + 720p*) X=1280 Y=720 ;; + *) X=1920 Y=1080 ;; esac -common_display_setup +fbset -fb /dev/fb0 -g $X $Y 1920 2160 32 +fbset -fb /dev/fb1 -g 32 32 32 32 32 -# Console unblack -echo 0 > /sys/class/graphics/fb0/blank -echo 0 > /sys/class/graphics/fb1/blank +# Enable scaling for 4K output +case $hdmimode in + 4k*|smpte*|2160*) + echo 0 0 1919 1079 > /sys/class/graphics/fb0/free_scale_axis + echo 0 0 3839 2159 > /sys/class/graphics/fb0/window_axis + echo 1920 > /sys/class/graphics/fb0/scale_width + echo 1080 > /sys/class/graphics/fb0/scale_height + echo 0x10001 > /sys/class/graphics/fb0/free_scale + ;; +esac + +# Include deinterlacer into default VFM map +echo rm default > /sys/class/vfm/map +echo add default decoder ppmgr deinterlace amvideo > /sys/class/vfm/map diff --git a/projects/Odroid_C2/linux/linux.aarch64.conf b/projects/Odroid_C2/linux/linux.aarch64.conf index e9ef18f652..aa6a146a2b 100644 --- a/projects/Odroid_C2/linux/linux.aarch64.conf +++ b/projects/Odroid_C2/linux/linux.aarch64.conf @@ -1,15 +1,18 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 3.14.79 Kernel Configuration +# Linux/arm64 3.14.29 Kernel Configuration # CONFIG_ARM64=y CONFIG_ARM64_HAS_SG_CHAIN=y CONFIG_64BIT=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_BITS_MAX=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 CONFIG_NO_IOPORT=y CONFIG_STACKTRACE_SUPPORT=y -CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_LOCKDEP_SUPPORT=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_RWSEM_GENERIC_SPINLOCK=y @@ -36,7 +39,7 @@ CONFIG_CROSS_COMPILE="" CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_DEFAULT_HOSTNAME="@DISTRONAME@" -# CONFIG_SWAP is not set +CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -123,7 +126,7 @@ CONFIG_IPC_NS=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y -CONFIG_SCHED_AUTOGROUP=y +# CONFIG_SCHED_AUTOGROUP is not set # CONFIG_SYSFS_DEPRECATED is not set # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y @@ -203,6 +206,11 @@ CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 CONFIG_CLONE_BACKWARDS=y CONFIG_OLD_SIGSUSPEND3=y CONFIG_COMPAT_OLD_SIGACTION=y @@ -211,7 +219,6 @@ CONFIG_COMPAT_OLD_SIGACTION=y # GCOV-based kernel profiling # # CONFIG_GCOV_KERNEL is not set -CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y @@ -268,19 +275,27 @@ CONFIG_ARCH_MESON64_ODROIDC2=y CONFIG_ARM_AMBA=y # -# Kernel Features +# ARM errata workarounds via the alternatives framework # +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_ERRATUM_835769=y # -# ARM errata workarounds +# Kernel Features # -# CONFIG_ARM64_ERRATUM_845719 is not set # CONFIG_ARM64_64K_PAGES is not set # CONFIG_CPU_BIG_ENDIAN is not set CONFIG_SMP=y CONFIG_SCHED_MC=y -CONFIG_SCHED_SMT=y +# CONFIG_SCHED_SMT is not set # CONFIG_DISABLE_CPU_SCHED_DOMAIN_BALANCE is not set +CONFIG_SCHED_HMP=y +# CONFIG_SCHED_HMP_PRIO_FILTER is not set +CONFIG_HMP_FAST_CPU_MASK="" +CONFIG_HMP_SLOW_CPU_MASK="" +# CONFIG_HMP_VARIABLE_SCALE is not set +# CONFIG_SCHED_HMP_LITTLE_PACKING is not set CONFIG_NR_CPUS=4 CONFIG_HOTPLUG_CPU=y CONFIG_SWP_EMULATE=y @@ -300,7 +315,6 @@ CONFIG_ARMV7_COMPAT_CPUINFO=y CONFIG_SYS_SUPPORTS_HUGETLBFS=y CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y @@ -329,6 +343,8 @@ CONFIG_CMA_AREAS=7 # CONFIG_ZBUD is not set # CONFIG_ZSMALLOC is not set CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set # CONFIG_XEN is not set CONFIG_FORCE_MAX_ZONEORDER=11 CONFIG_SECCOMP=y @@ -341,7 +357,6 @@ CONFIG_CMDLINE_FROM_BOOTLOADER=y # CONFIG_CMDLINE_EXTEND is not set # CONFIG_CMDLINE_FORCE is not set # CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE is not set -# CONFIG_EFI is not set # # Userspace binary formats @@ -402,11 +417,17 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_GOV_USERSPACE is not set -# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_HOTPLUG=y -# CONFIG_CPU_FREQ_GOV_INTERACTIVE is not set -# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_INTERACTIVE=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y # CONFIG_GENERIC_CPUFREQ_CPU0 is not set + +# +# ARM CPU frequency scaling drivers +# +# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set +# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARM64_CPU_SUSPEND=y @@ -420,7 +441,6 @@ CONFIG_ARM64_CPU_SUSPEND=y # # CONFIG_CPU_IDLE is not set # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set -# CONFIG_ARM64_ERRATUM_843419 is not set CONFIG_NET=y CONFIG_COMPAT_NETLINK_MESSAGES=y @@ -779,14 +799,12 @@ CONFIG_MAC80211_LEDS=y # # Amlogic Device Drivers # - -# -# AO CEC Support -# -CONFIG_AML_AO_CEC=y CONFIG_MESON_TIMER=y +# CONFIG_MESON_LOCAL_TIMER is not set +CONFIG_MESON_BC_TIMER=y CONFIG_AM_UART=y CONFIG_SERIAL_MESON_CONSOLE=y +# CONFIG_PRINTK_NOBLOCK_MODE is not set CONFIG_AML_CPU_VERSION=y CONFIG_AML_MESON64_VERSION=y # CONFIG_AML_M8_VERSION is not set @@ -804,8 +822,10 @@ CONFIG_USB_HOST_ELECT_TEST=y # I2C Hardware Bus support # CONFIG_I2C_AML=y +# CONFIG_I2C_SLAVE_AML is not set # CONFIG_I2C_SW_AML is not set # CONFIG_BCM2079X_I2C is not set +# CONFIG_AML_PWM is not set # # HDMI TX Support @@ -824,6 +844,7 @@ CONFIG_AML_REG_ACCESS=y # # CONFIG_AML_POWER_SUPPORT is not set # CONFIG_AML_PMU_ALGORITHM_SUPPORT is not set +# CONFIG_AML_PMU4 is not set # # Ethernet Support @@ -878,7 +899,6 @@ CONFIG_AM_VOUT=y CONFIG_AM_TV_OUTPUT=y CONFIG_AML_VOUT_FRAMERATE_AUTOMATION=y # CONFIG_AML_VDAC_HW_SWITCH is not set -# CONFIG_AM_LCD_OUTPUT is not set # # Amlogic OSD Module @@ -902,10 +922,15 @@ CONFIG_FB_OSD2_CURSOR=y CONFIG_AM_GE2D=y CONFIG_AM_LOGO=y +# +# Amlogic LCD Output Module +# +# CONFIG_AML_LCD is not set + # # Amlogic Backlight Support # -# CONFIG_AMLOGIC_BACKLIGHT is not set +# CONFIG_AML_BACKLIGHT is not set # CONFIG_AMLOGIC_LED is not set # @@ -914,6 +939,7 @@ CONFIG_AM_LOGO=y CONFIG_AML_CANVAS=y CONFIG_AMLOGIC_CLK=y CONFIG_AMLOGIC_SEC=y +# CONFIG_AML_SERR is not set CONFIG_AMLOGIC_SECURITY_KEY=y CONFIG_AM_PTSSERVER=y # CONFIG_H264_4K2K_SINGLE_CORE is not set @@ -934,6 +960,7 @@ CONFIG_AM_VDEC_H264=y CONFIG_AM_VDEC_H264MVC=y CONFIG_AM_VDEC_H264_4K2K=y CONFIG_AM_VDEC_H265=y +CONFIG_AM_VDEC_VP9=y CONFIG_AM_VDEC_MJPEG=y CONFIG_AM_ENCODER=y CONFIG_AM_JPEG_ENCODER=y @@ -945,6 +972,7 @@ CONFIG_AM_TIMESYNC=y CONFIG_AM_STREAMING=y CONFIG_AM_SUBTITLE=y # CONFIG_AM_VIDEOCAPTURE is not set +# CONFIG_AM_HEVCENC is not set # # Deinterlace driver @@ -984,7 +1012,7 @@ CONFIG_AML_AUDIO_DSP=y # CONFIG_POST_PROCESS_MANAGER=y CONFIG_POST_PROCESS_MANAGER_PPSCALER=y -# CONFIG_POST_PROCESS_MANAGER_3D_PROCESS is not set +CONFIG_POST_PROCESS_MANAGER_3D_PROCESS=y # # Amlogic Wifi Driver @@ -997,6 +1025,7 @@ CONFIG_GXBB_POWER_RESET=y # # Amlogic Bt Rfkill Driver # +# CONFIG_BLUESLEEP is not set # # Amlogic ion video support @@ -1013,7 +1042,14 @@ CONFIG_V4L_AMLOGIC_VIDEO=y # # Amlogic TVIN Drivers # -# CONFIG_TVIN is not set +CONFIG_TVIN=y +# CONFIG_TVIN_VDIN is not set +# CONFIG_TVIN_AFE is not set +CONFIG_TVIN_HDMI=y +# CONFIG_TVIN_HDMI_CEC is not set +# CONFIG_TVIN_BT656 is not set +# CONFIG_VIUIN is not set +# CONFIG_TVIN_ISP is not set # # Amlogic VECM Drivers @@ -1036,6 +1072,7 @@ CONFIG_MESON_INPUT_KEYBOARD=y CONFIG_ADC_KEYPADS_AM=y CONFIG_AML_GPIO_KEY=y # CONFIG_SENSOR_DEVICES is not set +# CONFIG_AMLOGIC_AVIN_DETECT is not set # CONFIG_AMLOGIC_MESON_CPUFREQ is not set CONFIG_AMLOGIC_SCPI_CPUFREQ=y CONFIG_MESON_SUSPEND=y @@ -1053,6 +1090,7 @@ CONFIG_GXBB_SUSPEND=y # # CONFIG_AM_PCMCIA is not set # CONFIG_AM_IOBUS is not set +# CONFIG_AML_SMARTCARD is not set # # MESON MHU mailbox Support @@ -1068,7 +1106,7 @@ CONFIG_AML_RDMA=y # # Amlogic temperature sensor # -# CONFIG_AML_TEMP_SENSOR is not set +CONFIG_AML_TEMP_SENSOR=y CONFIG_AUDIO_DATA=y # CONFIG_INSTABOOT is not set @@ -1078,8 +1116,29 @@ CONFIG_AUDIO_DATA=y # CONFIG_VIDEO_AMLOGIC_CAPTURE is not set CONFIG_AML_CODEC_MM=y # CONFIG_AML_WDT is not set -CONFIG_MESON_PWM=y -CONFIG_MESON_PWM_CTRL=y + +# +# AMLOGIC SPI Hardware bus support +# +# CONFIG_AMLOGIC_SPICC_MASTER is not set +# CONFIG_AMLOGIC_JTAG is not set +CONFIG_AMLOGIC_CPU_INFO=y + +# +# defend img file update support +# +# CONFIG_DEFEND_IMG is not set + +# +# AO CEC Support +# +CONFIG_AML_AO_CEC=y + +# +# Amlogic Crypto Support +# +# CONFIG_CRYPTO_AML is not set +# CONFIG_AMLOGIC_WATCHPOINT is not set # # Generic Driver Options @@ -1214,7 +1273,8 @@ CONFIG_OF=y # # Device Tree and Open Firmware support # -# CONFIG_OF_UNITTEST is not set +CONFIG_PROC_DEVICETREE=y +# CONFIG_OF_SELFTEST is not set CONFIG_OF_FLATTREE=y CONFIG_OF_EARLY_FLATTREE=y CONFIG_OF_ADDRESS=y @@ -1403,6 +1463,7 @@ CONFIG_NET_VENDOR_WIZNET=y # # MII PHY device drivers # +# CONFIG_AMLOGIC_PHY is not set # CONFIG_AT803X_PHY is not set # CONFIG_AMD_PHY is not set # CONFIG_MARVELL_PHY is not set @@ -1548,13 +1609,12 @@ CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2X00_LIB_CRYPTO=y CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set +# CONFIG_RTL_CARDS is not set # CONFIG_WL_TI is not set CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set # CONFIG_MWIFIEX is not set # CONFIG_CW1200 is not set -# CONFIG_RTL8821AU is not set -# CONFIG_RTL8192CU is not set # # Enable WiMAX (Networking options) to see the WiMAX drivers @@ -1657,8 +1717,7 @@ CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y CONFIG_UNIX98_PTYS=y # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 +# CONFIG_LEGACY_PTYS is not set # CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_N_GSM is not set # CONFIG_TRACE_SINK is not set @@ -1687,6 +1746,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_XILINX_PS_UART is not set # CONFIG_SERIAL_ARC is not set # CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SUPPORT_SYSRQ is not set CONFIG_TTY_PRINTK=y # CONFIG_IPMI_HANDLER is not set CONFIG_HW_RANDOM=y @@ -2196,7 +2256,6 @@ CONFIG_IR_IGUANA=m CONFIG_IR_TTUSBIR=m # CONFIG_RC_LOOPBACK is not set CONFIG_IR_GPIO_CIR=m -CONFIG_IR_GPIOPLUG_CIR=m CONFIG_MEDIA_USB_SUPPORT=y # @@ -2591,21 +2650,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=m # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_LOGO is not set # CONFIG_FB_SSD1307 is not set -CONFIG_MALI400=y -CONFIG_MALI450=y -# CONFIG_MALI470 is not set -# CONFIG_MALI400_DEBUG is not set -# CONFIG_MALI400_PROFILING is not set -CONFIG_MALI400_UMP=y -# CONFIG_MALI_DVFS is not set -CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y -# CONFIG_MALI_SHARED_INTERRUPTS is not set -# CONFIG_MALI_PMU_PARALLEL_POWER_UP is not set -CONFIG_MALI_DT=y -# CONFIG_MALI_QUIET is not set -CONFIG_UMP=y -# CONFIG_UMP_DEBUG is not set -# CONFIG_FB_TFT is not set CONFIG_SOUND=y # CONFIG_SOUND_OSS_CORE is not set CONFIG_SND=y @@ -2649,10 +2693,16 @@ CONFIG_SND_SOC=y # CONFIG_SND_DESIGNWARE_I2S is not set CONFIG_SND_AML_M8_SOC=y CONFIG_SND_AML_M8=y -# CONFIG_SND_AML_G9TV is not set +CONFIG_SND_AML_SPLIT_MODE=y +# CONFIG_SND_AML_SPLIT_MODE_MMAP is not set CONFIG_SND_SOC_I2C_AND_SPI=y CONFIG_SND_SOC_DUMMY_CODEC=y +CONFIG_SND_SOC_TAS5707=y +CONFIG_SND_SOC_TAS5717=y +CONFIG_SND_SOC_TAS5731=y CONFIG_SND_SOC_PCM2BT=y +CONFIG_SND_SOC_AMLT9015=y +CONFIG_SND_SOC_AMLT9015S=y # CONFIG_SND_SIMPLE_CARD is not set # CONFIG_SOUND_PRIME is not set @@ -2676,6 +2726,7 @@ CONFIG_HID_AUREAL=y CONFIG_HID_BELKIN=y CONFIG_HID_CHERRY=y CONFIG_HID_CHICONY=y +# CONFIG_HID_DIA_REMOTE is not set # CONFIG_HID_PRODIKEYS is not set CONFIG_HID_CYPRESS=y CONFIG_HID_DRAGONRISE=m @@ -2931,6 +2982,9 @@ CONFIG_USB_PHY=y CONFIG_USB_ISP1301=y # CONFIG_USB_RCAR_PHY is not set CONFIG_USB_ULPI=y +# CONFIG_AMLOGIC_USBPHY is not set +# CONFIG_AMLOGIC_USB2PHY is not set +# CONFIG_AMLOGIC_USB3PHY is not set CONFIG_USB_GADGET=y # CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set @@ -3181,14 +3235,11 @@ CONFIG_DVB_AS102=m # Android # CONFIG_ANDROID=y -CONFIG_ANDROID_BINDER_IPC=y -# CONFIG_ANDROID_BINDER_IPC_32BIT is not set -CONFIG_ASHMEM=y -CONFIG_ANDROID_LOGGER=y -CONFIG_ANDROID_TIMED_OUTPUT=y -# CONFIG_ANDROID_TIMED_GPIO is not set -CONFIG_ANDROID_LOW_MEMORY_KILLER=y -CONFIG_ANDROID_LOW_MEMORY_KILLER_AUTODETECT_OOM_ADJ_VALUES=y +# CONFIG_ANDROID_BINDER_IPC is not set +# CONFIG_ASHMEM is not set +# CONFIG_ANDROID_LOGGER is not set +# CONFIG_ANDROID_TIMED_OUTPUT is not set +# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set # CONFIG_ANDROID_INTF_ALARM_DEV is not set CONFIG_SYNC=y CONFIG_SW_SYNC=y @@ -3262,11 +3313,7 @@ CONFIG_RESET_CONTROLLER=y # CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set # CONFIG_PHY_EXYNOS_DP_VIDEO is not set # CONFIG_POWERCAP is not set - -# -# Firmware Drivers -# -# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_CORESIGHT is not set # # File systems @@ -3311,7 +3358,6 @@ CONFIG_QUOTACTL=y CONFIG_AUTOFS4_FS=m CONFIG_FUSE_FS=m # CONFIG_CUSE is not set -# CONFIG_OVERLAY_FS is not set # # Caches @@ -3335,6 +3381,7 @@ CONFIG_FAT_FS=y CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +# CONFIG_EXFAT_FS is not set # CONFIG_NTFS_FS is not set # @@ -3391,7 +3438,6 @@ CONFIG_F2FS_FS=y CONFIG_F2FS_STAT_FS=y # CONFIG_F2FS_FS_XATTR is not set # CONFIG_F2FS_CHECK_FS is not set -# CONFIG_AUFS_FS is not set CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y CONFIG_NFS_V2=y @@ -3501,7 +3547,7 @@ CONFIG_DEBUG_INFO=y # CONFIG_DEBUG_INFO_REDUCED is not set CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y -CONFIG_FRAME_WARN=1024 +CONFIG_FRAME_WARN=2048 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set # CONFIG_UNUSED_SYMBOLS is not set @@ -3629,6 +3675,7 @@ CONFIG_FTRACE_MCOUNT_RECORD=y # CONFIG_DMA_API_DEBUG is not set # CONFIG_TEST_MODULE is not set # CONFIG_TEST_USER_COPY is not set +# CONFIG_CHECK_ISR_TIME is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set diff --git a/projects/Odroid_C2/options b/projects/Odroid_C2/options index 9edaf70d71..010da61e85 100644 --- a/projects/Odroid_C2/options +++ b/projects/Odroid_C2/options @@ -45,7 +45,7 @@ # Kernel to use. values can be: # default: default mainline kernel - LINUX="hardkernel" + LINUX="amlogic-3.14" ################################################################################ # setup build defaults @@ -97,7 +97,7 @@ # for a list of additinoal drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="RTL8192CU RTL8192DU RTL8188EU RTL8192EU RTL8812AU" + ADDITIONAL_DRIVERS="gpu-aml RTL8192CU RTL8192DU RTL8188EU RTL8192EU RTL8812AU" # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, @@ -113,9 +113,6 @@ # Amlogic IR remote support (yes / no) AMREMOTE_SUPPORT="no" - # Odroid IR remote support (yes / no) - ODROIDREMOTE_SUPPORT="yes" - # build with swap support (yes / no) SWAP_SUPPORT="no" diff --git a/projects/Odroid_C2/patches/libcec/libcec-00-aocec-support.patch b/projects/Odroid_C2/patches/libcec/libcec-00-aocec-support.patch index 00f67c5133..b3cd656c99 100644 --- a/projects/Odroid_C2/patches/libcec/libcec-00-aocec-support.patch +++ b/projects/Odroid_C2/patches/libcec/libcec-00-aocec-support.patch @@ -25,7 +25,7 @@ index 0fdd48e..881a805 100644 /*! + * the path to use for the AOCEC HDMI CEC device + */ -+#define CEC_AOCEC_PATH "/dev/cec" ++#define CEC_AOCEC_PATH "/dev/aocec" + +/*! + * the name of the virtual COM port to use for the AOCEC' CEC wire diff --git a/projects/Odroid_C2/patches/linux/linux-000-Revert-Odroid-C2-Support-HiFi-Shield-2-sound-card-driver.patch b/projects/Odroid_C2/patches/linux/linux-000-Revert-Odroid-C2-Support-HiFi-Shield-2-sound-card-driver.patch deleted file mode 100644 index f0cd741880..0000000000 --- a/projects/Odroid_C2/patches/linux/linux-000-Revert-Odroid-C2-Support-HiFi-Shield-2-sound-card-driver.patch +++ /dev/null @@ -1,1439 +0,0 @@ -From 37a2854ffecfec548156a7fb8b2b43467f452abd Mon Sep 17 00:00:00 2001 -From: Jamie Coldhill -Date: Mon, 19 Sep 2016 12:44:56 +0800 -Subject: [PATCH] Revert "odroid-c2:Support HiFi-Shield-2 sound card driver." - -This reverts commit 5bcf1b74aac7ec16eb5bc78f34c6b4ec3fbe7a9e. ---- - .../devicetree/bindings/sound/pcm512x.txt | 52 -- - arch/arm64/boot/dts/meson64_odroidc2.dts | 8 - - arch/arm64/configs/odroidc2_defconfig | 6 +- - sound/soc/aml/m8/Kconfig | 5 - - sound/soc/aml/m8/Makefile | 2 - - sound/soc/aml/m8/odroid_dac2.c | 217 -------- - sound/soc/aml/m8/odroid_dac2.h | 31 -- - sound/soc/codecs/Kconfig | 17 - - sound/soc/codecs/Makefile | 6 - - sound/soc/codecs/pcm512x-i2c.c | 81 --- - sound/soc/codecs/pcm512x-spi.c | 72 --- - sound/soc/codecs/pcm512x.c | 609 --------------------- - sound/soc/codecs/pcm512x.h | 171 ------ - 13 files changed, 1 insertion(+), 1276 deletions(-) - delete mode 100644 Documentation/devicetree/bindings/sound/pcm512x.txt - delete mode 100644 sound/soc/aml/m8/odroid_dac2.c - delete mode 100644 sound/soc/aml/m8/odroid_dac2.h - delete mode 100644 sound/soc/codecs/pcm512x-i2c.c - delete mode 100644 sound/soc/codecs/pcm512x-spi.c - delete mode 100644 sound/soc/codecs/pcm512x.c - delete mode 100644 sound/soc/codecs/pcm512x.h - -diff --git a/Documentation/devicetree/bindings/sound/pcm512x.txt b/Documentation/devicetree/bindings/sound/pcm512x.txt -deleted file mode 100644 -index 3aae3b4..0000000 ---- a/Documentation/devicetree/bindings/sound/pcm512x.txt -+++ /dev/null -@@ -1,52 +0,0 @@ --PCM512x audio CODECs -- --These devices support both I2C and SPI (configured with pin strapping --on the board). -- --Required properties: -- -- - compatible : One of "ti,pcm5121", "ti,pcm5122", "ti,pcm5141" or -- "ti,pcm5142" -- -- - reg : the I2C address of the device for I2C, the chip select -- number for SPI. -- -- - AVDD-supply, DVDD-supply, and CPVDD-supply : power supplies for the -- device, as covered in bindings/regulator/regulator.txt -- --Optional properties: -- -- - clocks : A clock specifier for the clock connected as SCLK. If this -- is absent the device will be configured to clock from BCLK. If pll-in -- and pll-out are specified in addition to a clock, the device is -- configured to accept clock input on a specified gpio pin. -- -- - pll-in, pll-out : gpio pins used to connect the pll using <1> -- through <6>. The device will be configured for clock input on the -- given pll-in pin and PLL output on the given pll-out pin. An -- external connection from the pll-out pin to the SCLK pin is assumed. -- --Examples: -- -- pcm5122: pcm5122@4c { -- compatible = "ti,pcm5122"; -- reg = <0x4c>; -- -- AVDD-supply = <®_3v3_analog>; -- DVDD-supply = <®_1v8>; -- CPVDD-supply = <®_3v3>; -- }; -- -- -- pcm5142: pcm5142@4c { -- compatible = "ti,pcm5142"; -- reg = <0x4c>; -- -- AVDD-supply = <®_3v3_analog>; -- DVDD-supply = <®_1v8>; -- CPVDD-supply = <®_3v3>; -- -- clocks = <&sck>; -- pll-in = <3>; -- pll-out = <6>; -- }; -diff --git a/arch/arm64/boot/dts/meson64_odroidc2.dts b/arch/arm64/boot/dts/meson64_odroidc2.dts -index 48310c9..5f64ee3 100755 ---- a/arch/arm64/boot/dts/meson64_odroidc2.dts -+++ b/arch/arm64/boot/dts/meson64_odroidc2.dts -@@ -647,14 +647,6 @@ - sound-dai = <&pcm5102_codec>; - }; - }; -- -- odroid_dac2{ -- compatible = "sound_card, odroid_dac2"; -- aml,sound_card = "ODROID-DAC2"; -- pinctrl-names = "odroid_i2s"; -- pinctrl-0 = <&audio_pins>; -- status = "okay"; -- }; - /* END OF AUDIO board specific */ - - aml_sensor0: aml-sensor@0 { -diff --git a/arch/arm64/configs/odroidc2_defconfig b/arch/arm64/configs/odroidc2_defconfig -index c9ca9b4..079f956 100644 ---- a/arch/arm64/configs/odroidc2_defconfig -+++ b/arch/arm64/configs/odroidc2_defconfig -@@ -1,6 +1,6 @@ - # - # Automatically generated file; DO NOT EDIT. --# Linux/arm64 3.14.77 Kernel Configuration -+# Linux/arm64 3.14.65 Kernel Configuration - # - CONFIG_ARM64=y - CONFIG_ARM64_HAS_SG_CHAIN=y -@@ -3285,13 +3285,9 @@ CONFIG_SND_AML_M8_SOC=y - # CONFIG_SND_AML_M8 is not set - CONFIG_SND_ODROID_HDMI=y - CONFIG_SND_ODROID_DAC=m --CONFIG_SND_ODROID_DAC2=m - # CONFIG_SND_AML_G9TV is not set - CONFIG_SND_SOC_I2C_AND_SPI=y - CONFIG_SND_SOC_PCM5102=m --CONFIG_SND_SOC_PCM512x=m --CONFIG_SND_SOC_PCM512x_I2C=m --# CONFIG_SND_SOC_PCM512x_SPI is not set - # CONFIG_SND_SIMPLE_CARD is not set - # CONFIG_SOUND_PRIME is not set - CONFIG_AC97_BUS=m -diff --git a/sound/soc/aml/m8/Kconfig b/sound/soc/aml/m8/Kconfig -index c1808a4..4adfb7d 100644 ---- a/sound/soc/aml/m8/Kconfig -+++ b/sound/soc/aml/m8/Kconfig -@@ -20,11 +20,6 @@ menuconfig SND_ODROID_DAC - depends on SND_AML_M8_SOC - select SND_SOC_PCM5102 - --menuconfig SND_ODROID_DAC2 -- tristate "ODROID HiFi-Shield2(pcm5242) Support" -- depends on SND_AML_M8_SOC -- select SND_SOC_PCM512x_I2C -- - menuconfig SND_AML_G9TV - tristate "AML-SND-G9TV Board" - depends on SND_AML_M8_SOC && SWITCH -diff --git a/sound/soc/aml/m8/Makefile b/sound/soc/aml/m8/Makefile -index e7310ed..2ed8755 100644 ---- a/sound/soc/aml/m8/Makefile -+++ b/sound/soc/aml/m8/Makefile -@@ -27,10 +27,8 @@ obj-$(CONFIG_SND_AML_M8) += snd-soc-aml-m8.o - #ODROID Machine support - snd-soc-odroid-hdmi-objs := odroid_hdmi.o - snd-soc-odroid-dac-objs := odroid_dac.o --snd-soc-odroid-dac2-objs := odroid_dac2.o - obj-$(CONFIG_SND_ODROID_HDMI) += snd-soc-odroid-hdmi.o - obj-$(CONFIG_SND_ODROID_DAC) += snd-soc-odroid-dac.o --obj-$(CONFIG_SND_ODROID_DAC2) += snd-soc-odroid-dac2.o - - #AML G9TV Machine support - snd-soc-aml-g9tv-objs := aml_g9tv.o -diff --git a/sound/soc/aml/m8/odroid_dac2.c b/sound/soc/aml/m8/odroid_dac2.c -deleted file mode 100644 -index fb8c153..0000000 ---- a/sound/soc/aml/m8/odroid_dac2.c -+++ /dev/null -@@ -1,217 +0,0 @@ --/* -- * sound/soc/aml/m8/aml_m8.c -- * -- * Copyright (C) 2015 Amlogic, Inc. All rights reserved. -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -- * more details. -- * --*/ -- --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include -- --#include --#include --#include --/* #include */ --#include --#include --/* #include */ --#include -- --/* #include "aml_i2s_dai.h" */ --#include "aml_i2s.h" --#include "odroid_dac2.h" --#include "aml_audio_hw.h" --#include --#include --#include --#include --#include --#include --/* extern struct device *spdif_dev; */ -- --#define DRV_NAME "odroid_dac2" -- --static int dac2_hw_params(struct snd_pcm_substream *substream, -- struct snd_pcm_hw_params *params) --{ -- struct snd_soc_pcm_runtime *rtd = substream->private_data; -- struct snd_soc_dai *codec_dai = rtd->codec_dai; -- struct snd_soc_dai *cpu_dai = rtd->cpu_dai; -- int ret; -- -- /* set codec DAI configuration */ -- ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S | -- SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS); -- if (ret < 0) -- return ret; -- -- /* set cpu DAI configuration */ -- ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S | -- SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM); -- if (ret < 0) -- return ret; -- -- /* set cpu DAI clock */ -- ret = snd_soc_dai_set_sysclk( -- cpu_dai, 0, params_rate(params)*256, SND_SOC_CLOCK_OUT); -- if (ret < 0) -- return ret; -- return 0; --} -- --static struct snd_soc_ops odroid_ops = { -- .hw_params = dac2_hw_params, --}; -- --static int dac2_set_bias_level(struct snd_soc_card *card, -- struct snd_soc_dapm_context *dapm, enum snd_soc_bias_level level) --{ -- int ret = 0; -- struct dac2_private_data *p_dac2; -- -- p_dac2 = snd_soc_card_get_drvdata(card); -- if (p_dac2->bias_level == (int)level) -- return 0; -- -- p_dac2->bias_level = (int)level; -- return ret; --} --static struct snd_soc_dai_link dac2_dai_link[] = { -- { -- .name = "SND_PCM5242", -- .stream_name = "I2S", -- .cpu_dai_name = "I2S", -- .platform_name = "i2s_platform", -- .codec_name = "pcm512x.1-004c", -- .codec_dai_name = "pcm512x-hifi", -- .ops = &odroid_ops, -- }, --}; -- --static struct snd_soc_card aml_snd_soc_card = { -- .driver_name = "SOC-Audio", -- .dai_link = &dac2_dai_link[0], -- .num_links = ARRAY_SIZE(dac2_dai_link), -- .set_bias_level = dac2_set_bias_level, --}; -- --static int dac2_probe(struct platform_device *pdev) --{ -- struct snd_soc_card *card = &aml_snd_soc_card; -- struct dac2_private_data *p_dac2; -- int ret = 0; -- --#ifdef CONFIG_OF -- p_dac2 = devm_kzalloc(&pdev->dev, -- sizeof(struct dac2_private_data), GFP_KERNEL); -- if (!p_dac2) { -- dev_err(&pdev->dev, "Can't allocate dac2_private_data\n"); -- ret = -ENOMEM; -- goto err; -- } -- -- card->dev = &pdev->dev; -- platform_set_drvdata(pdev, card); -- snd_soc_card_set_drvdata(card, p_dac2); -- if (!(pdev->dev.of_node)) { -- dev_err(&pdev->dev, "Must be instantiated using device tree\n"); -- ret = -EINVAL; -- goto err; -- } -- ret = of_property_read_string(pdev->dev.of_node, -- "pinctrl-names", -- &p_dac2->pinctrl_name); -- p_dac2->pin_ctl = -- devm_pinctrl_get_select(&pdev->dev, p_dac2->pinctrl_name); -- -- ret = snd_soc_of_parse_card_name(card, "aml,sound_card"); -- if (ret) -- goto err; -- -- ret = snd_soc_register_card(card); -- if (ret) { -- dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", -- ret); -- goto err; -- } -- return 0; --#endif -- --err: -- return ret; --} -- --static int dac2_remove(struct platform_device *pdev) --{ -- struct snd_soc_card *card = platform_get_drvdata(pdev); -- struct dac2_private_data *p_dac2; -- -- p_dac2 = snd_soc_card_get_drvdata(card); -- if (p_dac2->pin_ctl) -- devm_pinctrl_put(p_dac2->pin_ctl); -- -- snd_soc_unregister_card(card); -- return 0; --} -- --#ifdef CONFIG_USE_OF --static const struct of_device_id dac2_dt_match[] = { -- { .compatible = "sound_card, odroid_dac2", }, -- {}, --}; --#else --#define dac2_dt_match NULL --#endif -- --static struct platform_driver dac2_driver = { -- .probe = dac2_probe, -- .remove = dac2_remove, -- .driver = { -- .name = DRV_NAME, -- .owner = THIS_MODULE, -- .pm = &snd_soc_pm_ops, -- .of_match_table = dac2_dt_match, -- }, --}; -- --static int __init dac2_init(void) --{ -- return platform_driver_register(&dac2_driver); --} -- --static void __exit dac2_exit(void) --{ -- platform_driver_unregister(&dac2_driver); --} -- --#ifdef CONFIG_DEFERRED_MODULE_INIT --deferred_module_init(dac2_init); --#else --module_init(dac2_init); --#endif --module_exit(dac2_exit); -- --/* Module information */ --MODULE_AUTHOR("Hardkernel, Inc."); --MODULE_DESCRIPTION("ODROID HiFi Shield-2 Asoc driver"); --MODULE_LICENSE("GPL"); --MODULE_ALIAS("platform:" DRV_NAME); -diff --git a/sound/soc/aml/m8/odroid_dac2.h b/sound/soc/aml/m8/odroid_dac2.h -deleted file mode 100644 -index d5b830d..0000000 ---- a/sound/soc/aml/m8/odroid_dac2.h -+++ /dev/null -@@ -1,31 +0,0 @@ --/* -- * sound/soc/aml/m8/aml_m8.h -- * -- * Copyright (C) 2015 Amlogic, Inc. All rights reserved. -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -- * more details. -- * --*/ -- --#ifndef AML_M8_H --#define AML_M8_H -- --#include --#include --struct dac2_private_data { -- int bias_level; -- const char *pinctrl_name; -- struct pinctrl *pin_ctl; -- void *data; --}; -- --#endif -- -diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index c8b16fb..e9ab5e1 100644 ---- a/sound/soc/codecs/Kconfig -+++ b/sound/soc/codecs/Kconfig -@@ -135,8 +135,6 @@ config SND_SOC_ALL_CODECS - select SND_SOC_DUMMY_CODEC - select SND_SOC_PCM2BT - select SND_SOC_PCM5102 -- select SND_SOC_PCM512x_I2C if I2C -- select SND_SOC_PCM512x_SPI if SPI_MASTER - help - Normally ASoC codec drivers are only built if a machine driver which - uses them is also built since they are only usable with a machine -@@ -568,18 +566,3 @@ config SND_SOC_PCM2BT - - config SND_SOC_PCM5102 - tristate -- --config SND_SOC_PCM512x -- tristate -- --config SND_SOC_PCM512x_I2C -- tristate "Texas Instruments PCM512x CODECs - I2C" -- depends on I2C -- select SND_SOC_PCM512x -- select REGMAP_I2C -- --config SND_SOC_PCM512x_SPI -- tristate "Texas Instruments PCM512x CODECs - SPI" -- depends on SPI_MASTER -- select SND_SOC_PCM512x -- select REGMAP_SPI -diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index 8400601..9e024d9 100644 ---- a/sound/soc/codecs/Makefile -+++ b/sound/soc/codecs/Makefile -@@ -127,9 +127,6 @@ snd-soc-wm-hubs-objs := wm_hubs.o - snd-soc-dummy_codec-objs := dummy_codec.o - snd-soc-pcm2bt-objs := pcm2bt.o - snd-soc-pcm5102-objs := pcm5102.o --snd-soc-pcm512x-objs := pcm512x.o --snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o --snd-soc-pcm512x-spi-objs := pcm512x-spi.o - - # Amp - snd-soc-max9877-objs := max9877.o -@@ -263,9 +260,6 @@ obj-$(CONFIG_SND_SOC_WM_HUBS) += snd-soc-wm-hubs.o - obj-$(CONFIG_SND_SOC_DUMMY_CODEC) += snd-soc-dummy_codec.o - obj-$(CONFIG_SND_SOC_PCM2BT) += snd-soc-pcm2bt.o - obj-$(CONFIG_SND_SOC_PCM5102) += snd-soc-pcm5102.o --obj-$(CONFIG_SND_SOC_PCM512x) += snd-soc-pcm512x.o --obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o --obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o - - # Amp - obj-$(CONFIG_SND_SOC_MAX9877) += snd-soc-max9877.o -diff --git a/sound/soc/codecs/pcm512x-i2c.c b/sound/soc/codecs/pcm512x-i2c.c -deleted file mode 100644 -index 970eb8b..0000000 ---- a/sound/soc/codecs/pcm512x-i2c.c -+++ /dev/null -@@ -1,81 +0,0 @@ --/* -- * Driver for the PCM512x CODECs -- * -- * Author: Mark Brown -- * Copyright 2014 Linaro Ltd -- * -- * This program is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License -- * version 2 as published by the Free Software Foundation. -- * -- * This program is distributed in the hope that it will be useful, but -- * WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * General Public License for more details. -- */ -- --#include --#include --#include -- --#include "pcm512x.h" -- --static int pcm512x_i2c_probe(struct i2c_client *i2c, -- const struct i2c_device_id *id) --{ -- struct regmap *regmap; -- struct regmap_config config = pcm512x_regmap; -- -- /* msb needs to be set to enable auto-increment of addresses */ -- config.read_flag_mask = 0x80; -- config.write_flag_mask = 0x80; -- -- regmap = devm_regmap_init_i2c(i2c, &config); -- if (IS_ERR(regmap)) -- return PTR_ERR(regmap); -- -- return pcm512x_probe(&i2c->dev, regmap); --} -- --static int pcm512x_i2c_remove(struct i2c_client *i2c) --{ -- pcm512x_remove(&i2c->dev); -- return 0; --} -- --static const struct i2c_device_id pcm512x_i2c_id[] = { -- { "pcm5121", }, -- { "pcm5122", }, -- { "pcm5141", }, -- { "pcm5142", }, -- { "pcm5242", }, -- { } --}; --MODULE_DEVICE_TABLE(i2c, pcm512x_i2c_id); -- --static const struct of_device_id pcm512x_of_match[] = { -- { .compatible = "ti,pcm5121", }, -- { .compatible = "ti,pcm5122", }, -- { .compatible = "ti,pcm5141", }, -- { .compatible = "ti,pcm5142", }, -- { .compatible = "ti,pcm5242", }, -- { } --}; --MODULE_DEVICE_TABLE(of, pcm512x_of_match); -- --static struct i2c_driver pcm512x_i2c_driver = { -- .probe = pcm512x_i2c_probe, -- .remove = pcm512x_i2c_remove, -- .id_table = pcm512x_i2c_id, -- .driver = { -- .name = "pcm512x", -- .of_match_table = pcm512x_of_match, -- .pm = &pcm512x_pm_ops, -- }, --}; -- --module_i2c_driver(pcm512x_i2c_driver); -- --MODULE_DESCRIPTION("ASoC PCM512x codec driver - I2C"); --MODULE_AUTHOR("Mark Brown "); --MODULE_LICENSE("GPL v2"); -diff --git a/sound/soc/codecs/pcm512x-spi.c b/sound/soc/codecs/pcm512x-spi.c -deleted file mode 100644 -index 712ed65..0000000 ---- a/sound/soc/codecs/pcm512x-spi.c -+++ /dev/null -@@ -1,72 +0,0 @@ --/* -- * Driver for the PCM512x CODECs -- * -- * Author: Mark Brown -- * Copyright 2014 Linaro Ltd -- * -- * This program is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License -- * version 2 as published by the Free Software Foundation. -- * -- * This program is distributed in the hope that it will be useful, but -- * WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * General Public License for more details. -- */ -- --#include --#include --#include -- --#include "pcm512x.h" -- --static int pcm512x_spi_probe(struct spi_device *spi) --{ -- struct regmap *regmap; -- int ret; -- -- regmap = devm_regmap_init_spi(spi, &pcm512x_regmap); -- if (IS_ERR(regmap)) { -- ret = PTR_ERR(regmap); -- return ret; -- } -- -- return pcm512x_probe(&spi->dev, regmap); --} -- --static int pcm512x_spi_remove(struct spi_device *spi) --{ -- pcm512x_remove(&spi->dev); -- return 0; --} -- --static const struct spi_device_id pcm512x_spi_id[] = { -- { "pcm5121", }, -- { "pcm5122", }, -- { "pcm5141", }, -- { "pcm5142", }, -- { }, --}; --MODULE_DEVICE_TABLE(spi, pcm512x_spi_id); -- --static const struct of_device_id pcm512x_of_match[] = { -- { .compatible = "ti,pcm5121", }, -- { .compatible = "ti,pcm5122", }, -- { .compatible = "ti,pcm5141", }, -- { .compatible = "ti,pcm5142", }, -- { } --}; --MODULE_DEVICE_TABLE(of, pcm512x_of_match); -- --static struct spi_driver pcm512x_spi_driver = { -- .probe = pcm512x_spi_probe, -- .remove = pcm512x_spi_remove, -- .id_table = pcm512x_spi_id, -- .driver = { -- .name = "pcm512x", -- .of_match_table = pcm512x_of_match, -- .pm = &pcm512x_pm_ops, -- }, --}; -- --module_spi_driver(pcm512x_spi_driver); -diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c -deleted file mode 100644 -index 88edd8e..0000000 ---- a/sound/soc/codecs/pcm512x.c -+++ /dev/null -@@ -1,609 +0,0 @@ --/* -- * Driver for the PCM512x CODECs -- * -- * Author: Mark Brown -- * Copyright 2014 Linaro Ltd -- * -- * This program is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License -- * version 2 as published by the Free Software Foundation. -- * -- * This program is distributed in the hope that it will be useful, but -- * WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * General Public License for more details. -- */ -- -- --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include -- --#include "pcm512x.h" -- --struct pcm512x_priv { -- struct regmap *regmap; -- struct clk *sclk; --}; -- --static const struct reg_default pcm512x_reg_defaults[] = { -- { PCM512x_RESET, 0x00 }, -- { PCM512x_POWER, 0x00 }, -- { PCM512x_MUTE, 0x00 }, -- { PCM512x_DSP, 0x00 }, -- { PCM512x_PLL_REF, 0x00 }, -- { PCM512x_DAC_ROUTING, 0x11 }, -- { PCM512x_DSP_PROGRAM, 0x01 }, -- { PCM512x_CLKDET, 0x00 }, -- { PCM512x_AUTO_MUTE, 0x00 }, -- { PCM512x_ERROR_DETECT, 0x00 }, -- { PCM512x_DIGITAL_VOLUME_1, 0x00 }, -- { PCM512x_DIGITAL_VOLUME_2, 0x30 }, -- { PCM512x_DIGITAL_VOLUME_3, 0x30 }, -- { PCM512x_DIGITAL_MUTE_1, 0x22 }, -- { PCM512x_DIGITAL_MUTE_2, 0x00 }, -- { PCM512x_DIGITAL_MUTE_3, 0x07 }, -- { PCM512x_OUTPUT_AMPLITUDE, 0x00 }, -- { PCM512x_ANALOG_GAIN_CTRL, 0x00 }, -- { PCM512x_UNDERVOLTAGE_PROT, 0x00 }, -- { PCM512x_ANALOG_MUTE_CTRL, 0x00 }, -- { PCM512x_ANALOG_GAIN_BOOST, 0x00 }, -- { PCM512x_VCOM_CTRL_1, 0x00 }, -- { PCM512x_VCOM_CTRL_2, 0x01 }, --}; -- --static bool pcm512x_readable(struct device *dev, unsigned int reg) --{ -- switch (reg) { -- case PCM512x_RESET: -- case PCM512x_POWER: -- case PCM512x_MUTE: -- case PCM512x_PLL_EN: -- case PCM512x_SPI_MISO_FUNCTION: -- case PCM512x_DSP: -- case PCM512x_GPIO_EN: -- case PCM512x_BCLK_LRCLK_CFG: -- case PCM512x_DSP_GPIO_INPUT: -- case PCM512x_MASTER_MODE: -- case PCM512x_PLL_REF: -- case PCM512x_PLL_COEFF_0: -- case PCM512x_PLL_COEFF_1: -- case PCM512x_PLL_COEFF_2: -- case PCM512x_PLL_COEFF_3: -- case PCM512x_PLL_COEFF_4: -- case PCM512x_DSP_CLKDIV: -- case PCM512x_DAC_CLKDIV: -- case PCM512x_NCP_CLKDIV: -- case PCM512x_OSR_CLKDIV: -- case PCM512x_MASTER_CLKDIV_1: -- case PCM512x_MASTER_CLKDIV_2: -- case PCM512x_FS_SPEED_MODE: -- case PCM512x_IDAC_1: -- case PCM512x_IDAC_2: -- case PCM512x_ERROR_DETECT: -- case PCM512x_I2S_1: -- case PCM512x_I2S_2: -- case PCM512x_DAC_ROUTING: -- case PCM512x_DSP_PROGRAM: -- case PCM512x_CLKDET: -- case PCM512x_AUTO_MUTE: -- case PCM512x_DIGITAL_VOLUME_1: -- case PCM512x_DIGITAL_VOLUME_2: -- case PCM512x_DIGITAL_VOLUME_3: -- case PCM512x_DIGITAL_MUTE_1: -- case PCM512x_DIGITAL_MUTE_2: -- case PCM512x_DIGITAL_MUTE_3: -- case PCM512x_GPIO_OUTPUT_1: -- case PCM512x_GPIO_OUTPUT_2: -- case PCM512x_GPIO_OUTPUT_3: -- case PCM512x_GPIO_OUTPUT_4: -- case PCM512x_GPIO_OUTPUT_5: -- case PCM512x_GPIO_OUTPUT_6: -- case PCM512x_GPIO_CONTROL_1: -- case PCM512x_GPIO_CONTROL_2: -- case PCM512x_OVERFLOW: -- case PCM512x_RATE_DET_1: -- case PCM512x_RATE_DET_2: -- case PCM512x_RATE_DET_3: -- case PCM512x_RATE_DET_4: -- case PCM512x_ANALOG_MUTE_DET: -- case PCM512x_GPIN: -- case PCM512x_DIGITAL_MUTE_DET: -- case PCM512x_OUTPUT_AMPLITUDE: -- case PCM512x_ANALOG_GAIN_CTRL: -- case PCM512x_UNDERVOLTAGE_PROT: -- case PCM512x_ANALOG_MUTE_CTRL: -- case PCM512x_ANALOG_GAIN_BOOST: -- case PCM512x_VCOM_CTRL_1: -- case PCM512x_VCOM_CTRL_2: -- case PCM512x_CRAM_CTRL: -- return true; -- default: -- /* There are 256 raw register addresses */ -- return reg < 0xff; -- } --} -- --static bool pcm512x_volatile(struct device *dev, unsigned int reg) --{ -- switch (reg) { -- case PCM512x_PLL_EN: -- case PCM512x_OVERFLOW: -- case PCM512x_RATE_DET_1: -- case PCM512x_RATE_DET_2: -- case PCM512x_RATE_DET_3: -- case PCM512x_RATE_DET_4: -- case PCM512x_ANALOG_MUTE_DET: -- case PCM512x_GPIN: -- case PCM512x_DIGITAL_MUTE_DET: -- case PCM512x_CRAM_CTRL: -- return true; -- default: -- /* There are 256 raw register addresses */ -- return reg < 0xff; -- } --} -- --static const DECLARE_TLV_DB_SCALE(digital_tlv, -10350, 50, 1); --static const DECLARE_TLV_DB_SCALE(analog_tlv, -600, 600, 0); --static const DECLARE_TLV_DB_SCALE(boost_tlv, 0, 80, 0); -- --static const char * const pcm512x_dsp_program_texts[] = { -- "FIR interpolation with de-emphasis", -- "Low latency IIR with de-emphasis", -- "High attenuation with de-emphasis", -- "Fixed process flow", -- "Ringing-less low latency FIR", --}; -- --static const unsigned int pcm512x_dsp_program_values[] = { -- 1, -- 2, -- 3, -- 5, -- 7, --}; -- --static SOC_VALUE_ENUM_SINGLE_DECL(pcm512x_dsp_program, -- PCM512x_DSP_PROGRAM, 0, 0x1f, -- pcm512x_dsp_program_texts, -- pcm512x_dsp_program_values); -- --static const char * const pcm512x_clk_missing_text[] = { -- "1s", "2s", "3s", "4s", "5s", "6s", "7s", "8s" --}; -- --static const struct soc_enum pcm512x_clk_missing = -- SOC_ENUM_SINGLE(PCM512x_CLKDET, 0, 8, pcm512x_clk_missing_text); -- --static const char * const pcm512x_autom_text[] = { -- "21ms", "106ms", "213ms", "533ms", "1.07s", "2.13s", "5.33s", "10.66s" --}; -- --static const struct soc_enum pcm512x_autom_l = -- SOC_ENUM_SINGLE(PCM512x_AUTO_MUTE, PCM512x_ATML_SHIFT, 8, -- pcm512x_autom_text); -- --static const struct soc_enum pcm512x_autom_r = -- SOC_ENUM_SINGLE(PCM512x_AUTO_MUTE, PCM512x_ATMR_SHIFT, 8, -- pcm512x_autom_text); -- --static const char * const pcm512x_ramp_rate_text[] = { -- "1 sample/update", "2 samples/update", "4 samples/update", -- "Immediate" --}; -- --static const struct soc_enum pcm512x_vndf = -- SOC_ENUM_SINGLE(PCM512x_DIGITAL_MUTE_1, PCM512x_VNDF_SHIFT, 4, -- pcm512x_ramp_rate_text); -- --static const struct soc_enum pcm512x_vnuf = -- SOC_ENUM_SINGLE(PCM512x_DIGITAL_MUTE_1, PCM512x_VNUF_SHIFT, 4, -- pcm512x_ramp_rate_text); -- --static const struct soc_enum pcm512x_vedf = -- SOC_ENUM_SINGLE(PCM512x_DIGITAL_MUTE_2, PCM512x_VEDF_SHIFT, 4, -- pcm512x_ramp_rate_text); -- --static const char * const pcm512x_ramp_step_text[] = { -- "4dB/step", "2dB/step", "1dB/step", "0.5dB/step" --}; -- --static const struct soc_enum pcm512x_vnds = -- SOC_ENUM_SINGLE(PCM512x_DIGITAL_MUTE_1, PCM512x_VNDS_SHIFT, 4, -- pcm512x_ramp_step_text); -- --static const struct soc_enum pcm512x_vnus = -- SOC_ENUM_SINGLE(PCM512x_DIGITAL_MUTE_1, PCM512x_VNUS_SHIFT, 4, -- pcm512x_ramp_step_text); -- --static const struct soc_enum pcm512x_veds = -- SOC_ENUM_SINGLE(PCM512x_DIGITAL_MUTE_2, PCM512x_VEDS_SHIFT, 4, -- pcm512x_ramp_step_text); -- --static const struct snd_kcontrol_new pcm512x_controls[] = { --SOC_DOUBLE_R_TLV("Digital Playback Volume", PCM512x_DIGITAL_VOLUME_2, -- PCM512x_DIGITAL_VOLUME_3, 0, 255, 1, digital_tlv), --SOC_DOUBLE_TLV("Analogue Playback Volume", PCM512x_ANALOG_GAIN_CTRL, -- PCM512x_LAGN_SHIFT, PCM512x_RAGN_SHIFT, 1, 1, analog_tlv), --SOC_DOUBLE_TLV("Analogue Playback Boost Volume", PCM512x_ANALOG_GAIN_BOOST, -- PCM512x_AGBL_SHIFT, PCM512x_AGBR_SHIFT, 1, 0, boost_tlv), --SOC_DOUBLE("Digital Playback Switch", PCM512x_MUTE, PCM512x_RQML_SHIFT, -- PCM512x_RQMR_SHIFT, 1, 1), -- --SOC_SINGLE("Deemphasis Switch", PCM512x_DSP, PCM512x_DEMP_SHIFT, 1, 1), --SOC_ENUM("DSP Program", pcm512x_dsp_program), -- --SOC_ENUM("Clock Missing Period", pcm512x_clk_missing), --SOC_ENUM("Auto Mute Time Left", pcm512x_autom_l), --SOC_ENUM("Auto Mute Time Right", pcm512x_autom_r), --SOC_SINGLE("Auto Mute Mono Switch", PCM512x_DIGITAL_MUTE_3, -- PCM512x_ACTL_SHIFT, 1, 0), --SOC_DOUBLE("Auto Mute Switch", PCM512x_DIGITAL_MUTE_3, PCM512x_AMLE_SHIFT, -- PCM512x_AMLR_SHIFT, 1, 0), -- --SOC_ENUM("Volume Ramp Down Rate", pcm512x_vndf), --SOC_ENUM("Volume Ramp Down Step", pcm512x_vnds), --SOC_ENUM("Volume Ramp Up Rate", pcm512x_vnuf), --SOC_ENUM("Volume Ramp Up Step", pcm512x_vnus), --SOC_ENUM("Volume Ramp Down Emergency Rate", pcm512x_vedf), --SOC_ENUM("Volume Ramp Down Emergency Step", pcm512x_veds), --}; -- --static const struct snd_soc_dapm_widget pcm512x_dapm_widgets[] = { --SND_SOC_DAPM_DAC("DACL", NULL, SND_SOC_NOPM, 0, 0), --SND_SOC_DAPM_DAC("DACR", NULL, SND_SOC_NOPM, 0, 0), -- --SND_SOC_DAPM_OUTPUT("OUTL"), --SND_SOC_DAPM_OUTPUT("OUTR"), --}; -- --static const struct snd_soc_dapm_route pcm512x_dapm_routes[] = { -- { "DACL", NULL, "Playback" }, -- { "DACR", NULL, "Playback" }, -- -- { "OUTL", NULL, "DACL" }, -- { "OUTR", NULL, "DACR" }, --}; -- --static int pcm512x_set_bias_level(struct snd_soc_codec *codec, -- enum snd_soc_bias_level level) --{ -- struct pcm512x_priv *pcm512x = dev_get_drvdata(codec->dev); -- int ret; -- -- switch (level) { -- case SND_SOC_BIAS_ON: -- case SND_SOC_BIAS_PREPARE: -- break; -- -- case SND_SOC_BIAS_STANDBY: -- ret = regmap_update_bits(pcm512x->regmap, PCM512x_POWER, -- PCM512x_RQST, 0); -- if (ret != 0) { -- dev_err(codec->dev, "Failed to remove standby: %d\n", -- ret); -- return ret; -- } -- break; -- -- case SND_SOC_BIAS_OFF: -- ret = regmap_update_bits(pcm512x->regmap, PCM512x_POWER, -- PCM512x_RQST, PCM512x_RQST); -- if (ret != 0) { -- dev_err(codec->dev, "Failed to request standby: %d\n", -- ret); -- return ret; -- } -- break; -- } -- -- codec->dapm.bias_level = level; -- -- return 0; --} -- --static int pcm512x_hw_params(struct snd_pcm_substream *substream, -- struct snd_pcm_hw_params *params, -- struct snd_soc_dai *dai) --{ -- struct snd_soc_codec *codec = dai->codec; -- struct pcm512x_priv *pcm512x = dev_get_drvdata(codec->dev); -- struct regmap *regmap = pcm512x->regmap; -- u8 bck_div, length, fs_speed; -- int ret; -- -- switch (params_format(params)) { -- case SNDRV_PCM_FORMAT_S16_LE: -- length = 0; -- break; -- case SNDRV_PCM_FORMAT_S20_3LE: -- length = 1; -- break; -- case SNDRV_PCM_FORMAT_S24_LE: -- length = 2; -- break; -- case SNDRV_PCM_FORMAT_S32_LE: -- length = 3; -- break; -- default: -- length = 0; -- break; -- } -- -- switch (params_rate(params)) { -- case 8000: -- case 11025: -- case 12000: -- case 16000: -- case 22050: -- case 32000: -- case 44100: -- case 48000: -- bck_div = 255; -- fs_speed = 0; -- break; -- case 88200: -- case 96000: -- bck_div = 255; -- fs_speed = 1; -- break; -- case 192000: -- bck_div = 255; -- fs_speed = 2; -- break; -- case 352800: -- case 384000: -- bck_div = 127; -- fs_speed = 3; -- break; -- default: -- bck_div = 255; -- fs_speed = 0; -- break; -- } -- -- ret = regmap_write(regmap, PCM512x_I2S_1, length); -- if (ret != 0) { -- dev_err(codec->dev, "Failed to I2S Data Format: %d\n", ret); -- goto err; -- } -- -- ret = regmap_write(regmap, PCM512x_FS_SPEED_MODE, fs_speed); -- if (ret != 0) { -- dev_err(codec->dev, "Failed to BCK rate: %d\n", ret); -- goto err; -- } -- --err: -- return ret; --} -- -- --static int pcm512x_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) --{ -- return 0; --} -- --static int pcm512x_set_sysclk(struct snd_soc_dai *dai, -- int clk_id, unsigned int freq, int dir) --{ -- return 0; --} -- --static const struct snd_soc_dai_ops pcm512x_dai_ops = { -- .set_sysclk = pcm512x_set_sysclk, -- .hw_params = pcm512x_hw_params, -- .set_fmt = pcm512x_set_fmt, --}; -- --static struct snd_soc_dai_driver pcm512x_dai = { -- .name = "pcm512x-hifi", -- .playback = { -- .stream_name = "Playback", -- .channels_min = 2, -- .channels_max = 2, -- .rates = SNDRV_PCM_RATE_8000_384000, -- .formats = SNDRV_PCM_FMTBIT_S16_LE | -- SNDRV_PCM_FMTBIT_S24_LE | -- SNDRV_PCM_FMTBIT_S32_LE -- }, -- .ops = &pcm512x_dai_ops, --}; -- --static struct snd_soc_codec_driver pcm512x_codec_driver = { -- .set_bias_level = pcm512x_set_bias_level, -- .idle_bias_off = true, -- -- .controls = pcm512x_controls, -- .num_controls = ARRAY_SIZE(pcm512x_controls), -- .dapm_widgets = pcm512x_dapm_widgets, -- .num_dapm_widgets = ARRAY_SIZE(pcm512x_dapm_widgets), -- .dapm_routes = pcm512x_dapm_routes, -- .num_dapm_routes = ARRAY_SIZE(pcm512x_dapm_routes), --}; -- --static const struct regmap_range_cfg pcm512x_range = { -- .name = "Pages", .range_min = PCM512x_VIRT_BASE, -- .range_max = PCM512x_MAX_REGISTER, -- .selector_reg = PCM512x_PAGE, -- .selector_mask = 0xff, -- .window_start = 0, .window_len = 0x100, --}; -- --const struct regmap_config pcm512x_regmap = { -- .reg_bits = 8, -- .val_bits = 8, -- -- .readable_reg = pcm512x_readable, -- .volatile_reg = pcm512x_volatile, -- -- .ranges = &pcm512x_range, -- .num_ranges = 1, -- -- .max_register = PCM512x_MAX_REGISTER, -- .reg_defaults = pcm512x_reg_defaults, -- .num_reg_defaults = ARRAY_SIZE(pcm512x_reg_defaults), -- .cache_type = REGCACHE_RBTREE, --}; --EXPORT_SYMBOL_GPL(pcm512x_regmap); -- --int pcm512x_probe(struct device *dev, struct regmap *regmap) --{ -- struct pcm512x_priv *pcm512x; -- int ret; -- -- pcm512x = devm_kzalloc(dev, sizeof(struct pcm512x_priv), GFP_KERNEL); -- if (!pcm512x) -- return -ENOMEM; -- -- dev_set_drvdata(dev, pcm512x); -- pcm512x->regmap = regmap; -- -- /* Reset the device, verifying I/O in the process for I2C */ -- ret = regmap_write(regmap, PCM512x_RESET, -- PCM512x_RSTM | PCM512x_RSTR); -- if (ret != 0) { -- dev_err(dev, "Failed to reset device: %d\n", ret); -- goto err; -- } -- -- ret = regmap_write(regmap, PCM512x_RESET, 0); -- if (ret != 0) { -- dev_err(dev, "Failed to reset device: %d\n", ret); -- goto err; -- } -- -- pcm512x->sclk = devm_clk_get(dev, NULL); -- if (IS_ERR(pcm512x->sclk)) { -- if (PTR_ERR(pcm512x->sclk) == -EPROBE_DEFER) -- return -EPROBE_DEFER; -- -- dev_info(dev, "No SCLK, using BCLK: %ld\n", -- PTR_ERR(pcm512x->sclk)); -- -- /* Disable reporting of missing SCLK as an error */ -- regmap_update_bits(regmap, PCM512x_ERROR_DETECT, -- PCM512x_IDCH, PCM512x_IDCH); -- -- /* Internal PLL off, master clock switched to SCK */ -- regmap_update_bits(regmap, PCM512x_PLL_EN, -- PCM512x_PLCE, 0); -- -- } else { -- ret = clk_prepare_enable(pcm512x->sclk); -- if (ret != 0) { -- dev_err(dev, "Failed to enable SCLK: %d\n", ret); -- return ret; -- } -- } -- -- /* Default to standby mode */ -- ret = regmap_update_bits(pcm512x->regmap, PCM512x_POWER, -- PCM512x_RQST, PCM512x_RQST); -- if (ret != 0) { -- dev_err(dev, "Failed to request standby: %d\n", -- ret); -- goto err_clk; -- } -- -- pm_runtime_set_active(dev); -- pm_runtime_enable(dev); -- pm_runtime_idle(dev); -- -- ret = snd_soc_register_codec(dev, &pcm512x_codec_driver, -- &pcm512x_dai, 1); -- if (ret != 0) { -- dev_err(dev, "Failed to register CODEC: %d\n", ret); -- goto err_pm; -- } -- -- return 0; -- --err_pm: -- pm_runtime_disable(dev); --err_clk: -- if (!IS_ERR(pcm512x->sclk)) -- clk_disable_unprepare(pcm512x->sclk); --err: -- return ret; --} --EXPORT_SYMBOL_GPL(pcm512x_probe); -- --void pcm512x_remove(struct device *dev) --{ -- struct pcm512x_priv *pcm512x = dev_get_drvdata(dev); -- -- snd_soc_unregister_codec(dev); -- pm_runtime_disable(dev); -- if (!IS_ERR(pcm512x->sclk)) -- clk_disable_unprepare(pcm512x->sclk); --} --EXPORT_SYMBOL_GPL(pcm512x_remove); -- --#ifdef CONFIG_PM_RUNTIME --static int pcm512x_suspend(struct device *dev) --{ -- struct pcm512x_priv *pcm512x = dev_get_drvdata(dev); -- int ret; -- -- ret = regmap_update_bits(pcm512x->regmap, PCM512x_POWER, -- PCM512x_RQPD, PCM512x_RQPD); -- if (ret != 0) { -- dev_err(dev, "Failed to request power down: %d\n", ret); -- return ret; -- } -- -- if (!IS_ERR(pcm512x->sclk)) -- clk_disable_unprepare(pcm512x->sclk); -- -- return 0; --} -- --static int pcm512x_resume(struct device *dev) --{ -- struct pcm512x_priv *pcm512x = dev_get_drvdata(dev); -- int ret; -- -- if (!IS_ERR(pcm512x->sclk)) { -- ret = clk_prepare_enable(pcm512x->sclk); -- if (ret != 0) { -- dev_err(dev, "Failed to enable SCLK: %d\n", ret); -- return ret; -- } -- } -- -- regcache_cache_only(pcm512x->regmap, false); -- ret = regcache_sync(pcm512x->regmap); -- if (ret != 0) { -- dev_err(dev, "Failed to sync cache: %d\n", ret); -- return ret; -- } -- -- ret = regmap_update_bits(pcm512x->regmap, PCM512x_POWER, -- PCM512x_RQPD, 0); -- if (ret != 0) { -- dev_err(dev, "Failed to remove power down: %d\n", ret); -- return ret; -- } -- -- return 0; --} --#endif -- --const struct dev_pm_ops pcm512x_pm_ops = { -- SET_RUNTIME_PM_OPS(pcm512x_suspend, pcm512x_resume, NULL) --}; --EXPORT_SYMBOL_GPL(pcm512x_pm_ops); -- --MODULE_DESCRIPTION("ASoC PCM512x codec driver"); --MODULE_AUTHOR("Mark Brown "); --MODULE_LICENSE("GPL v2"); -diff --git a/sound/soc/codecs/pcm512x.h b/sound/soc/codecs/pcm512x.h -deleted file mode 100644 -index 6ee76aa..0000000 ---- a/sound/soc/codecs/pcm512x.h -+++ /dev/null -@@ -1,171 +0,0 @@ --/* -- * Driver for the PCM512x CODECs -- * -- * Author: Mark Brown -- * Copyright 2014 Linaro Ltd -- * -- * This program is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License -- * version 2 as published by the Free Software Foundation. -- * -- * This program is distributed in the hope that it will be useful, but -- * WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * General Public License for more details. -- */ -- --#ifndef _SND_SOC_PCM512X --#define _SND_SOC_PCM512X -- --#include --#include -- --#define PCM512x_VIRT_BASE 0x100 --#define PCM512x_PAGE_LEN 0x100 --#define PCM512x_PAGE_BASE(n) (PCM512x_VIRT_BASE + (PCM512x_PAGE_LEN * n)) -- --#define PCM512x_PAGE 0 -- --#define PCM512x_RESET (PCM512x_PAGE_BASE(0) + 1) --#define PCM512x_POWER (PCM512x_PAGE_BASE(0) + 2) --#define PCM512x_MUTE (PCM512x_PAGE_BASE(0) + 3) --#define PCM512x_PLL_EN (PCM512x_PAGE_BASE(0) + 4) --#define PCM512x_SPI_MISO_FUNCTION (PCM512x_PAGE_BASE(0) + 6) --#define PCM512x_DSP (PCM512x_PAGE_BASE(0) + 7) --#define PCM512x_GPIO_EN (PCM512x_PAGE_BASE(0) + 8) --#define PCM512x_BCLK_LRCLK_CFG (PCM512x_PAGE_BASE(0) + 9) --#define PCM512x_DSP_GPIO_INPUT (PCM512x_PAGE_BASE(0) + 10) --#define PCM512x_MASTER_MODE (PCM512x_PAGE_BASE(0) + 12) --#define PCM512x_PLL_REF (PCM512x_PAGE_BASE(0) + 13) --#define PCM512x_PLL_COEFF_0 (PCM512x_PAGE_BASE(0) + 20) --#define PCM512x_PLL_COEFF_1 (PCM512x_PAGE_BASE(0) + 21) --#define PCM512x_PLL_COEFF_2 (PCM512x_PAGE_BASE(0) + 22) --#define PCM512x_PLL_COEFF_3 (PCM512x_PAGE_BASE(0) + 23) --#define PCM512x_PLL_COEFF_4 (PCM512x_PAGE_BASE(0) + 24) --#define PCM512x_DSP_CLKDIV (PCM512x_PAGE_BASE(0) + 27) --#define PCM512x_DAC_CLKDIV (PCM512x_PAGE_BASE(0) + 28) --#define PCM512x_NCP_CLKDIV (PCM512x_PAGE_BASE(0) + 29) --#define PCM512x_OSR_CLKDIV (PCM512x_PAGE_BASE(0) + 30) --#define PCM512x_MASTER_CLKDIV_1 (PCM512x_PAGE_BASE(0) + 32) --#define PCM512x_MASTER_CLKDIV_2 (PCM512x_PAGE_BASE(0) + 33) --#define PCM512x_FS_SPEED_MODE (PCM512x_PAGE_BASE(0) + 34) --#define PCM512x_IDAC_1 (PCM512x_PAGE_BASE(0) + 35) --#define PCM512x_IDAC_2 (PCM512x_PAGE_BASE(0) + 36) --#define PCM512x_ERROR_DETECT (PCM512x_PAGE_BASE(0) + 37) --#define PCM512x_I2S_1 (PCM512x_PAGE_BASE(0) + 40) --#define PCM512x_I2S_2 (PCM512x_PAGE_BASE(0) + 41) --#define PCM512x_DAC_ROUTING (PCM512x_PAGE_BASE(0) + 42) --#define PCM512x_DSP_PROGRAM (PCM512x_PAGE_BASE(0) + 43) --#define PCM512x_CLKDET (PCM512x_PAGE_BASE(0) + 44) --#define PCM512x_AUTO_MUTE (PCM512x_PAGE_BASE(0) + 59) --#define PCM512x_DIGITAL_VOLUME_1 (PCM512x_PAGE_BASE(0) + 60) --#define PCM512x_DIGITAL_VOLUME_2 (PCM512x_PAGE_BASE(0) + 61) --#define PCM512x_DIGITAL_VOLUME_3 (PCM512x_PAGE_BASE(0) + 62) --#define PCM512x_DIGITAL_MUTE_1 (PCM512x_PAGE_BASE(0) + 63) --#define PCM512x_DIGITAL_MUTE_2 (PCM512x_PAGE_BASE(0) + 64) --#define PCM512x_DIGITAL_MUTE_3 (PCM512x_PAGE_BASE(0) + 65) --#define PCM512x_GPIO_OUTPUT_1 (PCM512x_PAGE_BASE(0) + 80) --#define PCM512x_GPIO_OUTPUT_2 (PCM512x_PAGE_BASE(0) + 81) --#define PCM512x_GPIO_OUTPUT_3 (PCM512x_PAGE_BASE(0) + 82) --#define PCM512x_GPIO_OUTPUT_4 (PCM512x_PAGE_BASE(0) + 83) --#define PCM512x_GPIO_OUTPUT_5 (PCM512x_PAGE_BASE(0) + 84) --#define PCM512x_GPIO_OUTPUT_6 (PCM512x_PAGE_BASE(0) + 85) --#define PCM512x_GPIO_CONTROL_1 (PCM512x_PAGE_BASE(0) + 86) --#define PCM512x_GPIO_CONTROL_2 (PCM512x_PAGE_BASE(0) + 87) --#define PCM512x_OVERFLOW (PCM512x_PAGE_BASE(0) + 90) --#define PCM512x_RATE_DET_1 (PCM512x_PAGE_BASE(0) + 91) --#define PCM512x_RATE_DET_2 (PCM512x_PAGE_BASE(0) + 92) --#define PCM512x_RATE_DET_3 (PCM512x_PAGE_BASE(0) + 93) --#define PCM512x_RATE_DET_4 (PCM512x_PAGE_BASE(0) + 94) --#define PCM512x_ANALOG_MUTE_DET (PCM512x_PAGE_BASE(0) + 108) --#define PCM512x_GPIN (PCM512x_PAGE_BASE(0) + 119) --#define PCM512x_DIGITAL_MUTE_DET (PCM512x_PAGE_BASE(0) + 120) -- --#define PCM512x_OUTPUT_AMPLITUDE (PCM512x_PAGE_BASE(1) + 1) --#define PCM512x_ANALOG_GAIN_CTRL (PCM512x_PAGE_BASE(1) + 2) --#define PCM512x_UNDERVOLTAGE_PROT (PCM512x_PAGE_BASE(1) + 5) --#define PCM512x_ANALOG_MUTE_CTRL (PCM512x_PAGE_BASE(1) + 6) --#define PCM512x_ANALOG_GAIN_BOOST (PCM512x_PAGE_BASE(1) + 7) --#define PCM512x_VCOM_CTRL_1 (PCM512x_PAGE_BASE(1) + 8) --#define PCM512x_VCOM_CTRL_2 (PCM512x_PAGE_BASE(1) + 9) -- --#define PCM512x_CRAM_CTRL (PCM512x_PAGE_BASE(44) + 1) -- --#define PCM512x_MAX_REGISTER (PCM512x_PAGE_BASE(44) + 1) -- --/* Page 0, Register 1 - reset */ --#define PCM512x_RSTR (1 << 0) --#define PCM512x_RSTM (1 << 4) -- --/* Page 0, Register 2 - power */ --#define PCM512x_RQPD (1 << 0) --#define PCM512x_RQPD_SHIFT 0 --#define PCM512x_RQST (1 << 4) --#define PCM512x_RQST_SHIFT 4 -- --/* Page 0, Register 3 - mute */ --#define PCM512x_RQMR_SHIFT 0 --#define PCM512x_RQML_SHIFT 4 -- --/* Page 0, Register 4 - PLL */ --#define PCM512x_PLCE (1 << 0) --#define PCM512x_RLCE_SHIFT 0 --#define PCM512x_PLCK (1 << 4) --#define PCM512x_PLCK_SHIFT 4 -- --/* Page 0, Register 7 - DSP */ --#define PCM512x_SDSL (1 << 0) --#define PCM512x_SDSL_SHIFT 0 --#define PCM512x_DEMP (1 << 4) --#define PCM512x_DEMP_SHIFT 4 -- --/* Page 0, Register 13 - PLL reference */ --#define PCM512x_SREF (1 << 4) -- --/* Page 0, Register 37 - Error detection */ --#define PCM512x_IPLK (1 << 0) --#define PCM512x_DCAS (1 << 1) --#define PCM512x_IDCM (1 << 2) --#define PCM512x_IDCH (1 << 3) --#define PCM512x_IDSK (1 << 4) --#define PCM512x_IDBK (1 << 5) --#define PCM512x_IDFS (1 << 6) -- --/* Page 0, Register 42 - DAC routing */ --#define PCM512x_AUPR_SHIFT 0 --#define PCM512x_AUPL_SHIFT 4 -- --/* Page 0, Register 59 - auto mute */ --#define PCM512x_ATMR_SHIFT 0 --#define PCM512x_ATML_SHIFT 4 -- --/* Page 0, Register 63 - ramp rates */ --#define PCM512x_VNDF_SHIFT 6 --#define PCM512x_VNDS_SHIFT 4 --#define PCM512x_VNUF_SHIFT 2 --#define PCM512x_VNUS_SHIFT 0 -- --/* Page 0, Register 64 - emergency ramp rates */ --#define PCM512x_VEDF_SHIFT 6 --#define PCM512x_VEDS_SHIFT 4 -- --/* Page 0, Register 65 - Digital mute enables */ --#define PCM512x_ACTL_SHIFT 2 --#define PCM512x_AMLE_SHIFT 1 --#define PCM512x_AMLR_SHIFT 0 -- --/* Page 1, Register 2 - analog volume control */ --#define PCM512x_RAGN_SHIFT 0 --#define PCM512x_LAGN_SHIFT 4 -- --/* Page 1, Register 7 - analog boost control */ --#define PCM512x_AGBR_SHIFT 0 --#define PCM512x_AGBL_SHIFT 4 -- --extern const struct dev_pm_ops pcm512x_pm_ops; --extern const struct regmap_config pcm512x_regmap; -- --int pcm512x_probe(struct device *dev, struct regmap *regmap); --void pcm512x_remove(struct device *dev); -- --#endif --- -1.9.1 - diff --git a/projects/Odroid_C2/patches/linux/linux-001-Revert-all-Odroid-custom-audio-mods-for-HiFi-Shield1-and-usb-DAC.patch b/projects/Odroid_C2/patches/linux/linux-001-Revert-all-Odroid-custom-audio-mods-for-HiFi-Shield1-and-usb-DAC.patch deleted file mode 100644 index 2e2b24dc69..0000000000 --- a/projects/Odroid_C2/patches/linux/linux-001-Revert-all-Odroid-custom-audio-mods-for-HiFi-Shield1-and-usb-DAC.patch +++ /dev/null @@ -1,1702 +0,0 @@ -From b0bc68d9bfb8d33badd3c0f2f583934219bff120 Mon Sep 17 00:00:00 2001 -From: Jamie Coldhill -Date: Mon, 19 Sep 2016 19:15:16 +0800 -Subject: [PATCH] - Revert.all.Odroid.Specific.Sound.Mods.for.HiFi.Shield.and.usb_dac - ---- - arch/arm64/boot/dts/meson64_odroidc2.dts | 143 ++++++------ - arch/arm64/configs/odroidc2_defconfig | 12 +- - drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c | 2 +- - include/sound/pcm.h | 5 - - sound/core/pcm_native.c | 3 +- - sound/soc/aml/m8/Kconfig | 9 - - sound/soc/aml/m8/Makefile | 6 - - sound/soc/aml/m8/aml_audio_hw.c | 13 +- - sound/soc/aml/m8/aml_audio_hw.h | 2 +- - sound/soc/aml/m8/aml_i2s.c | 83 +++---- - sound/soc/aml/m8/aml_i2s_dai.c | 55 ++--- - sound/soc/aml/m8/aml_m8.c | 2 + - sound/soc/aml/m8/aml_spdif_codec.c | 2 +- - sound/soc/aml/m8/aml_spdif_dai.c | 110 +++++++--- - sound/soc/aml/m8/aml_spdif_dai.h | 4 +- - sound/soc/aml/m8/odroid_dac.c | 292 ------------------------- - sound/soc/aml/m8/odroid_hdmi.c | 262 ---------------------- - sound/soc/aml/m8/odroid_hdmi.h | 31 --- - sound/soc/codecs/Kconfig | 4 - - sound/soc/codecs/Makefile | 2 - - sound/soc/codecs/pcm5102.c | 161 -------------- - 21 files changed, 222 insertions(+), 981 deletions(-) - mode change 100755 => 100644 arch/arm64/boot/dts/meson64_odroidc2.dts - delete mode 100644 sound/soc/aml/m8/odroid_dac.c - delete mode 100644 sound/soc/aml/m8/odroid_hdmi.c - delete mode 100644 sound/soc/aml/m8/odroid_hdmi.h - delete mode 100644 sound/soc/codecs/pcm5102.c - -diff --git a/arch/arm64/boot/dts/meson64_odroidc2.dts b/arch/arm64/boot/dts/meson64_odroidc2.dts -old mode 100755 -new mode 100644 -index 5f64ee3..e95be6a ---- a/arch/arm64/boot/dts/meson64_odroidc2.dts -+++ b/arch/arm64/boot/dts/meson64_odroidc2.dts -@@ -529,21 +529,24 @@ - "usb0_to_ddr"; - }; - -+ /* AUDIO MESON8 DEVICES */ - i2s_dai: I2S { -- compatible = "amlogic, aml-i2s-dai"; -- #sound-dai-cells = <0>; -- resets = <&clock GCLK_IDX_AIU_AI_TOP_GLUE -- &clock GCLK_IDX_AUD_BUF_ABD -- &clock GCLK_IDX_AIU_I2S_OUT -- &clock GCLK_IDX_AIU_AMCLK_MEASURE -- &clock GCLK_IDX_AIU_AIFIFO2 -- &clock GCLK_IDX_AIU_AUD_MIXER -- &clock GCLK_IDX_AIU_MIXER_REG -- &clock GCLK_IDX_AIU_ADC -- &clock GCLK_IDX_AIU_TOP_LEVEL -- &clock GCLK_IDX_AIU_AOCLK -- &clock GCLK_IDX_AUD_IN>; -- reset-names = "top_glue", -+ #sound-dai-cells = <0>; -+ resets = < -+ &clock GCLK_IDX_AIU_AI_TOP_GLUE -+ &clock GCLK_IDX_AUD_BUF_ABD -+ &clock GCLK_IDX_AIU_I2S_OUT -+ &clock GCLK_IDX_AIU_AMCLK_MEASURE -+ &clock GCLK_IDX_AIU_AIFIFO2 -+ &clock GCLK_IDX_AIU_AUD_MIXER -+ &clock GCLK_IDX_AIU_MIXER_REG -+ &clock GCLK_IDX_AIU_ADC -+ &clock GCLK_IDX_AIU_TOP_LEVEL -+ &clock GCLK_IDX_AIU_AOCLK -+ &clock GCLK_IDX_AUD_IN -+ >; -+ reset-names = -+ "top_glue", - "aud_buf", - "i2s_out", - "amclk_measure", -@@ -556,51 +559,46 @@ - "aud_in"; - clocks = <&clock CLK_MPLL0>, - <&clock CLK_AMCLK>; -- clock-names = "mpll0", -- "mclk"; -- }; -- -- i2s_plat: i2s_platform { -- compatible = "amlogic, aml-i2s"; -+ clock-names = "mpll0", "mclk"; -+ compatible = "amlogic, aml-i2s-dai"; - }; -- - spdif_dai: SPDIF { -- compatible = "amlogic, aml-spdif-dai"; -- #sound-dai-cells = <0>; -- resets = <&clock GCLK_IDX_AIU_IEC958 -- &clock GCLK_IDX_AIU_ICE958_AMCLK>; -- reset-names = "iec958", -- "iec958_amclk"; -- clocks = <&clock CLK_MPLL1>, -- <&clock CLK_I958>, -- <&clock CLK_AMCLK>, -- <&clock CLK_SPDIF>; -- clock-names = "mpll1", -- "i958", -- "mclk", -- "spdif"; -- }; -- -- spdif_codec: spdif_codec{ - #sound-dai-cells = <0>; -- compatible = "amlogic, aml-spdif-codec"; -- pinctrl-names = "aml_audio_spdif"; -- pinctrl-0 = <&audio_spdif_pins>; -+ compatible = "amlogic, aml-spdif-dai"; -+ resets = < -+ &clock GCLK_IDX_AIU_IEC958 -+ &clock GCLK_IDX_AIU_ICE958_AMCLK -+ >; -+ reset-names = -+ "iec958", -+ "iec958_amclk"; -+ clocks = <&clock CLK_MPLL1>, -+ <&clock CLK_I958>, -+ <&clock CLK_AMCLK>, -+ <&clock CLK_SPDIF>; -+ clock-names = "mpll1", "i958", "mclk", "spdif"; - }; -- - pcm_dai: PCM { - #sound-dai-cells = <0>; - compatible = "amlogic, aml-pcm-dai"; - }; -- -+ i2s_plat: i2s_platform { -+ compatible = "amlogic, aml-i2s"; -+ }; - pcm_plat: pcm_platform { - compatible = "amlogic, aml-pcm"; - }; -- -+ spdif_codec: spdif_codec{ -+ #sound-dai-cells = <0>; -+ compatible = "amlogic, aml-spdif-codec"; -+ pinctrl-names = "aml_audio_spdif"; -+ pinctrl-0 = <&audio_spdif_pins>; -+ }; - pcm_codec: pcm_codec{ - #sound-dai-cells = <0>; - compatible = "amlogic, pcm2BT-codec"; - }; -+ /* endof AUDIO MESON8 DEVICES */ - - /* AUDIO board specific */ - dummy_codec:dummy{ -@@ -608,43 +606,40 @@ - compatible = "amlogic, aml_dummy_codec"; - status = "okay"; - }; -- -- pcm5102_codec:pcm5102{ -- #sound-dai-cells = <0>; -- compatible = "hardkernel, pcm5102"; -- status = "okay"; -- }; -- -- odroid_hdmi { -- compatible = "sound_card, odroid_hdmi"; -- status = "okay"; -- aml-sound-card,format = "i2s"; -- aml_sound_card,name = "ODROID-HDMI"; -- cpu_list = <&i2sdai0>; -- codec_list = <&dit0>; -- plat_list = <&i2s_plat>; -- i2sdai0: i2sdai0 { -- sound-dai = <&i2s_dai>; -- }; -- dit0: dit0 { -- sound-dai = <&spdif_codec>; -- }; -- }; -- odroid_dac { -- compatible = "sound_card, odroid_dac"; -+ aml_m8_snd { -+ compatible = "aml, aml_snd_m8"; - status = "okay"; - aml-sound-card,format = "i2s"; -- aml_sound_card,name = "ODROID-DAC"; -- pinctrl-names = "aml_snd_i2s"; -+ aml_sound_card,name = "AML-M8AUDIO"; -+ aml,audio-routing = -+ "Ext Spk","LOUTL", -+ "Ext Spk","LOUTR"; -+ -+ mute_gpio-gpios = <&gpio GPIOH_3 0>; -+ hp_disable; -+ hp_paraments = <800 300 0 5 1>; -+ pinctrl-names = "aml_snd_m8"; - pinctrl-0 = <&audio_pins>; -- cpu_list = <&cpudai0>; -- codec_list = <&codec0>; -- plat_list = <&i2s_plat>; -+ cpu_list = <&cpudai0 &cpudai1 &cpudai2>; -+ codec_list = <&codec0 &codec1 &codec2>; -+ plat_list = <&i2s_plat &i2s_plat &pcm_plat>; - cpudai0: cpudai0 { - sound-dai = <&i2s_dai>; - }; -+ cpudai1: cpudai1 { -+ sound-dai = <&spdif_dai>; -+ }; -+ cpudai2: cpudai2 { -+ sound-dai = <&pcm_dai>; -+ }; - codec0: codec0 { -- sound-dai = <&pcm5102_codec>; -+ sound-dai = <&dummy_codec>; -+ }; -+ codec1: codec1 { -+ sound-dai = <&spdif_codec>; -+ }; -+ codec2: codec2 { -+ sound-dai = <&pcm_codec>; - }; - }; - /* END OF AUDIO board specific */ -diff --git a/arch/arm64/configs/odroidc2_defconfig b/arch/arm64/configs/odroidc2_defconfig -index 079f956..08de48b 100644 ---- a/arch/arm64/configs/odroidc2_defconfig -+++ b/arch/arm64/configs/odroidc2_defconfig -@@ -3237,8 +3237,8 @@ CONFIG_SOUND_OSS_CORE_PRECLAIM=y - CONFIG_SND=y - CONFIG_SND_TIMER=y - CONFIG_SND_PCM=y --CONFIG_SND_HWDEP=m --CONFIG_SND_RAWMIDI=m -+CONFIG_SND_HWDEP=y -+CONFIG_SND_RAWMIDI=y - CONFIG_SND_COMPRESS_OFFLOAD=y - CONFIG_SND_JACK=y - CONFIG_SND_SEQUENCER=m -@@ -3272,7 +3272,7 @@ CONFIG_SND_DRIVERS=y - # CONFIG_SND_AC97_POWER_SAVE is not set - CONFIG_SND_SPI=y - CONFIG_SND_USB=y --CONFIG_SND_USB_AUDIO=m -+CONFIG_SND_USB_AUDIO=y - CONFIG_SND_USB_UA101=m - CONFIG_SND_USB_CAIAQ=m - CONFIG_SND_USB_CAIAQ_INPUT=y -@@ -3282,12 +3282,10 @@ CONFIG_SND_SOC=y - # CONFIG_SND_ATMEL_SOC is not set - # CONFIG_SND_DESIGNWARE_I2S is not set - CONFIG_SND_AML_M8_SOC=y --# CONFIG_SND_AML_M8 is not set --CONFIG_SND_ODROID_HDMI=y --CONFIG_SND_ODROID_DAC=m - # CONFIG_SND_AML_G9TV is not set - CONFIG_SND_SOC_I2C_AND_SPI=y --CONFIG_SND_SOC_PCM5102=m -+CONFIG_SND_SOC_DUMMY_CODEC=y -+CONFIG_SND_SOC_PCM2BT=y - # CONFIG_SND_SIMPLE_CARD is not set - # CONFIG_SOUND_PRIME is not set - CONFIG_AC97_BUS=m -diff --git a/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c b/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c -index f53f0e4..e6d04dd 100644 ---- a/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c -+++ b/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c -@@ -1664,7 +1664,7 @@ static int hdmi_task_handle(void *data) - INIT_WORK(&hdmitx_device->work_internal_intr, - hdmitx_internal_intr_handler); - -- /*hdmitx_device->tx_aud_cfg = 1;*/ /* default audio configure is on */ -+ hdmitx_device->tx_aud_cfg = 1; /* default audio configure is on */ - if (init_flag & INIT_FLAG_POWERDOWN) { - /* power down */ - hdmitx_device->HWOp.SetDispMode(hdmitx_device, NULL); -diff --git a/include/sound/pcm.h b/include/sound/pcm.h -index 1f1cdef..f589388 100644 ---- a/include/sound/pcm.h -+++ b/include/sound/pcm.h -@@ -126,8 +126,6 @@ struct snd_pcm_ops { - #define SNDRV_PCM_RATE_96000 (1<<10) /* 96000Hz */ - #define SNDRV_PCM_RATE_176400 (1<<11) /* 176400Hz */ - #define SNDRV_PCM_RATE_192000 (1<<12) /* 192000Hz */ --#define SNDRV_PCM_RATE_352800 (1<<13) /* 352800Hz */ --#define SNDRV_PCM_RATE_384000 (1<<14) /* 384000Hz */ - - #define SNDRV_PCM_RATE_CONTINUOUS (1<<30) /* continuous range */ - #define SNDRV_PCM_RATE_KNOT (1<<31) /* supports more non-continuos rates */ -@@ -140,9 +138,6 @@ struct snd_pcm_ops { - SNDRV_PCM_RATE_88200|SNDRV_PCM_RATE_96000) - #define SNDRV_PCM_RATE_8000_192000 (SNDRV_PCM_RATE_8000_96000|SNDRV_PCM_RATE_176400|\ - SNDRV_PCM_RATE_192000) --#define SNDRV_PCM_RATE_8000_384000 (SNDRV_PCM_RATE_8000_192000|\ -- SNDRV_PCM_RATE_352800|\ -- SNDRV_PCM_RATE_384000) - - #define _SNDRV_PCM_FMTBIT(fmt) (1ULL << (__force int)SNDRV_PCM_FORMAT_##fmt) - #define SNDRV_PCM_FMTBIT_S8 _SNDRV_PCM_FMTBIT(S8) -diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c -index b3406f3..8238722 100644 ---- a/sound/core/pcm_native.c -+++ b/sound/core/pcm_native.c -@@ -1786,8 +1786,7 @@ static int snd_pcm_hw_rule_sample_bits(struct snd_pcm_hw_params *params, - #endif - - static unsigned int rates[] = { 5512, 8000, 11025, 16000, 22050, 32000, 44100, -- 48000, 64000, 88200, 96000, 176400, 192000, -- 352800, 384000 }; -+ 48000, 64000, 88200, 96000, 176400, 192000 }; - - const struct snd_pcm_hw_constraint_list snd_pcm_known_rates = { - .count = ARRAY_SIZE(rates), -diff --git a/sound/soc/aml/m8/Kconfig b/sound/soc/aml/m8/Kconfig -index 4adfb7d..d182291 100644 ---- a/sound/soc/aml/m8/Kconfig -+++ b/sound/soc/aml/m8/Kconfig -@@ -11,15 +11,6 @@ menuconfig SND_AML_M8 - # select SND_SOC_AMLPMU4 if AML1220 - # select SND_SOC_ES8323 - --menuconfig SND_ODROID_HDMI -- tristate "ODROID-SND-HDMI card" -- depends on SND_AML_M8_SOC -- --menuconfig SND_ODROID_DAC -- tristate "ODROID-SND-DAC card" -- depends on SND_AML_M8_SOC -- select SND_SOC_PCM5102 -- - menuconfig SND_AML_G9TV - tristate "AML-SND-G9TV Board" - depends on SND_AML_M8_SOC && SWITCH -diff --git a/sound/soc/aml/m8/Makefile b/sound/soc/aml/m8/Makefile -index 2ed8755..e6bfba1 100644 ---- a/sound/soc/aml/m8/Makefile -+++ b/sound/soc/aml/m8/Makefile -@@ -24,12 +24,6 @@ obj-$(CONFIG_SND_AML_M8_SOC) += snd-soc-aml-spdif-codec.o - snd-soc-aml-m8-objs := aml_m8.o - obj-$(CONFIG_SND_AML_M8) += snd-soc-aml-m8.o - --#ODROID Machine support --snd-soc-odroid-hdmi-objs := odroid_hdmi.o --snd-soc-odroid-dac-objs := odroid_dac.o --obj-$(CONFIG_SND_ODROID_HDMI) += snd-soc-odroid-hdmi.o --obj-$(CONFIG_SND_ODROID_DAC) += snd-soc-odroid-dac.o -- - #AML G9TV Machine support - snd-soc-aml-g9tv-objs := aml_g9tv.o - obj-$(CONFIG_SND_AML_G9TV) += snd-soc-aml-g9tv.o -diff --git a/sound/soc/aml/m8/aml_audio_hw.c b/sound/soc/aml/m8/aml_audio_hw.c -index 09054a2..33268a2 100644 ---- a/sound/soc/aml/m8/aml_audio_hw.c -+++ b/sound/soc/aml/m8/aml_audio_hw.c -@@ -576,21 +576,16 @@ void audio_util_set_dac_i2s_format(unsigned format) - aml_write_cbus(AIU_I2S_SOURCE_DESC, 0x0001); - } - --/* set sclk and lrclk, mclk = 256fs. if srate > 192000, than mclk = 128fs.*/ --void audio_set_i2s_clk_div(int srate) -+/* set sclk and lrclk, mclk = 256fs. */ -+void audio_set_i2s_clk_div(void) - { - /* aiclk source */ - aml_cbus_update_bits(AIU_CLK_CTRL, 1 << 10, 1 << 10); - /* Set mclk over sclk ratio */ - aml_cbus_update_bits(AIU_CLK_CTRL_MORE, 0x3f << 8, (4 - 1) << 8); - /* set dac/adc lrclk ratio over sclk----64fs */ -- if (srate > 192000) { -- aml_cbus_update_bits(AIU_CODEC_DAC_LRCLK_CTRL, 0xfff, (32 - 1)); -- aml_cbus_update_bits(AIU_CODEC_ADC_LRCLK_CTRL, 0xfff, (32 - 1)); -- } else { -- aml_cbus_update_bits(AIU_CODEC_DAC_LRCLK_CTRL, 0xfff, (64 - 1)); -- aml_cbus_update_bits(AIU_CODEC_ADC_LRCLK_CTRL, 0xfff, (64 - 1)); -- } -+ aml_cbus_update_bits(AIU_CODEC_DAC_LRCLK_CTRL, 0xfff, (64 - 1)); -+ aml_cbus_update_bits(AIU_CODEC_ADC_LRCLK_CTRL, 0xfff, (64 - 1)); - /* Enable sclk */ - aml_cbus_update_bits(AIU_CLK_CTRL_MORE, 1 << 14, 1 << 14); - } -diff --git a/sound/soc/aml/m8/aml_audio_hw.h b/sound/soc/aml/m8/aml_audio_hw.h -index d394150..90aee90 100644 ---- a/sound/soc/aml/m8/aml_audio_hw.h -+++ b/sound/soc/aml/m8/aml_audio_hw.h -@@ -126,7 +126,7 @@ unsigned int audio_in_i2s_rd_ptr(void); - unsigned int audio_in_i2s_wr_ptr(void); - unsigned int audio_in_spdif_wr_ptr(void); - void audio_set_i2s_mode(u32 mode); --void audio_set_i2s_clk_div(int srate); -+void audio_set_i2s_clk_div(void); - void audio_set_spdif_clk_div(void); - void audio_enable_ouput(int flag); - unsigned int read_i2s_rd_ptr(void); -diff --git a/sound/soc/aml/m8/aml_i2s.c b/sound/soc/aml/m8/aml_i2s.c -index 95ca2e5..64bed25 100644 ---- a/sound/soc/aml/m8/aml_i2s.c -+++ b/sound/soc/aml/m8/aml_i2s.c -@@ -93,17 +93,17 @@ static const struct snd_pcm_hardware aml_i2s_hardware = { - SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | - SNDRV_PCM_FMTBIT_S32_LE, - -- .period_bytes_min = 32, -+ .period_bytes_min = 64, - .period_bytes_max = 32 * 1024 * 2, - .periods_min = 2, -- .periods_max = 256, -- .buffer_bytes_max = 32 * 1024 * 2, -+ .periods_max = 1024, -+ .buffer_bytes_max = 128 * 1024 * 2 * 2, - - .rate_min = 8000, -- .rate_max = 384000, -- .channels_min = 1, -+ .rate_max = 48000, -+ .channels_min = 2, - .channels_max = 8, -- .fifo_size = 32, -+ .fifo_size = 0, - }; - - static const struct snd_pcm_hardware aml_i2s_capture = { -@@ -116,7 +116,7 @@ static const struct snd_pcm_hardware aml_i2s_capture = { - .period_bytes_min = 64, - .period_bytes_max = 32 * 1024, - .periods_min = 2, -- .periods_max = 256, -+ .periods_max = 1024, - .buffer_bytes_max = 64 * 1024, - - .rate_min = 8000, -@@ -582,23 +582,6 @@ static int aml_i2s_close(struct snd_pcm_substream *substream) - /* extern void audio_hw_958_enable(unsigned flag); */ - /* extern int kernel_android_50; */ - --static char *get_hw_buf_ptr(struct snd_pcm_runtime *runtime, -- snd_pcm_uframes_t cur_pos, int align) --{ -- unsigned int tot_bytes_per_channel = -- frames_to_bytes(runtime, cur_pos) / runtime->channels; -- unsigned int bytes_aligned_per_channel = -- frames_to_bytes(runtime, align / runtime->channels); -- unsigned int hw_base_off = -- tot_bytes_per_channel / bytes_aligned_per_channel; -- unsigned int block_off = -- tot_bytes_per_channel % bytes_aligned_per_channel; -- -- return runtime->dma_area + -- (frames_to_bytes(runtime, align) * hw_base_off) + -- block_off; --} -- - static int aml_i2s_copy_playback(struct snd_pcm_runtime *runtime, int channel, - snd_pcm_uframes_t pos, - void __user *buf, snd_pcm_uframes_t count, -@@ -629,32 +612,48 @@ static int aml_i2s_copy_playback(struct snd_pcm_runtime *runtime, int channel, - return -EFAULT; - if (access_ok(VERIFY_READ, buf, frames_to_bytes(runtime, count))) { - if (runtime->format == SNDRV_PCM_FORMAT_S16_LE) { -+ - int16_t *tfrom, *to, *left, *right; - tfrom = (int16_t *) ubuf; -+ to = (int16_t *) hwbuf; -+ -+ left = to; -+ right = to + 16; -+ if (pos % align) { -+ pr_info("audio data unligned: pos=%d, n=%d, align=%d\n", -+ (int)pos, n, align); -+ } - -- for (j = 0; j < count; j++) { -- to = (int16_t *) get_hw_buf_ptr(runtime, -- pos + j, -- align); -- left = to; -- right = to + align; -- *left = (*tfrom++); -- *right = (*tfrom++); -+ for (j = 0; j < n; j += 64) { -+ for (i = 0; i < 16; i++) { -+ *left++ = (*tfrom++); -+ *right++ = (*tfrom++); -+ } -+ left += 16; -+ right += 16; - } -- } else if (runtime->format == SNDRV_PCM_FORMAT_S24_LE) { -+ } else if (runtime->format == SNDRV_PCM_FORMAT_S24_LE -+ && I2S_MODE == AIU_I2S_MODE_PCM24) { - int32_t *tfrom, *to, *left, *right; - tfrom = (int32_t *) ubuf; -+ to = (int32_t *) hwbuf; - -- for (j = 0; j < count; j++) { -- to = (int32_t *) get_hw_buf_ptr(runtime, -- pos + j, -- align); -- left = to; -- right = to + align; -+ left = to; -+ right = to + 8; - -- *left = (*tfrom++); -- *right = (*tfrom++); -+ if (pos % align) { -+ pr_info("audio data unaligned: pos=%d, n=%d, align=%d\n", -+ (int)pos, n, align); - } -+ for (j = 0; j < n; j += 64) { -+ for (i = 0; i < 8; i++) { -+ *left++ = (*tfrom++); -+ *right++ = (*tfrom++); -+ } -+ left += 8; -+ right += 8; -+ } -+ - } else if (runtime->format == SNDRV_PCM_FORMAT_S32_LE) { - int32_t *tfrom, *to, *left, *right; - tfrom = (int32_t *) ubuf; -@@ -779,6 +778,8 @@ static int aml_i2s_copy_capture(struct snd_pcm_runtime *runtime, int channel, - left += 8; - right += 8; - } -+ /* clean hw buffer */ -+ memset(hwbuf, 0, n * 2); - } - } - res = copy_to_user(buf, ubuf, n); -diff --git a/sound/soc/aml/m8/aml_i2s_dai.c b/sound/soc/aml/m8/aml_i2s_dai.c -index 7f86c32..5dfbaf1 100644 ---- a/sound/soc/aml/m8/aml_i2s_dai.c -+++ b/sound/soc/aml/m8/aml_i2s_dai.c -@@ -43,7 +43,6 @@ - #include "aml_i2s.h" - #include "aml_audio_hw.h" - #include --#include - #include "aml_spdif_dai.h" - - struct aml_dai_info dai_info[3] = { {0} }; -@@ -64,7 +63,6 @@ static int i2s_pos_sync; - /* extern int set_i2s_iec958_samesource(int enable); */ - #define DEFAULT_SAMPLERATE 48000 - #define DEFAULT_MCLK_RATIO_SR 256 --#define MCLK_RATIO_128FS_SR 128 - static int i2sbuf[32 + 16]; - static void aml_i2s_play(void) - { -@@ -138,6 +136,8 @@ static int aml_dai_i2s_startup(struct snd_pcm_substream *substream, - static void aml_dai_i2s_shutdown(struct snd_pcm_substream *substream, - struct snd_soc_dai *dai) - { -+ if (IEC958_mode_codec == 0) -+ aml_spdif_play(); - return; - } - -@@ -164,7 +164,7 @@ static int aml_i2s_set_amclk(struct aml_i2s *i2s, unsigned long rate) - return ret; - } - -- audio_set_i2s_clk_div(i2s->old_samplerate); -+ audio_set_i2s_clk_div(); - - return 0; - } -@@ -219,19 +219,8 @@ static int aml_dai_i2s_trigger(struct snd_pcm_substream *substream, int cmd, - struct snd_soc_dai *dai) - { - struct snd_pcm_runtime *rtd = substream->runtime; -- struct snd_soc_pcm_runtime *prtd = substream->private_data; -- struct snd_soc_dai *codec_dai = prtd->codec_dai; - int *ppp = NULL; -- bool hdmi_out = false; -- - ALSA_TRACE(); -- -- if (!strncmp(codec_dai->name, "dit-hifi", strlen("dit-hifi"))) { -- hdmi_out = true; -- } else { -- hdmi_out = false; -- } -- - switch (cmd) { - case SNDRV_PCM_TRIGGER_START: - case SNDRV_PCM_TRIGGER_RESUME: -@@ -240,16 +229,9 @@ static int aml_dai_i2s_trigger(struct snd_pcm_substream *substream, int cmd, - if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { - pr_info("aiu i2s playback enable\n"); - audio_out_i2s_enable(1); -- if (hdmi_out) { -- aml_audio_i2s_mute(); -- hdmitx_audio_mute_op(1); -- if (IEC958_mode_codec == 0) { -- pr_info("audio_hw_958_enable 1\n"); -- audio_hw_958_enable(1); -- } -- } else { -- aml_audio_i2s_unmute(); -- hdmitx_audio_mute_op(0); -+ if (IEC958_mode_codec == 0) { -+ pr_info("audio_hw_958_enable 1\n"); -+ audio_hw_958_enable(1); - } - } else { - audio_in_i2s_enable(1); -@@ -289,10 +271,7 @@ static int aml_dai_i2s_hw_params(struct snd_pcm_substream *substream, - srate = params_rate(params); - if (i2s->old_samplerate != srate) { - i2s->old_samplerate = srate; -- if (srate > 192000) -- mclk_rate = srate * MCLK_RATIO_128FS_SR; -- else -- mclk_rate = srate * DEFAULT_MCLK_RATIO_SR; -+ mclk_rate = srate * DEFAULT_MCLK_RATIO_SR; - aml_i2s_set_amclk(i2s, mclk_rate); - } - -@@ -325,25 +304,27 @@ static int aml_dai_set_i2s_sysclk(struct snd_soc_dai *dai, - return 0; - } - --#ifdef CONFIG_PM - static int aml_dai_i2s_suspend(struct snd_soc_dai *dai) - { -- ALSA_TRACE(); -+ struct aml_i2s *i2s = dev_get_drvdata(dai->dev); -+ -+ if (i2s && i2s->clk_mclk) -+ clk_disable_unprepare(i2s->clk_mclk); -+ - return 0; - } - - static int aml_dai_i2s_resume(struct snd_soc_dai *dai) - { -- ALSA_TRACE(); -+ struct aml_i2s *i2s = dev_get_drvdata(dai->dev); -+ -+ if (i2s && i2s->clk_mclk) -+ clk_prepare_enable(i2s->clk_mclk); -+ - return 0; - } - --#else /* CONFIG_PM */ --#define aml_dai_i2s_suspend NULL --#define aml_dai_i2s_resume NULL --#endif /* CONFIG_PM */ -- --#define AML_DAI_I2S_RATES (SNDRV_PCM_RATE_8000_384000) -+#define AML_DAI_I2S_RATES (SNDRV_PCM_RATE_8000_192000) - #define AML_DAI_I2S_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ - SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) - -diff --git a/sound/soc/aml/m8/aml_m8.c b/sound/soc/aml/m8/aml_m8.c -index 7744375..2012bba 100644 ---- a/sound/soc/aml/m8/aml_m8.c -+++ b/sound/soc/aml/m8/aml_m8.c -@@ -626,6 +626,7 @@ static int aml_m8_audio_probe(struct platform_device *pdev) - - snd_soc_card_set_drvdata(card, p_aml_audio); - card->dev = dev; -+ platform_set_drvdata(pdev, card); - ret = snd_soc_of_parse_card_name(card, "aml_sound_card,name"); - if (ret < 0) { - dev_err(dev, "no specific snd_soc_card name\n"); -@@ -678,6 +679,7 @@ static struct platform_driver aml_m8_audio_driver = { - .name = DRV_NAME, - .owner = THIS_MODULE, - .of_match_table = amlogic_audio_of_match, -+ .pm = &snd_soc_pm_ops, - }, - .probe = aml_m8_audio_probe, - }; -diff --git a/sound/soc/aml/m8/aml_spdif_codec.c b/sound/soc/aml/m8/aml_spdif_codec.c -index 73223b1..5ef287b 100644 ---- a/sound/soc/aml/m8/aml_spdif_codec.c -+++ b/sound/soc/aml/m8/aml_spdif_codec.c -@@ -26,7 +26,7 @@ - - #define DRV_NAME "spdif-dit" - --#define STUB_RATES SNDRV_PCM_RATE_8000_384000 -+#define STUB_RATES SNDRV_PCM_RATE_8000_192000 - #define STUB_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ - SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) - -diff --git a/sound/soc/aml/m8/aml_spdif_dai.c b/sound/soc/aml/m8/aml_spdif_dai.c -index f80c5e9..7b42d2d 100644 ---- a/sound/soc/aml/m8/aml_spdif_dai.c -+++ b/sound/soc/aml/m8/aml_spdif_dai.c -@@ -73,12 +73,15 @@ struct aml_spdif { - int old_samplerate; - }; - struct aml_spdif *spdif_p; --/* -+unsigned int clk81 = 0; -+EXPORT_SYMBOL(clk81); -+ - static int iec958buf[32 + 16]; --*/ -+static int old_samplerate = -1; -+ - void aml_spdif_play(void) - { --#if 0 -+#if 1 - struct _aiu_958_raw_setting_t set; - struct _aiu_958_channel_status_t chstat; - struct snd_pcm_substream substream; -@@ -96,12 +99,28 @@ void aml_spdif_play(void) - set.chan_stat->chstat1_l = 0X200; - set.chan_stat->chstat1_r = 0X200; - audio_hw_958_enable(0); -- if (last_iec_clock != AUDIO_CLK_FREQ_48) { -- ALSA_PRINT("enterd %s,set_clock:%d,sample_rate=%d\n", __func__, -- last_iec_clock, AUDIO_CLK_FREQ_48); -- last_iec_clock = AUDIO_CLK_FREQ_48; -- audio_set_958_clk(AUDIO_CLK_FREQ_48, AUDIO_CLK_256FS); -+ if (old_samplerate != AUDIO_CLK_FREQ_48) { -+ pr_info("enterd %s,set_clock:%d,sample_rate=%d\n", -+ __func__, old_samplerate, AUDIO_CLK_FREQ_48); -+ old_samplerate = AUDIO_CLK_FREQ_48; -+ aml_set_spdif_clk(48000 * 512, 0); -+ } -+ /* Todo, div can be changed, for most case, div = 2 */ -+ /* audio_set_spdif_clk_div(); */ -+ /* 958 divisor: 0=no div; 1=div by 2; 2=div by 3; 3=div by 4. */ -+ if (IEC958_mode_codec == 4 || IEC958_mode_codec == 5 || -+ IEC958_mode_codec == 7 || IEC958_mode_codec == 8) { -+ pr_info("set 4x audio clk for 958\n"); -+ aml_cbus_update_bits(AIU_CLK_CTRL, 3 << 4, 0 << 4); -+ } else if (0) { -+ pr_info("share the same clock\n"); -+ aml_cbus_update_bits(AIU_CLK_CTRL, 3 << 4, 1 << 4); -+ } else { -+ pr_info("set normal 512 fs /4 fs\n"); -+ aml_cbus_update_bits(AIU_CLK_CTRL, 3 << 4, 3 << 4); - } -+ /* enable 958 divider */ -+ aml_cbus_update_bits(AIU_CLK_CTRL, 1 << 1, 1 << 1); - audio_util_set_dac_958_format(AUDIO_ALGOUT_DAC_FORMAT_DSP); - memset(iec958buf, 0, sizeof(iec958buf)); - audio_set_958outbuf((virt_to_phys(iec958buf) + 63) & (~63), 128, 0); -@@ -237,7 +256,26 @@ void aml_hw_iec958_init(struct snd_pcm_substream *substream) - runtime->rate, sample_rate); - /* int srate; */ - /* srate = params_rate(params); */ -- aml_set_spdif_clk(runtime->rate * 512, 0); -+ if (old_samplerate != sample_rate) { -+ old_samplerate = sample_rate; -+ aml_set_spdif_clk(runtime->rate * 512, 0); -+ } -+ /* Todo, div can be changed, for most case, div = 2 */ -+ /* audio_set_spdif_clk_div(); */ -+ /* 958 divisor: 0=no div; 1=div by 2; 2=div by 3; 3=div by 4. */ -+ if (IEC958_mode_codec == 4 || IEC958_mode_codec == 5 || -+ IEC958_mode_codec == 7 || IEC958_mode_codec == 8) { -+ pr_info("set 4x audio clk for 958\n"); -+ aml_cbus_update_bits(AIU_CLK_CTRL, 3 << 4, 0 << 4); -+ } else if (0) { -+ pr_info("share the same clock\n"); -+ aml_cbus_update_bits(AIU_CLK_CTRL, 3 << 4, 1 << 4); -+ } else { -+ pr_info("set normal 512 fs /4 fs\n"); -+ aml_cbus_update_bits(AIU_CLK_CTRL, 3 << 4, 3 << 4); -+ } -+ /* enable 958 divider */ -+ aml_cbus_update_bits(AIU_CLK_CTRL, 1 << 1, 1 << 1); - audio_util_set_dac_958_format(AUDIO_ALGOUT_DAC_FORMAT_DSP); - /*clear the same source function as new raw data output */ - audio_i2s_958_same_source(0); -@@ -357,7 +395,12 @@ void aml_hw_iec958_init(struct snd_pcm_substream *substream) - aml_write_cbus(AIU_958_CHSTAT_L1, 0x900); - aml_write_cbus(AIU_958_CHSTAT_R0, 0x1902); - aml_write_cbus(AIU_958_CHSTAT_R1, 0x900); -- aout_notifier_call_chain(AOUT_EVENT_RAWDATA_MAT_MLP, substream); -+ if (IEC958_mode_codec == 8) -+ aout_notifier_call_chain(AOUT_EVENT_RAWDATA_DTS_HD_MA, -+ substream); -+ else -+ aout_notifier_call_chain(AOUT_EVENT_RAWDATA_MAT_MLP, -+ substream); - } else { - aout_notifier_call_chain(AOUT_EVENT_IEC_60958_PCM, substream); - } -@@ -508,22 +551,6 @@ int aml_set_spdif_clk(unsigned long rate, bool src_i2s) - } - } - -- /* Todo, div can be changed, for most case, div = 2 */ -- /* audio_set_spdif_clk_div(); */ -- /* 958 divisor: 0=no div; 1=div by 2; 2=div by 3; 3=div by 4. */ -- if (IEC958_mode_codec == 4 || IEC958_mode_codec == 5 || -- IEC958_mode_codec == 7 || IEC958_mode_codec == 8) { -- pr_info("set 4x audio clk for 958\n"); -- aml_cbus_update_bits(AIU_CLK_CTRL, 3 << 4, 0 << 4); -- } else if (src_i2s) { -- pr_info("share the same clock\n"); -- aml_cbus_update_bits(AIU_CLK_CTRL, 3 << 4, 1 << 4); -- } else { -- pr_info("set normal 512 fs /4 fs\n"); -- aml_cbus_update_bits(AIU_CLK_CTRL, 3 << 4, 3 << 4); -- } -- /* enable 958 divider */ -- aml_cbus_update_bits(AIU_CLK_CTRL, 1 << 1, 1 << 1); - return 0; - } - -@@ -540,24 +567,27 @@ static int aml_dai_spdif_hw_params(struct snd_pcm_substream *substream, - return 0; - } - --#ifdef CONFIG_PM - static int aml_dai_spdif_suspend(struct snd_soc_dai *cpu_dai) - { -- ALSA_TRACE(); -+ struct aml_spdif *spdif_priv = dev_get_drvdata(cpu_dai->dev); -+ - aml_spdif_play_stop(); -+ if (spdif_priv && spdif_priv->clk_spdif) -+ clk_disable_unprepare(spdif_priv->clk_spdif); -+ - return 0; - } - - static int aml_dai_spdif_resume(struct snd_soc_dai *cpu_dai) - { -- ALSA_TRACE(); -- aml_spdif_play(); -+ struct aml_spdif *spdif_priv = dev_get_drvdata(cpu_dai->dev); -+ -+ /*aml_spdif_play();*/ -+ if (spdif_priv && spdif_priv->clk_spdif) -+ clk_prepare_enable(spdif_priv->clk_spdif); -+ - return 0; - } --#else --#define aml_spdif_suspend NULL --#define aml_spdif_resume NULL --#endif - - static struct snd_soc_dai_ops spdif_dai_ops = { - .set_sysclk = aml_dai_spdif_set_sysclk, -@@ -660,6 +690,18 @@ static int aml_dai_spdif_probe(struct platform_device *pdev) - goto err; - } - -+ ret = clk_set_parent(spdif_priv->clk_i958, spdif_priv->clk_mpl1); -+ if (ret) { -+ pr_err("Can't set i958 clk parent: %d\n", ret); -+ return ret; -+ } -+ -+ ret = clk_set_parent(spdif_priv->clk_spdif, spdif_priv->clk_i958); -+ if (ret) { -+ pr_err("Can't set spdif clk parent: %d\n", ret); -+ return ret; -+ } -+ - ret = clk_prepare_enable(spdif_priv->clk_spdif); - if (ret) { - pr_err("Can't enable spdif clock: %d\n", ret); -diff --git a/sound/soc/aml/m8/aml_spdif_dai.h b/sound/soc/aml/m8/aml_spdif_dai.h -index 8fe56ca..fd11637 100644 ---- a/sound/soc/aml/m8/aml_spdif_dai.h -+++ b/sound/soc/aml/m8/aml_spdif_dai.h -@@ -33,7 +33,7 @@ - #define AOUT_EVENT_RAWDATA_MAT_MLP 0xC - #define AOUT_EVENT_RAWDATA_DST 0xD - #define AOUT_EVENT_RAWDATA_WMA_PRO 0xE -- -+#define AOUT_EVENT_RAWDATA_DTS_HD_MA (AOUT_EVENT_RAWDATA_DTS_HD|(1<<8)) - extern unsigned int IEC958_mode_codec; - - /* -@@ -47,5 +47,5 @@ extern unsigned int IEC958_mode_codec; - */ - void aml_hw_iec958_init(struct snd_pcm_substream *substream); - int aml_set_spdif_clk(unsigned long rate, bool src_i2s); -- -+void aml_spdif_play(void); - #endif /* _AML_SPDIF_DAI_H */ -diff --git a/sound/soc/aml/m8/odroid_dac.c b/sound/soc/aml/m8/odroid_dac.c -deleted file mode 100644 -index aaf8fbd..0000000 ---- a/sound/soc/aml/m8/odroid_dac.c -+++ /dev/null -@@ -1,292 +0,0 @@ --/* -- * sound/soc/aml/m8/aml_m8.c -- * -- * Copyright (C) 2015 Amlogic, Inc. All rights reserved. -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -- * more details. -- * --*/ -- --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include -- --#include --#include --#include --/* #include */ --#include --#include --/* #include */ --#include -- --/* #include "aml_i2s_dai.h" */ --#include "aml_i2s.h" --#include "odroid_dac.h" --#include "aml_audio_hw.h" --#include --#include --#include --#include --#include --#include --#define DRV_NAME "odroid_dac_snd" --/* extern struct device *spdif_dev; */ -- --static int aml_suspend_pre(struct snd_soc_card *card) --{ -- pr_info(KERN_INFO "enter %s\n", __func__); -- return 0; --} -- --static int aml_suspend_post(struct snd_soc_card *card) --{ -- pr_info(KERN_INFO "enter %s\n", __func__); -- /* if(ext_codec) */ -- /* i2s_gpio_set(card); */ -- return 0; --} -- --static int aml_resume_pre(struct snd_soc_card *card) --{ -- pr_info(KERN_INFO "enter %s\n", __func__); -- -- return 0; --} -- --static int aml_resume_post(struct snd_soc_card *card) --{ -- pr_info(KERN_INFO "enter %s\n", __func__); -- return 0; --} -- --static void aml_i2s_pinmux_init(struct snd_soc_card *card) --{ -- struct odroid_audio_private_data *p_aml_audio; -- -- p_aml_audio = snd_soc_card_get_drvdata(card); -- -- p_aml_audio->pin_ctl = -- devm_pinctrl_get_select(card->dev, "aml_snd_i2s"); -- if (IS_ERR(p_aml_audio->pin_ctl)) -- pr_info("%s,aml_i2s_pinmux_init error!\n", __func__); --} -- --static int aml_card_dai_parse_of(struct device *dev, -- struct snd_soc_dai_link *dai_link, -- int (*init)(struct snd_soc_pcm_runtime *rtd), -- struct device_node *cpu_node, -- struct device_node *codec_node, -- struct device_node *plat_node) --{ -- int ret; -- -- /* get cpu dai->name */ -- ret = snd_soc_of_get_dai_name(cpu_node, &dai_link->cpu_dai_name); -- if (ret < 0) -- goto parse_error; -- -- /* get codec dai->name */ -- ret = snd_soc_of_get_dai_name(codec_node, &dai_link->codec_dai_name); -- if (ret < 0) -- goto parse_error; -- -- dai_link->name = dai_link->stream_name = dai_link->cpu_dai_name; -- dai_link->codec_of_node = of_parse_phandle(codec_node, "sound-dai", 0); -- dai_link->platform_of_node = plat_node; -- dai_link->init = init; -- -- return 0; -- -- parse_error: -- return ret; --} -- --static int aml_card_dais_parse_of(struct snd_soc_card *card) --{ -- struct device_node *np = card->dev->of_node; -- struct device_node *cpu_node, *codec_node, *plat_node; -- struct device *dev = card->dev; -- struct snd_soc_dai_link *dai_links; -- int num_dai_links, cpu_num, codec_num, plat_num; -- int i, ret; -- int (*init)(struct snd_soc_pcm_runtime *rtd); -- -- ret = of_count_phandle_with_args(np, "cpu_list", NULL); -- if (ret < 0) { -- dev_err(dev, "AML sound card no cpu_list errno: %d\n", ret); -- goto err; -- } else { -- cpu_num = ret; -- } -- ret = of_count_phandle_with_args(np, "codec_list", NULL); -- if (ret < 0) { -- dev_err(dev, "AML sound card no codec_list errno: %d\n", ret); -- goto err; -- } else { -- codec_num = ret; -- } -- ret = of_count_phandle_with_args(np, "plat_list", NULL); -- if (ret < 0) { -- dev_err(dev, "AML sound card no plat_list errno: %d\n", ret); -- goto err; -- } else { -- plat_num = ret; -- } -- if ((cpu_num == codec_num) && (cpu_num == plat_num)) { -- num_dai_links = cpu_num; -- } else { -- dev_err(dev, -- "AML sound card cpu_dai num, codec_dai num, platform num don't match: %d\n", -- ret); -- ret = -EINVAL; -- goto err; -- } -- -- dai_links = -- devm_kzalloc(dev, num_dai_links * sizeof(struct snd_soc_dai_link), -- GFP_KERNEL); -- if (!dai_links) { -- dev_err(dev, "Can't allocate snd_soc_dai_links\n"); -- ret = -ENOMEM; -- goto err; -- } -- card->dai_link = dai_links; -- card->num_links = num_dai_links; -- for (i = 0; i < num_dai_links; i++) { -- init = NULL; -- /* CPU sub-node */ -- cpu_node = of_parse_phandle(np, "cpu_list", i); -- if (cpu_node < 0) { -- dev_err(dev, "parse aml sound card cpu list error\n"); -- return -EINVAL; -- } -- /* CODEC sub-node */ -- codec_node = of_parse_phandle(np, "codec_list", i); -- if (codec_node < 0) { -- dev_err(dev, "parse aml sound card codec list error\n"); -- return ret; -- } -- /* Platform sub-node */ -- plat_node = of_parse_phandle(np, "plat_list", i); -- if (plat_node < 0) { -- dev_err(dev, -- "parse aml sound card platform list error\n"); -- return ret; -- } -- -- ret = -- aml_card_dai_parse_of(dev, &dai_links[i], init, cpu_node, -- codec_node, plat_node); -- } -- -- err: -- return ret; --} -- --static int odroid_dac_probe(struct platform_device *pdev) --{ -- struct device *dev = &pdev->dev; -- struct snd_soc_card *card; -- struct odroid_audio_private_data *p_aml_audio; -- int ret; -- -- p_aml_audio = -- devm_kzalloc(dev, sizeof(struct odroid_audio_private_data), -- GFP_KERNEL); -- if (!p_aml_audio) { -- dev_err(&pdev->dev, "Can't allocate odroid_audio_private_data\n"); -- ret = -ENOMEM; -- goto err; -- } -- -- card = devm_kzalloc(dev, sizeof(struct snd_soc_card), GFP_KERNEL); -- if (!card) { -- dev_err(dev, "Can't allocate snd_soc_card\n"); -- ret = -ENOMEM; -- goto err; -- } -- -- snd_soc_card_set_drvdata(card, p_aml_audio); -- card->dev = dev; -- ret = snd_soc_of_parse_card_name(card, "aml_sound_card,name"); -- if (ret < 0) { -- dev_err(dev, "no specific snd_soc_card name\n"); -- goto err; -- } -- -- ret = aml_card_dais_parse_of(card); -- if (ret < 0) { -- dev_err(dev, "parse aml sound card routing error %d\n", -- ret); -- goto err; -- } -- -- card->suspend_pre = aml_suspend_pre, -- card->suspend_post = aml_suspend_post, -- card->resume_pre = aml_resume_pre, -- card->resume_post = aml_resume_post, -- ret = devm_snd_soc_register_card(&pdev->dev, card); -- if (ret < 0) { -- dev_err(dev, "register aml sound card error %d\n", ret); -- goto err; -- } -- -- aml_i2s_pinmux_init(card); -- return 0; -- err: -- dev_err(dev, "Can't probe snd_soc_card\n"); -- return ret; --} -- --static const struct of_device_id odroid_dac_of_match[] = { -- {.compatible = "sound_card, odroid_dac",}, -- {}, --}; -- --static struct platform_driver odroid_dac_audio_driver = { -- .driver = { -- .name = DRV_NAME, -- .owner = THIS_MODULE, -- .of_match_table = odroid_dac_of_match, -- }, -- .probe = odroid_dac_probe, --}; -- --static int __init odroid_audio_init(void) --{ -- return platform_driver_register(&odroid_dac_audio_driver); --} -- --static void __exit odroid_audio_exit(void) --{ -- platform_driver_unregister(&odroid_dac_audio_driver); --} -- --#ifdef CONFIG_DEFERRED_MODULE_INIT --deferred_module_init(odroid_audio_init); --#else --module_init(odroid_audio_init); --#endif --module_exit(odroid_audio_exit); -- --MODULE_AUTHOR("Hardkernel, Inc."); --MODULE_DESCRIPTION("ODROID audio machine Asoc driver"); --MODULE_LICENSE("GPL"); --MODULE_ALIAS("platform:" DRV_NAME); -diff --git a/sound/soc/aml/m8/odroid_hdmi.c b/sound/soc/aml/m8/odroid_hdmi.c -deleted file mode 100644 -index bfa83ec..0000000 ---- a/sound/soc/aml/m8/odroid_hdmi.c -+++ /dev/null -@@ -1,262 +0,0 @@ --/* -- * sound/soc/aml/m8/aml_m8.c -- * -- * Copyright (C) 2015 Amlogic, Inc. All rights reserved. -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -- * more details. -- * --*/ -- --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include -- --#include --#include --#include --/* #include */ --#include --#include --/* #include */ --#include -- --/* #include "aml_i2s_dai.h" */ --#include "aml_i2s.h" --#include "odroid_hdmi.h" --#include "aml_audio_hw.h" --#include --#include --#include --#include --#include --#include --#define DRV_NAME "odroid_hdmi_snd" --/* extern struct device *spdif_dev; */ -- --static int aml_suspend_pre(struct snd_soc_card *card) --{ -- pr_info(KERN_INFO "enter %s\n", __func__); -- return 0; --} -- --static int aml_suspend_post(struct snd_soc_card *card) --{ -- pr_info(KERN_INFO "enter %s\n", __func__); -- return 0; --} -- --static int aml_resume_pre(struct snd_soc_card *card) --{ -- pr_info(KERN_INFO "enter %s\n", __func__); -- return 0; --} -- --static int aml_resume_post(struct snd_soc_card *card) --{ -- pr_info(KERN_INFO "enter %s\n", __func__); -- return 0; --} -- --static int aml_card_dai_parse_of(struct device *dev, -- struct snd_soc_dai_link *dai_link, -- int (*init)(struct snd_soc_pcm_runtime *rtd), -- struct device_node *cpu_node, -- struct device_node *codec_node, -- struct device_node *plat_node) --{ -- int ret; -- -- /* get cpu dai->name */ -- ret = snd_soc_of_get_dai_name(cpu_node, &dai_link->cpu_dai_name); -- if (ret < 0) -- goto parse_error; -- -- /* get codec dai->name */ -- ret = snd_soc_of_get_dai_name(codec_node, &dai_link->codec_dai_name); -- if (ret < 0) -- goto parse_error; -- -- dai_link->name = dai_link->stream_name = dai_link->cpu_dai_name; -- dai_link->codec_of_node = of_parse_phandle(codec_node, "sound-dai", 0); -- dai_link->platform_of_node = plat_node; -- dai_link->init = init; -- -- return 0; -- -- parse_error: -- return ret; --} -- --static int aml_card_dais_parse_of(struct snd_soc_card *card) --{ -- struct device_node *np = card->dev->of_node; -- struct device_node *cpu_node, *codec_node, *plat_node; -- struct device *dev = card->dev; -- struct snd_soc_dai_link *dai_links; -- int num_dai_links, cpu_num, codec_num, plat_num; -- int i, ret; -- int (*init)(struct snd_soc_pcm_runtime *rtd); -- -- ret = of_count_phandle_with_args(np, "cpu_list", NULL); -- if (ret < 0) { -- dev_err(dev, "AML sound card no cpu_list errno: %d\n", ret); -- goto err; -- } else { -- cpu_num = ret; -- } -- ret = of_count_phandle_with_args(np, "codec_list", NULL); -- if (ret < 0) { -- dev_err(dev, "AML sound card no codec_list errno: %d\n", ret); -- goto err; -- } else { -- codec_num = ret; -- } -- ret = of_count_phandle_with_args(np, "plat_list", NULL); -- if (ret < 0) { -- dev_err(dev, "AML sound card no plat_list errno: %d\n", ret); -- goto err; -- } else { -- plat_num = ret; -- } -- if ((cpu_num == codec_num) && (cpu_num == plat_num)) { -- num_dai_links = cpu_num; -- } else { -- dev_err(dev, -- "AML sound card cpu_dai num, codec_dai num, platform num don't match: %d\n", -- ret); -- ret = -EINVAL; -- goto err; -- } -- -- dai_links = -- devm_kzalloc(dev, num_dai_links * sizeof(struct snd_soc_dai_link), -- GFP_KERNEL); -- if (!dai_links) { -- dev_err(dev, "Can't allocate snd_soc_dai_links\n"); -- ret = -ENOMEM; -- goto err; -- } -- card->dai_link = dai_links; -- card->num_links = num_dai_links; -- for (i = 0; i < num_dai_links; i++) { -- init = NULL; -- /* CPU sub-node */ -- cpu_node = of_parse_phandle(np, "cpu_list", i); -- if (cpu_node < 0) { -- dev_err(dev, "parse aml sound card cpu list error\n"); -- return -EINVAL; -- } -- /* CODEC sub-node */ -- codec_node = of_parse_phandle(np, "codec_list", i); -- if (codec_node < 0) { -- dev_err(dev, "parse aml sound card codec list error\n"); -- return ret; -- } -- /* Platform sub-node */ -- plat_node = of_parse_phandle(np, "plat_list", i); -- if (plat_node < 0) { -- dev_err(dev, -- "parse aml sound card platform list error\n"); -- return ret; -- } -- -- ret = -- aml_card_dai_parse_of(dev, &dai_links[i], init, cpu_node, -- codec_node, plat_node); -- } -- -- err: -- return ret; --} -- --static int odroid_hdmi_probe(struct platform_device *pdev) --{ -- struct device *dev = &pdev->dev; -- struct snd_soc_card *card; -- struct hdmi_audio_private_data *p_hdmi_audio; -- int ret; -- -- p_hdmi_audio = -- devm_kzalloc(dev, sizeof(struct hdmi_audio_private_data), -- GFP_KERNEL); -- if (!p_hdmi_audio) { -- dev_err(&pdev->dev, "Can't allocate hdmi_audio_private_data\n"); -- ret = -ENOMEM; -- goto err; -- } -- -- card = devm_kzalloc(dev, sizeof(struct snd_soc_card), GFP_KERNEL); -- if (!card) { -- dev_err(dev, "Can't allocate snd_soc_card\n"); -- ret = -ENOMEM; -- goto err; -- } -- -- snd_soc_card_set_drvdata(card, p_hdmi_audio); -- card->dev = dev; -- ret = snd_soc_of_parse_card_name(card, "aml_sound_card,name"); -- if (ret < 0) { -- dev_err(dev, "no specific snd_soc_card name\n"); -- goto err; -- } -- -- ret = aml_card_dais_parse_of(card); -- if (ret < 0) { -- dev_err(dev, "parse aml sound card routing error %d\n", -- ret); -- goto err; -- } -- -- card->suspend_pre = aml_suspend_pre, -- card->suspend_post = aml_suspend_post, -- card->resume_pre = aml_resume_pre, -- card->resume_post = aml_resume_post, -- ret = devm_snd_soc_register_card(&pdev->dev, card); -- if (ret < 0) { -- dev_err(dev, "register aml sound card error %d\n", ret); -- goto err; -- } -- return 0; -- err: -- dev_err(dev, "Can't probe snd_soc_card\n"); -- return ret; --} -- --static const struct of_device_id odroid_hdmi_of_match[] = { -- {.compatible = "sound_card, odroid_hdmi",}, -- {}, --}; -- --MODULE_DEVICE_TABLE(of, odroid_hdmi_dt_match); -- --static struct platform_driver aml_m8_audio_driver = { -- .driver = { -- .name = DRV_NAME, -- .owner = THIS_MODULE, -- .of_match_table = odroid_hdmi_of_match, -- }, -- .probe = odroid_hdmi_probe, --}; -- --module_platform_driver(aml_m8_audio_driver); -- --MODULE_AUTHOR("Hardkernel, Inc."); --MODULE_DESCRIPTION("ODROID audio machine Asoc driver"); --MODULE_LICENSE("GPL"); --MODULE_ALIAS("platform:" DRV_NAME); -diff --git a/sound/soc/aml/m8/odroid_hdmi.h b/sound/soc/aml/m8/odroid_hdmi.h -deleted file mode 100644 -index 7976da0..0000000 ---- a/sound/soc/aml/m8/odroid_hdmi.h -+++ /dev/null -@@ -1,31 +0,0 @@ --/* -- * sound/soc/aml/m8/aml_m8.h -- * -- * Copyright (C) 2015 Amlogic, Inc. All rights reserved. -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -- * more details. -- * --*/ -- --#ifndef AML_M8_H --#define AML_M8_H -- --#include --#include --struct hdmi_audio_private_data { -- int bias_level; -- void *data; --}; -- --void aml_spdif_pinmux_init(struct device *pdev); --void aml_spdif_pinmux_deinit(struct device *pdev); --#endif -- -diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index e9ab5e1..3216f9b 100644 ---- a/sound/soc/codecs/Kconfig -+++ b/sound/soc/codecs/Kconfig -@@ -134,7 +134,6 @@ config SND_SOC_ALL_CODECS - select SND_SOC_WM9713 if SND_SOC_AC97_BUS - select SND_SOC_DUMMY_CODEC - select SND_SOC_PCM2BT -- select SND_SOC_PCM5102 - help - Normally ASoC codec drivers are only built if a machine driver which - uses them is also built since they are only usable with a machine -@@ -563,6 +562,3 @@ config SND_SOC_DUMMY_CODEC - - config SND_SOC_PCM2BT - tristate -- --config SND_SOC_PCM5102 -- tristate -diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index 9e024d9..f86b42a 100644 ---- a/sound/soc/codecs/Makefile -+++ b/sound/soc/codecs/Makefile -@@ -126,7 +126,6 @@ snd-soc-wm9713-objs := wm9713.o - snd-soc-wm-hubs-objs := wm_hubs.o - snd-soc-dummy_codec-objs := dummy_codec.o - snd-soc-pcm2bt-objs := pcm2bt.o --snd-soc-pcm5102-objs := pcm5102.o - - # Amp - snd-soc-max9877-objs := max9877.o -@@ -259,7 +258,6 @@ obj-$(CONFIG_SND_SOC_WM_ADSP) += snd-soc-wm-adsp.o - obj-$(CONFIG_SND_SOC_WM_HUBS) += snd-soc-wm-hubs.o - obj-$(CONFIG_SND_SOC_DUMMY_CODEC) += snd-soc-dummy_codec.o - obj-$(CONFIG_SND_SOC_PCM2BT) += snd-soc-pcm2bt.o --obj-$(CONFIG_SND_SOC_PCM5102) += snd-soc-pcm5102.o - - # Amp - obj-$(CONFIG_SND_SOC_MAX9877) += snd-soc-max9877.o -diff --git a/sound/soc/codecs/pcm5102.c b/sound/soc/codecs/pcm5102.c -deleted file mode 100644 -index 2935e39..0000000 ---- a/sound/soc/codecs/pcm5102.c -+++ /dev/null -@@ -1,161 +0,0 @@ --/* -- * amlogic ALSA SoC pcm5102 codec driver -- */ -- --#include --#include --#include --#include --#include --#include --#include --#include --#include -- --struct pcm5102_private { -- struct snd_soc_codec codec; --}; -- --#define PCM5102_RATES (SNDRV_PCM_RATE_8000_384000) --#define PCM5102_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ -- SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) -- --static int pcm5102_pcm_hw_params(struct snd_pcm_substream *substream, -- struct snd_pcm_hw_params *params, -- struct snd_soc_dai *dai) --{ -- return 0; --} -- --static int pcm5102_set_dai_fmt(struct snd_soc_dai *codec_dai, -- unsigned int fmt) --{ -- return 0; --} -- --static int pcm5102_mute(struct snd_soc_dai *dai, int mute) --{ -- return 0; --} -- --static const struct snd_soc_dapm_widget pcm5102_dapm_widgets[] = { -- /* Output Side */ -- /* DACs */ -- SND_SOC_DAPM_DAC("Left DAC", "HIFI Playback", -- SND_SOC_NOPM, 0, 0), -- SND_SOC_DAPM_DAC("Right DAC", "HIFI Playback", -- SND_SOC_NOPM, 7, 0), -- -- /* Output Lines */ -- SND_SOC_DAPM_OUTPUT("LOUTL"), -- SND_SOC_DAPM_OUTPUT("LOUTR"), -- --}; -- --static const struct snd_soc_dapm_route pcm5102_dapm_routes[] = { -- -- {"LOUTL", NULL, "Left DAC"}, -- {"LOUTR", NULL, "Right DAC"}, --}; -- --static struct snd_soc_dai_ops pcm5102_ops = { -- .hw_params = pcm5102_pcm_hw_params, -- .set_fmt = pcm5102_set_dai_fmt, -- .digital_mute = pcm5102_mute, --}; -- --struct snd_soc_dai_driver pcm5102_dai = { -- .name = "pcm5102", -- .id = 1, -- .playback = { -- .stream_name = "HIFI Playback", -- .channels_min = 2, -- .channels_max = 2, -- .rates = PCM5102_RATES, -- .formats = PCM5102_FORMATS, -- }, -- .ops = &pcm5102_ops, --}; -- --static int pcm5102_probe(struct snd_soc_codec *codec) --{ -- return 0; --} -- --static int pcm5102_remove(struct snd_soc_codec *codec) --{ -- return 0; --}; -- --struct snd_soc_codec_driver soc_codec_dev_pcm5102 = { -- .probe = pcm5102_probe, -- .remove = pcm5102_remove, -- .dapm_widgets = pcm5102_dapm_widgets, -- .num_dapm_widgets = ARRAY_SIZE(pcm5102_dapm_widgets), -- .dapm_routes = pcm5102_dapm_routes, -- .num_dapm_routes = ARRAY_SIZE(pcm5102_dapm_routes), --}; -- --#ifdef CONFIG_OF --static const struct of_device_id amlogic_codec_dt_match[] = { -- {.compatible = "hardkernel, pcm5102", -- }, -- {}, --}; --#else --#define amlogic_codec_dt_match NULL --#endif -- --static int pcm5102_platform_probe(struct platform_device *pdev) --{ -- struct pcm5102_private *pcm5102; -- int ret; -- -- pr_info("pcm5102_platform_probe\n"); -- pcm5102 = kzalloc(sizeof(struct pcm5102_private), GFP_KERNEL); -- if (pcm5102 == NULL) -- return -ENOMEM; -- -- platform_set_drvdata(pdev, pcm5102); -- ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_pcm5102, -- &pcm5102_dai, 1); -- -- if (ret < 0) -- kfree(pcm5102); -- -- return ret; --} -- --static int pcm5102_platform_remove(struct platform_device *pdev) --{ -- snd_soc_unregister_codec(&pdev->dev); -- kfree(platform_get_drvdata(pdev)); -- return 0; --} -- --static struct platform_driver pcm5102_platform_driver = { -- .driver = { -- .name = "pcm5102", -- .owner = THIS_MODULE, -- .of_match_table = amlogic_codec_dt_match, -- }, -- .probe = pcm5102_platform_probe, -- .remove = pcm5102_platform_remove, --}; -- --static int __init pcm5102_init(void) --{ -- return platform_driver_register(&pcm5102_platform_driver); --} -- --static void __exit pcm5102_exit(void) --{ -- platform_driver_unregister(&pcm5102_platform_driver); --} -- --module_init(pcm5102_init); --module_exit(pcm5102_exit); -- --MODULE_AUTHOR("AMLogic, Inc."); --MODULE_DESCRIPTION("ASoC pcm5102 driver"); --MODULE_LICENSE("GPL"); --- -1.9.1 - diff --git a/projects/Odroid_C2/patches/linux/linux-001-staging_rtl8712_rtl8712_avoid_lots_of_build_warnings.patch b/projects/Odroid_C2/patches/linux/linux-001-staging_rtl8712_rtl8712_avoid_lots_of_build_warnings.patch new file mode 100644 index 0000000000..0ad0dc7884 --- /dev/null +++ b/projects/Odroid_C2/patches/linux/linux-001-staging_rtl8712_rtl8712_avoid_lots_of_build_warnings.patch @@ -0,0 +1,113 @@ +From fa89009a1869844f9a9360eb07c45d457446ac0e Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Thu, 5 Jun 2014 22:48:15 +0200 +Subject: [PATCH] staging: rtl8712, rtl8712: avoid lots of build warnings + +commit 0c9f3a65c5eb7fe1fc611a22eb8a8b71ea865998 upstream. + +The rtl8712 driver has an 'extern inline' function that contains an +'if', which causes lots of warnings with CONFIG_PROFILE_ALL_BRANCHES +overriding the definition of 'if': + +drivers/staging/rtl8712/ieee80211.h:759:229: warning: '______f' is static but declared in inline function 'ieee80211_get_hdrlen' which is not static [enabled by default] + +This changes the driver to use 'static inline' instead, which happens +to be the correct annotation anyway. + +Signed-off-by: Arnd Bergmann +Cc: Larry Finger +Cc: Florian Schilhabel +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8187se/ieee80211/ieee80211.h | 4 ++-- + drivers/staging/rtl8192u/ieee80211/ieee80211.h | 10 +++++----- + drivers/staging/rtl8712/ieee80211.h | 4 ++-- + 3 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211.h b/drivers/staging/rtl8187se/ieee80211/ieee80211.h +index 09ffd9b..6ebdd3f 100644 +--- a/drivers/staging/rtl8187se/ieee80211/ieee80211.h ++++ b/drivers/staging/rtl8187se/ieee80211/ieee80211.h +@@ -1460,12 +1460,12 @@ extern void ieee80211_sta_ps_send_null_frame(struct ieee80211_device *ieee, + + extern const long ieee80211_wlan_frequencies[]; + +-extern inline void ieee80211_increment_scans(struct ieee80211_device *ieee) ++static inline void ieee80211_increment_scans(struct ieee80211_device *ieee) + { + ieee->scans++; + } + +-extern inline int ieee80211_get_scans(struct ieee80211_device *ieee) ++static inline int ieee80211_get_scans(struct ieee80211_device *ieee) + { + return ieee->scans; + } +diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211.h b/drivers/staging/rtl8192u/ieee80211/ieee80211.h +index bc64f05..b1a0380 100644 +--- a/drivers/staging/rtl8192u/ieee80211/ieee80211.h ++++ b/drivers/staging/rtl8192u/ieee80211/ieee80211.h +@@ -2250,7 +2250,7 @@ static inline void *ieee80211_priv(struct net_device *dev) + return ((struct ieee80211_device *)netdev_priv(dev))->priv; + } + +-extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len) ++static inline int ieee80211_is_empty_essid(const char *essid, int essid_len) + { + /* Single white space is for Linksys APs */ + if (essid_len == 1 && essid[0] == ' ') +@@ -2266,7 +2266,7 @@ extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len) + return 1; + } + +-extern inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mode) ++static inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mode) + { + /* + * It is possible for both access points and our device to support +@@ -2292,7 +2292,7 @@ extern inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mod + return 0; + } + +-extern inline int ieee80211_get_hdrlen(u16 fc) ++static inline int ieee80211_get_hdrlen(u16 fc) + { + int hdrlen = IEEE80211_3ADDR_LEN; + +@@ -2578,12 +2578,12 @@ void ieee80211_softmac_scan_syncro(struct ieee80211_device *ieee); + + extern const long ieee80211_wlan_frequencies[]; + +-extern inline void ieee80211_increment_scans(struct ieee80211_device *ieee) ++static inline void ieee80211_increment_scans(struct ieee80211_device *ieee) + { + ieee->scans++; + } + +-extern inline int ieee80211_get_scans(struct ieee80211_device *ieee) ++static inline int ieee80211_get_scans(struct ieee80211_device *ieee) + { + return ieee->scans; + } +diff --git a/drivers/staging/rtl8712/ieee80211.h b/drivers/staging/rtl8712/ieee80211.h +index da4000e..8269be8 100644 +--- a/drivers/staging/rtl8712/ieee80211.h ++++ b/drivers/staging/rtl8712/ieee80211.h +@@ -734,7 +734,7 @@ enum ieee80211_state { + #define IEEE_G (1<<2) + #define IEEE_MODE_MASK (IEEE_A|IEEE_B|IEEE_G) + +-extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len) ++static inline int ieee80211_is_empty_essid(const char *essid, int essid_len) + { + /* Single white space is for Linksys APs */ + if (essid_len == 1 && essid[0] == ' ') +@@ -748,7 +748,7 @@ extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len) + return 1; + } + +-extern inline int ieee80211_get_hdrlen(u16 fc) ++static inline int ieee80211_get_hdrlen(u16 fc) + { + int hdrlen = 24; + diff --git a/projects/Odroid_C2/patches/linux/linux-002-gcc5-use_gcc_inline_version_instead_c99.patch b/projects/Odroid_C2/patches/linux/linux-002-gcc5-use_gcc_inline_version_instead_c99.patch deleted file mode 100644 index 5d5be45d5f..0000000000 --- a/projects/Odroid_C2/patches/linux/linux-002-gcc5-use_gcc_inline_version_instead_c99.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -Naur a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h ---- a/include/linux/compiler-gcc.h 2016-02-09 12:52:30.000000000 +0100 -+++ b/include/linux/compiler-gcc.h 2016-02-09 21:43:41.133285186 +0100 -@@ -53,9 +53,10 @@ - */ - #if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ - !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4) --# define inline inline __attribute__((always_inline)) notrace --# define __inline__ __inline__ __attribute__((always_inline)) notrace --# define __inline __inline __attribute__((always_inline)) notrace -+/* XXX: check __GNUC_STDC_INLINE__, fix line length */ -+# define inline inline __attribute__((always_inline)) __attribute__((__gnu_inline__)) -+# define __inline__ __inline__ __attribute__((always_inline)) __attribute__((__gnu_inline__)) -+# define __inline __inline __attribute__((always_inline)) __attribute__((__gnu_inline__)) - #else - /* A lot of inline functions can cause havoc with function tracing */ - # define inline inline notrace diff --git a/projects/Odroid_C2/patches/linux/linux-003-no_dev_console.patch b/projects/Odroid_C2/patches/linux/linux-003-no_dev_console.patch index da6340f875..df35a7ab9a 100644 --- a/projects/Odroid_C2/patches/linux/linux-003-no_dev_console.patch +++ b/projects/Odroid_C2/patches/linux/linux-003-no_dev_console.patch @@ -1,7 +1,8 @@ -diff -Naur a/init/main.c b/init/main.c ---- a/init/main.c 2016-08-22 17:01:25.000000000 +0200 -+++ b/init/main.c 2016-08-22 17:09:48.000000000 +0200 -@@ -915,8 +915,14 @@ +diff --git a/init/main.c b/init/main.c +index 9484f4b..db55edd 100644 +--- a/init/main.c ++++ b/init/main.c +@@ -880,8 +880,14 @@ static noinline void __init kernel_init_freeable(void) do_basic_setup(); /* Open the /dev/console on the rootfs, this should never fail */ diff --git a/projects/Odroid_C2/patches/linux/linux-004-PCM-Audio-add-8CH.feature.patch b/projects/Odroid_C2/patches/linux/linux-004-PCM-Audio-add-8CH.feature.patch deleted file mode 100644 index 63e7745138..0000000000 --- a/projects/Odroid_C2/patches/linux/linux-004-PCM-Audio-add-8CH.feature.patch +++ /dev/null @@ -1,79 +0,0 @@ -From a7d02c5cbc830b1a49d9de7c2941edce3d4f2da0 Mon Sep 17 00:00:00 2001 -From: Zongdong Jiao -Date: Thu, 10 Dec 2015 20:01:32 +0800 -Subject: [PATCH] PD#116527: hdmitx20: add PCM 8ch feature - -Change-Id: I2208275be4c4a9c5442441945f9d4a83099f75ff ---- - drivers/amlogic/hdmi/hdmi_tx_20/hw/hdmi_tx_hw.c | 24 ++++++++++++++++++++---- - 1 file changed, 20 insertions(+), 4 deletions(-) - -diff --git a/drivers/amlogic/hdmi/hdmi_tx_20/hw/hdmi_tx_hw.c b/drivers/amlogic/hdmi/hdmi_tx_20/hw/hdmi_tx_hw.c -index a1dc9e0..f6d1006 100644 ---- a/drivers/amlogic/hdmi/hdmi_tx_20/hw/hdmi_tx_hw.c -+++ b/drivers/amlogic/hdmi/hdmi_tx_20/hw/hdmi_tx_hw.c -@@ -2075,13 +2075,20 @@ static void set_aud_info_pkt(struct hdmitx_dev *hdev, - hdmitx_set_reg_bits(HDMITX_DWC_FC_AUDICONF0, 7, 4, 3); - hdmitx_wr_reg(HDMITX_DWC_FC_AUDICONF2, 0x13); - break; -+ case CT_PCM: -+ hdmitx_set_reg_bits(HDMITX_DWC_FC_AUDICONF0, -+ audio_param->channel_num, 4, 3); -+ if (audio_param->channel_num == 0x7) -+ hdmitx_wr_reg(HDMITX_DWC_FC_AUDICONF2, 0x13); -+ else -+ hdmitx_wr_reg(HDMITX_DWC_FC_AUDICONF2, 0x00); -+ break; - case CT_DTS: - case CT_DTS_HD: - default: - /* CC: 2ch */ - hdmitx_set_reg_bits(HDMITX_DWC_FC_AUDICONF0, 1, 4, 3); - hdmitx_wr_reg(HDMITX_DWC_FC_AUDICONF2, 0x0); -- hdmitx_wr_reg(HDMITX_DWC_FC_AUDICONF2, 0x0); - break; - } - hdmitx_wr_reg(HDMITX_DWC_FC_AUDICONF3, 0); -@@ -2162,6 +2169,14 @@ static void set_aud_samp_pkt(struct hdmitx_dev *hdev, - hdmitx_set_reg_bits(HDMITX_DWC_FC_AUDSCONF, 1, 0, 1); - break; - case CT_PCM: /* AudSamp */ -+ hdmitx_set_reg_bits(HDMITX_DWC_AUD_SPDIF1, 0, 7, 1); -+ hdmitx_set_reg_bits(HDMITX_DWC_AUD_SPDIF1, 0, 6, 1); -+ hdmitx_set_reg_bits(HDMITX_DWC_AUD_SPDIF1, 24, 0, 5); -+ if (audio_param->channel_num == 0x7) -+ hdmitx_set_reg_bits(HDMITX_DWC_FC_AUDSCONF, 1, 0, 1); -+ else -+ hdmitx_set_reg_bits(HDMITX_DWC_FC_AUDSCONF, 0, 0, 1); -+ break; - case CT_AC_3: - case CT_DOLBY_D: - case CT_DTS: -@@ -2171,7 +2186,7 @@ static void set_aud_samp_pkt(struct hdmitx_dev *hdev, - hdmitx_set_reg_bits(HDMITX_DWC_AUD_SPDIF1, 0, 6, 1); - hdmitx_set_reg_bits(HDMITX_DWC_AUD_SPDIF1, 24, 0, 5); - hdmitx_set_reg_bits(HDMITX_DWC_FC_AUDSCONF, 0, 0, 1); -- break; -+ break; - } - } - -@@ -2207,7 +2222,8 @@ static int hdmitx_set_audmode(struct hdmitx_dev *hdev, - tx_aud_src = 0; - pr_info("hdmitx tx_aud_src = %d\n", tx_aud_src); - -- set_hdmi_audio_source(tx_aud_src ? 1 : 2); -+ /* set_hdmi_audio_source(tx_aud_src ? 1 : 2); */ -+ set_hdmi_audio_source(2); - - /* config IP */ - /* Configure audio */ -@@ -3808,7 +3824,7 @@ static void config_hdmi20_tx(enum hdmi_vic vic, - data32 |= (0 << 0); - hdmitx_wr_reg(HDMITX_DWC_FC_AUDICONF1, data32); - -- hdmitx_wr_reg(HDMITX_DWC_FC_AUDICONF2, 0x13); -+ hdmitx_wr_reg(HDMITX_DWC_FC_AUDICONF2, 0x00); - - data32 = 0; - data32 |= (1 << 5); diff --git a/projects/Odroid_C2/patches/linux/linux-006-save-cec-config.patch b/projects/Odroid_C2/patches/linux/linux-006-save-cec-config.patch deleted file mode 100644 index a66b70ff40..0000000000 --- a/projects/Odroid_C2/patches/linux/linux-006-save-cec-config.patch +++ /dev/null @@ -1,85 +0,0 @@ -diff --git a/drivers/amlogic/cec/hdmi_ao_cec.c b/drivers/amlogic/cec/hdmi_ao_cec.c -index 21ca8bb..9f4686f 100644 ---- a/drivers/amlogic/cec/hdmi_ao_cec.c -+++ b/drivers/amlogic/cec/hdmi_ao_cec.c -@@ -225,14 +225,13 @@ unsigned int aocec_rd_reg(unsigned long addr) - { - unsigned int data32; - unsigned long flags; -- waiting_aocec_free(); - spin_lock_irqsave(&cec_dev->cec_reg_lock, flags); -+ waiting_aocec_free(); - data32 = 0; - data32 |= 0 << 16; /* [16] cec_reg_wr */ - data32 |= 0 << 8; /* [15:8] cec_reg_wrdata */ -- data32 |= addr << 0; /* [7:0] cec_reg_addr */ -+ data32 |= (addr & 0xff) << 0; /* [7:0] cec_reg_addr */ - writel(data32, cec_dev->cec_reg + AO_CEC_RW_REG); -- - waiting_aocec_free(); - data32 = ((readl(cec_dev->cec_reg + AO_CEC_RW_REG)) >> 24) & 0xff; - spin_unlock_irqrestore(&cec_dev->cec_reg_lock, flags); -@@ -241,15 +240,16 @@ unsigned int aocec_rd_reg(unsigned long addr) - - void aocec_wr_reg(unsigned long addr, unsigned long data) - { -- unsigned long data32; -+ unsigned int data32; - unsigned long flags; -- waiting_aocec_free(); - spin_lock_irqsave(&cec_dev->cec_reg_lock, flags); -+ waiting_aocec_free(); - data32 = 0; - data32 |= 1 << 16; /* [16] cec_reg_wr */ -- data32 |= data << 8; /* [15:8] cec_reg_wrdata */ -- data32 |= addr << 0; /* [7:0] cec_reg_addr */ -+ data32 |= (data & 0xff) << 8; /* [15:8] cec_reg_wrdata */ -+ data32 |= (addr & 0xff) << 0; /* [7:0] cec_reg_addr */ - writel(data32, cec_dev->cec_reg + AO_CEC_RW_REG); -+ waiting_aocec_free(); - spin_unlock_irqrestore(&cec_dev->cec_reg_lock, flags); - } /* aocec_wr_only_reg */ - -@@ -737,6 +737,8 @@ static void cec_pre_init(void) - { - ao_cec_init(); - -+ cec_config(cec_dev->tx_dev->cec_func_config, 1); -+ - cec_arbit_bit_time_set(3, 0x118, 0); - cec_arbit_bit_time_set(5, 0x000, 0); - cec_arbit_bit_time_set(7, 0x2aa, 0); -@@ -1452,8 +1454,6 @@ static int hdmitx_cec_open(struct inode *inode, struct file *file) - cec_dev->cec_info.open_count++; - if (cec_dev->cec_info.open_count) { - cec_dev->cec_info.hal_ctl = 1; -- /* enable all cec features */ -- cec_config(0x2f, 1); - } - return 0; - } -@@ -1463,8 +1463,6 @@ static int hdmitx_cec_release(struct inode *inode, struct file *file) - cec_dev->cec_info.open_count--; - if (!cec_dev->cec_info.open_count) { - cec_dev->cec_info.hal_ctl = 0; -- /* disable all cec features */ -- cec_config(0x0, 1); - } - return 0; - } -diff --git a/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c b/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c -index 57105b6..0a7f914 100644 ---- a/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c -+++ b/drivers/amlogic/hdmi/hdmi_tx_20/hdmi_tx_main.c -@@ -2467,9 +2467,9 @@ static int __init hdmitx_boot_para_setup(char *s) - init_flag |= INIT_FLAG_NOT_LOAD; - } else if (strncmp(token, "cec", 3) == 0) { - ret = kstrtoul(token+3, 16, &list); -- if ((list >= 0) && (list <= 0x2f)) -+ if ((list >= 0) && (list <= 0xff)) - hdmitx_device.cec_func_config = list; -- hdmi_print(INF, CEC "HDMI hdmi_cec_func_config:0x%x\n", -+ hdmi_print(IMP, CEC "HDMI hdmi_cec_func_config:0x%x\n", - hdmitx_device.cec_func_config); - } else if (strcmp(token, "forcergb") == 0) { - hdmitx_output_rgb(); diff --git a/projects/Odroid_C2/patches/linux/linux-007-sound_soc_aml_m8-Report-only-working-frequecies-and-bit-depths.patch b/projects/Odroid_C2/patches/linux/linux-007-sound_soc_aml_m8-Report-only-working-frequecies-and-bit-depths.patch index 43ba03c43f..d268e5b3ad 100644 --- a/projects/Odroid_C2/patches/linux/linux-007-sound_soc_aml_m8-Report-only-working-frequecies-and-bit-depths.patch +++ b/projects/Odroid_C2/patches/linux/linux-007-sound_soc_aml_m8-Report-only-working-frequecies-and-bit-depths.patch @@ -1,31 +1,15 @@ -From 5b29cd4f629f63a0e594152b49753e36e215ef26 Mon Sep 17 00:00:00 2001 -From: Jamie Coldhill -Date: Fri, 9 Sep 2016 10:33:29 +0800 -Subject: [PATCH] Report only working frequecies and bit depths +From edab2a489829689fdaadb90f1897c948ea3c9020 Mon Sep 17 00:00:00 2001 +From: kszaq +Date: Wed, 3 Jun 2015 10:20:04 +0200 +Subject: [PATCH] sound/soc/aml/m8: Report only working frequecies and bit + depths --- - sound/soc/aml/m8/aml_i2s_dai.c | 5 ++--- sound/soc/aml/m8/aml_spdif_codec.c | 5 ++--- - 2 files changed, 4 insertions(+), 6 deletions(-) + 1 file changed, 2 insertions(+), 3 deletions(-) -diff --git a/sound/soc/aml/m8/aml_i2s_dai.c b/sound/soc/aml/m8/aml_i2s_dai.c -index 5dfbaf1..cc6e5b6 100644 ---- a/sound/soc/aml/m8/aml_i2s_dai.c -+++ b/sound/soc/aml/m8/aml_i2s_dai.c -@@ -324,9 +324,8 @@ static int aml_dai_i2s_resume(struct snd_soc_dai *dai) - return 0; - } - --#define AML_DAI_I2S_RATES (SNDRV_PCM_RATE_8000_192000) --#define AML_DAI_I2S_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ -- SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) -+#define AML_DAI_I2S_RATES SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_192000 -+#define AML_DAI_I2S_FORMATS SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE - - static struct snd_soc_dai_ops aml_dai_i2s_ops = { - .startup = aml_dai_i2s_startup, diff --git a/sound/soc/aml/m8/aml_spdif_codec.c b/sound/soc/aml/m8/aml_spdif_codec.c -index 5ef287b..85f2833 100644 +index ac76ef6..cf0e929 100644 --- a/sound/soc/aml/m8/aml_spdif_codec.c +++ b/sound/soc/aml/m8/aml_spdif_codec.c @@ -26,9 +26,8 @@ @@ -35,10 +19,40 @@ index 5ef287b..85f2833 100644 -#define STUB_RATES SNDRV_PCM_RATE_8000_192000 -#define STUB_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ - SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) -+#define STUB_RATES SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_192000 -+#define STUB_FORMATS SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE - - static struct snd_soc_codec_driver soc_codec_spdif_dit; ++#define STUB_RATES SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_192000 ++#define STUB_FORMATS SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE + struct pinctrl *pin_spdif_ctl; + struct device *spdif_dev; -- -1.9.1 +1.8.3.1 + +From 1e6294498438359c4ac39b2ab563487d750fbaaf Mon Sep 17 00:00:00 2001 +From: kszaq +Date: Tue, 30 Aug 2016 23:31:29 +0200 +Subject: [PATCH] sound/soc/aml/m8: report only working frequencies and bit + depths for I2S + +--- + sound/soc/aml/m8/aml_i2s_dai.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/sound/soc/aml/m8/aml_i2s_dai.c b/sound/soc/aml/m8/aml_i2s_dai.c +index 3626676..d2ebad1 100644 +--- a/sound/soc/aml/m8/aml_i2s_dai.c ++++ b/sound/soc/aml/m8/aml_i2s_dai.c +@@ -290,9 +290,8 @@ static int aml_dai_i2s_resume(struct snd_soc_dai *dai) + return 0; + } + +-#define AML_DAI_I2S_RATES (SNDRV_PCM_RATE_8000_192000) +-#define AML_DAI_I2S_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ +- SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) ++#define AML_DAI_I2S_RATES SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_192000 ++#define AML_DAI_I2S_FORMATS SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE + + static struct snd_soc_dai_ops aml_dai_i2s_ops = { + .startup = aml_dai_i2s_startup, +-- +1.8.3.1 + diff --git a/projects/Odroid_C2/patches/linux/linux-008-max_freq_dvfs_table.patch b/projects/Odroid_C2/patches/linux/linux-008-max_freq_dvfs_table.patch index c961848a26..78c8305a74 100644 --- a/projects/Odroid_C2/patches/linux/linux-008-max_freq_dvfs_table.patch +++ b/projects/Odroid_C2/patches/linux/linux-008-max_freq_dvfs_table.patch @@ -17,7 +17,7 @@ diff --git a/drivers/amlogic/mailbox/scpi_protocol.c b/drivers/amlogic/mailbox/s index ec787d2..f3aa3e0 100644 --- a/drivers/amlogic/mailbox/scpi_protocol.c +++ b/drivers/amlogic/mailbox/scpi_protocol.c -@@ -129,6 +129,12 @@ static int high_priority_cmds[] = { +@@ -85,6 +85,12 @@ static int high_priority_cmds[] = { SCPI_CMD_SENSOR_CFG_BOUNDS, }; @@ -30,7 +30,7 @@ index ec787d2..f3aa3e0 100644 static struct scpi_opp *scpi_opps[MAX_DVFS_DOMAINS]; static int scpi_linux_errmap[SCPI_ERR_MAX] = { -@@ -267,6 +273,9 @@ struct scpi_opp *scpi_dvfs_get_opps(u8 domain) +@@ -236,6 +242,9 @@ struct scpi_opp *scpi_dvfs_get_opps(u8 domain) struct scpi_opp *opps; size_t opps_sz; int count, ret; @@ -40,7 +40,7 @@ index ec787d2..f3aa3e0 100644 if (domain >= MAX_DVFS_DOMAINS) return ERR_PTR(-EINVAL); -@@ -285,6 +294,27 @@ struct scpi_opp *scpi_dvfs_get_opps(u8 domain) +@@ -254,6 +263,27 @@ struct scpi_opp *scpi_dvfs_get_opps(u8 domain) return ERR_PTR(-ENOMEM); count = DVFS_OPP_COUNT(buf.header); @@ -68,11 +68,10 @@ index ec787d2..f3aa3e0 100644 opps_sz = count * sizeof(*(opps->opp)); opps->count = count; -@@ -416,3 +446,26 @@ int scpi_get_sensor_value(u16 sensor, u32 *val) - return ret; +@@ -422,3 +452,25 @@ int scpi_send_usr_data(u32 client_id, u32 *val, u32 size) } - EXPORT_SYMBOL_GPL(scpi_get_sensor_value); -+ + EXPORT_SYMBOL_GPL(scpi_send_usr_data); + +#if defined(CONFIG_ARCH_MESON64_ODROIDC2) +static int __init get_max_freq(char *str) +{ diff --git a/projects/Odroid_C2/patches/linux/linux-999.13-fix-u64-unknown-type.patch b/projects/Odroid_C2/patches/linux/linux-999.13-fix-u64-unknown-type.patch deleted file mode 100644 index e3c636281a..0000000000 --- a/projects/Odroid_C2/patches/linux/linux-999.13-fix-u64-unknown-type.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur a/arch/arm64/include/uapi/asm/sigcontext.h b/arch/arm64/include/uapi/asm/sigcontext.h ---- a/arch/arm64/include/uapi/asm/sigcontext.h 2016-04-06 23:18:37.000000000 -0700 -+++ b/arch/arm64/include/uapi/asm/sigcontext.h 2016-04-07 16:00:47.870241223 -0700 -@@ -58,7 +58,7 @@ - - struct esr_context { - struct _aarch64_ctx head; -- u64 esr; -+ __u64 esr; - }; - - #endif /* _UAPI__ASM_SIGCONTEXT_H */ diff --git a/projects/Odroid_C2/patches/u-boot/u-boot-0001-set-default-boot-options.patch b/projects/Odroid_C2/patches/u-boot/u-boot-0001-set-default-boot-options.patch index 9c436f60b9..fa1d267fae 100644 --- a/projects/Odroid_C2/patches/u-boot/u-boot-0001-set-default-boot-options.patch +++ b/projects/Odroid_C2/patches/u-boot/u-boot-0001-set-default-boot-options.patch @@ -24,13 +24,12 @@ diff -Naur a/include/configs/odroidc2.h b/include/configs/odroidc2.h #define CONFIG_ENV_SIZE (32 * SZ_1K) /* 32kB */ #define CONFIG_ENV_OFFSET (720 * SZ_1K) /* FIXME: should be close to U-boot image -@@ -176,8 +168,8 @@ +@@ -176,7 +168,7 @@ #define CONFIG_LZO 1 /* storage: emmc/nand/sd */ --#define CONFIG_ENV_OVERWRITE + #define CONFIG_ENV_OVERWRITE -#define CONFIG_ENV_IS_IN_MMC 1 -+//#define CONFIG_ENV_OVERWRITE +#define CONFIG_ENV_IS_IN_MMC 0 #define CONFIG_SYS_MMC_ENV_DEV 0 #define CONFIG_AML_SD_EMMC 1 diff --git a/projects/WeTek_Hub/linux/linux.aarch64.conf b/projects/WeTek_Hub/linux/linux.aarch64.conf index a466d11e12..d9c88584a0 100644 --- a/projects/WeTek_Hub/linux/linux.aarch64.conf +++ b/projects/WeTek_Hub/linux/linux.aarch64.conf @@ -263,8 +263,9 @@ CONFIG_FREEZER=y # # Platform selection # -CONFIG_ARCH_VEXPRESS=y +# CONFIG_ARCH_VEXPRESS is not set # CONFIG_ARCH_XGENE is not set +# CONFIG_ARCH_MESON64_ODROIDC2 is not set # # Bus support