From 1e44b3c0cb7e3886878367e61ecbe2afb0597d64 Mon Sep 17 00:00:00 2001 From: Matt Sealey Date: Fri, 18 Feb 2011 01:30:06 -0600 Subject: [PATCH] mark your calendars: this is the day one kernel supports both boards one regression: wireless on smarttop has stopped working, probably not being reset properly --- arch/arm/configs/mx51_efikamx_defconfig | 24 +- arch/arm/configs/mx51_efikasb_defconfig | 2796 ----------------- arch/arm/mach-mx5/Kconfig | 18 +- arch/arm/mach-mx5/Makefile | 21 +- arch/arm/mach-mx5/mx51_efikamx.c | 232 +- arch/arm/mach-mx5/mx51_efikamx.h | 17 +- ...ikasb_battery.c => mx51_efikamx_battery.c} | 60 +- arch/arm/mach-mx5/mx51_efikamx_input.c | 221 ++ arch/arm/mach-mx5/mx51_efikamx_io.c | 198 -- ...x51_efikasb_leds.c => mx51_efikamx_leds.c} | 136 +- arch/arm/mach-mx5/mx51_efikamx_pmic.c | 102 +- arch/arm/mach-mx5/mx51_efikamx_powerkey.c | 157 - arch/arm/mach-mx5/mx51_efikamx_usb.c | 82 +- ...x51_efikasb_wwan.c => mx51_efikamx_wwan.c} | 63 +- arch/arm/mach-mx5/mx51_efikasb.c | 76 +- arch/arm/mach-mx5/mx51_efikasb.h | 57 +- arch/arm/mach-mx5/mx51_efikasb_gpio.c | 406 --- arch/arm/mach-mx5/mx51_efikasb_lid.c | 191 -- arch/arm/mach-mx5/mx51_efikasb_pmic.c | 423 --- arch/arm/mach-mx5/mx51_efikasb_switch.c | 228 -- 20 files changed, 818 insertions(+), 4690 deletions(-) delete mode 100644 arch/arm/configs/mx51_efikasb_defconfig rename arch/arm/mach-mx5/{mx51_efikasb_battery.c => mx51_efikamx_battery.c} (51%) create mode 100644 arch/arm/mach-mx5/mx51_efikamx_input.c delete mode 100644 arch/arm/mach-mx5/mx51_efikamx_io.c rename arch/arm/mach-mx5/{mx51_efikasb_leds.c => mx51_efikamx_leds.c} (54%) delete mode 100644 arch/arm/mach-mx5/mx51_efikamx_powerkey.c rename arch/arm/mach-mx5/{mx51_efikasb_wwan.c => mx51_efikamx_wwan.c} (53%) delete mode 100644 arch/arm/mach-mx5/mx51_efikasb_gpio.c delete mode 100644 arch/arm/mach-mx5/mx51_efikasb_lid.c delete mode 100644 arch/arm/mach-mx5/mx51_efikasb_pmic.c delete mode 100644 arch/arm/mach-mx5/mx51_efikasb_switch.c diff --git a/arch/arm/configs/mx51_efikamx_defconfig b/arch/arm/configs/mx51_efikamx_defconfig index d43def97312..da0df89d1fe 100644 --- a/arch/arm/configs/mx51_efikamx_defconfig +++ b/arch/arm/configs/mx51_efikamx_defconfig @@ -1,9 +1,10 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.31.14.17 -# Sat Feb 12 03:18:38 2011 +# Fri Feb 18 01:05:21 2011 # CONFIG_ARM=y +CONFIG_HAVE_PWM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_TIME=y @@ -218,8 +219,8 @@ CONFIG_ARCH_MX51=y CONFIG_MX5_OPTIONS=y # CONFIG_MACH_MX51_3DS is not set # CONFIG_MACH_MX51_BABBAGE is not set +CONFIG_MACH_MX51_EFIKASB=y CONFIG_MACH_MX51_EFIKAMX=y -# CONFIG_MACH_MX51_EFIKASB is not set # CONFIG_MACH_MX53_EVK is not set # CONFIG_MACH_MX50_ARM2 is not set @@ -229,7 +230,7 @@ CONFIG_MACH_MX51_EFIKAMX=y CONFIG_MXC_TZIC=y CONFIG_ISP1504_MXC=y # CONFIG_MXC_IRQ_PRIOR is not set -# CONFIG_MXC_PWM is not set +CONFIG_MXC_PWM=y CONFIG_MXC_DVFS_PER=y # @@ -1175,8 +1176,9 @@ CONFIG_INPUT_MOUSE=y # CONFIG_MOUSE_BCM5974 is not set # CONFIG_MOUSE_VSXXXAA is not set # CONFIG_MOUSE_GPIO is not set -# CONFIG_MOUSE_SYNAPTICS_I2C is not set -# CONFIG_MOUSE_SYNAPTICS_USB is not set +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +# CONFIG_MOUSE_SYNAPTICS_CPADDEV is not set CONFIG_INPUT_JOYSTICK=y # CONFIG_JOYSTICK_ANALOG is not set # CONFIG_JOYSTICK_A3D is not set @@ -1399,8 +1401,7 @@ CONFIG_POWER_SUPPLY=y # CONFIG_BATTERY_DS2782 is not set # CONFIG_BATTERY_BQ27x00 is not set # CONFIG_BATTERY_MAX17040 is not set -# CONFIG_BATTERY_SBS is not set -# CONFIG_BATTERY_EFIKASB is not set +CONFIG_BATTERY_SBS=m # CONFIG_HWMON is not set # CONFIG_THERMAL is not set # CONFIG_THERMAL_HWMON is not set @@ -1547,7 +1548,7 @@ CONFIG_VIDEO_PVRUSB2_DVB=y CONFIG_VIDEO_HDPVR=m CONFIG_VIDEO_EM28XX=m CONFIG_VIDEO_EM28XX_ALSA=m -# CONFIG_VIDEO_EM28XX_DVB is not set +CONFIG_VIDEO_EM28XX_DVB=m CONFIG_VIDEO_CX231XX=m CONFIG_VIDEO_CX231XX_ALSA=m CONFIG_VIDEO_CX231XX_DVB=m @@ -1761,6 +1762,7 @@ CONFIG_FB_MXC_SYNC_PANEL=y # CONFIG_FB_MXC_CLAA_WVGA_SYNC_PANEL is not set CONFIG_FB_MXC_SIIHDMI=y # CONFIG_FB_SIIHDMI_HOTPLUG is not set +CONFIG_FB_MXC_MTL017=y # CONFIG_FB_MXC_CH7026 is not set # CONFIG_FB_MXC_TVOUT_CH7024 is not set # CONFIG_FB_MXC_ASYNC_PANEL is not set @@ -1773,8 +1775,9 @@ CONFIG_FB_MXC_SIIHDMI=y # CONFIG_FB_BROADSHEET is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y # CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_PWM=y # CONFIG_BACKLIGHT_MXC is not set # @@ -2114,6 +2117,7 @@ CONFIG_LEDS_GPIO_PLATFORM=y # CONFIG_LEDS_LP3944 is not set # CONFIG_LEDS_PCA955X is not set # CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_PWM is not set # CONFIG_LEDS_BD2802 is not set # @@ -2126,6 +2130,7 @@ CONFIG_LEDS_TRIGGER_IDE_DISK=y # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set CONFIG_LEDS_TRIGGER_GPIO=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_INPUT=y # # iptables trigger is under Netfilter config (LED target) @@ -2328,6 +2333,7 @@ CONFIG_MXC_VPU=y # # Broadcom GPS ioctrl support # +# CONFIG_GPS_IOCTRL is not set # # MXC Media Local Bus Driver diff --git a/arch/arm/configs/mx51_efikasb_defconfig b/arch/arm/configs/mx51_efikasb_defconfig deleted file mode 100644 index f0994720f8f..00000000000 --- a/arch/arm/configs/mx51_efikasb_defconfig +++ /dev/null @@ -1,2796 +0,0 @@ -# -# Automatically generated make config: don't edit -# Linux kernel version: 2.6.31.14.17 -# Thu Feb 17 20:19:18 2011 -# -CONFIG_ARM=y -CONFIG_HAVE_PWM=y -CONFIG_SYS_SUPPORTS_APM_EMULATION=y -CONFIG_GENERIC_GPIO=y -CONFIG_GENERIC_TIME=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_MMU=y -CONFIG_GENERIC_HARDIRQS=y -CONFIG_STACKTRACE_SUPPORT=y -CONFIG_HAVE_LATENCYTOP_SUPPORT=y -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_HARDIRQS_SW_RESEND=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_ZONE_DMA=y -CONFIG_ARCH_MTD_XIP=y -CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y -CONFIG_OPROFILE_ARMV7=y -CONFIG_VECTORS_BASE=0xffff0000 -CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" -CONFIG_CONSTRUCTORS=y - -# -# General setup -# -CONFIG_EXPERIMENTAL=y -CONFIG_BROKEN_ON_SMP=y -CONFIG_LOCK_KERNEL=y -CONFIG_INIT_ENV_ARG_LIMIT=32 -CONFIG_LOCALVERSION="-efikasb" -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y -# CONFIG_POSIX_MQUEUE is not set -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_TASKSTATS is not set -# CONFIG_AUDIT is not set - -# -# RCU Subsystem -# -# CONFIG_CLASSIC_RCU is not set -CONFIG_TREE_RCU=y -# CONFIG_PREEMPT_RCU is not set -# CONFIG_RCU_TRACE is not set -CONFIG_RCU_FANOUT=32 -# CONFIG_RCU_FANOUT_EXACT is not set -# CONFIG_TREE_RCU_TRACE is not set -# CONFIG_PREEMPT_RCU_TRACE is not set -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=16 -# CONFIG_GROUP_SCHED is not set -CONFIG_CGROUPS=y -# CONFIG_CGROUP_DEBUG is not set -CONFIG_CGROUP_NS=y -CONFIG_CGROUP_FREEZER=y -# CONFIG_CGROUP_DEVICE is not set -CONFIG_CPUSETS=y -# CONFIG_PROC_PID_CPUSET is not set -CONFIG_CGROUP_CPUACCT=y -CONFIG_RESOURCE_COUNTERS=y -# CONFIG_CGROUP_MEM_RES_CTLR is not set -# CONFIG_SYSFS_DEPRECATED_V2 is not set -# CONFIG_RELAY is not set -# CONFIG_NAMESPACES is not set -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_RD_GZIP=y -CONFIG_RD_BZIP2=y -CONFIG_RD_LZMA=y -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_SYSCTL=y -CONFIG_ANON_INODES=y -CONFIG_EMBEDDED=y -CONFIG_UID16=y -CONFIG_SYSCTL_SYSCALL=y -CONFIG_KALLSYMS=y -CONFIG_KALLSYMS_ALL=y -# CONFIG_KALLSYMS_EXTRA_PASS is not set -CONFIG_HOTPLUG=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_SIGNALFD=y -CONFIG_TIMERFD=y -CONFIG_EVENTFD=y -CONFIG_SHMEM=y -CONFIG_AIO=y - -# -# Performance Counters -# -CONFIG_VM_EVENT_COUNTERS=y -# CONFIG_SLUB_DEBUG is not set -CONFIG_STRIP_ASM_SYMS=y -CONFIG_COMPAT_BRK=y -# CONFIG_SLAB is not set -CONFIG_SLUB=y -# CONFIG_SLOB is not set -CONFIG_PROFILING=y -CONFIG_TRACEPOINTS=y -CONFIG_MARKERS=y -CONFIG_OPROFILE=m -CONFIG_HAVE_OPROFILE=y -# CONFIG_KPROBES is not set -CONFIG_HAVE_KPROBES=y -CONFIG_HAVE_KRETPROBES=y - -# -# GCOV-based kernel profiling -# -# CONFIG_GCOV_KERNEL is not set -CONFIG_SLOW_WORK=y -CONFIG_HAVE_GENERIC_DMA_COHERENT=y -CONFIG_RT_MUTEXES=y -CONFIG_BASE_SMALL=0 -CONFIG_MODULES=y -CONFIG_MODULE_FORCE_LOAD=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -CONFIG_BLOCK=y -CONFIG_LBDAF=y -CONFIG_BLK_DEV_BSG=y -CONFIG_BLK_DEV_INTEGRITY=y - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -# CONFIG_IOSCHED_AS is not set -# CONFIG_IOSCHED_DEADLINE is not set -CONFIG_IOSCHED_CFQ=y -# CONFIG_DEFAULT_AS is not set -# CONFIG_DEFAULT_DEADLINE is not set -# CONFIG_DEFAULT_CFQ is not set -CONFIG_DEFAULT_NOOP=y -CONFIG_DEFAULT_IOSCHED="noop" -CONFIG_FREEZER=y - -# -# System Type -# -# CONFIG_ARCH_AAEC2000 is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_REALVIEW is not set -# CONFIG_ARCH_VERSATILE is not set -# CONFIG_ARCH_AT91 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_GEMINI is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_EP93XX is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -CONFIG_ARCH_MXC=y -# CONFIG_ARCH_STMP3XXX is not set -# CONFIG_ARCH_MXS is not set -# CONFIG_ARCH_NETX is not set -# CONFIG_ARCH_H720X is not set -# CONFIG_ARCH_IOP13XX is not set -# CONFIG_ARCH_IOP32X is not set -# CONFIG_ARCH_IOP33X is not set -# CONFIG_ARCH_IXP23XX is not set -# CONFIG_ARCH_IXP2000 is not set -# CONFIG_ARCH_IXP4XX is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_KIRKWOOD is not set -# CONFIG_ARCH_LOKI is not set -# CONFIG_ARCH_MV78XX0 is not set -# CONFIG_ARCH_ORION5X is not set -# CONFIG_ARCH_MMP is not set -# CONFIG_ARCH_KS8695 is not set -# CONFIG_ARCH_NS9XXX is not set -# CONFIG_ARCH_W90X900 is not set -# CONFIG_ARCH_PNX4008 is not set -# CONFIG_ARCH_PXA is not set -# CONFIG_ARCH_MSM is not set -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_S3C2410 is not set -# CONFIG_ARCH_S3C64XX is not set -# CONFIG_ARCH_SHARK is not set -# CONFIG_ARCH_LH7A40X is not set -# CONFIG_ARCH_U300 is not set -# CONFIG_ARCH_DAVINCI is not set -# CONFIG_ARCH_OMAP is not set -CONFIG_IRAM_ALLOC=y -CONFIG_DMA_ZONE_SIZE=96 -CONFIG_UTMI_MXC=y - -# -# Freescale MXC Implementations -# -# CONFIG_ARCH_MX1 is not set -# CONFIG_ARCH_MX2 is not set -# CONFIG_ARCH_MX3 is not set -# CONFIG_ARCH_MX25 is not set -# CONFIG_ARCH_MX35 is not set -# CONFIG_ARCH_MX37 is not set -CONFIG_ARCH_MX5=y -CONFIG_MXC_SDMA_API=y -CONFIG_SDMA_IRAM=y -CONFIG_FORCE_MAX_ZONEORDER=13 -# CONFIG_ARCH_MXC_HAS_NFC_V3 is not set -CONFIG_ARCH_MX51=y -CONFIG_MX5_OPTIONS=y -# CONFIG_MACH_MX51_3DS is not set -# CONFIG_MACH_MX51_BABBAGE is not set -# CONFIG_MACH_MX51_EFIKAMX is not set -CONFIG_MACH_MX51_EFIKASB=y -# CONFIG_MACH_MX53_EVK is not set -# CONFIG_MACH_MX50_ARM2 is not set - -# -# MX5x Options: -# -CONFIG_MXC_TZIC=y -CONFIG_ISP1504_MXC=y -# CONFIG_MXC_IRQ_PRIOR is not set -CONFIG_MXC_PWM=y -CONFIG_MXC_DVFS_PER=y - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_32v6K=y -CONFIG_CPU_V7=y -CONFIG_CPU_32v7=y -CONFIG_CPU_ABRT_EV7=y -CONFIG_CPU_PABRT_V7=y -CONFIG_CPU_CACHE_V7=y -CONFIG_CPU_CACHE_VIPT=y -CONFIG_CPU_COPY_V6=y -CONFIG_CPU_TLB_V7=y -CONFIG_CPU_HAS_ASID=y -CONFIG_CPU_CP15=y -CONFIG_CPU_CP15_MMU=y - -# -# Processor Features -# -CONFIG_ARM_THUMB=y -CONFIG_ARM_THUMBEE=y -# CONFIG_CPU_ICACHE_DISABLE is not set -# CONFIG_CPU_DCACHE_DISABLE is not set -# CONFIG_CPU_BPREDICT_DISABLE is not set -CONFIG_HAS_TLS_REG=y -CONFIG_ARM_ERRATA_430973=y -CONFIG_ARM_ERRATA_458693=y -CONFIG_ARM_ERRATA_460075=y - -# -# Bus support -# -# CONFIG_PCI_SYSCALL is not set -# CONFIG_ARCH_SUPPORTS_MSI is not set -# CONFIG_PCCARD is not set - -# -# Kernel Features -# -CONFIG_TICK_ONESHOT=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_GENERIC_CLOCKEVENTS_BUILD=y -# CONFIG_VMSPLIT_3G is not set -CONFIG_VMSPLIT_2G=y -# CONFIG_VMSPLIT_1G is not set -CONFIG_PAGE_OFFSET=0x80000000 -CONFIG_PREEMPT=y -CONFIG_HZ=100 -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set -# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set -# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set -# CONFIG_HIGHMEM is not set -CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_FLATMEM_MANUAL=y -# CONFIG_DISCONTIGMEM_MANUAL is not set -# CONFIG_SPARSEMEM_MANUAL is not set -CONFIG_FLATMEM=y -CONFIG_FLAT_NODE_MEM_MAP=y -CONFIG_PAGEFLAGS_EXTENDED=y -CONFIG_SPLIT_PTLOCK_CPUS=4 -# CONFIG_PHYS_ADDR_T_64BIT is not set -CONFIG_ZONE_DMA_FLAG=1 -CONFIG_BOUNCE=y -CONFIG_VIRT_TO_BUS=y -CONFIG_HAVE_MLOCK=y -CONFIG_HAVE_MLOCKED_PAGE_BIT=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y -CONFIG_UACCESS_WITH_MEMCPY=y - -# -# Boot options -# -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="noinitrd console=ttymxc0,115200" -# CONFIG_CMDLINE_FORCE is not set -# CONFIG_XIP_KERNEL is not set -# CONFIG_KEXEC is not set - -# -# CPU Power Management -# -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_TABLE=y -# CONFIG_CPU_FREQ_DEBUG is not set -CONFIG_CPU_FREQ_STAT=y -# CONFIG_CPU_FREQ_STAT_DETAILS is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=m -CONFIG_CPU_FREQ_GOV_USERSPACE=m -CONFIG_CPU_FREQ_GOV_ONDEMAND=m -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m -CONFIG_CPU_FREQ_IMX=y -CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_GOV_LADDER=y -CONFIG_CPU_IDLE_GOV_MENU=y - -# -# Floating point emulation -# - -# -# At least one emulation must be selected -# -CONFIG_VFP=y -CONFIG_VFPv3=y -CONFIG_NEON=y - -# -# Userspace binary formats -# -CONFIG_BINFMT_ELF=y -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -CONFIG_HAVE_AOUT=y -CONFIG_BINFMT_AOUT=m -CONFIG_BINFMT_MISC=m - -# -# Power management options -# -CONFIG_PM=y -# CONFIG_PM_DEBUG is not set -CONFIG_PM_SLEEP=y -CONFIG_SUSPEND=y -CONFIG_SUSPEND_FREEZER=y -# CONFIG_APM_EMULATION is not set -CONFIG_ARCH_SUSPEND_POSSIBLE=y -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_UNIX=y -CONFIG_XFRM=y -CONFIG_XFRM_USER=m -# CONFIG_XFRM_SUB_POLICY is not set -# CONFIG_XFRM_MIGRATE is not set -# CONFIG_XFRM_STATISTICS is not set -CONFIG_XFRM_IPCOMP=m -CONFIG_NET_KEY=m -# CONFIG_NET_KEY_MIGRATE is not set -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_ASK_IP_FIB_HASH=y -# CONFIG_IP_FIB_TRIE is not set -CONFIG_IP_FIB_HASH=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -# CONFIG_IP_ROUTE_VERBOSE is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE=m -CONFIG_NET_IPGRE_BROADCAST=y -CONFIG_IP_MROUTE=y -# CONFIG_IP_PIMSM_V1 is not set -# CONFIG_IP_PIMSM_V2 is not set -# CONFIG_ARPD is not set -CONFIG_SYN_COOKIES=y -CONFIG_INET_AH=m -CONFIG_INET_ESP=m -CONFIG_INET_IPCOMP=m -CONFIG_INET_XFRM_TUNNEL=m -CONFIG_INET_TUNNEL=m -CONFIG_INET_XFRM_MODE_TRANSPORT=m -CONFIG_INET_XFRM_MODE_TUNNEL=m -CONFIG_INET_XFRM_MODE_BEET=m -# CONFIG_INET_LRO is not set -CONFIG_INET_DIAG=m -CONFIG_INET_TCP_DIAG=m -CONFIG_TCP_CONG_ADVANCED=y -# CONFIG_TCP_CONG_BIC is not set -CONFIG_TCP_CONG_CUBIC=y -# CONFIG_TCP_CONG_WESTWOOD is not set -# CONFIG_TCP_CONG_HTCP is not set -# CONFIG_TCP_CONG_HSTCP is not set -# CONFIG_TCP_CONG_HYBLA is not set -# CONFIG_TCP_CONG_VEGAS is not set -# CONFIG_TCP_CONG_SCALABLE is not set -# CONFIG_TCP_CONG_LP is not set -# CONFIG_TCP_CONG_VENO is not set -# CONFIG_TCP_CONG_YEAH is not set -# CONFIG_TCP_CONG_ILLINOIS is not set -# CONFIG_DEFAULT_BIC is not set -CONFIG_DEFAULT_CUBIC=y -# CONFIG_DEFAULT_HTCP is not set -# CONFIG_DEFAULT_VEGAS is not set -# CONFIG_DEFAULT_WESTWOOD is not set -# CONFIG_DEFAULT_RENO is not set -CONFIG_DEFAULT_TCP_CONG="cubic" -CONFIG_TCP_MD5SIG=y -CONFIG_IPV6=m -CONFIG_IPV6_PRIVACY=y -# CONFIG_IPV6_ROUTER_PREF is not set -# CONFIG_IPV6_OPTIMISTIC_DAD is not set -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -CONFIG_INET6_IPCOMP=m -# CONFIG_IPV6_MIP6 is not set -CONFIG_INET6_XFRM_TUNNEL=m -CONFIG_INET6_TUNNEL=m -CONFIG_INET6_XFRM_MODE_TRANSPORT=m -CONFIG_INET6_XFRM_MODE_TUNNEL=m -CONFIG_INET6_XFRM_MODE_BEET=m -CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m -CONFIG_IPV6_SIT=m -CONFIG_IPV6_NDISC_NODETYPE=y -CONFIG_IPV6_TUNNEL=m -CONFIG_IPV6_MULTIPLE_TABLES=y -# CONFIG_IPV6_SUBTREES is not set -# CONFIG_IPV6_MROUTE is not set -CONFIG_NETWORK_SECMARK=y -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_NETFILTER_ADVANCED=y -CONFIG_BRIDGE_NETFILTER=y - -# -# Core Netfilter Configuration -# -CONFIG_NETFILTER_NETLINK=m -CONFIG_NETFILTER_NETLINK_QUEUE=m -CONFIG_NETFILTER_NETLINK_LOG=m -CONFIG_NF_CONNTRACK=m -CONFIG_NF_CT_ACCT=y -CONFIG_NF_CONNTRACK_MARK=y -CONFIG_NF_CONNTRACK_SECMARK=y -CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CT_PROTO_DCCP=m -CONFIG_NF_CT_PROTO_GRE=m -CONFIG_NF_CT_PROTO_SCTP=m -CONFIG_NF_CT_PROTO_UDPLITE=m -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_PPTP=m -# CONFIG_NF_CONNTRACK_SANE is not set -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -# CONFIG_NETFILTER_TPROXY is not set -CONFIG_NETFILTER_XTABLES=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m -# CONFIG_NETFILTER_XT_TARGET_DSCP is not set -CONFIG_NETFILTER_XT_TARGET_HL=m -CONFIG_NETFILTER_XT_TARGET_LED=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set -CONFIG_NETFILTER_XT_TARGET_RATEEST=m -# CONFIG_NETFILTER_XT_TARGET_TRACE is not set -CONFIG_NETFILTER_XT_TARGET_SECMARK=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_HL=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set -CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -# CONFIG_IP_VS is not set - -# -# IP: Netfilter Configuration -# -CONFIG_NF_DEFRAG_IPV4=m -CONFIG_NF_CONNTRACK_IPV4=m -CONFIG_NF_CONNTRACK_PROC_COMPAT=y -# CONFIG_IP_NF_QUEUE is not set -CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_ADDRTYPE=m -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=m -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_LOG=m -CONFIG_IP_NF_TARGET_ULOG=m -CONFIG_NF_NAT=m -CONFIG_NF_NAT_NEEDED=y -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PROTO_DCCP=m -CONFIG_NF_NAT_PROTO_GRE=m -CONFIG_NF_NAT_PROTO_UDPLITE=m -CONFIG_NF_NAT_PROTO_SCTP=m -CONFIG_NF_NAT_FTP=m -CONFIG_NF_NAT_IRC=m -CONFIG_NF_NAT_TFTP=m -CONFIG_NF_NAT_AMANDA=m -CONFIG_NF_NAT_PPTP=m -CONFIG_NF_NAT_H323=m -CONFIG_NF_NAT_SIP=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m - -# -# IPv6: Netfilter Configuration -# -CONFIG_NF_CONNTRACK_IPV6=m -# CONFIG_IP6_NF_QUEUE is not set -CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_AH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_MATCH_FRAG=m -CONFIG_IP6_NF_MATCH_OPTS=m -CONFIG_IP6_NF_MATCH_HL=m -CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_TARGET_HL=m -CONFIG_IP6_NF_TARGET_LOG=m -CONFIG_IP6_NF_FILTER=m -CONFIG_IP6_NF_TARGET_REJECT=m -CONFIG_IP6_NF_MANGLE=m -CONFIG_IP6_NF_RAW=m -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_IP6=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_ULOG=m -CONFIG_BRIDGE_EBT_NFLOG=m -CONFIG_IP_DCCP=m -CONFIG_INET_DCCP_DIAG=m - -# -# DCCP CCIDs Configuration (EXPERIMENTAL) -# -# CONFIG_IP_DCCP_CCID2_DEBUG is not set -CONFIG_IP_DCCP_CCID3=y -# CONFIG_IP_DCCP_CCID3_DEBUG is not set -CONFIG_IP_DCCP_CCID3_RTO=100 -CONFIG_IP_DCCP_TFRC_LIB=y - -# -# DCCP Kernel Hacking -# -# CONFIG_IP_DCCP_DEBUG is not set -CONFIG_IP_SCTP=m -# CONFIG_SCTP_DBG_MSG is not set -# CONFIG_SCTP_DBG_OBJCNT is not set -# CONFIG_SCTP_HMAC_NONE is not set -# CONFIG_SCTP_HMAC_SHA1 is not set -CONFIG_SCTP_HMAC_MD5=y -CONFIG_TIPC=m -# CONFIG_TIPC_ADVANCED is not set -# CONFIG_TIPC_DEBUG is not set -CONFIG_ATM=y -CONFIG_ATM_CLIP=y -# CONFIG_ATM_CLIP_NO_ICMP is not set -CONFIG_ATM_LANE=m -CONFIG_ATM_MPOA=m -CONFIG_ATM_BR2684=m -# CONFIG_ATM_BR2684_IPFILTER is not set -CONFIG_STP=m -CONFIG_GARP=m -CONFIG_BRIDGE=m -# CONFIG_NET_DSA is not set -CONFIG_VLAN_8021Q=m -CONFIG_VLAN_8021Q_GVRP=y -# CONFIG_DECNET is not set -CONFIG_LLC=m -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_PHONET is not set -# CONFIG_IEEE802154 is not set -CONFIG_NET_SCHED=y - -# -# Queueing/Scheduling -# -CONFIG_NET_SCH_CBQ=m -CONFIG_NET_SCH_HTB=m -CONFIG_NET_SCH_HFSC=m -CONFIG_NET_SCH_ATM=m -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_MULTIQ=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m -CONFIG_NET_SCH_NETEM=m -CONFIG_NET_SCH_DRR=m -CONFIG_NET_SCH_INGRESS=m - -# -# Classification -# -CONFIG_NET_CLS=y -CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_TCINDEX=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_ROUTE=y -CONFIG_NET_CLS_FW=m -# CONFIG_NET_CLS_U32 is not set -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m -# CONFIG_NET_CLS_FLOW is not set -CONFIG_NET_CLS_CGROUP=y -CONFIG_NET_EMATCH=y -CONFIG_NET_EMATCH_STACK=32 -CONFIG_NET_EMATCH_CMP=m -CONFIG_NET_EMATCH_NBYTE=m -CONFIG_NET_EMATCH_U32=m -CONFIG_NET_EMATCH_META=m -CONFIG_NET_EMATCH_TEXT=m -CONFIG_NET_CLS_ACT=y -CONFIG_NET_ACT_POLICE=m -CONFIG_NET_ACT_GACT=m -CONFIG_GACT_PROB=y -CONFIG_NET_ACT_MIRRED=m -CONFIG_NET_ACT_IPT=m -CONFIG_NET_ACT_NAT=m -CONFIG_NET_ACT_PEDIT=m -CONFIG_NET_ACT_SIMP=m -CONFIG_NET_ACT_SKBEDIT=m -# CONFIG_NET_CLS_IND is not set -CONFIG_NET_SCH_FIFO=y -# CONFIG_DCB is not set - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# CONFIG_NET_DROP_MONITOR is not set -# CONFIG_HAMRADIO is not set -# CONFIG_CAN is not set -# CONFIG_IRDA is not set -CONFIG_BT=m -CONFIG_BT_L2CAP=m -CONFIG_BT_SCO=m -CONFIG_BT_RFCOMM=m -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=m -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=m - -# -# Bluetooth device drivers -# -CONFIG_BT_HCIBTUSB=m -# CONFIG_BT_HCIBTSDIO is not set -# CONFIG_BT_HCIUART is not set -# CONFIG_BT_HCIBCM203X is not set -# CONFIG_BT_HCIBPA10X is not set -# CONFIG_BT_HCIBFUSB is not set -# CONFIG_BT_HCIVHCI is not set -# CONFIG_AF_RXRPC is not set -CONFIG_FIB_RULES=y -CONFIG_WIRELESS=y -CONFIG_CFG80211=m -# CONFIG_CFG80211_REG_DEBUG is not set -# CONFIG_CFG80211_DEBUGFS is not set -# CONFIG_WIRELESS_OLD_REGULATORY is not set -CONFIG_WIRELESS_EXT=y -CONFIG_WIRELESS_EXT_SYSFS=y -CONFIG_LIB80211=m -# CONFIG_LIB80211_DEBUG is not set -CONFIG_MAC80211=m -CONFIG_MAC80211_DEFAULT_PS=y -CONFIG_MAC80211_DEFAULT_PS_VALUE=1 - -# -# Rate control algorithm selection -# -# CONFIG_MAC80211_RC_PID is not set -CONFIG_MAC80211_RC_MINSTREL=y -# CONFIG_MAC80211_RC_DEFAULT_PID is not set -CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y -CONFIG_MAC80211_RC_DEFAULT="minstrel" -CONFIG_MAC80211_LEDS=y -# CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_MENU is not set -CONFIG_WIMAX=m -CONFIG_WIMAX_DEBUG_LEVEL=8 -CONFIG_RFKILL=m -CONFIG_RFKILL_LEDS=y -CONFIG_RFKILL_INPUT=y -# CONFIG_NET_9P is not set - -# -# Device Drivers -# - -# -# Generic Driver Options -# -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=y -CONFIG_FIRMWARE_IN_KERNEL=y -CONFIG_EXTRA_FIRMWARE="" -# CONFIG_DEBUG_DRIVER is not set -# CONFIG_DEBUG_DEVRES is not set -# CONFIG_SYS_HYPERVISOR is not set -CONFIG_CONNECTOR=y -CONFIG_PROC_EVENTS=y -CONFIG_MTD=m -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_CONCAT=m -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_TESTS is not set -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set -# CONFIG_MTD_AR7_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=m -CONFIG_MTD_BLKDEVS=m -CONFIG_MTD_BLOCK=m -# CONFIG_MTD_BLOCK_RO is not set -# CONFIG_FTL is not set -# CONFIG_NFTL is not set -# CONFIG_INFTL is not set -# CONFIG_RFD_FTL is not set -# CONFIG_SSFDC is not set -# CONFIG_MTD_OOPS is not set - -# -# RAM/ROM/Flash chip drivers -# -# CONFIG_MTD_CFI is not set -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_MAP_BANK_WIDTH_1=y -CONFIG_MTD_MAP_BANK_WIDTH_2=y -CONFIG_MTD_MAP_BANK_WIDTH_4=y -# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set -# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set -# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set -CONFIG_MTD_CFI_I1=y -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -# CONFIG_MTD_CFI_I8 is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -# CONFIG_MTD_PLATRAM is not set -# CONFIG_MTD_MXC is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_DATAFLASH is not set -# CONFIG_MTD_MXC_DATAFLASH is not set -# CONFIG_MTD_M25P80 is not set -# CONFIG_MTD_SLRAM is not set -CONFIG_MTD_PHRAM=m -# CONFIG_MTD_MTDRAM is not set -CONFIG_MTD_BLOCK2MTD=m - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOC2001PLUS is not set -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_ONENAND is not set - -# -# LPDDR flash memory drivers -# -# CONFIG_MTD_LPDDR is not set - -# -# UBI - Unsorted block images -# -# CONFIG_MTD_UBI is not set -# CONFIG_PARPORT is not set -CONFIG_BLK_DEV=y -# CONFIG_BLK_DEV_COW_COMMON is not set -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_CRYPTOLOOP=m -CONFIG_BLK_DEV_NBD=m -# CONFIG_BLK_DEV_UB is not set -CONFIG_BLK_DEV_RAM=m -CONFIG_BLK_DEV_RAM_COUNT=16 -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_XIP=y -CONFIG_CDROM_PKTCDVD=m -CONFIG_CDROM_PKTCDVD_BUFFERS=8 -# CONFIG_CDROM_PKTCDVD_WCACHE is not set -CONFIG_ATA_OVER_ETH=m -# CONFIG_MG_DISK is not set -CONFIG_MISC_DEVICES=y -# CONFIG_ICS932S401 is not set -# CONFIG_ENCLOSURE_SERVICES is not set -# CONFIG_ISL29003 is not set -# CONFIG_MX51_EFIKASB_DEBUG is not set -# CONFIG_C2PORT is not set - -# -# EEPROM support -# -# CONFIG_EEPROM_AT24 is not set -# CONFIG_EEPROM_AT25 is not set -# CONFIG_EEPROM_LEGACY is not set -# CONFIG_EEPROM_MAX6875 is not set -CONFIG_EEPROM_93CX6=m -CONFIG_HAVE_IDE=y -# CONFIG_IDE is not set - -# -# SCSI device support -# -CONFIG_RAID_ATTRS=m -CONFIG_SCSI=y -CONFIG_SCSI_DMA=y -CONFIG_SCSI_TGT=m -# CONFIG_SCSI_NETLINK is not set -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set -CONFIG_BLK_DEV_SR=y -# CONFIG_BLK_DEV_SR_VENDOR is not set -CONFIG_CHR_DEV_SG=y -# CONFIG_CHR_DEV_SCH is not set -CONFIG_SCSI_MULTI_LUN=y -# CONFIG_SCSI_CONSTANTS is not set -# CONFIG_SCSI_LOGGING is not set -CONFIG_SCSI_SCAN_ASYNC=y -CONFIG_SCSI_WAIT_SCAN=m - -# -# SCSI Transports -# -# CONFIG_SCSI_SPI_ATTRS is not set -# CONFIG_SCSI_FC_ATTRS is not set -CONFIG_SCSI_ISCSI_ATTRS=m -# CONFIG_SCSI_SAS_ATTRS is not set -# CONFIG_SCSI_SAS_LIBSAS is not set -# CONFIG_SCSI_SRP_ATTRS is not set -CONFIG_SCSI_LOWLEVEL=y -CONFIG_ISCSI_TCP=m -# CONFIG_LIBFC is not set -# CONFIG_LIBFCOE is not set -# CONFIG_SCSI_DEBUG is not set -# CONFIG_SCSI_DH is not set -# CONFIG_SCSI_OSD_INITIATOR is not set -CONFIG_ATA=y -# CONFIG_ATA_NONSTANDARD is not set -# CONFIG_SATA_PMP is not set -# CONFIG_SATA_AHCI_PLATFORM is not set -CONFIG_ATA_SFF=y -# CONFIG_SATA_MV is not set -# CONFIG_PATA_PLATFORM is not set -CONFIG_PATA_FSL=y -CONFIG_MD=y -CONFIG_BLK_DEV_MD=m -CONFIG_MD_LINEAR=m -CONFIG_MD_RAID0=m -CONFIG_MD_RAID1=m -CONFIG_MD_RAID10=m -CONFIG_MD_RAID456=m -CONFIG_MD_RAID6_PQ=m -CONFIG_MD_MULTIPATH=m -CONFIG_MD_FAULTY=m -CONFIG_BLK_DEV_DM=m -# CONFIG_DM_DEBUG is not set -CONFIG_DM_CRYPT=m -CONFIG_DM_SNAPSHOT=m -CONFIG_DM_MIRROR=m -CONFIG_DM_LOG_USERSPACE=m -CONFIG_DM_ZERO=m -CONFIG_DM_MULTIPATH=m -# CONFIG_DM_MULTIPATH_QL is not set -# CONFIG_DM_MULTIPATH_ST is not set -CONFIG_DM_DELAY=m -# CONFIG_DM_UEVENT is not set -CONFIG_NETDEVICES=y -# CONFIG_IFB is not set -CONFIG_DUMMY=m -CONFIG_BONDING=m -CONFIG_MACVLAN=m -CONFIG_EQUALIZER=m -CONFIG_TUN=m -CONFIG_VETH=m -CONFIG_PHYLIB=m - -# -# MII PHY device drivers -# -# CONFIG_MARVELL_PHY is not set -# CONFIG_DAVICOM_PHY is not set -# CONFIG_QSEMI_PHY is not set -# CONFIG_LXT_PHY is not set -# CONFIG_CICADA_PHY is not set -# CONFIG_VITESSE_PHY is not set -# CONFIG_SMSC_PHY is not set -# CONFIG_BROADCOM_PHY is not set -# CONFIG_ICPLUS_PHY is not set -# CONFIG_REALTEK_PHY is not set -# CONFIG_NATIONAL_PHY is not set -# CONFIG_STE10XP is not set -# CONFIG_LSI_ET1011C_PHY is not set -# CONFIG_MDIO_BITBANG is not set -CONFIG_NET_ETHERNET=y -CONFIG_MII=m -# CONFIG_AX88796 is not set -# CONFIG_SMC91X is not set -# CONFIG_DM9000 is not set -# CONFIG_ENC28J60 is not set -# CONFIG_ETHOC is not set -# CONFIG_SMC911X is not set -# CONFIG_SMSC911X is not set -# CONFIG_DNET is not set -# CONFIG_IBM_NEW_EMAC_ZMII is not set -# CONFIG_IBM_NEW_EMAC_RGMII is not set -# CONFIG_IBM_NEW_EMAC_TAH is not set -# CONFIG_IBM_NEW_EMAC_EMAC4 is not set -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set -# CONFIG_B44 is not set -# CONFIG_CS89x0 is not set -# CONFIG_KS8842 is not set -# CONFIG_KS8851 is not set -# CONFIG_FEC is not set -# CONFIG_NETDEV_1000 is not set -# CONFIG_NETDEV_10000 is not set - -# -# Wireless LAN -# -# CONFIG_WLAN_PRE80211 is not set -CONFIG_WLAN_80211=y -# CONFIG_LIBERTAS is not set -# CONFIG_LIBERTAS_THINFIRM is not set -CONFIG_AT76C50X_USB=m -CONFIG_USB_ZD1201=m -# CONFIG_USB_NET_RNDIS_WLAN is not set -CONFIG_RTL8187=m -CONFIG_RTL8187_LEDS=y -# CONFIG_MAC80211_HWSIM is not set -# CONFIG_P54_COMMON is not set -CONFIG_ATH_COMMON=m -CONFIG_AR9170_USB=m -CONFIG_AR9170_LEDS=y -# CONFIG_HOSTAP is not set -# CONFIG_B43 is not set -# CONFIG_B43LEGACY is not set -CONFIG_ZD1211RW=m -# CONFIG_ZD1211RW_DEBUG is not set -CONFIG_RT2X00=m -# CONFIG_RT2500USB is not set -# CONFIG_RT73USB is not set -# CONFIG_RT2800USB is not set -# CONFIG_WL12XX is not set -# CONFIG_IWM is not set -# CONFIG_ATH6K_LEGACY is not set - -# -# WiMAX Wireless Broadband devices -# -CONFIG_WIMAX_I2400M=m -CONFIG_WIMAX_I2400M_USB=m -# CONFIG_WIMAX_I2400M_SDIO is not set -CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 - -# -# USB Network Adapters -# -CONFIG_USB_CATC=m -CONFIG_USB_KAWETH=m -CONFIG_USB_PEGASUS=m -CONFIG_USB_RTL8150=m -CONFIG_USB_USBNET=m -CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_CDCETHER=m -CONFIG_USB_NET_CDC_EEM=m -CONFIG_USB_NET_DM9601=m -CONFIG_USB_NET_SMSC95XX=m -CONFIG_USB_NET_GL620A=m -CONFIG_USB_NET_NET1080=m -CONFIG_USB_NET_PLUSB=m -CONFIG_USB_NET_MCS7830=m -CONFIG_USB_NET_RNDIS_HOST=m -CONFIG_USB_NET_CDC_SUBSET=m -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_KC2190=y -CONFIG_USB_NET_ZAURUS=m -CONFIG_USB_HSO=m -CONFIG_USB_NET_INT51X1=m -# CONFIG_WAN is not set -CONFIG_ATM_DRIVERS=y -# CONFIG_ATM_DUMMY is not set -# CONFIG_ATM_TCP is not set -CONFIG_PPP=m -CONFIG_PPP_MULTILINK=y -CONFIG_PPP_FILTER=y -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_MPPE=m -CONFIG_PPPOE=m -# CONFIG_PPPOATM is not set -CONFIG_PPPOL2TP=m -# CONFIG_SLIP is not set -CONFIG_SLHC=m -# CONFIG_NETCONSOLE is not set -# CONFIG_NETPOLL is not set -# CONFIG_NET_POLL_CONTROLLER is not set -# CONFIG_ISDN is not set - -# -# Input device support -# -CONFIG_INPUT=y -CONFIG_INPUT_FF_MEMLESS=m -CONFIG_INPUT_POLLDEV=y - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -CONFIG_INPUT_JOYDEV=m -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -# CONFIG_KEYBOARD_ATKBD is not set -# CONFIG_KEYBOARD_LKKBD is not set -# CONFIG_KEYBOARD_GPIO is not set -# CONFIG_KEYBOARD_MATRIX is not set -# CONFIG_KEYBOARD_LM8323 is not set -# CONFIG_KEYBOARD_NEWTON is not set -# CONFIG_KEYBOARD_STOWAWAY is not set -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_MXC is not set -CONFIG_INPUT_MOUSE=y -# CONFIG_MOUSE_PS2 is not set -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_APPLETOUCH is not set -# CONFIG_MOUSE_BCM5974 is not set -# CONFIG_MOUSE_VSXXXAA is not set -# CONFIG_MOUSE_GPIO is not set -# CONFIG_MOUSE_SYNAPTICS_I2C is not set -CONFIG_MOUSE_SYNAPTICS_USB=m -# CONFIG_MOUSE_SYNAPTICS_CPADDEV is not set -CONFIG_INPUT_JOYSTICK=y -# CONFIG_JOYSTICK_ANALOG is not set -# CONFIG_JOYSTICK_A3D is not set -# CONFIG_JOYSTICK_ADI is not set -# CONFIG_JOYSTICK_COBRA is not set -# CONFIG_JOYSTICK_GF2K is not set -# CONFIG_JOYSTICK_GRIP is not set -# CONFIG_JOYSTICK_GRIP_MP is not set -# CONFIG_JOYSTICK_GUILLEMOT is not set -# CONFIG_JOYSTICK_INTERACT is not set -# CONFIG_JOYSTICK_SIDEWINDER is not set -# CONFIG_JOYSTICK_TMDC is not set -CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=y -# CONFIG_JOYSTICK_IFORCE_232 is not set -# CONFIG_JOYSTICK_WARRIOR is not set -# CONFIG_JOYSTICK_MAGELLAN is not set -# CONFIG_JOYSTICK_SPACEORB is not set -# CONFIG_JOYSTICK_SPACEBALL is not set -# CONFIG_JOYSTICK_STINGER is not set -# CONFIG_JOYSTICK_TWIDJOY is not set -# CONFIG_JOYSTICK_ZHENHUA is not set -# CONFIG_JOYSTICK_JOYDUMP is not set -CONFIG_JOYSTICK_XPAD=m -CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_INPUT_TABLET=y -CONFIG_TABLET_USB_ACECAD=m -CONFIG_TABLET_USB_AIPTEK=m -CONFIG_TABLET_USB_GTCO=m -CONFIG_TABLET_USB_KBTAB=m -CONFIG_TABLET_USB_WACOM=m -CONFIG_INPUT_TOUCHSCREEN=y -# CONFIG_TOUCHSCREEN_ADS7846 is not set -# CONFIG_TOUCHSCREEN_AD7877 is not set -# CONFIG_TOUCHSCREEN_AD7879_I2C is not set -# CONFIG_TOUCHSCREEN_AD7879_SPI is not set -# CONFIG_TOUCHSCREEN_AD7879 is not set -# CONFIG_TOUCHSCREEN_EETI is not set -# CONFIG_TOUCHSCREEN_FUJITSU is not set -# CONFIG_TOUCHSCREEN_GUNZE is not set -# CONFIG_TOUCHSCREEN_ELO is not set -# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set -# CONFIG_TOUCHSCREEN_MTOUCH is not set -# CONFIG_TOUCHSCREEN_INEXIO is not set -# CONFIG_TOUCHSCREEN_MK712 is not set -# CONFIG_TOUCHSCREEN_PENMOUNT is not set -# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set -# CONFIG_TOUCHSCREEN_TOUCHWIN is not set -CONFIG_TOUCHSCREEN_USB_COMPOSITE=m -CONFIG_TOUCHSCREEN_USB_EGALAX=y -CONFIG_TOUCHSCREEN_USB_PANJIT=y -CONFIG_TOUCHSCREEN_USB_3M=y -CONFIG_TOUCHSCREEN_USB_ITM=y -CONFIG_TOUCHSCREEN_USB_ETURBO=y -CONFIG_TOUCHSCREEN_USB_GUNZE=y -CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y -CONFIG_TOUCHSCREEN_USB_IRTOUCH=y -CONFIG_TOUCHSCREEN_USB_IDEALTEK=y -CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y -CONFIG_TOUCHSCREEN_USB_GOTOP=y -# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set -# CONFIG_TOUCHSCREEN_TSC2007 is not set -# CONFIG_TOUCHSCREEN_W90X900 is not set -CONFIG_INPUT_MISC=y -CONFIG_INPUT_ATI_REMOTE=m -CONFIG_INPUT_ATI_REMOTE2=m -CONFIG_INPUT_KEYSPAN_REMOTE=m -CONFIG_INPUT_POWERMATE=m -CONFIG_INPUT_YEALINK=m -CONFIG_INPUT_CM109=m -CONFIG_INPUT_UINPUT=m -# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set - -# -# Hardware I/O ports -# -CONFIG_SERIO=y -# CONFIG_SERIO_SERPORT is not set -CONFIG_SERIO_LIBPS2=y -# CONFIG_SERIO_RAW is not set -# CONFIG_GAMEPORT is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_CONSOLE_TRANSLATIONS=y -CONFIG_VT_CONSOLE=y -CONFIG_HW_CONSOLE=y -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_DEVKMEM=y -# CONFIG_SERIAL_NONSTANDARD is not set -CONFIG_MXC_IIM=y -# CONFIG_IMX_SIM is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_MXC=y -CONFIG_SERIAL_MXC_CONSOLE=y -# CONFIG_SERIAL_MAX3100 is not set -# CONFIG_SERIAL_IMX is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_CONSOLE_POLL=y -CONFIG_UNIX98_PTYS=y -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=0 -# CONFIG_IPMI_HANDLER is not set -CONFIG_HW_RANDOM=y -# CONFIG_HW_RANDOM_TIMERIOMEM is not set -# CONFIG_R3964 is not set -# CONFIG_RAW_DRIVER is not set -# CONFIG_TCG_TPM is not set -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_HELPER_AUTO=y - -# -# I2C Hardware Bus support -# - -# -# I2C system bus drivers (mostly embedded / system-on-chip) -# -# CONFIG_I2C_GPIO is not set -CONFIG_I2C_IMX=y -# CONFIG_I2C_MXC is not set -# CONFIG_I2C_MXC_HS is not set -# CONFIG_I2C_OCORES is not set -# CONFIG_I2C_SIMTEC is not set - -# -# External I2C/SMBus adapter drivers -# -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_TAOS_EVM is not set -# CONFIG_I2C_TINY_USB is not set - -# -# Other I2C/SMBus bus drivers -# -# CONFIG_I2C_PCA_PLATFORM is not set -# CONFIG_I2C_STUB is not set - -# -# Miscellaneous I2C Chip support -# -# CONFIG_DS1682 is not set -# CONFIG_SENSORS_PCF8574 is not set -# CONFIG_PCF8575 is not set -# CONFIG_SENSORS_PCA9539 is not set -# CONFIG_SENSORS_TSL2550 is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set -# CONFIG_I2C_SLAVE is not set -CONFIG_SPI=y -# CONFIG_SPI_DEBUG is not set -CONFIG_SPI_MASTER=y - -# -# SPI Master Controller Drivers -# -CONFIG_SPI_BITBANG=y -# CONFIG_SPI_GPIO is not set -CONFIG_SPI_IMX_VER_0_7=y -CONFIG_SPI_IMX_VER_2_3=y -# CONFIG_SPI_IMX is not set -CONFIG_SPI_MXC=y -# CONFIG_SPI_MXC_TEST_LOOPBACK is not set -CONFIG_SPI_MXC_SELECT1=y -CONFIG_SPI_MXC_SELECT2=y -# CONFIG_SPI_MXC_SELECT3 is not set - -# -# SPI Protocol Masters -# -CONFIG_SPI_SPIDEV=y -# CONFIG_SPI_TLE62X0 is not set -CONFIG_ARCH_REQUIRE_GPIOLIB=y -CONFIG_GPIOLIB=y -# CONFIG_DEBUG_GPIO is not set -CONFIG_GPIO_SYSFS=y - -# -# Memory mapped GPIO expanders: -# - -# -# I2C GPIO expanders: -# -# CONFIG_GPIO_MAX732X is not set -# CONFIG_GPIO_PCA953X is not set -# CONFIG_GPIO_PCF857X is not set - -# -# PCI GPIO expanders: -# - -# -# SPI GPIO expanders: -# -# CONFIG_GPIO_MAX7301 is not set -# CONFIG_GPIO_MCP23S08 is not set -# CONFIG_W1 is not set -CONFIG_POWER_SUPPLY=y -# CONFIG_POWER_SUPPLY_DEBUG is not set -# CONFIG_PDA_POWER is not set -# CONFIG_BATTERY_DS2760 is not set -# CONFIG_BATTERY_DS2782 is not set -# CONFIG_BATTERY_BQ27x00 is not set -# CONFIG_BATTERY_MAX17040 is not set -CONFIG_BATTERY_SBS=m -# CONFIG_HWMON is not set -# CONFIG_THERMAL is not set -# CONFIG_THERMAL_HWMON is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_NOWAYOUT=y - -# -# Watchdog Device Drivers -# -# CONFIG_SOFT_WATCHDOG is not set -CONFIG_MXC_WATCHDOG=y - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set -CONFIG_SSB_POSSIBLE=y - -# -# Sonics Silicon Backplane -# -# CONFIG_SSB is not set - -# -# Multifunction device drivers -# -# CONFIG_MFD_CORE is not set -# CONFIG_MFD_SM501 is not set -# CONFIG_MFD_ASIC3 is not set -# CONFIG_HTC_EGPIO is not set -# CONFIG_HTC_PASIC3 is not set -# CONFIG_TPS65010 is not set -# CONFIG_TWL4030_CORE is not set -# CONFIG_MFD_TMIO is not set -# CONFIG_MFD_TC6393XB is not set -# CONFIG_PMIC_DA903X is not set -# CONFIG_MFD_WM8400 is not set -# CONFIG_MFD_WM8350_I2C is not set -# CONFIG_MFD_PCF50633 is not set -# CONFIG_AB3100_CORE is not set -# CONFIG_EZX_PCAP is not set -CONFIG_MEDIA_SUPPORT=y - -# -# Multimedia core support -# -CONFIG_VIDEO_DEV=y -CONFIG_VIDEO_V4L2_COMMON=y -# CONFIG_VIDEO_ALLOW_V4L1 is not set -CONFIG_VIDEO_V4L1_COMPAT=y -CONFIG_DVB_CORE=m -CONFIG_VIDEO_MEDIA=m - -# -# Multimedia drivers -# -CONFIG_MEDIA_ATTACH=y -CONFIG_MEDIA_TUNER=m -CONFIG_MEDIA_TUNER_CUSTOMISE=y -CONFIG_MEDIA_TUNER_SIMPLE=m -CONFIG_MEDIA_TUNER_TDA8290=m -CONFIG_MEDIA_TUNER_TDA827X=m -CONFIG_MEDIA_TUNER_TDA18271=m -CONFIG_MEDIA_TUNER_TDA9887=m -CONFIG_MEDIA_TUNER_TEA5761=m -CONFIG_MEDIA_TUNER_TEA5767=m -CONFIG_MEDIA_TUNER_MT20XX=m -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2266=m -CONFIG_MEDIA_TUNER_MT2131=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_XC2028=m -CONFIG_MEDIA_TUNER_XC5000=m -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -CONFIG_MEDIA_TUNER_MC44S803=m -CONFIG_VIDEO_V4L2=y -CONFIG_VIDEOBUF_GEN=m -CONFIG_VIDEOBUF_VMALLOC=m -CONFIG_VIDEO_IR=m -CONFIG_VIDEO_TVEEPROM=m -CONFIG_VIDEO_TUNER=m -CONFIG_VIDEO_CAPTURE_DRIVERS=y -# CONFIG_VIDEO_ADV_DEBUG is not set -# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -CONFIG_VIDEO_HELPER_CHIPS_AUTO=y -CONFIG_VIDEO_IR_I2C=m -CONFIG_VIDEO_MSP3400=m -CONFIG_VIDEO_CS53L32A=m -CONFIG_VIDEO_WM8775=m -CONFIG_VIDEO_MT9V011=m -CONFIG_VIDEO_SAA711X=m -CONFIG_VIDEO_TVP5150=m -CONFIG_VIDEO_CX25840=m -CONFIG_VIDEO_CX2341X=m -CONFIG_VIDEO_VIVI=m -# CONFIG_VIDEO_MXC_CAMERA is not set -CONFIG_VIDEO_MXC_OUTPUT=y -CONFIG_VIDEO_MXC_IPU_OUTPUT=y -# CONFIG_VIDEO_MXC_IPUV1_WVGA_OUTPUT is not set -# CONFIG_VIDEO_MXC_OPL is not set -# CONFIG_VIDEO_SAA5246A is not set -# CONFIG_VIDEO_SAA5249 is not set -# CONFIG_VIDEO_AU0828 is not set -# CONFIG_SOC_CAMERA is not set -CONFIG_V4L_USB_DRIVERS=y -CONFIG_USB_VIDEO_CLASS=m -CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y -CONFIG_USB_GSPCA=m -CONFIG_USB_M5602=m -CONFIG_USB_STV06XX=m -CONFIG_USB_GSPCA_CONEX=m -CONFIG_USB_GSPCA_ETOMS=m -CONFIG_USB_GSPCA_FINEPIX=m -CONFIG_USB_GSPCA_MARS=m -CONFIG_USB_GSPCA_MR97310A=m -CONFIG_USB_GSPCA_OV519=m -CONFIG_USB_GSPCA_OV534=m -CONFIG_USB_GSPCA_PAC207=m -CONFIG_USB_GSPCA_PAC7311=m -CONFIG_USB_GSPCA_SN9C20X=m -CONFIG_USB_GSPCA_SN9C20X_EVDEV=y -CONFIG_USB_GSPCA_SONIXB=m -CONFIG_USB_GSPCA_SONIXJ=m -CONFIG_USB_GSPCA_SPCA500=m -CONFIG_USB_GSPCA_SPCA501=m -CONFIG_USB_GSPCA_SPCA505=m -CONFIG_USB_GSPCA_SPCA506=m -CONFIG_USB_GSPCA_SPCA508=m -CONFIG_USB_GSPCA_SPCA561=m -CONFIG_USB_GSPCA_SQ905=m -CONFIG_USB_GSPCA_SQ905C=m -CONFIG_USB_GSPCA_STK014=m -CONFIG_USB_GSPCA_SUNPLUS=m -CONFIG_USB_GSPCA_T613=m -CONFIG_USB_GSPCA_TV8532=m -CONFIG_USB_GSPCA_VC032X=m -CONFIG_USB_GSPCA_ZC3XX=m -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_PVRUSB2_SYSFS=y -CONFIG_VIDEO_PVRUSB2_DVB=y -# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set -CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_ALSA=m -# CONFIG_VIDEO_EM28XX_DVB is not set -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_ALSA=m -# CONFIG_VIDEO_CX231XX_DVB is not set -CONFIG_VIDEO_USBVISION=m -CONFIG_USB_ET61X251=m -CONFIG_USB_SN9C102=m -CONFIG_USB_ZC0301=m -CONFIG_USB_PWC_INPUT_EVDEV=y -CONFIG_USB_ZR364XX=m -CONFIG_USB_STKWEBCAM=m -CONFIG_USB_S2255=m -CONFIG_RADIO_ADAPTERS=y -CONFIG_USB_DSBR=m -CONFIG_USB_SI470X=m -CONFIG_USB_MR800=m -CONFIG_RADIO_TEA5764=m -CONFIG_DVB_DYNAMIC_MINORS=y -CONFIG_DVB_CAPTURE_DRIVERS=y -# CONFIG_TTPCI_EEPROM is not set - -# -# Supported USB Adapters -# -CONFIG_DVB_USB=m -# CONFIG_DVB_USB_DEBUG is not set -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_DIBUSB_MB=m -# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_AF9015=m -CONFIG_DVB_USB_CE6230=m -CONFIG_SMS_SIANO_MDTV=m - -# -# Siano module components -# -# CONFIG_SMS_USB_DRV is not set -# CONFIG_SMS_SDIO_DRV is not set - -# -# Supported FlexCopII (B2C2) Adapters -# -CONFIG_DVB_B2C2_FLEXCOP=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set - -# -# Supported DVB Frontends -# -CONFIG_DVB_FE_CUSTOMISE=y - -# -# Customise DVB Frontends -# - -# -# Multistandard (satellite) frontends -# -CONFIG_DVB_STB0899=m -CONFIG_DVB_STB6100=m -CONFIG_DVB_STV090x=m -CONFIG_DVB_STV6110x=m - -# -# DVB-S (satellite) frontends -# -CONFIG_DVB_CX24110=m -CONFIG_DVB_CX24123=m -CONFIG_DVB_MT312=m -CONFIG_DVB_ZL10036=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_STV6110=m -CONFIG_DVB_STV0900=m -CONFIG_DVB_TDA8083=m -CONFIG_DVB_TDA10086=m -CONFIG_DVB_TDA8261=m -CONFIG_DVB_VES1X93=m -CONFIG_DVB_TUNER_ITD1000=m -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TUA6100=m -CONFIG_DVB_CX24116=m -CONFIG_DVB_SI21XX=m - -# -# DVB-T (terrestrial) frontends -# -CONFIG_DVB_SP8870=m -CONFIG_DVB_SP887X=m -CONFIG_DVB_CX22700=m -CONFIG_DVB_CX22702=m -CONFIG_DVB_DRX397XD=m -CONFIG_DVB_L64781=m -CONFIG_DVB_TDA1004X=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_MT352=m -CONFIG_DVB_ZL10353=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m -CONFIG_DVB_TDA10048=m -CONFIG_DVB_AF9013=m - -# -# DVB-C (cable) frontends -# -CONFIG_DVB_VES1820=m -CONFIG_DVB_TDA10021=m -CONFIG_DVB_TDA10023=m -CONFIG_DVB_STV0297=m - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# -CONFIG_DVB_NXT200X=m -CONFIG_DVB_OR51211=m -CONFIG_DVB_OR51132=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LGDT330X=m -CONFIG_DVB_LGDT3304=m -CONFIG_DVB_LGDT3305=m -CONFIG_DVB_S5H1409=m -CONFIG_DVB_AU8522=m -CONFIG_DVB_S5H1411=m - -# -# ISDB-T (terrestrial) frontends -# -CONFIG_DVB_S921=m - -# -# Digital terrestrial only tuners/PLL -# -CONFIG_DVB_PLL=m -CONFIG_DVB_TUNER_DIB0070=m - -# -# SEC control devices for DVB-S -# -CONFIG_DVB_LNBP21=m -CONFIG_DVB_ISL6405=m -CONFIG_DVB_ISL6421=m -CONFIG_DVB_ISL6423=m -CONFIG_DVB_LGS8GL5=m -CONFIG_DVB_LGS8GXX=m - -# -# Tools to develop new frontends -# -# CONFIG_DVB_DUMMY_FE is not set -CONFIG_DAB=y -CONFIG_USB_DABUSB=m - -# -# Graphics support -# -# CONFIG_VGASTATE is not set -# CONFIG_VIDEO_OUTPUT_CONTROL is not set -CONFIG_FB=y -# CONFIG_FIRMWARE_EDID is not set -# CONFIG_FB_DDC is not set -# CONFIG_FB_BOOT_VESA_SUPPORT is not set -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set -CONFIG_FB_SYS_FILLRECT=m -CONFIG_FB_SYS_COPYAREA=m -CONFIG_FB_SYS_IMAGEBLIT=m -# CONFIG_FB_FOREIGN_ENDIAN is not set -CONFIG_FB_SYS_FOPS=m -CONFIG_FB_DEFERRED_IO=y -# CONFIG_FB_SVGALIB is not set -# CONFIG_FB_MACMODES is not set -# CONFIG_FB_BACKLIGHT is not set -CONFIG_FB_MODE_HELPERS=y -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# -CONFIG_FB_MXC=y -CONFIG_FB_MXC_SYNC_PANEL=y -# CONFIG_FB_MXC_EPSON_VGA_SYNC_PANEL is not set -# CONFIG_FB_MXC_TVOUT_TVE is not set -# CONFIG_FB_MXC_LDB is not set -# CONFIG_FB_MXC_CLAA_WVGA_SYNC_PANEL is not set -CONFIG_FB_MXC_MTL017=y -# CONFIG_FB_MXC_CH7026 is not set -# CONFIG_FB_MXC_TVOUT_CH7024 is not set -# CONFIG_FB_MXC_ASYNC_PANEL is not set -# CONFIG_FB_MXC_ELCDIF_FB is not set -# CONFIG_FB_UVESA is not set -# CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FB_METRONOME is not set -# CONFIG_FB_MB862XX is not set -# CONFIG_FB_BROADSHEET is not set -CONFIG_BACKLIGHT_LCD_SUPPORT=y -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -# CONFIG_BACKLIGHT_GENERIC is not set -CONFIG_BACKLIGHT_PWM=y -# CONFIG_BACKLIGHT_MXC is not set - -# -# Display device support -# -# CONFIG_DISPLAY_SUPPORT is not set - -# -# Console display driver support -# -# CONFIG_VGA_CONSOLE is not set -CONFIG_DUMMY_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set -CONFIG_FONTS=y -# CONFIG_FONT_8x8 is not set -CONFIG_FONT_8x16=y -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_7x14 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set -# CONFIG_FONT_MINI_4x6 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_10x18 is not set -# CONFIG_LOGO is not set -CONFIG_SOUND=y -CONFIG_SOUND_OSS_CORE=y -CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -CONFIG_SND_HWDEP=m -CONFIG_SND_RAWMIDI=m -CONFIG_SND_JACK=y -CONFIG_SND_SEQUENCER=y -CONFIG_SND_SEQ_DUMMY=y -CONFIG_SND_OSSEMUL=y -CONFIG_SND_MIXER_OSS=y -CONFIG_SND_PCM_OSS=y -CONFIG_SND_PCM_OSS_PLUGINS=y -CONFIG_SND_SEQUENCER_OSS=y -CONFIG_SND_HRTIMER=y -CONFIG_SND_SEQ_HRTIMER_DEFAULT=y -CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_SUPPORT_OLD_API=y -CONFIG_SND_VERBOSE_PROCFS=y -# CONFIG_SND_VERBOSE_PRINTK is not set -# CONFIG_SND_DEBUG is not set -CONFIG_SND_RAWMIDI_SEQ=m -# CONFIG_SND_OPL3_LIB_SEQ is not set -# CONFIG_SND_OPL4_LIB_SEQ is not set -# CONFIG_SND_SBAWE_SEQ is not set -# CONFIG_SND_EMU10K1_SEQ is not set -CONFIG_SND_DRIVERS=y -# CONFIG_SND_DUMMY is not set -# CONFIG_SND_VIRMIDI is not set -# CONFIG_SND_MTPAV is not set -# CONFIG_SND_SERIAL_U16550 is not set -# CONFIG_SND_MPU401 is not set -CONFIG_SND_ARM=y -# CONFIG_SND_MXC_SPDIF is not set -# CONFIG_SND_SPI is not set -CONFIG_SND_USB=y -CONFIG_SND_USB_AUDIO=m -# CONFIG_SND_USB_CAIAQ is not set -CONFIG_SND_SOC=y -CONFIG_SND_MXC_SOC=y -CONFIG_SND_MXC_SOC_SSI=y -CONFIG_SND_MXC_SOC_IRAM=y -CONFIG_SND_SOC_IMX_3STACK_SGTL5000=y -# CONFIG_SND_SOC_IMX_3STACK_AK4647 is not set -# CONFIG_SND_SOC_IMX_3STACK_WM8580 is not set -# CONFIG_SND_SOC_IMX_3STACK_AK5702 is not set -# CONFIG_SND_SOC_IMX_3STACK_BLUETOOTH is not set -# CONFIG_SND_SOC_IMX_3STACK_CS42888 is not set -CONFIG_MXC_SSI_DUAL_FIFO=y -CONFIG_SND_SOC_I2C_AND_SPI=y -# CONFIG_SND_SOC_ALL_CODECS is not set -CONFIG_SND_SOC_SGTL5000=y -# CONFIG_SOUND_PRIME is not set -CONFIG_HID_SUPPORT=y -CONFIG_HID=m -# CONFIG_HID_DEBUG is not set -# CONFIG_HIDRAW is not set - -# -# USB Input Devices -# -CONFIG_USB_HID=m -# CONFIG_HID_PID is not set -# CONFIG_USB_HIDDEV is not set - -# -# USB HID Boot Protocol drivers -# -CONFIG_USB_KBD=m -CONFIG_USB_MOUSE=m - -# -# Special HID drivers -# -CONFIG_HID_A4TECH=m -CONFIG_HID_APPLE=m -CONFIG_HID_BELKIN=m -CONFIG_HID_CHERRY=m -CONFIG_HID_CHICONY=m -CONFIG_HID_CYPRESS=m -CONFIG_HID_DRAGONRISE=m -CONFIG_DRAGONRISE_FF=y -CONFIG_HID_EZKEY=m -CONFIG_HID_KYE=m -CONFIG_HID_GYRATION=m -CONFIG_HID_KENSINGTON=m -CONFIG_HID_LOGITECH=m -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_HID_MICROSOFT=m -CONFIG_HID_MONTEREY=m -CONFIG_HID_NTRIG=m -CONFIG_HID_PANTHERLORD=m -CONFIG_PANTHERLORD_FF=y -CONFIG_HID_PETALYNX=m -CONFIG_HID_SAMSUNG=m -CONFIG_HID_SONY=m -CONFIG_HID_SUNPLUS=m -CONFIG_HID_GREENASIA=m -CONFIG_GREENASIA_FF=y -CONFIG_HID_SMARTJOYPLUS=m -CONFIG_SMARTJOYPLUS_FF=y -CONFIG_HID_TOPSEED=m -CONFIG_HID_THRUSTMASTER=m -CONFIG_THRUSTMASTER_FF=y -CONFIG_HID_WACOM=m -CONFIG_HID_ZEROPLUS=m -CONFIG_ZEROPLUS_FF=y -CONFIG_USB_SUPPORT=y -CONFIG_USB_ARCH_HAS_HCD=y -# CONFIG_USB_ARCH_HAS_OHCI is not set -CONFIG_USB_ARCH_HAS_EHCI=y -CONFIG_USB=m -# CONFIG_USB_DEBUG is not set -# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set - -# -# Miscellaneous USB options -# -# CONFIG_USB_DEVICEFS is not set -# CONFIG_USB_DEVICE_CLASS is not set -CONFIG_USB_DYNAMIC_MINORS=y -CONFIG_USB_SUSPEND=y -# CONFIG_USB_OTG is not set -# CONFIG_USB_OTG_WHITELIST is not set -# CONFIG_USB_OTG_BLACKLIST_HUB is not set -CONFIG_USB_MON=m -# CONFIG_USB_WUSB is not set -# CONFIG_USB_WUSB_CBAF is not set - -# -# USB Host Controller Drivers -# -# CONFIG_USB_C67X00_HCD is not set -CONFIG_USB_EHCI_HCD=m -CONFIG_USB_EHCI_ARC=y -CONFIG_USB_EHCI_ARC_OTG=y -# CONFIG_USB_STATIC_IRAM is not set -# CONFIG_USB_EHCI_FSL_MC13783 is not set -# CONFIG_USB_EHCI_FSL_1301 is not set -# CONFIG_USB_EHCI_FSL_1504 is not set -CONFIG_USB_EHCI_FSL_UTMI=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -CONFIG_USB_EHCI_TT_NEWSCHED=y -# CONFIG_USB_OXU210HP_HCD is not set -# CONFIG_USB_ISP116X_HCD is not set -# CONFIG_USB_ISP1760_HCD is not set -# CONFIG_USB_SL811_HCD is not set -# CONFIG_USB_R8A66597_HCD is not set -# CONFIG_USB_HWA_HCD is not set - -# -# Enable Host or Gadget support to see Inventra options -# - -# -# USB Device Class drivers -# -CONFIG_USB_ACM=m -CONFIG_USB_PRINTER=m -CONFIG_USB_WDM=m -# CONFIG_USB_TMC is not set - -# -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may -# - -# -# also be needed; see USB_STORAGE Help for more info -# -CONFIG_USB_STORAGE=m -# CONFIG_USB_STORAGE_DEBUG is not set -CONFIG_USB_STORAGE_DATAFAB=m -CONFIG_USB_STORAGE_FREECOM=m -CONFIG_USB_STORAGE_ISD200=m -CONFIG_USB_STORAGE_USBAT=m -CONFIG_USB_STORAGE_SDDR09=m -CONFIG_USB_STORAGE_SDDR55=m -CONFIG_USB_STORAGE_JUMPSHOT=m -CONFIG_USB_STORAGE_ALAUDA=m -CONFIG_USB_STORAGE_ONETOUCH=m -CONFIG_USB_STORAGE_KARMA=m -CONFIG_USB_STORAGE_CYPRESS_ATACB=m -CONFIG_USB_LIBUSUAL=y - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set - -# -# USB port drivers -# -CONFIG_USB_SERIAL=m -CONFIG_USB_EZUSB=y -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_AIRCABLE=m -CONFIG_USB_SERIAL_ARK3116=m -CONFIG_USB_SERIAL_BELKIN=m -CONFIG_USB_SERIAL_CH341=m -CONFIG_USB_SERIAL_WHITEHEAT=m -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -CONFIG_USB_SERIAL_CP210X=m -CONFIG_USB_SERIAL_CYPRESS_M8=m -CONFIG_USB_SERIAL_EMPEG=m -CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_FUNSOFT=m -CONFIG_USB_SERIAL_VISOR=m -CONFIG_USB_SERIAL_IPAQ=m -CONFIG_USB_SERIAL_IR=m -CONFIG_USB_SERIAL_EDGEPORT=m -CONFIG_USB_SERIAL_EDGEPORT_TI=m -CONFIG_USB_SERIAL_GARMIN=m -CONFIG_USB_SERIAL_IPW=m -CONFIG_USB_SERIAL_IUU=m -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -CONFIG_USB_SERIAL_KLSI=m -CONFIG_USB_SERIAL_KOBIL_SCT=m -CONFIG_USB_SERIAL_MCT_U232=m -CONFIG_USB_SERIAL_MOS7720=m -CONFIG_USB_SERIAL_MOS7840=m -CONFIG_USB_SERIAL_MOTOROLA=m -CONFIG_USB_SERIAL_NAVMAN=m -CONFIG_USB_SERIAL_PL2303=m -CONFIG_USB_SERIAL_OTI6858=m -CONFIG_USB_SERIAL_QUALCOMM=m -CONFIG_USB_SERIAL_SPCP8X5=m -CONFIG_USB_SERIAL_HP4X=m -CONFIG_USB_SERIAL_SAFE=m -# CONFIG_USB_SERIAL_SAFE_PADDED is not set -CONFIG_USB_SERIAL_SIEMENS_MPI=m -CONFIG_USB_SERIAL_SIERRAWIRELESS=m -CONFIG_USB_SERIAL_SYMBOL=m -CONFIG_USB_SERIAL_TI=m -CONFIG_USB_SERIAL_CYBERJACK=m -CONFIG_USB_SERIAL_XIRCOM=m -CONFIG_USB_SERIAL_OPTION=m -CONFIG_USB_SERIAL_OMNINET=m -CONFIG_USB_SERIAL_OPTICON=m -# CONFIG_USB_SERIAL_DEBUG is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_EMI62 is not set -# CONFIG_USB_EMI26 is not set -# CONFIG_USB_ADUTUX is not set -# CONFIG_USB_SEVSEG is not set -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -CONFIG_USB_BERRY_CHARGE=m -# CONFIG_USB_LED is not set -# CONFIG_USB_CYPRESS_CY7C63 is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_IDMOUSE is not set -# CONFIG_USB_FTDI_ELAN is not set -CONFIG_USB_APPLEDISPLAY=m -CONFIG_USB_SISUSBVGA=m -CONFIG_USB_SISUSBVGA_CON=y -# CONFIG_USB_LD is not set -# CONFIG_USB_TRANCEVIBRATOR is not set -# CONFIG_USB_IOWARRIOR is not set -# CONFIG_USB_TEST is not set -# CONFIG_USB_ISIGHTFW is not set -# CONFIG_USB_VST is not set -# CONFIG_USB_ATM is not set -# CONFIG_USB_GADGET is not set - -# -# OTG and related infrastructure -# -CONFIG_USB_OTG_UTILS=y -# CONFIG_USB_GPIO_VBUS is not set -# CONFIG_NOP_USB_XCEIV is not set -CONFIG_MMC=y -# CONFIG_MMC_DEBUG is not set -CONFIG_MMC_UNSAFE_RESUME=y - -# -# MMC/SD/SDIO Card Drivers -# -CONFIG_MMC_BLOCK=y -CONFIG_MMC_BLOCK_BOUNCE=y -# CONFIG_SDIO_UART is not set -# CONFIG_MMC_TEST is not set - -# -# MMC/SD/SDIO Host Controller Drivers -# -# CONFIG_MMC_SDHCI is not set -# CONFIG_MMC_MXC is not set -# CONFIG_MMC_SPI is not set -CONFIG_MMC_IMX_ESDHCI=y -# CONFIG_MMC_IMX_ESDHCI_PIO_MODE is not set -# CONFIG_MEMSTICK is not set -# CONFIG_ACCESSIBILITY is not set -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y - -# -# LED drivers -# -# CONFIG_LEDS_PCA9532 is not set -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_GPIO_PLATFORM=y -# CONFIG_LEDS_LP3944 is not set -# CONFIG_LEDS_PCA955X is not set -# CONFIG_LEDS_DAC124S085 is not set -# CONFIG_LEDS_PWM is not set -# CONFIG_LEDS_BD2802 is not set - -# -# LED Triggers -# -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_IDE_DISK=y -# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set -# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set -CONFIG_LEDS_TRIGGER_GPIO=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_LEDS_TRIGGER_INPUT=y - -# -# iptables trigger is under Netfilter config (LED target) -# -CONFIG_RTC_LIB=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -# CONFIG_RTC_DEBUG is not set - -# -# RTC interfaces -# -CONFIG_RTC_INTF_SYSFS=y -CONFIG_RTC_INTF_PROC=y -CONFIG_RTC_INTF_DEV=y -CONFIG_RTC_INTF_DEV_UIE_EMUL=y -# CONFIG_RTC_DRV_TEST is not set - -# -# I2C RTC drivers -# -# CONFIG_RTC_DRV_DS1307 is not set -# CONFIG_RTC_DRV_DS1374 is not set -# CONFIG_RTC_DRV_DS1672 is not set -# CONFIG_RTC_DRV_MAX6900 is not set -# CONFIG_RTC_DRV_RS5C372 is not set -# CONFIG_RTC_DRV_ISL1208 is not set -# CONFIG_RTC_DRV_X1205 is not set -# CONFIG_RTC_DRV_PCF8563 is not set -# CONFIG_RTC_DRV_PCF8583 is not set -# CONFIG_RTC_DRV_M41T80 is not set -# CONFIG_RTC_DRV_S35390A is not set -# CONFIG_RTC_DRV_FM3130 is not set -# CONFIG_RTC_DRV_RX8581 is not set -# CONFIG_RTC_DRV_RX8025 is not set - -# -# SPI RTC drivers -# -# CONFIG_RTC_DRV_M41T94 is not set -# CONFIG_RTC_DRV_DS1305 is not set -# CONFIG_RTC_DRV_DS1390 is not set -# CONFIG_RTC_DRV_MAX6902 is not set -# CONFIG_RTC_DRV_R9701 is not set -# CONFIG_RTC_DRV_RS5C348 is not set -# CONFIG_RTC_DRV_DS3234 is not set - -# -# Platform RTC drivers -# -# CONFIG_RTC_DRV_CMOS is not set -# CONFIG_RTC_DRV_DS1286 is not set -# CONFIG_RTC_DRV_DS1511 is not set -# CONFIG_RTC_DRV_DS1553 is not set -# CONFIG_RTC_DRV_DS1742 is not set -# CONFIG_RTC_DRV_STK17TA8 is not set -# CONFIG_RTC_DRV_M48T86 is not set -# CONFIG_RTC_DRV_M48T35 is not set -# CONFIG_RTC_DRV_M48T59 is not set -# CONFIG_RTC_DRV_BQ4802 is not set -# CONFIG_RTC_DRV_V3020 is not set - -# -# on-CPU RTC drivers -# -# CONFIG_RTC_MXC is not set -# CONFIG_RTC_DRV_MXC_V2 is not set -# CONFIG_RTC_DRV_IMXDI is not set -CONFIG_RTC_MC13892=y -# CONFIG_DMADEVICES is not set -# CONFIG_AUXDISPLAY is not set -CONFIG_REGULATOR=y -# CONFIG_REGULATOR_DEBUG is not set -# CONFIG_REGULATOR_FIXED_VOLTAGE is not set -# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set -# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set -# CONFIG_REGULATOR_BQ24022 is not set -# CONFIG_REGULATOR_MAX1586 is not set -# CONFIG_REGULATOR_LP3971 is not set -CONFIG_REGULATOR_MC13892=y -# CONFIG_REGULATOR_MAX17135 is not set -# CONFIG_UIO is not set -CONFIG_STAGING=y -# CONFIG_STAGING_EXCLUDE_BUILD is not set -# CONFIG_MEILHAUS is not set -# CONFIG_USB_IP_COMMON is not set -# CONFIG_W35UND is not set -# CONFIG_PRISM2_USB is not set -# CONFIG_ECHO is not set -# CONFIG_USB_ATMEL is not set -# CONFIG_AGNX is not set -# CONFIG_OTUS is not set -CONFIG_RT2870=m -# CONFIG_COMEDI is not set -# CONFIG_ASUS_OLED is not set -# CONFIG_INPUT_MIMIO is not set -# CONFIG_TRANZPORT is not set - -# -# Android -# -CONFIG_ANDROID=y -CONFIG_ANDROID_BINDER_IPC=y -CONFIG_ANDROID_LOGGER=m -CONFIG_ANDROID_RAM_CONSOLE=y -CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y -# CONFIG_ANDROID_RAM_CONSOLE_ERROR_CORRECTION is not set -# CONFIG_ANDROID_RAM_CONSOLE_EARLY_INIT is not set -CONFIG_ANDROID_TIMED_OUTPUT=y -CONFIG_ANDROID_TIMED_GPIO=m -CONFIG_ANDROID_LOW_MEMORY_KILLER=y -# CONFIG_DST is not set -# CONFIG_POHMELFS is not set -# CONFIG_STLC45XX is not set -# CONFIG_PLAN9AUTH is not set -# CONFIG_LINE6_USB is not set -# CONFIG_USB_SERIAL_QUATECH2 is not set -# CONFIG_USB_CPC is not set -CONFIG_FB_UDL=m -CONFIG_RAMZSWAP=m -CONFIG_RAMZSWAP_STATS=y - -# -# MXC support drivers -# -CONFIG_MXC_IPU=y -CONFIG_MXC_IPU_V3=y - -# -# MXC SSI support -# -# CONFIG_MXC_SSI is not set - -# -# MXC Digital Audio Multiplexer support -# -# CONFIG_MXC_DAM is not set - -# -# MXC PMIC support -# -CONFIG_MXC_PMIC=y -# CONFIG_MXC_PMIC_MC13783 is not set -CONFIG_MXC_PMIC_MC13892=y -# CONFIG_MXC_PMIC_I2C is not set -CONFIG_MXC_PMIC_SPI=y -# CONFIG_MXC_PMIC_MC34704 is not set -# CONFIG_MXC_PMIC_MC9SDZ60 is not set -CONFIG_MXC_PMIC_CHARDEV=y - -# -# MXC PMIC Client Drivers -# -# CONFIG_MXC_MC13892_ADC is not set -CONFIG_MXC_MC13892_RTC=y -# CONFIG_MXC_MC13892_LIGHT is not set -# CONFIG_MXC_MC13892_BATTERY is not set -# CONFIG_MXC_MC13892_CONNECTIVITY is not set -CONFIG_MXC_MC13892_POWER=y -# CONFIG_MXC_PMIC_MC9S08DZ60 is not set - -# -# MXC Security Drivers -# -# CONFIG_MXC_SECURITY_SCC is not set -# CONFIG_MXC_SECURITY_SCC2 is not set -# CONFIG_MXC_SECURITY_RNG is not set - -# -# SAHARA2 Security Hardware Support -# -# CONFIG_MXC_SAHARA is not set - -# -# MXC MPEG4 Encoder Kernel module support -# -# CONFIG_MXC_HMP4E is not set - -# -# MXC HARDWARE EVENT -# -# CONFIG_MXC_HWEVENT is not set - -# -# MXC VPU(Video Processing Unit) support -# -CONFIG_MXC_VPU=y -# CONFIG_MXC_VPU_IRAM is not set -# CONFIG_MXC_VPU_DEBUG is not set - -# -# MXC Asynchronous Sample Rate Converter support -# - -# -# MXC Bluetooth support -# - -# -# Broadcom GPS ioctrl support -# -# CONFIG_GPS_IOCTRL is not set - -# -# MXC Media Local Bus Driver -# - -# -# i.MX ADC support -# -# CONFIG_IMX_ADC is not set - -# -# MXC GPU support -# -CONFIG_MXC_AMD_GPU=m - -# -# File systems -# -CONFIG_EXT2_FS=m -CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_POSIX_ACL=y -CONFIG_EXT2_FS_SECURITY=y -# CONFIG_EXT2_FS_XIP is not set -CONFIG_EXT3_FS=m -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set -CONFIG_EXT3_DEFAULTS_TO_BARRIERS_ENABLED=y -CONFIG_EXT3_FS_XATTR=y -CONFIG_EXT3_FS_POSIX_ACL=y -CONFIG_EXT3_FS_SECURITY=y -CONFIG_EXT4_FS=m -CONFIG_EXT4DEV_COMPAT=y -CONFIG_EXT4_FS_XATTR=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_JBD=m -# CONFIG_JBD_DEBUG is not set -CONFIG_JBD2=m -# CONFIG_JBD2_DEBUG is not set -CONFIG_FS_MBCACHE=m -# CONFIG_REISERFS_FS is not set -CONFIG_JFS_FS=m -CONFIG_JFS_POSIX_ACL=y -CONFIG_JFS_SECURITY=y -# CONFIG_JFS_DEBUG is not set -# CONFIG_JFS_STATISTICS is not set -CONFIG_FS_POSIX_ACL=y -CONFIG_XFS_FS=m -# CONFIG_XFS_QUOTA is not set -CONFIG_XFS_POSIX_ACL=y -# CONFIG_XFS_RT is not set -# CONFIG_XFS_DEBUG is not set -# CONFIG_GFS2_FS is not set -# CONFIG_OCFS2_FS is not set -# CONFIG_BTRFS_FS is not set -CONFIG_FILE_LOCKING=y -CONFIG_FSNOTIFY=y -CONFIG_DNOTIFY=y -CONFIG_INOTIFY=y -CONFIG_INOTIFY_USER=y -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -CONFIG_AUTOFS4_FS=m -CONFIG_FUSE_FS=m -CONFIG_CUSE=m -CONFIG_GENERIC_ACL=y - -# -# Caches -# -CONFIG_FSCACHE=m -# CONFIG_FSCACHE_STATS is not set -# CONFIG_FSCACHE_HISTOGRAM is not set -# CONFIG_FSCACHE_DEBUG is not set -CONFIG_CACHEFILES=m -# CONFIG_CACHEFILES_DEBUG is not set -# CONFIG_CACHEFILES_HISTOGRAM is not set - -# -# CD-ROM/DVD Filesystems -# -CONFIG_ISO9660_FS=m -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_UDF_FS=m -CONFIG_UDF_NLS=y - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=m -CONFIG_MSDOS_FS=m -CONFIG_VFAT_FS=m -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_PROC_SYSCTL=y -CONFIG_PROC_PAGE_MONITOR=y -CONFIG_SYSFS=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -# CONFIG_HUGETLB_PAGE is not set -CONFIG_CONFIGFS_FS=y -CONFIG_MISC_FILESYSTEMS=y -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -CONFIG_ECRYPT_FS=m -CONFIG_UNION_FS=m -CONFIG_UNION_FS_XATTR=y -# CONFIG_UNION_FS_DEBUG is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -CONFIG_SQUASHFS=y -# CONFIG_SQUASHFS_EMBEDDED is not set -CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 -# CONFIG_VXFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_OMFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set -# CONFIG_NILFS2_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y -CONFIG_NFS_FS=m -CONFIG_NFS_V3=y -CONFIG_NFS_V3_ACL=y -CONFIG_NFS_V4=y -CONFIG_NFS_V4_1=y -CONFIG_NFS_FSCACHE=y -CONFIG_NFSD=m -CONFIG_NFSD_V2_ACL=y -CONFIG_NFSD_V3=y -CONFIG_NFSD_V3_ACL=y -CONFIG_NFSD_V4=y -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -CONFIG_EXPORTFS=m -CONFIG_NFS_ACL_SUPPORT=m -CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=m -CONFIG_SUNRPC_GSS=m -CONFIG_RPCSEC_GSS_KRB5=m -# CONFIG_RPCSEC_GSS_SPKM3 is not set -# CONFIG_SMB_FS is not set -CONFIG_CIFS=m -# CONFIG_CIFS_STATS is not set -CONFIG_CIFS_WEAK_PW_HASH=y -# CONFIG_CIFS_UPCALL is not set -# CONFIG_CIFS_XATTR is not set -# CONFIG_CIFS_DEBUG2 is not set -# CONFIG_CIFS_DFS_UPCALL is not set -# CONFIG_CIFS_EXPERIMENTAL is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -CONFIG_AMIGA_PARTITION=y -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_KARMA_PARTITION is not set -CONFIG_EFI_PARTITION=y -# CONFIG_SYSV68_PARTITION is not set -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=y -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -CONFIG_NLS_ISO8859_15=y -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -CONFIG_NLS_UTF8=y -# CONFIG_DLM is not set - -# -# Kernel hacking -# -CONFIG_PRINTK_TIME=y -CONFIG_ENABLE_WARN_DEPRECATED=y -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_FRAME_WARN=1024 -CONFIG_MAGIC_SYSRQ=y -# CONFIG_UNUSED_SYMBOLS is not set -CONFIG_DEBUG_FS=y -# CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SHIRQ is not set -CONFIG_DETECT_SOFTLOCKUP=y -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 -CONFIG_DETECT_HUNG_TASK=y -# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 -CONFIG_SCHED_DEBUG=y -CONFIG_SCHEDSTATS=y -CONFIG_TIMER_STATS=y -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_DEBUG_KMEMLEAK is not set -CONFIG_DEBUG_PREEMPT=y -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_RT_MUTEX_TESTER is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -CONFIG_STACKTRACE=y -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_VM is not set -# CONFIG_DEBUG_WRITECOUNT is not set -# CONFIG_DEBUG_MEMORY_INIT is not set -# CONFIG_DEBUG_LIST is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_NOTIFIERS is not set -CONFIG_FRAME_POINTER=y -# CONFIG_BOOT_PRINTK_DELAY is not set -# CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_RCU_CPU_STALL_DETECTOR is not set -# CONFIG_BACKTRACE_SELF_TEST is not set -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -# CONFIG_FAULT_INJECTION is not set -CONFIG_LATENCYTOP=y -CONFIG_SYSCTL_SYSCALL_CHECK=y -# CONFIG_PAGE_POISONING is not set -CONFIG_NOP_TRACER=y -CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_RING_BUFFER=y -CONFIG_EVENT_TRACING=y -CONFIG_CONTEXT_SWITCH_TRACER=y -CONFIG_TRACING=y -CONFIG_TRACING_SUPPORT=y -CONFIG_FTRACE=y -# CONFIG_FUNCTION_TRACER is not set -# CONFIG_IRQSOFF_TRACER is not set -# CONFIG_PREEMPT_TRACER is not set -# CONFIG_SCHED_TRACER is not set -# CONFIG_ENABLE_DEFAULT_TRACERS is not set -# CONFIG_BOOT_TRACER is not set -CONFIG_BRANCH_PROFILE_NONE=y -# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set -# CONFIG_PROFILE_ALL_BRANCHES is not set -# CONFIG_STACK_TRACER is not set -# CONFIG_KMEMTRACE is not set -# CONFIG_WORKQUEUE_TRACER is not set -# CONFIG_BLK_DEV_IO_TRACE is not set -# CONFIG_RING_BUFFER_BENCHMARK is not set -# CONFIG_DYNAMIC_DEBUG is not set -# CONFIG_SAMPLES is not set -CONFIG_HAVE_ARCH_KGDB=y -CONFIG_KGDB=y -CONFIG_KGDB_SERIAL_CONSOLE=y -# CONFIG_KGDB_TESTS is not set -CONFIG_ARM_UNWIND=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_ERRORS is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_LL is not set - -# -# Security options -# -CONFIG_KEYS=y -# CONFIG_KEYS_DEBUG_PROC_KEYS is not set -# CONFIG_SECURITY is not set -# CONFIG_SECURITYFS is not set -CONFIG_SECURITY_FILE_CAPABILITIES=y -CONFIG_XOR_BLOCKS=m -CONFIG_ASYNC_CORE=m -CONFIG_ASYNC_MEMCPY=m -CONFIG_ASYNC_XOR=m -CONFIG_CRYPTO=y - -# -# Crypto core or helper -# -CONFIG_CRYPTO_FIPS=y -CONFIG_CRYPTO_ALGAPI=y -CONFIG_CRYPTO_ALGAPI2=y -CONFIG_CRYPTO_AEAD=m -CONFIG_CRYPTO_AEAD2=y -CONFIG_CRYPTO_BLKCIPHER=y -CONFIG_CRYPTO_BLKCIPHER2=y -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_RNG=m -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_PCOMP=m -CONFIG_CRYPTO_PCOMP2=y -CONFIG_CRYPTO_MANAGER=y -CONFIG_CRYPTO_MANAGER2=y -CONFIG_CRYPTO_GF128MUL=m -CONFIG_CRYPTO_NULL=m -CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_CRYPTO_CRYPTD=m -CONFIG_CRYPTO_AUTHENC=m -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_CRYPTODEV=m - -# -# Authenticated Encryption with Associated Data -# -CONFIG_CRYPTO_CCM=m -CONFIG_CRYPTO_GCM=m -CONFIG_CRYPTO_SEQIV=m - -# -# Block modes -# -CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_CTR=m -CONFIG_CRYPTO_CTS=m -CONFIG_CRYPTO_ECB=y -CONFIG_CRYPTO_LRW=m -CONFIG_CRYPTO_PCBC=m -CONFIG_CRYPTO_XTS=m - -# -# Hash modes -# -CONFIG_CRYPTO_HMAC=m -CONFIG_CRYPTO_XCBC=m - -# -# Digest -# -CONFIG_CRYPTO_CRC32C=m -CONFIG_CRYPTO_MD4=m -CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_MICHAEL_MIC=y -CONFIG_CRYPTO_RMD128=m -CONFIG_CRYPTO_RMD160=m -CONFIG_CRYPTO_RMD256=m -CONFIG_CRYPTO_RMD320=m -CONFIG_CRYPTO_SHA1=m -CONFIG_CRYPTO_SHA256=m -CONFIG_CRYPTO_SHA512=m -CONFIG_CRYPTO_TGR192=m -CONFIG_CRYPTO_WP512=m - -# -# Ciphers -# -CONFIG_CRYPTO_AES=y -CONFIG_CRYPTO_ANUBIS=m -CONFIG_CRYPTO_ARC4=y -CONFIG_CRYPTO_BLOWFISH=m -CONFIG_CRYPTO_CAMELLIA=m -CONFIG_CRYPTO_CAST5=m -CONFIG_CRYPTO_CAST6=m -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_FCRYPT=m -CONFIG_CRYPTO_KHAZAD=m -CONFIG_CRYPTO_SALSA20=m -CONFIG_CRYPTO_SEED=m -CONFIG_CRYPTO_SERPENT=m -CONFIG_CRYPTO_TEA=m -CONFIG_CRYPTO_TWOFISH=m -CONFIG_CRYPTO_TWOFISH_COMMON=m - -# -# Compression -# -CONFIG_CRYPTO_DEFLATE=m -CONFIG_CRYPTO_ZLIB=m -CONFIG_CRYPTO_LZO=m - -# -# Random Number Generation -# -CONFIG_CRYPTO_ANSI_CPRNG=m -CONFIG_CRYPTO_HW=y -CONFIG_BINARY_PRINTF=y - -# -# Library routines -# -CONFIG_BITREVERSE=y -CONFIG_GENERIC_FIND_LAST_BIT=y -CONFIG_CRC_CCITT=y -CONFIG_CRC16=y -CONFIG_CRC_T10DIF=y -CONFIG_CRC_ITU_T=y -CONFIG_CRC32=y -CONFIG_CRC7=m -CONFIG_LIBCRC32C=m -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=m -CONFIG_LZO_COMPRESS=m -CONFIG_LZO_DECOMPRESS=m -CONFIG_DECOMPRESS_GZIP=y -CONFIG_DECOMPRESS_BZIP2=y -CONFIG_DECOMPRESS_LZMA=y -CONFIG_GENERIC_ALLOCATOR=y -CONFIG_TEXTSEARCH=y -CONFIG_TEXTSEARCH_KMP=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT=y -CONFIG_HAS_DMA=y -CONFIG_NLATTR=y diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig index 88b550bd955..7e538c2cabc 100644 --- a/arch/arm/mach-mx5/Kconfig +++ b/arch/arm/mach-mx5/Kconfig @@ -41,17 +41,15 @@ config MACH_MX51_BABBAGE Include support for MX51 Babbage platform. This includes specific configurations for the board and its peripherals. -config MACH_MX51_EFIKAMX - bool "Support Genesi Efika MX Smarttop" - select ARCH_MX51 - help - Include support for Genesi Efika MX Smarttop. - config MACH_MX51_EFIKASB - bool "Support Genesi Efika MX Smartbook" - select ARCH_MX51 - help - Include support for Genesi Efika MX Smartbook. + bool + +config MACH_MX51_EFIKAMX + bool "Support Genesi Efika MX Platforms (Smarttop and Smartbook)" + select ARCH_MX51 + select MACH_MX51_EFIKASB + help + Include support for Genesi Efika MX Platforms. config MACH_MX53_EVK bool "Support MX53 EVK platform" diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile index 91f0a58205a..e92a644f42d 100644 --- a/arch/arm/mach-mx5/Makefile +++ b/arch/arm/mach-mx5/Makefile @@ -17,14 +17,13 @@ obj-$(CONFIG_MACH_MX51_BABBAGE) += mx51_babbage.o mx51_babbage_gpio.o mx51_babba obj-$(CONFIG_MACH_MX53_EVK) += mx53_evk.o mx53_evk_gpio.o mx53_evk_pmic_mc13892.o obj-$(CONFIG_MACH_MX50_ARM2) += mx50_arm2.o mx50_arm2_gpio.o mx50_arm2_pmic_mc13892.o -obj-$(CONFIG_MACH_MX51_EFIKAMX) += mx51_efikamx.o mx51_efikamx_io.o mx51_efikamx_cpu.o \ - mx51_efikamx_uart.o mx51_efikamx_usb.o mx51_efikamx_i2c.o \ - mx51_efikamx_spi.o mx51_efikamx_nor.o mx51_efikamx_pmic.o \ - mx51_efikamx_mmc.o mx51_efikamx_ata.o mx51_efikamx_powerkey.o \ - mx51_efikamx_audio.o mx51_efikamx_display.o early_setup.o -obj-$(CONFIG_MACH_MX51_EFIKASB) += mx51_efikasb.o mx51_efikasb_gpio.o mx51_efikamx_cpu.o mx51_efikasb_pmic.o \ - mx51_efikasb_switch.o mx51_efikasb_lid.o \ - mx51_efikamx_audio.o mx51_efikamx_ata.o mx51_efikamx_mmc.o \ - mx51_efikamx_uart.o mx51_efikasb_leds.o mx51_efikamx_spi.o \ - mx51_efikamx_nor.o mx51_efikamx_display.o mx51_efikamx_i2c.o \ - mx51_efikasb_battery.o mx51_efikasb_wwan.o early_setup.o +obj-$(CONFIG_MACH_MX51_EFIKAMX) += mx51_efikamx.o \ + mx51_efikamx_cpu.o mx51_efikamx_uart.o \ + mx51_efikamx_i2c.o mx51_efikamx_spi.o \ + mx51_efikamx_nor.o mx51_efikamx_pmic.o \ + mx51_efikamx_mmc.o mx51_efikamx_ata.o \ + mx51_efikamx_input.o mx51_efikamx_leds.o \ + mx51_efikamx_audio.o mx51_efikamx_display.o \ + mx51_efikamx_wwan.o mx51_efikamx_usb.o \ + mx51_efikamx_battery.o \ + early_setup.o diff --git a/arch/arm/mach-mx5/mx51_efikamx.c b/arch/arm/mach-mx5/mx51_efikamx.c index d86f21b8fe3..0748c65303e 100644 --- a/arch/arm/mach-mx5/mx51_efikamx.c +++ b/arch/arm/mach-mx5/mx51_efikamx.c @@ -1,7 +1,7 @@ /* * Copyright 2009-2010 Freescale Semiconductor, Inc. All Rights Reserved. * Copyright 2009-2010 Pegatron Corporation. All Rights Reserved. - * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved. + * Copyright 2009-2011 Genesi USA, Inc. All Rights Reserved. */ /* @@ -13,17 +13,20 @@ * http://www.gnu.org/copyleft/gpl.html */ +#include #include #include #include #include #include #include +#include #include #include #include #include #include +#include #include #include #include @@ -54,7 +57,173 @@ #include "mx51_efikamx.h" -extern struct resource mxcfb_resources[]; +int mx51_efikamx_id = 0; /* can't get less than 1.0 */ +int mx51_efikamx_mem = 0; + +char *mx51_efikasb_memory_types[3] = { + "Nanya DDR2", + "Hynix DDR2", + "Micron DDR2", +}; + +#define EFIKAMX_PCBID0 MX51_PIN_NANDF_CS0 +#define EFIKAMX_PCBID1 MX51_PIN_NANDF_CS1 +#define EFIKAMX_PCBID2 MX51_PIN_NANDF_RB3 + +static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_id_iomux_pins[] = { + /* Note the 100K pullups. These are being driven low by the different revisions */ + { EFIKAMX_PCBID0, IOMUX_CONFIG_GPIO, PAD_CTL_100K_PU, }, + { EFIKAMX_PCBID1, IOMUX_CONFIG_GPIO, PAD_CTL_100K_PU, }, + { EFIKAMX_PCBID2, IOMUX_CONFIG_GPIO, PAD_CTL_100K_PU, }, +}; + +#define EFIKASB_MEMID0 MX51_PIN_EIM_LBA +#define EFIKASB_MEMID1 MX51_PIN_EIM_CRE +#define EFIKASB_PCBID0 MX51_PIN_EIM_CS3 +#define EFIKASB_PCBID1 MX51_PIN_EIM_CS4 + +static struct mxc_iomux_pin_cfg __initdata mx51_efikasb_id_iomux_pins[] = { + { EFIKASB_PCBID0, IOMUX_CONFIG_GPIO, }, + { EFIKASB_PCBID1, IOMUX_CONFIG_GPIO, }, + { EFIKASB_MEMID0, IOMUX_CONFIG_GPIO, }, + { EFIKASB_MEMID1, IOMUX_CONFIG_GPIO, }, +}; + + +/* + EIM A16 CKIH_FREQ_SEL[0] + EIM A17 CKIH_FREQ_SEL[1] + EIM A18 BT_LPB[0] + EIM A19 BT_LPB[1] + EIM A20 BT_UART_SRC[0] + EIM A21 BT_UART_SRC[1] + EIM A22 TBD3 ??? + EIM A23 BT_HPN_EN + + EIM LBA (GPIO3_1) DI1_PIN12 + EIM CRE (GPIO3_2) DI1_PIN13 - Test Point (1.2+), WDOG (1.0, 1.1) + + DI_GP4 DISP2_DRDY_CPU +*/ + +static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_general_iomux_pins[] = { + { MX51_PIN_EIM_A18, IOMUX_CONFIG_GPIO, }, + { MX51_PIN_EIM_A19, IOMUX_CONFIG_GPIO, }, + { MX51_PIN_EIM_A20, IOMUX_CONFIG_GPIO, (PAD_CTL_PKE_ENABLE), }, + { MX51_PIN_EIM_A21, IOMUX_CONFIG_GPIO, }, + { MX51_PIN_EIM_LBA, IOMUX_CONFIG_GPIO, }, + { MX51_PIN_EIM_CRE, IOMUX_CONFIG_GPIO, }, + { MX51_PIN_DI_GP4, IOMUX_CONFIG_ALT4, }, +}; + +static struct mxc_iomux_pin_cfg __initdata mx51_efikasb_general_iomux_pins[] = { + /* ron: GPIO2_24 CPU 22.5792M OSC enable */ + { MX51_PIN_EIM_OE, IOMUX_CONFIG_ALT1, (PAD_CTL_HYS_ENABLE | PAD_CTL_PKE_ENABLE), }, +}; + + + + + +int mx51_efikamx_revision(void) +{ + if (machine_is_mx51_efikamx()) { + return(mx51_efikamx_id & 0xf); + } else if (machine_is_mx51_efikasb()) { + return(mx51_efikamx_id); + } + return 0; +} + +char *mx51_efikamx_memory(void) +{ + return(mx51_efikasb_memory_types[mx51_efikamx_mem]); +} + + +void mx51_efikamx_board_id(void) +{ + if (machine_is_mx51_efikamx()) { + int pcbid[3]; + + mx51_efikamx_id = 0x10; /* can't get less than 1.0 */ + + /* NOTE: + IOMUX settings have to settle so run the iomux setup long before this + function has to otherwise it will give freakish results. + */ + gpio_request(IOMUX_TO_GPIO(EFIKAMX_PCBID0), "efikamx:pcbid0"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKAMX_PCBID0)); + pcbid[0] = gpio_get_value(IOMUX_TO_GPIO(EFIKAMX_PCBID0)); + + gpio_request(IOMUX_TO_GPIO(EFIKAMX_PCBID1), "efikamx:pcbid1"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKAMX_PCBID1)); + pcbid[1] = gpio_get_value(IOMUX_TO_GPIO(EFIKAMX_PCBID1)); + + gpio_request(IOMUX_TO_GPIO(EFIKAMX_PCBID2), "efikamx:pcbid2"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKAMX_PCBID2)); + pcbid[2] = gpio_get_value(IOMUX_TO_GPIO(EFIKAMX_PCBID2)); + + /* + * PCBID2 PCBID1 PCBID0 STATE + * 1 1 1 ER1:rev1.1 + * 1 1 0 ER2:rev1.2 + * 1 0 1 ER3:rev1.3 + * 1 0 0 ER4:rev1.4 + */ + if (pcbid[2] == 1) { + if (pcbid[1] == 1) { + if (pcbid[0] == 1) { + mx51_efikamx_id = 0x11; + } else { + mx51_efikamx_id = 0x12; + } + } else { + if (pcbid[0] == 1) { + mx51_efikamx_id = 0x13; + } else { + mx51_efikamx_id = 0x14; + } + } + } + + if ( (mx51_efikamx_id == 0x10) || /* "developer edition" */ + (mx51_efikamx_id == 0x12) || /* unreleased, broken PATA */ + (mx51_efikamx_id == 0x14) ) { /* unreleased.. */ + DBG(("PCB Identification Error!\n")); + DBG(("Unsupported board revision 1.%u - USE AT YOUR OWN RISK!\n", + mx51_efikamx_revision() )); + } + } else if (machine_is_mx51_efikasb()) { + int pcbid[2], memid[2]; + + gpio_request(IOMUX_TO_GPIO(EFIKASB_MEMID0), "efikasb:memid0"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_MEMID0)); + memid[0] = gpio_get_value(IOMUX_TO_GPIO(EFIKASB_MEMID0)); + + gpio_request(IOMUX_TO_GPIO(EFIKASB_MEMID1), "efikasb:memid1"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_MEMID1)); + memid[1] = gpio_get_value(IOMUX_TO_GPIO(EFIKASB_MEMID1)); + + gpio_request(IOMUX_TO_GPIO(EFIKASB_PCBID0), "efikasb:pcbid0"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_PCBID0)); + pcbid[0] = gpio_get_value(IOMUX_TO_GPIO(EFIKASB_PCBID0)); + + gpio_request(IOMUX_TO_GPIO(EFIKASB_PCBID1), "efikasb:pcbid1"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_PCBID1)); + pcbid[1] = gpio_get_value(IOMUX_TO_GPIO(EFIKASB_PCBID1)); + + /* + * PCBID1 PCBID0 STATE + * 0 1 TO2: Revision 1.3 + * 1 0 TO3: Revision 2.0 + */ + + /* gives us 0x1 or 0x2 */ + mx51_efikamx_id = pcbid[0] | (pcbid[1] << 1); + mx51_efikamx_mem = memid[0] | (memid[1] << 1); + } +} static void __init mx51_efikamx_board_init(void) @@ -62,15 +231,57 @@ static void __init mx51_efikamx_board_init(void) mxc_cpu_common_init(); mxc_register_gpios(); - mx51_efikamx_io_init(); + CONFIG_IOMUX(mx51_efikamx_general_iomux_pins); + + /* do ID pins first! */ + if (machine_is_mx51_efikamx()) { + CONFIG_IOMUX(mx51_efikamx_id_iomux_pins); + } else if (machine_is_mx51_efikasb()) { + CONFIG_IOMUX(mx51_efikasb_id_iomux_pins); + CONFIG_IOMUX(mx51_efikasb_general_iomux_pins); + } + + /* common platform configuration for all boards */ + mx51_efikamx_init_uart(); + mx51_efikamx_init_soc(); + mx51_efikamx_init_nor(); + mx51_efikamx_init_spi(); + mx51_efikamx_init_i2c(); + mx51_efikamx_init_pata(); + + /* we do board id late because it takes time to settle */ + mx51_efikamx_board_id(); + + /* these all depend on board id */ + mx51_efikamx_init_display(); + mx51_efikamx_init_audio(); + mx51_efikamx_init_pmic(); + mx51_efikamx_init_mmc(); + mx51_efikamx_init_input(); + mx51_efikamx_init_leds(); + mx51_efikamx_init_usb(); pm_power_off = mx51_efikamx_power_off; - printk(KERN_INFO "Efika MX Revision 1.%u", mx51_efikamx_revision()); + if (machine_is_mx51_efikamx()) { + mxc_free_iomux(MX51_PIN_GPIO1_2, IOMUX_CONFIG_ALT2); + mxc_free_iomux(MX51_PIN_GPIO1_3, IOMUX_CONFIG_ALT2); + mxc_free_iomux(MX51_PIN_EIM_LBA, IOMUX_CONFIG_GPIO); + + DBG(("Smarttop Revision 1.%u", mx51_efikamx_revision() )); + } else if (machine_is_mx51_efikasb()) { + mx51_efikamx_init_wwan(); + mx51_efikamx_init_battery(); + + /* dastardly code to give us 1.3 or 2.0 out of "1" or "2" */ + DBG(("Smartbook Revision %u.%u\n", + mx51_efikamx_revision(), + ((mx51_efikamx_revision() == 1) ? 3 : 0) )); + DBG(("Memory type %s\n", mx51_efikamx_memory() )); + } } - - +/* is in mx51_efikamx_cpu.c */ static struct sys_timer mx51_efikamx_timer = { .init = mx51_efikamx_timer_init, }; @@ -146,3 +357,12 @@ MACHINE_START(MX51_EFIKAMX, "Genesi Efika MX (Smarttop)") .init_machine = mx51_efikamx_board_init, .timer = &mx51_efikamx_timer, MACHINE_END + +MACHINE_START(MX51_EFIKASB, "Genesi Efika MX (Smartbook)") + /* Maintainer: Genesi, Inc. */ + .fixup = mx51_efikamx_fixup, + .map_io = mx5_map_io, + .init_irq = mx5_init_irq, + .init_machine = mx51_efikamx_board_init, + .timer = &mx51_efikamx_timer, +MACHINE_END diff --git a/arch/arm/mach-mx5/mx51_efikamx.h b/arch/arm/mach-mx5/mx51_efikamx.h index 25c6f3ed3c3..e868e89ff02 100644 --- a/arch/arm/mach-mx5/mx51_efikamx.h +++ b/arch/arm/mach-mx5/mx51_efikamx.h @@ -27,19 +27,23 @@ extern void __init mx51_efikamx_init_leds(void); extern void __init mx51_efikamx_init_power_key(void); extern void __init mx51_efikamx_init_spi(void); extern void __init mx51_efikamx_init_i2c(void); -extern void __init mx51_efikamx_init_i2c2(void); extern void __init mx51_efikamx_init_nor(void); extern void __init mx51_efikamx_init_display(void); extern void __init mx51_efikamx_init_audio(void); extern void __init mx51_efikamx_init_usb(void); extern void __init mx51_efikamx_init_pata(void); extern void __init mx51_efikamx_init_usb(void); +extern void __init mx51_efikamx_init_input(void); +extern void __init mx51_efikamx_init_leds(void); +extern void __init mx51_efikamx_init_wwan(void); extern int __init mx51_efikamx_init_pmic(void); extern void __init mx51_efikamx_init_soc(void); +extern void __init mx51_efikamx_init_battery(void); /* io */ extern void mx51_efikamx_board_id(void); extern int mx51_efikamx_revision(void); +extern char *mx51_efikamx_memory(void); /* cpu */ extern struct cpu_wp *(*get_cpu_wp)(int *wp); @@ -70,10 +74,11 @@ extern void mx51_efikamx_power_off(void); extern void mx51_efikamx_display_adjust_mem(int gpu_start, int gpu_mem, int fb_mem); #define DBG(x) { printk(KERN_INFO "Efika MX: "); printk x ; } -// also valid values: 125000 (leaves some bandwdith), 133333 (IPU max on MX51) -// arbitrarily chosen to be 117MHz just because I heard someone at Freescale -// mention this as the best value to leave enough for the VPU and so on.. -#define PIXCLK_LIMIT KHZ2PICOS(117000) -#define MXCFB_DEFAULT_BPP 16 +extern void mx51_efikamx_wifi_power(int state); +extern void mx51_efikamx_wifi_reset(void); +extern void mx51_efikamx_bluetooth_power(int state); +extern void mx51_efikamx_camera_power(int state); +extern void mx51_efikamx_wwan_power(int state); + #endif /* __MX51_EFIKAMX_H__ */ diff --git a/arch/arm/mach-mx5/mx51_efikasb_battery.c b/arch/arm/mach-mx5/mx51_efikamx_battery.c similarity index 51% rename from arch/arm/mach-mx5/mx51_efikasb_battery.c rename to arch/arm/mach-mx5/mx51_efikamx_battery.c index de04dce1610..cbf5f708c5e 100644 --- a/arch/arm/mach-mx5/mx51_efikasb_battery.c +++ b/arch/arm/mach-mx5/mx51_efikamx_battery.c @@ -1,11 +1,9 @@ /* * Copyright 2009-2010 Pegatron Corporation. All Rights Reserved. - * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved. + * Copyright 2009-2011 Genesi USA, Inc. All Rights Reserved. */ - - #include #include #include @@ -14,17 +12,19 @@ #include #include #include +#include +#include -#include "mx51_efikasb.h" #include "mx51_pins.h" #include "iomux.h" +#include "mx51_efikamx.h" #define EFIKASB_BATTERY_LOW MX51_PIN_DI1_PIN11 #define EFIKASB_BATTERY_INSERT MX51_PIN_DISPB2_SER_DIO #define EFIKASB_AC_INSERT MX51_PIN_DI1_D0_CS -static struct mxc_iomux_pin_cfg mx51_efikasb_battery_pins[] = { +static struct mxc_iomux_pin_cfg mx51_efikamx_battery_pins[] = { { EFIKASB_BATTERY_INSERT, IOMUX_CONFIG_GPIO, }, { EFIKASB_BATTERY_LOW, IOMUX_CONFIG_GPIO | IOMUX_CONFIG_SION, }, { EFIKASB_AC_INSERT, IOMUX_CONFIG_GPIO | IOMUX_CONFIG_SION, @@ -34,13 +34,13 @@ static struct mxc_iomux_pin_cfg mx51_efikasb_battery_pins[] = { -enum mxc_power_resource { +enum power_resource_index { MAINS_INSERTION_STATUS, BATTERY_INSERTION_STATUS, BATTERY_ALERT, }; -static struct resource mxc_power_resources[] = { +static struct resource mx51_efikamx_power_resources[] = { [MAINS_INSERTION_STATUS] = { .start = IOMUX_TO_IRQ(EFIKASB_AC_INSERT), .end = IOMUX_TO_IRQ(EFIKASB_AC_INSERT), @@ -61,51 +61,53 @@ static struct resource mxc_power_resources[] = { }, }; -int mx51_efikasb_battery_status(void) +int mx51_efikamx_battery_status(void) { return !gpio_get_value(IOMUX_TO_GPIO(EFIKASB_BATTERY_INSERT)); } -int mx51_efikasb_battery_alarm(void) +int mx51_efikamx_battery_alarm(void) { return !gpio_get_value(IOMUX_TO_GPIO(EFIKASB_BATTERY_LOW)); } -int mx51_efikasb_ac_status(void) +int mx51_efikamx_ac_status(void) { return !gpio_get_value(IOMUX_TO_GPIO(EFIKASB_AC_INSERT)); } -static struct sbs_platform_data mx51_efikasb_sbs_platform_data = { - .mains_insertion_status = mx51_efikasb_ac_status, - .battery_insertion_status = mx51_efikasb_battery_status, +static struct sbs_platform_data mx51_efikamx_sbs_platform_data = { + .mains_insertion_status = mx51_efikamx_ac_status, + .battery_insertion_status = mx51_efikamx_battery_status, - .battery_alert = &mxc_power_resources[BATTERY_ALERT], + .battery_alert = &mx51_efikamx_power_resources[BATTERY_ALERT], - .mains_presence_changed = &mxc_power_resources[MAINS_INSERTION_STATUS], - .battery_presence_changed = &mxc_power_resources[BATTERY_INSERTION_STATUS], + .mains_presence_changed = &mx51_efikamx_power_resources[MAINS_INSERTION_STATUS], + .battery_presence_changed = &mx51_efikamx_power_resources[BATTERY_INSERTION_STATUS], }; -static struct i2c_board_info mx51_efikasb_i2c_battery __initdata = { +static struct i2c_board_info mx51_efikamx_i2c_battery __initdata = { .type = "smart-battery", .addr = 0x0b, - .platform_data = &mx51_efikasb_sbs_platform_data, + .platform_data = &mx51_efikamx_sbs_platform_data, }; -void __init mx51_efikasb_init_battery(void) +void __init mx51_efikamx_init_battery(void) { - CONFIG_IOMUX(mx51_efikasb_battery_pins); + if (machine_is_mx51_efikasb()) { + CONFIG_IOMUX(mx51_efikamx_battery_pins); - gpio_request(IOMUX_TO_GPIO(EFIKASB_BATTERY_INSERT), "battery:insert"); - gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_BATTERY_INSERT)); + gpio_request(IOMUX_TO_GPIO(EFIKASB_BATTERY_INSERT), "battery:insert"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_BATTERY_INSERT)); - gpio_request(IOMUX_TO_GPIO(EFIKASB_BATTERY_LOW), "battery:alarm"); - gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_BATTERY_LOW)); + gpio_request(IOMUX_TO_GPIO(EFIKASB_BATTERY_LOW), "battery:alarm"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_BATTERY_LOW)); - /* ron: IOMUXC_GPIO3_IPP_IND_G_IN_3_SELECT_INPUT: 1: Selecting Pad DI1_D0_CS for Mode:ALT4 */ - __raw_writel(0x01, IO_ADDRESS(IOMUXC_BASE_ADDR) + 0x980); - gpio_request(IOMUX_TO_GPIO(EFIKASB_AC_INSERT), "battery:ac"); - gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_AC_INSERT)); + /* ron: IOMUXC_GPIO3_IPP_IND_G_IN_3_SELECT_INPUT: 1: Selecting Pad DI1_D0_CS for Mode:ALT4 */ + __raw_writel(0x01, IO_ADDRESS(IOMUXC_BASE_ADDR) + 0x980); + gpio_request(IOMUX_TO_GPIO(EFIKASB_AC_INSERT), "battery:ac"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_AC_INSERT)); - i2c_register_board_info(1, &mx51_efikasb_i2c_battery, 1); + i2c_register_board_info(1, &mx51_efikamx_i2c_battery, 1); + } } diff --git a/arch/arm/mach-mx5/mx51_efikamx_input.c b/arch/arm/mach-mx5/mx51_efikamx_input.c new file mode 100644 index 00000000000..dd61a87ee76 --- /dev/null +++ b/arch/arm/mach-mx5/mx51_efikamx_input.c @@ -0,0 +1,221 @@ +/* + * Copyright 2009 Pegatron Corporation. All Rights Reserved. + * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved. + */ + +/* + * The code contained herein is licensed under the GNU General Public + * License. You may obtain a copy of the GNU General Public License + * Version 2 or later at the following locations: + * + * http://www.opensource.org/licenses/gpl-license.html + * http://www.gnu.org/copyleft/gpl.html + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "devices.h" +#include "mx51_pins.h" +#include "iomux.h" + +#include "mx51_efikamx.h" + +#define POWER_ON 1 +#define POWER_OFF 0 + +#define EFIKASB_LID_SWITCH MX51_PIN_CSI1_VSYNC +#define EFIKASB_RFKILL_SWITCH MX51_PIN_DI1_PIN12 + +struct mxc_iomux_pin_cfg __initdata mx51_efikasb_input_iomux_pins[] = { + { EFIKASB_LID_SWITCH, IOMUX_CONFIG_GPIO, }, + { EFIKASB_RFKILL_SWITCH, IOMUX_CONFIG_GPIO, }, +}; + +#define EFIKAMX_WIFI_POWER MX51_PIN_EIM_A22 +#define EFIKAMX_WIFI_RESET MX51_PIN_EIM_A16 +#define EFIKAMX_BT_POWER MX51_PIN_EIM_A17 + +struct mxc_iomux_pin_cfg __initdata mx51_efikamx_power_iomux_pins[] = { + { EFIKAMX_WIFI_POWER, IOMUX_CONFIG_GPIO, }, + { EFIKAMX_WIFI_RESET, IOMUX_CONFIG_GPIO, }, + { EFIKAMX_BT_POWER, IOMUX_CONFIG_GPIO, }, +}; + +#define EFIKASB_CAMERA_POWER MX51_PIN_NANDF_CS0 + +struct mxc_iomux_pin_cfg __initdata mx51_efikasb_power_iomux_pins[] = { + { EFIKASB_CAMERA_POWER, IOMUX_CONFIG_GPIO, }, +}; + +#define EFIKAMX_POWER_KEY MX51_PIN_EIM_DTACK + +struct mxc_iomux_pin_cfg __initdata mx51_efikamx_input_iomux_pins[] = { + { + EFIKAMX_POWER_KEY, IOMUX_CONFIG_GPIO, + (PAD_CTL_PKE_ENABLE | PAD_CTL_100K_PU), + }, +}; + +static struct gpio_keys_button mx51_efikamx_powerkey[] = { + { + .code = KEY_POWER | KEY_SLEEP | KEY_WAKEUP, + .gpio = IOMUX_TO_GPIO(EFIKAMX_POWER_KEY), + .type = EV_KEY | EV_PWR, + .desc = "Power Button", + .wakeup = 1, + .debounce_interval = 10, /* ms */ + }, +}; + +static struct gpio_keys_platform_data mx51_efikamx_powerkey_data = { + .buttons = mx51_efikamx_powerkey, + .nbuttons = ARRAY_SIZE(mx51_efikamx_powerkey), +}; + + +static struct platform_device mx51_efikamx_input_device = { + .name = "gpio-keys", + .id = -1, + .dev = { + .platform_data = &mx51_efikamx_powerkey_data, + }, +}; + + +int mx51_efikasb_rfkill_status(void) +{ + return !gpio_get_value(IOMUX_TO_GPIO(EFIKASB_RFKILL_SWITCH)); +} + +static struct gpio_keys_button mx51_efikasb_input[] = { + /* yes, this is duplicated! */ + { + .code = KEY_POWER | KEY_SLEEP | KEY_WAKEUP, + .gpio = IOMUX_TO_GPIO(EFIKAMX_POWER_KEY), + .type = EV_KEY | EV_PWR, + .desc = "Power Button", + .wakeup = 1, + .debounce_interval = 10, /* ms */ + }, + { + .code = SW_LID, + .gpio = IOMUX_TO_GPIO(EFIKASB_LID_SWITCH), + .type = EV_SW, + .desc = "Lid Switch", + .active_low = 1, + .wakeup = 1, + .debounce_interval = 10, /* ms */ + }, + { + .code = SW_RFKILL_ALL, + .gpio = IOMUX_TO_GPIO(EFIKASB_RFKILL_SWITCH), + .type = EV_SW, + .desc = "Wifi Switch", + .active_low = 1, + .debounce_interval = 10, + }, +}; + +static struct gpio_keys_platform_data mx51_efikasb_input_data = { + .buttons = mx51_efikasb_input, + .nbuttons = ARRAY_SIZE(mx51_efikasb_input), +}; + + +static struct platform_device mx51_efikasb_input_device = { + .name = "gpio-keys", + .id = -1, + .dev = { + .platform_data = &mx51_efikasb_input_data, + }, +}; + + + + +void mx51_efikamx_wifi_power(int state) +{ + if (state) + gpio_set_value(IOMUX_TO_GPIO(EFIKAMX_WIFI_POWER), 1); + else + gpio_set_value(IOMUX_TO_GPIO(EFIKAMX_WIFI_POWER), 0); + +} + +void mx51_efikamx_wifi_reset(void) +{ + msleep(1); + gpio_set_value(IOMUX_TO_GPIO(EFIKAMX_WIFI_RESET), 0); + msleep(1); + gpio_set_value(IOMUX_TO_GPIO(EFIKAMX_WIFI_RESET), 1); +} + + +void mx51_efikamx_bluetooth_power(int state) +{ + gpio_set_value(IOMUX_TO_GPIO(EFIKAMX_BT_POWER), state); + msleep(250); +} + +void mx51_efikamx_camera_power(int state) +{ + gpio_set_value(IOMUX_TO_GPIO(EFIKASB_CAMERA_POWER), !state); +} + +void __init mx51_efikamx_init_input(void) +{ + CONFIG_IOMUX(mx51_efikamx_input_iomux_pins); + + gpio_free(IOMUX_TO_GPIO(EFIKAMX_POWER_KEY)); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_POWER_KEY), "key:power"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKAMX_POWER_KEY)); + + CONFIG_IOMUX(mx51_efikasb_power_iomux_pins); + + gpio_free(IOMUX_TO_GPIO(EFIKAMX_WIFI_POWER)); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_WIFI_POWER), "wifi:power"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_WIFI_POWER), 0); + + gpio_free(IOMUX_TO_GPIO(EFIKAMX_WIFI_RESET)); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_WIFI_RESET), "wifi:reset"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_WIFI_RESET), 0); + + gpio_free(IOMUX_TO_GPIO(EFIKAMX_BT_POWER)); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_BT_POWER), "bluetooth:power"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_BT_POWER), 1); + + if (machine_is_mx51_efikamx()) { + + (void)platform_device_register(&mx51_efikamx_input_device); + + } else if (machine_is_mx51_efikasb()) { + + CONFIG_IOMUX(mx51_efikasb_input_iomux_pins); + + gpio_free(IOMUX_TO_GPIO(EFIKASB_LID_SWITCH)); + gpio_request(IOMUX_TO_GPIO(EFIKASB_LID_SWITCH), "switch:lid"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_LID_SWITCH)); + + gpio_free(IOMUX_TO_GPIO(EFIKASB_RFKILL_SWITCH)); + gpio_request(IOMUX_TO_GPIO(EFIKASB_RFKILL_SWITCH), "switch:rfkill"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_RFKILL_SWITCH)); + + CONFIG_IOMUX(mx51_efikasb_power_iomux_pins); + + gpio_free(IOMUX_TO_GPIO(EFIKASB_CAMERA_POWER)); + gpio_request(IOMUX_TO_GPIO(EFIKASB_CAMERA_POWER), "camera:power"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_CAMERA_POWER), 1); + + (void)platform_device_register(&mx51_efikasb_input_device); + } +} diff --git a/arch/arm/mach-mx5/mx51_efikamx_io.c b/arch/arm/mach-mx5/mx51_efikamx_io.c deleted file mode 100644 index 312a1137602..00000000000 --- a/arch/arm/mach-mx5/mx51_efikamx_io.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2009 Pegatron Corporation. All Rights Reserved. - * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved. - */ - -/* - * The code contained herein is licensed under the GNU General Public - * License. You may obtain a copy of the GNU General Public License - * Version 2 or later at the following locations: - * - * http://www.opensource.org/licenses/gpl-license.html - * http://www.gnu.org/copyleft/gpl.html - */ - -#include -#include -#include -#include -#include -#include -#include -#include "mx51_pins.h" -#include "iomux.h" -#include "mx51_efikamx.h" - - -#define EFIKAMX_PCBID0 MX51_PIN_NANDF_CS0 -#define EFIKAMX_PCBID1 MX51_PIN_NANDF_CS1 -#define EFIKAMX_PCBID2 MX51_PIN_NANDF_RB3 - -static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_id_iomux_pins[] = { - /* Note the 100K pullups. These are being driven low by the different revisions */ - { EFIKAMX_PCBID0, IOMUX_CONFIG_GPIO, PAD_CTL_100K_PU, }, - { EFIKAMX_PCBID1, IOMUX_CONFIG_GPIO, PAD_CTL_100K_PU, }, - { EFIKAMX_PCBID2, IOMUX_CONFIG_GPIO, PAD_CTL_100K_PU, }, -}; - -int mx51_efikamx_id = 0x10; /* can't get less than 1.0 */ - - - -/* - EIM A16 CKIH_FREQ_SEL[0] - EIM A17 CKIH_FREQ_SEL[1] - EIM A18 BT_LPB[0] - EIM A19 BT_LPB[1] - EIM A20 BT_UART_SRC[0] - EIM A21 BT_UART_SRC[1] - EIM A22 TBD3 ??? - EIM A23 BT_HPN_EN - - EIM LBA (GPIO3_1) DI1_PIN12 - EIM CRE (GPIO3_2) DI1_PIN13 - Test Point (1.2+), WDOG (1.0, 1.1) - - DI_GP4 DISP2_DRDY_CPU -*/ - - -static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_general_iomux_pins[] = { - { MX51_PIN_EIM_A18, IOMUX_CONFIG_GPIO, }, - { MX51_PIN_EIM_A19, IOMUX_CONFIG_GPIO, }, - { MX51_PIN_EIM_A20, IOMUX_CONFIG_GPIO, (PAD_CTL_PKE_ENABLE), }, - { MX51_PIN_EIM_A21, IOMUX_CONFIG_GPIO, }, - { MX51_PIN_EIM_LBA, IOMUX_CONFIG_GPIO, }, - { MX51_PIN_EIM_CRE, IOMUX_CONFIG_GPIO, }, - { MX51_PIN_DI_GP4, IOMUX_CONFIG_ALT4, }, -}; - -static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_wdog2_iomux_pins[] = { - /* Watchdog (1.2+) */ - { - MX51_PIN_GPIO1_4, IOMUX_CONFIG_GPIO | IOMUX_CONFIG_SION, - (PAD_CTL_HYS_ENABLE | PAD_CTL_100K_PU), - }, -}; - -static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_wdog1_iomux_pins[] = { - /* Watchdog (1.1) */ - { - MX51_PIN_DI1_PIN13, IOMUX_CONFIG_GPIO | IOMUX_CONFIG_SION, - (PAD_CTL_HYS_ENABLE | PAD_CTL_100K_PU), - }, -}; - -__init void mx51_efikamx_init_wdog(void) -{ - /* Watchdog */ - - if (mx51_efikamx_revision() < 2) - { - DBG(("IOMUX for WDOG (1.1) (%u pins)\n", ARRAY_SIZE(mx51_efikamx_wdog1_iomux_pins))); - CONFIG_IOMUX(mx51_efikamx_wdog1_iomux_pins); - - gpio_request(IOMUX_TO_GPIO(MX51_PIN_DI1_PIN13), "wdog_rst"); - gpio_direction_input(MX51_PIN_DI1_PIN13); - } - else - { - DBG(("IOMUX for WDOG (1.2) (%u pins)\n", ARRAY_SIZE(mx51_efikamx_wdog2_iomux_pins))); - CONFIG_IOMUX(mx51_efikamx_wdog2_iomux_pins); - - gpio_request(IOMUX_TO_GPIO(MX51_PIN_GPIO1_4), "wdog_rst"); - gpio_direction_input(MX51_PIN_GPIO1_4); - } -} - -void __init mx51_efikamx_io_init(void) -{ - /* do ID pins first! */ - DBG(("IOMUX for Board ID (%u pins)\n", ARRAY_SIZE(mx51_efikamx_id_iomux_pins))); - CONFIG_IOMUX(mx51_efikamx_id_iomux_pins); - DBG(("IOMUX for General GPIO Stuff (%u pins)\n", ARRAY_SIZE(mx51_efikamx_general_iomux_pins))); - CONFIG_IOMUX(mx51_efikamx_general_iomux_pins); - - mx51_efikamx_init_uart(); - mx51_efikamx_init_soc(); - - mx51_efikamx_init_pmic(); - mx51_efikamx_init_nor(); - mx51_efikamx_init_spi(); - - mx51_efikamx_init_i2c(); /* i2c devices like sii9022 need IPU already there */ - - mx51_efikamx_init_usb(); - - mx51_efikamx_init_display(); /* register IPU and so on */ - mx51_efikamx_init_audio(); /* register audio devices and so on */ - - mx51_efikamx_board_id(); /* we do board id late because it takes time to settle */ - mx51_efikamx_init_pata(); - mx51_efikamx_init_mmc(); /* depends on board id - do it last */ - mx51_efikamx_init_wdog(); /* depends on board id - do it last */ - mx51_efikamx_init_leds(); /* mmc trigger depends on board id */ - - - mxc_free_iomux(MX51_PIN_GPIO1_2, IOMUX_CONFIG_ALT2); - mxc_free_iomux(MX51_PIN_GPIO1_3, IOMUX_CONFIG_ALT2); - mxc_free_iomux(MX51_PIN_EIM_LBA, IOMUX_CONFIG_GPIO); -} - -int mx51_efikamx_revision(void) -{ - /* short and sweet */ - return(mx51_efikamx_id & 0xf); -} - -void mx51_efikamx_board_id(void) -{ - int pcbid[3]; - - /* NOTE: - IOMUX settings have to settle so run the iomux setup long before this - function has to otherwise it will give freakish results. - */ - gpio_request(IOMUX_TO_GPIO(EFIKAMX_PCBID0), "efikamx_pcbid0"); - gpio_direction_input(IOMUX_TO_GPIO(EFIKAMX_PCBID0)); - pcbid[0] = gpio_get_value(IOMUX_TO_GPIO(EFIKAMX_PCBID0)); - - gpio_request(IOMUX_TO_GPIO(EFIKAMX_PCBID1), "efikamx_pcbid1"); - gpio_direction_input(IOMUX_TO_GPIO(EFIKAMX_PCBID1)); - pcbid[1] = gpio_get_value(IOMUX_TO_GPIO(EFIKAMX_PCBID1)); - - gpio_request(IOMUX_TO_GPIO(EFIKAMX_PCBID2), "efikamx_pcbid2"); - gpio_direction_input(IOMUX_TO_GPIO(EFIKAMX_PCBID2)); - pcbid[2] = gpio_get_value(IOMUX_TO_GPIO(EFIKAMX_PCBID2)); - -/* - PCBID2 PCBID1 PCBID0 STATE - 1 1 1 ER1:rev1.1 - 1 1 0 ER2:rev1.2 - 1 0 1 ER3:rev1.3 - 1 0 0 ER4:rev1.4 -*/ - if (pcbid[2] == 1) { - if (pcbid[1] == 1) { - if (pcbid[0] == 1) { - mx51_efikamx_id = 0x11; - } else { - mx51_efikamx_id = 0x12; - } - } else { - if (pcbid[0] == 1) { - mx51_efikamx_id = 0x13; - } else { - mx51_efikamx_id = 0x14; - } - } - } - - if ( (mx51_efikamx_id == 0x10) || /* "developer edition" */ - (mx51_efikamx_id == 0x12) || /* unreleased, broken PATA */ - (mx51_efikamx_id == 0x14) ) { /* unreleased.. */ - printk(KERN_ERR "Efika MX: PCB Identification Error!\n" - "Efika MX: Unsupported board revision 1.%u - USE AT YOUR OWN RISK!\n", - mx51_efikamx_revision()); - } -} - diff --git a/arch/arm/mach-mx5/mx51_efikasb_leds.c b/arch/arm/mach-mx5/mx51_efikamx_leds.c similarity index 54% rename from arch/arm/mach-mx5/mx51_efikasb_leds.c rename to arch/arm/mach-mx5/mx51_efikamx_leds.c index 2be418dad97..ecd710e1678 100644 --- a/arch/arm/mach-mx5/mx51_efikasb_leds.c +++ b/arch/arm/mach-mx5/mx51_efikamx_leds.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "devices.h" #include "mx51_pins.h" @@ -39,6 +40,58 @@ #warning using the PWM led driver but not the backlight trigger, backlight control will be manual!! #endif + +#define EFIKAMX_BLUE_LED MX51_PIN_CSI1_D9 +#define EFIKAMX_GREEN_LED MX51_PIN_CSI1_VSYNC +#define EFIKAMX_RED_LED MX51_PIN_CSI1_HSYNC + +struct mxc_iomux_pin_cfg __initdata mx51_efikamx_led_iomux_pins[] = { + { EFIKAMX_BLUE_LED, IOMUX_CONFIG_GPIO, }, + { EFIKAMX_GREEN_LED, IOMUX_CONFIG_GPIO, }, + { EFIKAMX_RED_LED, IOMUX_CONFIG_GPIO, }, + +}; + +static struct gpio_led mx51_efikamx_leds[] = { + { + .name = "efikamx:green", + .default_trigger = "default-on", + .gpio = IOMUX_TO_GPIO(EFIKAMX_GREEN_LED), + }, + { + .name = "efikamx:red", + .default_trigger = "ide-disk", + .gpio = IOMUX_TO_GPIO(EFIKAMX_RED_LED), + }, + { + .name = "efikamx:blue", + .default_trigger = "mmc1", + .gpio = IOMUX_TO_GPIO(EFIKAMX_BLUE_LED), + }, +}; + +static struct gpio_led_platform_data mx51_efikamx_leds_data = { + .leds = mx51_efikamx_leds, + .num_leds = ARRAY_SIZE(mx51_efikamx_leds), +}; + +static struct platform_device mx51_efikamx_leds_device = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &mx51_efikamx_leds_data, + }, +}; + + + + + + + + + + #define EFIKASB_CAPSLOCK_LED MX51_PIN_EIM_CS0 #define EFIKASB_ALARM_LED MX51_PIN_GPIO1_3 #define EFIKASB_PWM_BACKLIGHT MX51_PIN_GPIO1_2 @@ -98,7 +151,7 @@ static struct platform_pwm_backlight_data mx51_efikasb_backlight_data = { #elif defined(CONFIG_LEDS_PWM) static struct led_pwm mx51_efikasb_pwm_backlight[] = { { - .name = "backlight", + .name = "led:backlight", .default_trigger = "backlight", .pwm_id = 0, .max_brightness = 64, @@ -134,31 +187,68 @@ static struct platform_device mx51_efikasb_leds_device = { }, }; -void __init mx51_efikasb_init_leds(void) + +void __init mx51_efikamx_init_leds(void) { - CONFIG_IOMUX(mx51_efikasb_led_iomux_pins); - /* - Request each color and set a default output. - Since Green is our power light by default, turn it on. - Since Red & Blue are disk activity, turn them off (the trigger will activate it) - */ - gpio_request(IOMUX_TO_GPIO(EFIKASB_CAPSLOCK_LED), "led:capslock"); - gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_CAPSLOCK_LED), 0); - gpio_free(IOMUX_TO_GPIO(EFIKASB_CAPSLOCK_LED)); + if (machine_is_mx51_efikamx()) { + CONFIG_IOMUX(mx51_efikamx_led_iomux_pins); - gpio_request(IOMUX_TO_GPIO(EFIKASB_ALARM_LED), "led:alarm"); - gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_ALARM_LED), 1); - gpio_free(IOMUX_TO_GPIO(EFIKASB_ALARM_LED)); + /* + Request each color and set a default output. + Since Green is our power light by default, turn it on. + Since Red & Blue are disk activity, turn them off (the trigger will activate it) + */ + gpio_request(IOMUX_TO_GPIO(EFIKAMX_BLUE_LED), "blue_led"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_BLUE_LED), 0); + gpio_free(IOMUX_TO_GPIO(EFIKAMX_BLUE_LED)); - gpio_request(IOMUX_TO_GPIO(EFIKASB_PWM_BACKLIGHT_EN), "backlight:en#"); - gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_PWM_BACKLIGHT_EN), 0); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_GREEN_LED), "green_led"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_GREEN_LED), 1); + gpio_free(IOMUX_TO_GPIO(EFIKAMX_GREEN_LED)); - mxc_register_device(&mxc_pwm1_device, NULL); -#if defined(CONFIG_BACKLIGHT_PWM) - mxc_register_device(&mxc_pwm_backlight_device, &mx51_efikasb_backlight_data); -#elif defined(CONFIG_LEDS_PWM) - (void)platform_device_register(&mx51_efikasb_backlight_device); -#endif - (void)platform_device_register(&mx51_efikasb_leds_device); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_RED_LED), "red_led"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_RED_LED), 0); + gpio_free(IOMUX_TO_GPIO(EFIKAMX_RED_LED)); + + if (mx51_efikamx_revision() >= 2) + { + /* on 1.2 and above there is no second SD controller, + * so the previous external "mmc1" is not valid anymore. + * change the trigger to mmc0 to activate the LED for + * the external slot for the newer boards + */ + mx51_efikamx_leds[2].default_trigger = "mmc0"; + } + + (void)platform_device_register(&mx51_efikamx_leds_device); + } else { + CONFIG_IOMUX(mx51_efikasb_led_iomux_pins); + + gpio_request(IOMUX_TO_GPIO(EFIKASB_CAPSLOCK_LED), "led:capslock"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_CAPSLOCK_LED), 0); + gpio_free(IOMUX_TO_GPIO(EFIKASB_CAPSLOCK_LED)); + + gpio_request(IOMUX_TO_GPIO(EFIKASB_ALARM_LED), "led:alarm"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_ALARM_LED), 1); + gpio_free(IOMUX_TO_GPIO(EFIKASB_ALARM_LED)); + + gpio_request(IOMUX_TO_GPIO(EFIKASB_PWM_BACKLIGHT_EN), "backlight:en#"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_PWM_BACKLIGHT_EN), 0); + + mxc_register_device(&mxc_pwm1_device, NULL); + #if defined(CONFIG_BACKLIGHT_PWM) + mxc_register_device(&mxc_pwm_backlight_device, &mx51_efikasb_backlight_data); + #elif defined(CONFIG_LEDS_PWM) + (void)platform_device_register(&mx51_efikasb_backlight_device); + #endif + (void)platform_device_register(&mx51_efikasb_leds_device); + } } + + + + + + + diff --git a/arch/arm/mach-mx5/mx51_efikamx_pmic.c b/arch/arm/mach-mx5/mx51_efikamx_pmic.c index de09d854be3..7733eba23c2 100644 --- a/arch/arm/mach-mx5/mx51_efikamx_pmic.c +++ b/arch/arm/mach-mx5/mx51_efikamx_pmic.c @@ -1,8 +1,9 @@ /* - * mx51-efikamx-pmic-mc13892.c -- i.MX51 Efika MX Driver for Atlas MC13892 PMIC + * mx51_efikamx_pmic.c -- Efika MX Driver for Atlas MC13892 PMIC */ /* * Copyright 2009 Pegatron Corporation. All Rights Reserved. + * Copyright 2009-2011 Genesi USA, Inc. All Rights Reserved. */ /* @@ -23,6 +24,7 @@ #include #include #include +#include #include "devices.h" #include "mx51_pins.h" @@ -91,6 +93,11 @@ #define SWMODE_MASK 0xF #define SWMODE_AUTO 0x8 +#define PWGT1SPIEN (1 << 15) +#define PWGT2SPIEN (1 << 16) +#define USEROFFSPI (1 << 3) + + /* CPU */ static struct regulator_consumer_supply sw1_consumers[] = { { @@ -293,6 +300,7 @@ static struct regulator_init_data vgen2_init = { .min_uV = mV_to_uV(1200), .max_uV = mV_to_uV(3150), .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, + .always_on = 1, } }; @@ -302,6 +310,7 @@ static struct regulator_init_data vgen3_init = { .min_uV = mV_to_uV(1800), .max_uV = mV_to_uV(2900), .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, + .always_on = 1, } }; @@ -371,10 +380,12 @@ static int mc13892_regulator_init(struct mc13892 *mc13892) pmic_write_reg(REG_SW_5, value, 0xffffff); } - /* Enable coin cell charger */ - value = BITFVAL(COINCHEN, 1) | BITFVAL(VCOIN, VCOIN_3_0V); - register_mask = BITFMASK(COINCHEN) | BITFMASK(VCOIN); - pmic_write_reg(REG_POWER_CTL0, value, register_mask); + if (machine_is_mx51_efikamx()) { + /* Enable coin cell charger */ + value = BITFVAL(COINCHEN, 1) | BITFVAL(VCOIN, VCOIN_3_0V); + register_mask = BITFMASK(COINCHEN) | BITFMASK(VCOIN); + pmic_write_reg(REG_POWER_CTL0, value, register_mask); + } #if defined(CONFIG_RTC_DRV_MXC_V2) || defined(CONFIG_RTC_DRV_MXC_V2_MODULE) value = BITFVAL(DRM, 1); @@ -413,11 +424,12 @@ static struct mc13892_platform_data mc13892_plat = { .init = mc13892_regulator_init, }; +#define EFIKAMX_PMIC_INTERRUPT MX51_PIN_GPIO1_6 + static struct spi_board_info __initdata mc13892_spi_device[] = { { .modalias = "pmic_spi", - .irq = IOMUX_TO_IRQ(MX51_PIN_GPIO1_6), - .max_speed_hz = 6000000, /* max spi SCK clock speed in HZ */ + .irq = IOMUX_TO_IRQ(EFIKAMX_PMIC_INTERRUPT), .platform_data = &mc13892_plat, .chip_select = 0, #if defined(CONFIG_SPI_GPIO) @@ -430,60 +442,88 @@ static struct spi_board_info __initdata mc13892_spi_device[] = { #elif defined(CONFIG_SPI_MXC) .bus_num = 1, #endif + .max_speed_hz = 1000000, /* max spi SCK clock speed in HZ */ }, }; static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_pmic_iomux_pins[] = { - /* PMIC interrupt */ { - MX51_PIN_GPIO1_6, IOMUX_CONFIG_GPIO | IOMUX_CONFIG_SION, + EFIKAMX_PMIC_INTERRUPT, IOMUX_CONFIG_GPIO | IOMUX_CONFIG_SION, (PAD_CTL_SRE_SLOW | PAD_CTL_DRV_MEDIUM | PAD_CTL_100K_PU | PAD_CTL_HYS_ENABLE | PAD_CTL_DRV_VOT_HIGH), }, }; +#define EFIKAMX_WATCHDOG_REBOOT MX51_PIN_DI1_PIN13 +#define EFIKASB_WATCHDOG_REBOOT MX51_PIN_GPIO1_4 + +static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_watchdog_pins[] = { + { EFIKAMX_WATCHDOG_REBOOT, IOMUX_CONFIG_GPIO, }, +}; + +static struct mxc_iomux_pin_cfg __initdata mx51_efikasb_watchdog_pins[] = { + { EFIKASB_WATCHDOG_REBOOT, IOMUX_CONFIG_GPIO, }, +}; + +#define EFIKASB_POWERGOOD MX51_PIN_CSI2_PIXCLK +static struct mxc_iomux_pin_cfg __initdata mx51_efikasb_power_pins[] = { + { EFIKASB_POWERGOOD, IOMUX_CONFIG_GPIO, }, +}; + int __init mx51_efikamx_init_pmic(void) { - DBG(("IOMUX for PMIC (%d pins)\n", ARRAY_SIZE(mx51_efikamx_pmic_iomux_pins))); CONFIG_IOMUX(mx51_efikamx_pmic_iomux_pins); - gpio_request(IOMUX_TO_GPIO(MX51_PIN_GPIO1_6), "pmic_intr"); - gpio_direction_input(IOMUX_TO_GPIO(MX51_PIN_GPIO1_6)); + /* disable power gating for some reason */ + pmic_write_reg(REG_POWER_MISC, ~(PWGT1SPIEN|PWGT2SPIEN), (PWGT1SPIEN|PWGT2SPIEN)); + + if (machine_is_mx51_efikamx() && (mx51_efikamx_revision() == 1)) { + CONFIG_IOMUX(mx51_efikamx_watchdog_pins); + + gpio_free(IOMUX_TO_GPIO(EFIKAMX_WATCHDOG_REBOOT)); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_WATCHDOG_REBOOT), "sys:reboot"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_WATCHDOG_REBOOT), 1); + } else { + CONFIG_IOMUX(mx51_efikasb_watchdog_pins); + + gpio_free(IOMUX_TO_GPIO(EFIKASB_WATCHDOG_REBOOT)); + gpio_request(IOMUX_TO_GPIO(EFIKASB_WATCHDOG_REBOOT), "sys:reboot"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_WATCHDOG_REBOOT), 1); + + if (machine_is_mx51_efikasb()) { + CONFIG_IOMUX(mx51_efikasb_power_pins); + + gpio_free(IOMUX_TO_GPIO(EFIKASB_POWERGOOD)); + gpio_request(IOMUX_TO_GPIO(EFIKASB_POWERGOOD), "sys:powergood"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_POWERGOOD)); + } + } return spi_register_board_info(mc13892_spi_device, ARRAY_SIZE(mc13892_spi_device)); } int mx51_efikamx_reboot(void) { - /* wdog reset workaround, result power reset! */ - printk(KERN_INFO "%s\n", __func__ ); - - if ( mx51_efikamx_revision() == 1 ) /* board rev1.1 */ - gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_DI1_PIN13), 0); + if ( machine_is_mx51_efikamx() && (mx51_efikamx_revision() == 1) ) /* board rev1.1 */ + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_WATCHDOG_REBOOT), 0); else - gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_GPIO1_4), 0); + gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_WATCHDOG_REBOOT), 0); return 0; } -#define PWGT1SPIEN (1<<15) -#define PWGT2SPIEN (1<<16) -#define USEROFFSPI (1<<3) +#define EFIKAMX_POWEROFF MX51_PIN_CSI2_VSYNC void mx51_efikamx_power_off(void) { - /* We can do power down one of two ways: - Set the power gating - Set USEROFFSPI */ - printk(KERN_CRIT "%s\n", __func__); - /* Set the power gate bits to power down */ - pmic_write_reg(REG_POWER_MISC, (PWGT1SPIEN|PWGT2SPIEN), - (PWGT1SPIEN|PWGT2SPIEN)); + pmic_write_reg(REG_POWER_MISC, (PWGT1SPIEN|PWGT2SPIEN), (PWGT1SPIEN|PWGT2SPIEN)); - mxc_request_iomux(MX51_PIN_CSI2_VSYNC, IOMUX_CONFIG_GPIO); - gpio_request(IOMUX_TO_GPIO(MX51_PIN_CSI2_VSYNC), "poweroff"); - gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_CSI2_VSYNC), 1); + mxc_wd_reset(); + + mxc_request_iomux(EFIKAMX_POWEROFF, IOMUX_CONFIG_GPIO); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_POWEROFF), "sys:poweroff"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_POWEROFF), 1); } diff --git a/arch/arm/mach-mx5/mx51_efikamx_powerkey.c b/arch/arm/mach-mx5/mx51_efikamx_powerkey.c deleted file mode 100644 index 37fef3c41a5..00000000000 --- a/arch/arm/mach-mx5/mx51_efikamx_powerkey.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2009 Pegatron Corporation. All Rights Reserved. - * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved. - */ - -/* - * The code contained herein is licensed under the GNU General Public - * License. You may obtain a copy of the GNU General Public License - * Version 2 or later at the following locations: - * - * http://www.opensource.org/licenses/gpl-license.html - * http://www.gnu.org/copyleft/gpl.html - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "devices.h" -#include "mx51_pins.h" -#include "iomux.h" - -#include "mx51_efikamx.h" - -#define EFIKAMX_BLUE_LED MX51_PIN_CSI1_D9 -#define EFIKAMX_GREEN_LED MX51_PIN_CSI1_VSYNC -#define EFIKAMX_RED_LED MX51_PIN_CSI1_HSYNC - -struct mxc_iomux_pin_cfg __initdata mx51_efikamx_led_iomux_pins[] = { - { EFIKAMX_BLUE_LED, IOMUX_CONFIG_ALT3, }, - { EFIKAMX_GREEN_LED, IOMUX_CONFIG_ALT3, }, - { EFIKAMX_RED_LED, IOMUX_CONFIG_ALT3, }, - -}; - -#define EFIKAMX_POWER_KEY MX51_PIN_EIM_DTACK - -struct mxc_iomux_pin_cfg __initdata mx51_efikamx_powerkey_iomux_pins[] = { - { - EFIKAMX_POWER_KEY, IOMUX_CONFIG_GPIO, - (PAD_CTL_PKE_ENABLE | PAD_CTL_100K_PU), - }, -}; - - -static struct gpio_led mx51_efikamx_leds[] = { - { - .name = "efikamx:green", - .default_trigger = "default-on", - .gpio = IOMUX_TO_GPIO(EFIKAMX_GREEN_LED), - }, - { - .name = "efikamx:red", - .default_trigger = "ide-disk", - .gpio = IOMUX_TO_GPIO(EFIKAMX_RED_LED), - }, - { - .name = "efikamx:blue", - .default_trigger = "mmc1", - .gpio = IOMUX_TO_GPIO(EFIKAMX_BLUE_LED), - }, -}; - -static struct gpio_led_platform_data mx51_efikamx_leds_data = { - .leds = mx51_efikamx_leds, - .num_leds = ARRAY_SIZE(mx51_efikamx_leds), -}; - -static struct platform_device mx51_efikamx_leds_device = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &mx51_efikamx_leds_data, - }, -}; - - - - -static struct gpio_keys_button mx51_efikamx_powerkey[] = { - { - .code = KEY_POWER, - .gpio = IOMUX_TO_GPIO(EFIKAMX_POWER_KEY), - .type = EV_PWR, - .desc = "Power Button (CM)", - .wakeup = 1, - .debounce_interval = 10, /* ms */ - }, -}; - -static struct gpio_keys_platform_data mx51_efikamx_powerkey_data = { - .buttons = mx51_efikamx_powerkey, - .nbuttons = ARRAY_SIZE(mx51_efikamx_powerkey), -}; - - -static struct platform_device mx51_efikamx_powerkey_device = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &mx51_efikamx_powerkey_data, - }, -}; - - - -void mx51_efikamx_init_leds(void) -{ - DBG(("IOMUX for LED (%d pins)\n", ARRAY_SIZE(mx51_efikamx_led_iomux_pins))); - CONFIG_IOMUX(mx51_efikamx_led_iomux_pins); - - /* - Request each color and set a default output. - Since Green is our power light by default, turn it on. - Since Red & Blue are disk activity, turn them off (the trigger will activate it) - */ - gpio_request(IOMUX_TO_GPIO(EFIKAMX_BLUE_LED), "blue_led"); - gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_BLUE_LED), 0); - gpio_free(IOMUX_TO_GPIO(EFIKAMX_BLUE_LED)); - - gpio_request(IOMUX_TO_GPIO(EFIKAMX_GREEN_LED), "green_led"); - gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_GREEN_LED), 1); - gpio_free(IOMUX_TO_GPIO(EFIKAMX_GREEN_LED)); - - gpio_request(IOMUX_TO_GPIO(EFIKAMX_RED_LED), "red_led"); - gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_RED_LED), 0); - gpio_free(IOMUX_TO_GPIO(EFIKAMX_RED_LED)); - - if (mx51_efikamx_revision() >= 2) - { - /* on 1.2 and above there is no second SD controller, - * so the previous external "mmc1" is not valid anymore. - * change the trigger to mmc0 to activate the LED for - * the external slot for the newer boards - */ - mx51_efikamx_leds[2].default_trigger = "mmc0"; - } - - (void)platform_device_register(&mx51_efikamx_leds_device); - - /* - Register power key (since it's got the LEDs in it :) - */ - - DBG(("IOMUX for Power Key (%d pins)\n", ARRAY_SIZE(mx51_efikamx_powerkey_iomux_pins))); - CONFIG_IOMUX(mx51_efikamx_powerkey_iomux_pins); - - gpio_direction_input(IOMUX_TO_GPIO(EFIKAMX_POWER_KEY)); - (void)platform_device_register(&mx51_efikamx_powerkey_device); -} diff --git a/arch/arm/mach-mx5/mx51_efikamx_usb.c b/arch/arm/mach-mx5/mx51_efikamx_usb.c index ae4a258c2f6..8c6d94c0b80 100644 --- a/arch/arm/mach-mx5/mx51_efikamx_usb.c +++ b/arch/arm/mach-mx5/mx51_efikamx_usb.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "devices.h" #include "mx51_pins.h" @@ -28,6 +29,8 @@ #include "mx51_efikamx.h" +#define POWER_ON 1 +#define POWER_OFF 0 #define USB_PAD_CONFIG \ (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | \ @@ -91,60 +94,67 @@ static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_usb_iomux_pins[] = { { MX51_PIN_USBH1_DATA5, IOMUX_CONFIG_ALT0, USB_PAD_CONFIG, }, { MX51_PIN_USBH1_DATA6, IOMUX_CONFIG_ALT0, USB_PAD_CONFIG, }, { MX51_PIN_USBH1_DATA7, IOMUX_CONFIG_ALT0, USB_PAD_CONFIG, }, +}; - /* USB HUB RESET */ - { MX51_PIN_GPIO1_5, IOMUX_CONFIG_ALT0, - (PAD_CTL_DRV_HIGH | PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST), - }, +#define EFIKAMX_USB_HUB_RESET MX51_PIN_GPIO1_5 +#define EFIKAMX_USB_PHY_RESET MX51_PIN_EIM_D27 - /* Wireless enable (active low) */ - { MX51_PIN_EIM_A22, IOMUX_CONFIG_GPIO, }, - /* Wireless reset */ - { MX51_PIN_EIM_A16, IOMUX_CONFIG_GPIO, }, - /* Bluetooth enable (active low) */ - { MX51_PIN_EIM_A17, IOMUX_CONFIG_GPIO, }, - /* USB PHY reset */ +struct mxc_iomux_pin_cfg mx51_efikamx_usb_control_pins[] = { { - MX51_PIN_EIM_D27, IOMUX_CONFIG_ALT1, + EFIKAMX_USB_HUB_RESET, IOMUX_CONFIG_ALT0, + (PAD_CTL_DRV_HIGH | PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST), + }, + { + EFIKAMX_USB_PHY_RESET, IOMUX_CONFIG_ALT1, (PAD_CTL_DRV_HIGH | PAD_CTL_HYS_NONE | PAD_CTL_PUE_KEEPER | PAD_CTL_100K_PU | PAD_CTL_ODE_OPENDRAIN_NONE | PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST), }, }; +void mx51_efikamx_usb_hub_reset(void) +{ + gpio_set_value(IOMUX_TO_GPIO(EFIKAMX_USB_HUB_RESET), 1); + msleep(1); + gpio_set_value(IOMUX_TO_GPIO(EFIKAMX_USB_HUB_RESET), 0); + msleep(1); + gpio_set_value(IOMUX_TO_GPIO(EFIKAMX_USB_HUB_RESET), 1); +} + +void mx51_efikamx_usb_phy_reset(void) +{ + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_USB_PHY_RESET), 1); +} + void __init mx51_efikamx_init_usb(void) { - DBG(("IOMUX for USB (%d pins)\n", ARRAY_SIZE(mx51_efikamx_usb_iomux_pins))); CONFIG_IOMUX(mx51_efikamx_usb_iomux_pins); + CONFIG_IOMUX(mx51_efikamx_usb_control_pins); - gpio_request(IOMUX_TO_GPIO(MX51_PIN_GPIO1_5), "usb_hub_reset"); - gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_GPIO1_5), 1); - msleep(1); - gpio_set_value(IOMUX_TO_GPIO(MX51_PIN_GPIO1_5), 0); - msleep(1); - gpio_set_value(IOMUX_TO_GPIO(MX51_PIN_GPIO1_5), 1); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_USB_HUB_RESET), "usb:hub_reset"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_USB_HUB_RESET), 1); - /* enable BlueTooth */ - gpio_request(IOMUX_TO_GPIO(MX51_PIN_EIM_A17), "bluetooth_enable"); - gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_EIM_A17), 0); - msleep(10); - gpio_set_value(IOMUX_TO_GPIO(MX51_PIN_EIM_A17), 1); + gpio_request(IOMUX_TO_GPIO(EFIKAMX_USB_PHY_RESET), "usb:phy_reset"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKAMX_USB_PHY_RESET), 0); - /* pull low wlan_on# */ - gpio_request(IOMUX_TO_GPIO(MX51_PIN_EIM_A22), "wlan_on"); - gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_EIM_A22), 0); - msleep(10); + mx51_efikamx_usb_hub_reset(); - /* pull low-high pulse wlan_rst# */ - gpio_request(IOMUX_TO_GPIO(MX51_PIN_EIM_A16), "wlan_rst"); - gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_EIM_A16), 0); - msleep(10); - gpio_set_value(IOMUX_TO_GPIO(MX51_PIN_EIM_A16), 1); + mx51_efikamx_bluetooth_power(POWER_ON); + mx51_efikamx_wifi_power(POWER_ON); + mx51_efikamx_wifi_reset(); - /* De-assert USB PHY RESETB */ - gpio_request(IOMUX_TO_GPIO(MX51_PIN_EIM_D27), "usb_phy_resetb"); - gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_EIM_D27), 1); + mx51_efikamx_usb_phy_reset(); + + if (machine_is_mx51_efikasb()) { + mx51_efikamx_wwan_power(POWER_ON); + mx51_efikamx_camera_power(POWER_ON); + } mx5_usb_dr_init(); mx5_usbh1_init(); + + if (machine_is_mx51_efikasb()) { + mx51_usbh2_init(); + } } + diff --git a/arch/arm/mach-mx5/mx51_efikasb_wwan.c b/arch/arm/mach-mx5/mx51_efikamx_wwan.c similarity index 53% rename from arch/arm/mach-mx5/mx51_efikasb_wwan.c rename to arch/arm/mach-mx5/mx51_efikamx_wwan.c index e93b7675cfe..1cca5c33128 100644 --- a/arch/arm/mach-mx5/mx51_efikasb_wwan.c +++ b/arch/arm/mach-mx5/mx51_efikamx_wwan.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "devices.h" #include "mx51_pins.h" @@ -38,7 +39,7 @@ #define EFIKASB_WWAN_POWER MX51_PIN_CSI2_D13 #define EFIKASB_WWAN_SIM MX51_PIN_EIM_CS1 -static struct mxc_iomux_pin_cfg __initdata mx51_efikasb_wwan_iomux_pins[] = { +static struct mxc_iomux_pin_cfg __initdata mx51_efikamx_wwan_iomux_pins[] = { { EFIKASB_WWAN_WAKEUP, IOMUX_CONFIG_GPIO, }, { EFIKASB_WWAN_POWER, IOMUX_CONFIG_GPIO, }, { EFIKASB_WWAN_SIM, IOMUX_CONFIG_GPIO | IOMUX_CONFIG_SION, PAD_CTL_PKE_NONE }, @@ -46,7 +47,7 @@ static struct mxc_iomux_pin_cfg __initdata mx51_efikasb_wwan_iomux_pins[] = { -void mx51_efikasb_wwan_power(int state) +void mx51_efikamx_wwan_power(int state) { gpio_set_value(IOMUX_TO_GPIO(EFIKASB_WWAN_POWER), !state); } @@ -54,14 +55,14 @@ void mx51_efikasb_wwan_power(int state) -int mx51_efikasb_wwan_sim_status(void) +int mx51_efikamx_wwan_sim_status(void) { return !gpio_get_value(IOMUX_TO_GPIO(EFIKASB_WWAN_SIM)); } -static irqreturn_t mx51_efikasb_sim_handler(int irq, void *dev_id) +static irqreturn_t mx51_efikamx_sim_handler(int irq, void *dev_id) { - if(mx51_efikasb_wwan_sim_status()) { + if(mx51_efikamx_wwan_sim_status()) { set_irq_type(irq, IRQF_TRIGGER_RISING); } else { set_irq_type(irq, IRQF_TRIGGER_FALLING); @@ -73,14 +74,14 @@ static irqreturn_t mx51_efikasb_sim_handler(int irq, void *dev_id) -int mx51_efikasb_wwan_wakeup_status(void) +int mx51_efikamx_wwan_wakeup_status(void) { return gpio_get_value(IOMUX_TO_GPIO(EFIKASB_WWAN_WAKEUP)); } -static irqreturn_t mx51_efikasb_wwan_wakeup(int irq, void *dev_id) +static irqreturn_t mx51_efikamx_wwan_wakeup(int irq, void *dev_id) { - if(mx51_efikasb_wwan_wakeup_status()) + if(mx51_efikamx_wwan_wakeup_status()) set_irq_type(irq, IRQF_TRIGGER_FALLING); else set_irq_type(irq, IRQF_TRIGGER_RISING); @@ -90,39 +91,41 @@ static irqreturn_t mx51_efikasb_wwan_wakeup(int irq, void *dev_id) -void __init mx51_efikasb_init_wwan(void) +void __init mx51_efikamx_init_wwan(void) { int irq, ret; - CONFIG_IOMUX(mx51_efikasb_wwan_iomux_pins); + if (machine_is_mx51_efikasb()) { - gpio_request(IOMUX_TO_GPIO(EFIKASB_WWAN_WAKEUP), "wwan:wakeup"); - gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_WWAN_WAKEUP)); + CONFIG_IOMUX(mx51_efikamx_wwan_iomux_pins); - gpio_request(IOMUX_TO_GPIO(EFIKASB_WWAN_POWER), "wwan:power"); - gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_WWAN_POWER), 0); + gpio_request(IOMUX_TO_GPIO(EFIKASB_WWAN_WAKEUP), "wwan:wakeup"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_WWAN_WAKEUP)); - gpio_request(IOMUX_TO_GPIO(EFIKASB_WWAN_SIM), "wwan:simcard"); - gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_WWAN_SIM)); + gpio_request(IOMUX_TO_GPIO(EFIKASB_WWAN_POWER), "wwan:power"); + gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_WWAN_POWER), 0); - irq = IOMUX_TO_IRQ(EFIKASB_WWAN_WAKEUP); + gpio_request(IOMUX_TO_GPIO(EFIKASB_WWAN_SIM), "wwan:simcard"); + gpio_direction_input(IOMUX_TO_GPIO(EFIKASB_WWAN_SIM)); - if (mx51_efikasb_wwan_wakeup_status()) - set_irq_type(irq, IRQF_TRIGGER_FALLING); - else - set_irq_type(irq, IRQF_TRIGGER_RISING); + irq = IOMUX_TO_IRQ(EFIKASB_WWAN_WAKEUP); - ret = request_irq(irq, mx51_efikasb_wwan_wakeup, 0, "wwan-wakeup", 0); - if(!ret) - enable_irq_wake(irq); + if (mx51_efikamx_wwan_wakeup_status()) + set_irq_type(irq, IRQF_TRIGGER_FALLING); + else + set_irq_type(irq, IRQF_TRIGGER_RISING); - irq = IOMUX_TO_IRQ(EFIKASB_WWAN_SIM); + ret = request_irq(irq, mx51_efikamx_wwan_wakeup, 0, "wwan-wakeup", 0); + if(!ret) + enable_irq_wake(irq); - if (mx51_efikasb_wwan_sim_status()) /* ron: low active */ - set_irq_type(irq, IRQF_TRIGGER_RISING); - else - set_irq_type(irq, IRQF_TRIGGER_FALLING); + irq = IOMUX_TO_IRQ(EFIKASB_WWAN_SIM); - ret = request_irq(irq, mx51_efikasb_sim_handler, 0, "sim-detect", 0); + if (mx51_efikamx_wwan_sim_status()) /* ron: low active */ + set_irq_type(irq, IRQF_TRIGGER_RISING); + else + set_irq_type(irq, IRQF_TRIGGER_FALLING); + ret = request_irq(irq, mx51_efikamx_sim_handler, 0, "sim-detect", 0); + } } diff --git a/arch/arm/mach-mx5/mx51_efikasb.c b/arch/arm/mach-mx5/mx51_efikasb.c index 5904943d5d8..c8fc2cfc47f 100644 --- a/arch/arm/mach-mx5/mx51_efikasb.c +++ b/arch/arm/mach-mx5/mx51_efikasb.c @@ -49,32 +49,6 @@ #include "usb.h" #include -/*! - * @file mach-mx51/mx51_efikasb.c - * - * @brief This file contains the board specific initialization routines. - * - * @ingroup MSL_MX51 - */ -extern void __init mx51_efikasb_io_init(void); - -extern int mxc_get_memory_id(void); -extern unsigned int mxc_get_pcb_id(void); - - - - -/*! - * Board specific fixup function. It is called by \b setup_arch() in - * setup.c file very early on during kernel starts. It allows the user to - * statically fill in the proper values for the passed-in parameters. None of - * the parameters is used currently. - * - * @param desc pointer to \b struct \b machine_desc - * @param tags pointer to \b struct \b tag - * @param cmdline pointer to the command line - * @param mi pointer to \b struct \b meminfo - */ static void __init mx51_efikasb_fixup(struct machine_desc *desc, struct tag *tags, char **cmdline, struct meminfo *mi) { @@ -135,47 +109,18 @@ static void __init mx51_efikasb_fixup(struct machine_desc *desc, struct tag *tag } } -#define PWGT1SPIEN (1<<15) -#define PWGT2SPIEN (1<<16) -#define USEROFFSPI (1<<3) - -static void mxc_power_off(void) -{ - /* We can do power down one of two ways: - Set the power gating - Set USEROFFSPI */ - gpio_set_value(IOMUX_TO_GPIO(USB_PHY_RESET_PIN), 0); - msleep(10); - /* Set the power gate bits to power down */ - pmic_write_reg(REG_POWER_MISC, (PWGT1SPIEN|PWGT2SPIEN), - (PWGT1SPIEN|PWGT2SPIEN)); - - mxc_wd_reset(); - - //robin: CLR_DFF - mxc_request_iomux(SYS_PWROFF_PIN, IOMUX_CONFIG_GPIO); - gpio_direction_output(IOMUX_TO_GPIO(SYS_PWROFF_PIN), 0); - gpio_set_value(IOMUX_TO_GPIO(SYS_PWROFF_PIN), 0); - msleep(10); - gpio_set_value(IOMUX_TO_GPIO(SYS_PWROFF_PIN), 1); -} - -int mx51_efikamx_revision(void) -{ - return 0; -} - static void __init mx51_efikasb_board_init(void) { mxc_cpu_common_init(); mxc_register_gpios(); mx51_efikasb_io_init(); + mx51_efikamx_board_id(); mx51_efikamx_init_uart(); mx51_efikamx_init_soc(); - mx51_efikasb_init_pmic(); + mx51_efikamx_init_pmic(); mx51_efikamx_init_nor(); mx51_efikamx_init_spi(); mx51_efikamx_init_i2c(); @@ -185,18 +130,21 @@ static void __init mx51_efikasb_board_init(void) mx51_efikamx_init_display(); - mx51_efikasb_init_leds(); - - pm_power_off = mxc_power_off; + mx51_efikamx_init_input(); + mx51_efikamx_init_usb(); + mx51_efikamx_init_wwan(); + mx51_efikamx_init_leds(); mx51_efikamx_init_audio(); mx51_efikasb_init_battery(); - mx51_efikasb_init_wwan(); + pm_power_off = mx51_efikamx_power_off; - mx5_usb_dr_init(); - mx5_usbh1_init(); - mx51_usbh2_init(); + /* dastardly code to give us 1.3 or 2.0 out of "1" or "2" */ + DBG(("Smartbook Revision %u.%u\n", + mx51_efikamx_revision(), + ((mx51_efikamx_revision() == 1) ? 3 : 0) )); + DBG(("Memory type %s\n", mx51_efikamx_memory() )); } static struct sys_timer mx51_efikasb_timer = { diff --git a/arch/arm/mach-mx5/mx51_efikasb.h b/arch/arm/mach-mx5/mx51_efikasb.h index 8544614ecff..870a624a681 100644 --- a/arch/arm/mach-mx5/mx51_efikasb.h +++ b/arch/arm/mach-mx5/mx51_efikasb.h @@ -43,37 +43,6 @@ #define MXC_LL_UART_PADDR UART1_BASE_ADDR #define MXC_LL_UART_VADDR AIPS1_IO_ADDRESS(UART1_BASE_ADDR) -#define HUB_RESET_PIN MX51_PIN_GPIO1_5 -#define PMIC_INT_PIN MX51_PIN_GPIO1_6 -#define USB_PHY_RESET_PIN MX51_PIN_EIM_D27 - -#define WIRELESS_SW_PIN MX51_PIN_DI1_PIN12 -#define WLAN_PWRON_PIN MX51_PIN_EIM_A22 -#define WLAN_RESET_PIN MX51_PIN_EIM_A16 -#define BT_PWRON_PIN MX51_PIN_EIM_A17 - -#define CAM_PWRON_PIN MX51_PIN_NANDF_CS0 - -#define LID_SW_PIN MX51_PIN_CSI1_VSYNC /* Low: close, High: open */ - -#define POWER_BTN_PIN MX51_PIN_EIM_DTACK -#define SYS_PWROFF_PIN MX51_PIN_CSI2_VSYNC -#define SYS_PWRGD_PIN MX51_PIN_CSI2_PIXCLK - -/* ron: R1.2 borad GPIO definition */ -#define MEM_ID0_PIN MX51_PIN_EIM_LBA /* MX51_PIN_GPIO1_4 */ -#define MEM_ID1_PIN MX51_PIN_EIM_CRE - -#define AGPS_PWRON_PIN MX51_PIN_CSI2_D12 -#define AGPS_RESET_PIN MX51_PIN_CSI2_D18 -#define AGPS_PWRSW_PIN MX51_PIN_NANDF_CS1 /* ron: R1.3 add AGPS_PWRSW */ - -/* ron: R1.3 board GPIO definition */ -#define PCB_ID0_PIN MX51_PIN_EIM_CS3 -#define PCB_ID1_PIN MX51_PIN_EIM_CS4 - -#define WDOG_PIN MX51_PIN_GPIO1_4 - /* here today, gone tomorrow */ /* cpu */ extern struct cpu_wp *(*get_cpu_wp)(int *wp); @@ -83,23 +52,34 @@ extern void mx51_efikamx_set_num_cpu_wp(int num); extern void __init mx51_efikamx_timer_init(void); -extern int mx51_efikamx_revision(void); +extern void __init mx51_efikasb_io_init(void); +extern void __init mx51_efikasb_init_battery(void); extern void __init mx51_efikamx_init_uart(void); extern void __init mx51_efikamx_init_soc(void); extern void __init mx51_efikamx_init_mmc(void); extern void __init mx51_efikamx_init_audio(void); extern void __init mx51_efikamx_init_pata(void); -extern void __init mx51_efikasb_init_leds(void); +extern void __init mx51_efikamx_init_leds(void); extern void __init mx51_efikamx_init_spi(void); extern void __init mx51_efikamx_init_nor(void); extern void __init mx51_efikamx_init_display(void); extern void __init mx51_efikamx_init_i2c(void); -extern void __init mx51_efikasb_init_battery(void); -extern void __init mx51_efikasb_init_wwan(void); -extern int __init mx51_efikasb_init_pmic(void); +extern void __init mx51_efikamx_init_wwan(void); +extern void __init mx51_efikamx_init_input(void); +extern int __init mx51_efikamx_init_pmic(void); +extern int __init mx51_efikamx_init_usb(void); + +/* io */ +extern void mx51_efikamx_board_id(void); +extern int mx51_efikamx_revision(void); +extern char *mx51_efikamx_memory(void); + +extern void mx51_efikamx_power_off(void); + extern void mx51_efikamx_display_adjust_mem(int gpu_start, int gpu_mem, int fb_mem); +#define DBG(x) { printk(KERN_INFO "Efika MX: "); printk x ; } // DBG(("iomux [%u] %u,%u,%u,%u,%u\n", i, pins[i].pin, pins[i].mux_mode, pins[i].pad_cfg, pins[i].in_select, pins[i].in_mode)); @@ -115,5 +95,10 @@ extern void mx51_efikamx_display_adjust_mem(int gpu_start, int gpu_mem, int fb_m } \ } +extern void mx51_efikamx_wifi_power(int state); +extern void mx51_efikamx_wifi_reset(void); +extern void mx51_efikamx_bluetooth_power(int state); +extern void mx51_efikamx_camera_power(int state); +extern void mx51_efikamx_wwan_power(int state); #endif diff --git a/arch/arm/mach-mx5/mx51_efikasb_gpio.c b/arch/arm/mach-mx5/mx51_efikasb_gpio.c deleted file mode 100644 index a6f89a48d8a..00000000000 --- a/arch/arm/mach-mx5/mx51_efikasb_gpio.c +++ /dev/null @@ -1,406 +0,0 @@ -/* - * Copyright 2009-2010 Pegatron Corporation. All Rights Reserved. - * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved. - */ - -/* - * The code contained herein is licensed under the GNU General Public - * License. You may obtain a copy of the GNU General Public License - * Version 2 or later at the following locations: - * - * http://www.opensource.org/licenses/gpl-license.html - * http://www.gnu.org/copyleft/gpl.html - */ - -#include -#include -#include -#include -#include -#include -#include -#include "mx51_efikasb.h" -#include "iomux.h" -#include "mx51_pins.h" - -/*! - * @file mach-mx51/mx51_efikasb_gpio.c - * - * @brief This file contains all the GPIO setup functions for the board. - * - * @ingroup GPIO - */ - -void mxc_power_on_wlan(int); -void mxc_power_on_bt(int); -void mxc_power_on_camera(int); -void mxc_reset_wlan(void); -void mxc_reset_usb_hub(void); -void mxc_reset_usb_phy(void); - - -static struct mxc_iomux_pin_cfg __initdata mxc_iomux_pins[] = { - /* USBH2_DATA0 */ - { - MX51_PIN_EIM_D16, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_ODE_OPENDRAIN_NONE | - PAD_CTL_100K_PU | PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | - PAD_CTL_HYS_ENABLE), - }, - /* USBH2_DATA1 */ - { - MX51_PIN_EIM_D17, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - /* USBH2_DATA2 */ - { - MX51_PIN_EIM_D18, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - /* USBH2_DATA3 */ - { - MX51_PIN_EIM_D19, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - /* USBH2_DATA4 */ - { - MX51_PIN_EIM_D20, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - /* USBH2_DATA5 */ - { - MX51_PIN_EIM_D21, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - /* USBH2_DATA6 */ - { - MX51_PIN_EIM_D22, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - /* USBH2_DATA7 */ - { - MX51_PIN_EIM_D23, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* ron: GPIO2_10 WLAN Reset*/ - MX51_PIN_EIM_A16, IOMUX_CONFIG_GPIO, - }, - { /* ron: GPIO2_11 BT Power On */ - MX51_PIN_EIM_A17, IOMUX_CONFIG_GPIO, - }, - { - MX51_PIN_EIM_A18, IOMUX_CONFIG_GPIO, - }, - { - MX51_PIN_EIM_A19, IOMUX_CONFIG_GPIO, - }, - { - MX51_PIN_EIM_A20, IOMUX_CONFIG_GPIO, - (PAD_CTL_PKE_ENABLE), - }, - { - MX51_PIN_EIM_A21, IOMUX_CONFIG_GPIO, - }, - { /* ron: GPIO2_16 WLAN Power On */ - MX51_PIN_EIM_A22, IOMUX_CONFIG_GPIO, - }, - /* USBH2_CLK */ - { - MX51_PIN_EIM_A24, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - /* USBH2_DIR */ - { - MX51_PIN_EIM_A25, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - /* USBH2_STP */ - { - MX51_PIN_EIM_A26, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - /* USBH2_NXT */ - { - MX51_PIN_EIM_A27, IOMUX_CONFIG_ALT2, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* ron: GPIO2_24 CPU 22.5792M OSC enable */ - MX51_PIN_EIM_OE, IOMUX_CONFIG_ALT1, - (PAD_CTL_HYS_ENABLE | PAD_CTL_PKE_ENABLE), - }, - { /*ron: GPIO2_31 Power Button*/ - MX51_PIN_EIM_DTACK, IOMUX_CONFIG_GPIO, - (PAD_CTL_PKE_ENABLE | PAD_CTL_100K_PU), - }, - { - MX51_PIN_DI_GP4, IOMUX_CONFIG_ALT4, - }, - { /* USBH1_STP */ - MX51_PIN_USBH1_STP, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_PUE_KEEPER | - PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* USBH1_CLK */ - MX51_PIN_USBH1_CLK, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_PUE_KEEPER | - PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE | PAD_CTL_DDR_INPUT_CMOS), - }, - { /* USBH1_DIR */ - MX51_PIN_USBH1_DIR, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_PUE_KEEPER | - PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE | PAD_CTL_DDR_INPUT_CMOS), - }, - { /* USBH1_NXT */ - MX51_PIN_USBH1_NXT, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_PUE_KEEPER | - PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE | PAD_CTL_DDR_INPUT_CMOS), - }, - { /* USBH1_DATA0 */ - MX51_PIN_USBH1_DATA0, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* USBH1_DATA1 */ - MX51_PIN_USBH1_DATA1, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* USBH1_DATA2 */ - MX51_PIN_USBH1_DATA2, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* USBH1_DATA3 */ - MX51_PIN_USBH1_DATA3, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* USBH1_DATA4 */ - MX51_PIN_USBH1_DATA4, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* USBH1_DATA5 */ - MX51_PIN_USBH1_DATA5, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* USBH1_DATA6 */ - MX51_PIN_USBH1_DATA6, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* USBH1_DATA7 */ - MX51_PIN_USBH1_DATA7, IOMUX_CONFIG_ALT0, - (PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | - PAD_CTL_PUE_KEEPER | PAD_CTL_PKE_ENABLE | PAD_CTL_HYS_ENABLE), - }, - { /* ron: GPIO1_6 PMIC Interrupt */ - MX51_PIN_GPIO1_6, IOMUX_CONFIG_GPIO | IOMUX_CONFIG_SION, - (PAD_CTL_SRE_SLOW | PAD_CTL_DRV_MEDIUM | PAD_CTL_100K_PU | - PAD_CTL_HYS_ENABLE | PAD_CTL_DRV_VOT_HIGH), - }, - { - MX51_PIN_EIM_D25, IOMUX_CONFIG_ALT4, - (PAD_CTL_HYS_NONE | PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER | - PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST), - }, - { /* ron: GPIO3_0 Battery Low */ - MX51_PIN_DI1_PIN11, IOMUX_CONFIG_ALT4, - }, - { /* ron: GPIO3_1 Wireless SW */ - MX51_PIN_DI1_PIN12, IOMUX_CONFIG_ALT4, - }, - { /* ron: GPIO3_2 Watchdog ? GPIO conflict with EIM_CRE*/ - MX51_PIN_DI1_PIN13, IOMUX_CONFIG_ALT4, - }, - { /* ron: GPIO4_15 Power Good */ - MX51_PIN_CSI2_PIXCLK, IOMUX_CONFIG_ALT3, - }, -}; - -static void power_on_bt_handler(struct work_struct *work) -{ - mxc_power_on_bt(1); -} - -static DECLARE_DELAYED_WORK(power_on_bt_work, power_on_bt_handler); - -void __init mx51_efikasb_io_init(void) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(mxc_iomux_pins); i++) { - mxc_request_iomux(mxc_iomux_pins[i].pin, - mxc_iomux_pins[i].mux_mode); - if (mxc_iomux_pins[i].pad_cfg) - mxc_iomux_set_pad(mxc_iomux_pins[i].pin, - mxc_iomux_pins[i].pad_cfg); - if (mxc_iomux_pins[i].in_select) - mxc_iomux_set_input(mxc_iomux_pins[i].in_select, - mxc_iomux_pins[i].in_mode); - } - - /* ron: USB Phy Reset */ - mxc_request_iomux(USB_PHY_RESET_PIN, IOMUX_CONFIG_ALT1); - mxc_iomux_set_pad(USB_PHY_RESET_PIN, PAD_CTL_DRV_HIGH | - PAD_CTL_HYS_NONE | PAD_CTL_PUE_KEEPER | - PAD_CTL_100K_PU | PAD_CTL_ODE_OPENDRAIN_NONE | - PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST); - gpio_request(IOMUX_TO_GPIO(USB_PHY_RESET_PIN), "usb_phy_reset"); - mxc_reset_usb_phy(); - - /* ron: PMIC interrupt*/ - gpio_request(IOMUX_TO_GPIO(PMIC_INT_PIN), "pmic_int"); - gpio_direction_input(IOMUX_TO_GPIO(PMIC_INT_PIN)); - - /* Lid Switch */ - mxc_request_iomux(LID_SW_PIN, IOMUX_CONFIG_GPIO /* | IOMUX_CONFIG_SION */); - gpio_request(IOMUX_TO_GPIO(LID_SW_PIN), "lid_sw"); - gpio_direction_input(IOMUX_TO_GPIO(LID_SW_PIN)); - - /* Wireless*/ - mxc_power_on_wlan(1); - mxc_reset_wlan(); -/* mxc_power_on_bt(1); */ - /* ron: workaround the bluetooth detect fail */ - schedule_delayed_work(&power_on_bt_work, msecs_to_jiffies(500)); - - /* Camera */ - mxc_request_iomux(CAM_PWRON_PIN, IOMUX_CONFIG_GPIO); - mxc_power_on_camera(1); - - /* ron: for R12 borad gpio */ - /* Memory ID pin */ - mxc_request_iomux(MEM_ID0_PIN, IOMUX_CONFIG_GPIO); - gpio_request(IOMUX_TO_GPIO(MEM_ID0_PIN), "mem_id"); - gpio_direction_input(IOMUX_TO_GPIO(MEM_ID0_PIN)); - mxc_request_iomux(MEM_ID1_PIN, IOMUX_CONFIG_GPIO); - gpio_request(IOMUX_TO_GPIO(MEM_ID1_PIN), "mem_id"); - gpio_direction_input(IOMUX_TO_GPIO(MEM_ID1_PIN)); - - /* Watchdog */ - mxc_request_iomux(WDOG_PIN, IOMUX_CONFIG_ALT2); - - /* PCB ID */ - mxc_request_iomux(PCB_ID0_PIN, IOMUX_CONFIG_GPIO); - mxc_request_iomux(PCB_ID1_PIN, IOMUX_CONFIG_GPIO); - gpio_request(IOMUX_TO_GPIO(PCB_ID0_PIN), "pcb_id"); - gpio_request(IOMUX_TO_GPIO(PCB_ID1_PIN), "pcb_id"); - gpio_direction_input(IOMUX_TO_GPIO(PCB_ID0_PIN)); - gpio_direction_input(IOMUX_TO_GPIO(PCB_ID1_PIN)); - -} - -void mxc_power_on_wlan(int on) -{ - gpio_direction_output(IOMUX_TO_GPIO(WLAN_PWRON_PIN), 0); - if (on) - gpio_set_value(IOMUX_TO_GPIO(WLAN_PWRON_PIN), 1); - else - gpio_set_value(IOMUX_TO_GPIO(WLAN_PWRON_PIN), 0); - -} -EXPORT_SYMBOL(mxc_power_on_wlan); - -void mxc_power_on_bt(int on) -{ - gpio_direction_output(IOMUX_TO_GPIO(BT_PWRON_PIN), 0); - if (on) - gpio_set_value(IOMUX_TO_GPIO(BT_PWRON_PIN), 1); - else - gpio_set_value(IOMUX_TO_GPIO(BT_PWRON_PIN), 0); - -} -EXPORT_SYMBOL(mxc_power_on_bt); - -void mxc_power_on_camera(int on) -{ - gpio_direction_output(IOMUX_TO_GPIO(CAM_PWRON_PIN), 0); - if(on) - gpio_set_value(IOMUX_TO_GPIO(CAM_PWRON_PIN), 0); /* low active */ - else - gpio_set_value(IOMUX_TO_GPIO(CAM_PWRON_PIN), 1); -} -EXPORT_SYMBOL(mxc_power_on_camera); - -void mxc_reset_wlan(void) -{ - gpio_direction_output(IOMUX_TO_GPIO(WLAN_RESET_PIN), 1); - msleep(1); - gpio_set_value(IOMUX_TO_GPIO(WLAN_RESET_PIN), 0); - msleep(1); - gpio_set_value(IOMUX_TO_GPIO(WLAN_RESET_PIN), 1); -} -EXPORT_SYMBOL(mxc_reset_wlan); - -void mxc_reset_usb_hub(void) -{ - gpio_direction_output(IOMUX_TO_GPIO(HUB_RESET_PIN), 1); - msleep(1); - gpio_set_value(IOMUX_TO_GPIO(HUB_RESET_PIN), 0); - msleep(1); - gpio_set_value(IOMUX_TO_GPIO(HUB_RESET_PIN), 1); -} -EXPORT_SYMBOL(mxc_reset_usb_hub); - - -void mxc_reset_usb_phy(void) -{ - gpio_direction_output(IOMUX_TO_GPIO(USB_PHY_RESET_PIN), 0); - msleep(1); - gpio_set_value(IOMUX_TO_GPIO(USB_PHY_RESET_PIN), 1); - -} -EXPORT_SYMBOL(mxc_reset_usb_phy); - -/* ron: 00 Nanya DDR2 - 10 Micron DDR2 - 01 Hynix DDR2 */ -int mxc_get_memory_id(void) -{ - int id; - - id = gpio_get_value(IOMUX_TO_GPIO(MEM_ID0_PIN)); - id |= gpio_get_value(IOMUX_TO_GPIO(MEM_ID1_PIN)) << 1; - - return id; -} -EXPORT_SYMBOL(mxc_get_memory_id); - -int mxc_get_wireless_sw_status(void) -{ - return !gpio_get_value(IOMUX_TO_GPIO(WIRELESS_SW_PIN)); -} -EXPORT_SYMBOL(mxc_get_wireless_sw_status); - -int mxc_get_lid_sw_status(void) -{ - /* ron: 0:open 1:close */ - return !gpio_get_value(IOMUX_TO_GPIO(LID_SW_PIN)); -} -EXPORT_SYMBOL(mxc_get_lid_sw_status); - -/* ron: 01 R1.3 board - 10 R2.0 board */ -int mxc_get_pcb_id(void) -{ - int id; - - id = gpio_get_value(IOMUX_TO_GPIO(PCB_ID0_PIN)); - id |= gpio_get_value(IOMUX_TO_GPIO(PCB_ID1_PIN)) << 1; - - return id; -} -EXPORT_SYMBOL(mxc_get_pcb_id); diff --git a/arch/arm/mach-mx5/mx51_efikasb_lid.c b/arch/arm/mach-mx5/mx51_efikasb_lid.c deleted file mode 100644 index cb4477b2474..00000000000 --- a/arch/arm/mach-mx5/mx51_efikasb_lid.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2009-2010 Pegatron Corporation. All Rights Reserved. - * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "mx51_efikasb.h" -#include "mx51_pins.h" -#include "iomux.h" - -int lid_wake_enable = 0; -extern int mxc_get_lid_sw_status(void); - -static struct input_dev *efikasb_lid_inputdev; - -static struct platform_device efikasb_lid_dev = { - .name = "efikasb_lid", -}; - -static irqreturn_t lid_sw_int(int irq, void *dev_id) -{ - int lid_close; - - lid_close = mxc_get_lid_sw_status(); - if(lid_close) { - pr_info("Lid Switch Close\n"); - set_irq_type(irq, IRQF_TRIGGER_RISING); - - if(lid_wake_enable) - enable_irq_wake(irq); - - input_report_switch(efikasb_lid_inputdev, SW_LID, lid_close); - input_sync(efikasb_lid_inputdev); - - } else { - pr_info("Lid Switch Open\n"); - set_irq_type(irq, IRQF_TRIGGER_FALLING); - - input_report_switch(efikasb_lid_inputdev, SW_LID, lid_close); - input_sync(efikasb_lid_inputdev); - - if(lid_wake_enable) - disable_irq_wake(irq); - } - - return IRQ_HANDLED; -} - -static int mxc_init_lid_sw(void) -{ - int irq, ret; - - gpio_request(IOMUX_TO_GPIO(LID_SW_PIN), "lid_sw"); - gpio_direction_input(IOMUX_TO_GPIO(LID_SW_PIN)); - irq = IOMUX_TO_IRQ(LID_SW_PIN); - - if(mxc_get_lid_sw_status()) { - pr_info("Lid Switch Close\n"); - set_irq_type(irq, IRQF_TRIGGER_RISING); - } else { - pr_info("Lid Switch Open\n"); - set_irq_type(irq, IRQF_TRIGGER_FALLING); - } - - ret = request_irq(irq, lid_sw_int, 0, "lid-sw", 0); - if(ret) - pr_info("register lid switch interrupt failed\n"); - - return ret; -} - -static ssize_t lid_status_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) -{ - return sprintf(buf, "%d\n", mxc_get_lid_sw_status()); -} - -static ssize_t lid_wake_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) -{ - return sprintf(buf, "%s\n", lid_wake_enable ? "on": "off"); -} - -static ssize_t lid_wake_store(struct kobject *kobj, struct kobj_attribute *attr, - const char *buf, size_t count) -{ - if(strncmp(buf, "on", 2) == 0) - lid_wake_enable = 1; - else if (strncmp(buf, "off", 3) == 0) - lid_wake_enable = 0; - else - return -EINVAL; - - return count; -} - -static struct kobj_attribute lid_status_attribute = - __ATTR(lid, S_IFREG | S_IRUGO, lid_status_show, NULL); -static struct kobj_attribute lid_wake_attribute = - __ATTR(lid_wake, 0666, lid_wake_show, lid_wake_store); - -static struct attribute *status_attrs[] = { - &lid_status_attribute.attr, - &lid_wake_attribute.attr, - NULL, -}; - -static struct attribute_group status_attr_group = { - .attrs = status_attrs, -}; - -static void __init lid_wake_setup(char **p) -{ - if(memcmp(*p, "on", 2) == 0) { - lid_wake_enable = 1; - *p += 2; - } else if(memcmp(*p, "off", 3) == 0) { - lid_wake_enable = 0; - *p += 3; - } -} - -__early_param("lid_wake=", lid_wake_setup); - -static int __init mxc_init_efikasb_lid(void) -{ - int ret ; - struct kobject *lid_kobj; - - platform_device_register(&efikasb_lid_dev); - - lid_kobj = kobject_create_and_add("status", &efikasb_lid_dev.dev.kobj); - if(!lid_kobj) { - ret = -ENOMEM; - goto err3; - } - - ret = sysfs_create_group(lid_kobj, &status_attr_group); - if(ret) { - goto err2; - } - - efikasb_lid_inputdev = input_allocate_device(); - if(!efikasb_lid_inputdev) { - pr_err("Failed to allocate lid input device\n"); - ret = -ENOMEM; - goto err2; - } - - efikasb_lid_inputdev->name = "Efika MX Smartbook Lid Switch"; - efikasb_lid_inputdev->phys = "efikasb/input1"; - efikasb_lid_inputdev->uniq = "efikasb"; - efikasb_lid_inputdev->id.bustype = BUS_HOST; - efikasb_lid_inputdev->id.vendor = PCI_VENDOR_ID_FREESCALE; - - set_bit(EV_SW, efikasb_lid_inputdev->evbit); - set_bit(SW_LID, efikasb_lid_inputdev->swbit); - - /* ron: 0:open 1:close */ - if(mxc_get_lid_sw_status()) - set_bit(SW_LID, efikasb_lid_inputdev->sw); - - ret = input_register_device(efikasb_lid_inputdev); - if(ret) { - pr_err("Failed to register Efika MX Smartbook lid input device\n"); - ret = -ENODEV; - goto err1; - } - - mxc_init_lid_sw(); - - return ret; - - err1: - input_free_device(efikasb_lid_inputdev); - err2: - kobject_put(lid_kobj); - err3: - platform_device_unregister(&efikasb_lid_dev); - - return ret; -} - -late_initcall(mxc_init_efikasb_lid); diff --git a/arch/arm/mach-mx5/mx51_efikasb_pmic.c b/arch/arm/mach-mx5/mx51_efikasb_pmic.c deleted file mode 100644 index 2c9164fc7cf..00000000000 --- a/arch/arm/mach-mx5/mx51_efikasb_pmic.c +++ /dev/null @@ -1,423 +0,0 @@ -/* - * mx51_efikasb_pmic.c -- Efika MX Smartbook Driver for Atlas MC13892 PMIC - */ - /* - * Copyright 2009-2010 Pegatron Corporation. All Rights Reserved. - * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved. - */ - - /* - * The code contained herein is licensed under the GNU General Public - * License. You may obtain a copy of the GNU General Public License - * Version 2 or later at the following locations: - * - * http://www.opensource.org/licenses/gpl-license.html - * http://www.gnu.org/copyleft/gpl.html - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "iomux.h" -#include "mx51_pins.h" - -/* - * Convenience conversion. - * Here atm, maybe there is somewhere better for this. - */ -#define mV_to_uV(mV) (mV * 1000) -#define uV_to_mV(uV) (uV / 1000) -#define V_to_uV(V) (mV_to_uV(V * 1000)) -#define uV_to_V(uV) (uV_to_mV(uV) / 1000) - -/* Coin cell charger enable */ -#define COINCHEN_LSH 23 -#define COINCHEN_WID 1 -/* Coin cell charger voltage setting */ -#define VCOIN_LSH 20 -#define VCOIN_WID 3 - -/* Coin Charger voltage */ -#define VCOIN_2_5V 0x0 -#define VCOIN_2_7V 0x1 -#define VCOIN_2_8V 0x2 -#define VCOIN_2_9V 0x3 -#define VCOIN_3_0V 0x4 -#define VCOIN_3_1V 0x5 -#define VCOIN_3_2V 0x6 -#define VCOIN_3_3V 0x7 - -/* regulator standby mask */ -#define GEN1_STBY_MASK (1 << 1) -#define IOHI_STBY_MASK (1 << 4) -#define DIG_STBY_MASK (1 << 10) -#define GEN2_STBY_MASK (1 << 13) -#define PLL_STBY_MASK (1 << 16) -#define USB2_STBY_MASK (1 << 19) - -#define GEN3_STBY_MASK (1 << 1) -#define CAM_STBY_MASK (1 << 7) -#define VIDEO_STBY_MASK (1 << 13) -#define AUDIO_STBY_MASK (1 << 16) -#define SD_STBY_MASK (1 << 19) - -/* 0x92412 */ -#define REG_MODE_0_ALL_MASK (GEN1_STBY_MASK |\ - DIG_STBY_MASK | GEN2_STBY_MASK |\ - PLL_STBY_MASK) -/* 0x92082 */ -#define REG_MODE_1_ALL_MASK (CAM_STBY_MASK | VIDEO_STBY_MASK |\ - AUDIO_STBY_MASK | SD_STBY_MASK) - -/* switch mode setting */ -#define SW1MODE_LSB 0 -#define SW2MODE_LSB 10 -#define SW3MODE_LSB 0 -#define SW4MODE_LSB 8 - -#define SWMODE_MASK 0xF -#define SWMODE_AUTO 0x8 - -#define PWGT1SPIEN (1 << 15) -#define PWGT2SPIEN (1 << 16) - -/* CPU */ -static struct regulator_consumer_supply sw1_consumers[] = { - { - .supply = "cpu_vcc", - } -}; - -static struct regulator_consumer_supply vdig_consumers[] = { - { - /* sgtl5000 */ - .supply = "VDDA", - .dev_name = "1-000a", - }, - { - /* sgtl5000 */ - .supply = "VDDD", - .dev_name = "1-000a", - }, -}; - -static struct regulator_consumer_supply vvideo_consumers[] = { - { - /* sgtl5000 */ - .supply = "VDDIO", - .dev_name = "1-000a", - }, -}; - -struct mc13892; - -static struct regulator_init_data sw1_init = { - .constraints = { - .name = "SW1", - .min_uV = mV_to_uV(600), - .max_uV = mV_to_uV(1375), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .valid_modes_mask = 0, - .always_on = 1, - .boot_on = 1, - .initial_state = PM_SUSPEND_MEM, - .state_mem = { - .uV = 850000, - .mode = REGULATOR_MODE_NORMAL, - .enabled = 1, - }, - }, - .num_consumer_supplies = ARRAY_SIZE(sw1_consumers), - .consumer_supplies = sw1_consumers, -}; - -static struct regulator_init_data sw2_init = { - .constraints = { - .name = "SW2", - .min_uV = mV_to_uV(900), - .max_uV = mV_to_uV(1850), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .always_on = 1, - .boot_on = 1, - .initial_state = PM_SUSPEND_MEM, - .state_mem = { - .uV = 950000, - .mode = REGULATOR_MODE_NORMAL, - .enabled = 1, - }, - } -}; - -static struct regulator_init_data sw3_init = { - .constraints = { - .name = "SW3", - .min_uV = mV_to_uV(1100), - .max_uV = mV_to_uV(1850), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .always_on = 1, - .boot_on = 1, - } -}; - -static struct regulator_init_data sw4_init = { - .constraints = { - .name = "SW4", - .min_uV = mV_to_uV(1100), - .max_uV = mV_to_uV(1850), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .always_on = 1, - .boot_on = 1, - } -}; - -static struct regulator_init_data viohi_init = { - .constraints = { - .name = "VIOHI", - .always_on = 1, - .boot_on = 1, - } -}; - -static struct regulator_init_data vusb_init = { - .constraints = { - .name = "VUSB", - .boot_on = 1, - .always_on = 1, - } -}; - -static struct regulator_init_data swbst_init = { - .constraints = { - .name = "SWBST", - } -}; - -static struct regulator_init_data vdig_init = { - .constraints = { - .name = "VDIG", - .min_uV = mV_to_uV(1650), - .max_uV = mV_to_uV(1650), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .boot_on = 1, - }, - .num_consumer_supplies = ARRAY_SIZE(vdig_consumers), - .consumer_supplies = vdig_consumers, -}; - -static struct regulator_init_data vpll_init = { - .constraints = { - .name = "VPLL", - .min_uV = mV_to_uV(1050), - .max_uV = mV_to_uV(1800), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .boot_on = 1, - .always_on = 1, - } -}; - -static struct regulator_init_data vusb2_init = { - .constraints = { - .name = "VUSB2", - .min_uV = mV_to_uV(2400), - .max_uV = mV_to_uV(2775), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .boot_on = 1, - .always_on = 1, - } -}; - -static struct regulator_init_data vvideo_init = { - .constraints = { - .name = "VVIDEO", - .min_uV = mV_to_uV(2775), - .max_uV = mV_to_uV(2775), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .apply_uV =1, - }, - .num_consumer_supplies = ARRAY_SIZE(vvideo_consumers), - .consumer_supplies = vvideo_consumers, -}; - -static struct regulator_init_data vaudio_init = { - .constraints = { - .name = "VAUDIO", - .min_uV = mV_to_uV(2300), - .max_uV = mV_to_uV(3000), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - } -}; - -static struct regulator_init_data vsd_init = { - .constraints = { - .name = "VSD", - .min_uV = mV_to_uV(1800), - .max_uV = mV_to_uV(3150), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - } -}; - -static struct regulator_init_data vcam_init = { - .constraints = { - .name = "VCAM", - .min_uV = mV_to_uV(2500), - .max_uV = mV_to_uV(3000), - .valid_ops_mask = - REGULATOR_CHANGE_VOLTAGE | REGULATOR_CHANGE_MODE, - .valid_modes_mask = REGULATOR_MODE_FAST | REGULATOR_MODE_NORMAL, - } -}; - -static struct regulator_init_data vgen1_init = { - .constraints = { - .name = "VGEN1", - .min_uV = mV_to_uV(1200), - .max_uV = mV_to_uV(1200), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - } -}; - -static struct regulator_init_data vgen2_init = { - .constraints = { - .name = "VGEN2", - .min_uV = mV_to_uV(1200), - .max_uV = mV_to_uV(3150), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .always_on = 1, - } -}; - -static struct regulator_init_data vgen3_init = { - .constraints = { - .name = "VGEN3", - .min_uV = mV_to_uV(1800), - .max_uV = mV_to_uV(2900), - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .always_on = 1, - } -}; - -static struct regulator_init_data gpo1_init = { - .constraints = { - .name = "GPO1", - } -}; - -static struct regulator_init_data gpo2_init = { - .constraints = { - .name = "GPO2", - } -}; - -static struct regulator_init_data gpo3_init = { - .constraints = { - .name = "GPO3", - } -}; - -static struct regulator_init_data gpo4_init = { - .constraints = { - .name = "GPO4", - } -}; - -static int mc13892_regulator_init(struct mc13892 *mc13892) -{ - unsigned int value, register_mask; - - printk("Initializing regulators for Efika MX Smartbook\n"); - if (mxc_cpu_is_rev(CHIP_REV_2_0) < 0) - sw2_init.constraints.state_mem.uV = 1100000; - else if (mxc_cpu_is_rev(CHIP_REV_2_0) == 1) { - sw2_init.constraints.state_mem.uV = 1250000; - sw1_init.constraints.state_mem.uV = 1000000; - } - - /* enable standby controll for all regulators */ - pmic_read_reg(REG_MODE_0, &value, 0xffffff); - value |= REG_MODE_0_ALL_MASK; - pmic_write_reg(REG_MODE_0, value, 0xffffff); - - pmic_read_reg(REG_MODE_1, &value, 0xffffff); - value |= REG_MODE_1_ALL_MASK; - pmic_write_reg(REG_MODE_1, value, 0xffffff); - - /* enable switch audo mode */ - pmic_read_reg(REG_IDENTIFICATION, &value, 0xffffff); - /* only for mc13892 2.0A */ - if ((value & 0x0000FFFF) == 0x45d0) { - pmic_read_reg(REG_SW_4, &value, 0xffffff); - register_mask = (SWMODE_MASK << SW1MODE_LSB) | - (SWMODE_MASK << SW2MODE_LSB); - value &= ~register_mask; - value |= (SWMODE_AUTO << SW1MODE_LSB) | - (SWMODE_AUTO << SW2MODE_LSB); - pmic_write_reg(REG_SW_4, value, 0xffffff); - - pmic_read_reg(REG_SW_5, &value, 0xffffff); - register_mask = (SWMODE_MASK << SW3MODE_LSB) | - (SWMODE_MASK << SW4MODE_LSB); - value &= ~register_mask; - value |= (SWMODE_AUTO << SW3MODE_LSB) | - (SWMODE_AUTO << SW4MODE_LSB); - pmic_write_reg(REG_SW_5, value, 0xffffff); - } - - mc13892_register_regulator(mc13892, MC13892_SW1, &sw1_init); - mc13892_register_regulator(mc13892, MC13892_SW2, &sw2_init); - mc13892_register_regulator(mc13892, MC13892_SW3, &sw3_init); - mc13892_register_regulator(mc13892, MC13892_SW4, &sw4_init); - mc13892_register_regulator(mc13892, MC13892_SWBST, &swbst_init); - mc13892_register_regulator(mc13892, MC13892_VIOHI, &viohi_init); - mc13892_register_regulator(mc13892, MC13892_VPLL, &vpll_init); - mc13892_register_regulator(mc13892, MC13892_VDIG, &vdig_init); - mc13892_register_regulator(mc13892, MC13892_VSD, &vsd_init); - mc13892_register_regulator(mc13892, MC13892_VUSB2, &vusb2_init); - mc13892_register_regulator(mc13892, MC13892_VVIDEO, &vvideo_init); - mc13892_register_regulator(mc13892, MC13892_VAUDIO, &vaudio_init); - mc13892_register_regulator(mc13892, MC13892_VCAM, &vcam_init); - mc13892_register_regulator(mc13892, MC13892_VGEN1, &vgen1_init); - mc13892_register_regulator(mc13892, MC13892_VGEN2, &vgen2_init); - mc13892_register_regulator(mc13892, MC13892_VGEN3, &vgen3_init); - mc13892_register_regulator(mc13892, MC13892_VUSB, &vusb_init); - mc13892_register_regulator(mc13892, MC13892_GPO1, &gpo1_init); - mc13892_register_regulator(mc13892, MC13892_GPO2, &gpo2_init); - mc13892_register_regulator(mc13892, MC13892_GPO3, &gpo3_init); - mc13892_register_regulator(mc13892, MC13892_GPO4, &gpo4_init); - - regulator_has_full_constraints(); - - return 0; -} - -static struct mc13892_platform_data mc13892_plat = { - .init = mc13892_regulator_init, -}; - -static struct spi_board_info __initdata mc13892_spi_device = { - .modalias = "pmic_spi", - /* - .irq = IOMUX_TO_IRQ(MX51_PIN_GPIO1_8), - */ - .irq = IOMUX_TO_IRQ(MX51_PIN_GPIO1_6), - .max_speed_hz = 1000000, /* max spi SCK clock speed in HZ */ - .bus_num = 1, - .chip_select = 0, - .platform_data = &mc13892_plat, -}; - - -int __init mx51_efikasb_init_pmic(void) -{ - /* ron: disable power gate */ - pmic_write_reg(REG_POWER_MISC, ~(PWGT1SPIEN|PWGT2SPIEN), - (PWGT1SPIEN|PWGT2SPIEN)); - - return spi_register_board_info(&mc13892_spi_device, 1); -} - diff --git a/arch/arm/mach-mx5/mx51_efikasb_switch.c b/arch/arm/mach-mx5/mx51_efikasb_switch.c deleted file mode 100644 index eb5407c97e1..00000000000 --- a/arch/arm/mach-mx5/mx51_efikasb_switch.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright 2009-2010 Pegatron Corporation. All Rights Reserved. - * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved. - */ - - - - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "mx51_efikasb.h" -#include "mx51_pins.h" -#include "iomux.h" - -int wireless_sw_state; - -extern int mxc_get_wireless_sw_status(void); -extern int mxc_get_sim_card_status(void); - -extern void mxc_power_on_wlan(int on); -extern void efikasb_power_on_wwan(int val); -extern void efikasb_power_on_bt(int val); - -extern int lid_wake_enable; -extern int mxc_get_lid_sw_status(void); - -extern void kernel_power_off(void); - -static struct input_dev *efikasb_inputdev; -static int system_is_resuming = 0; - - -/*! - * Power Key interrupt handler. - */ -static irqreturn_t power_key_int(int irq, void *dev_id) -{ - static int key_pressed = 0; - int pk_pressed; - - /* ron: Don't report power key event if system is resuming */ - if(system_is_resuming) - return IRQ_HANDLED; - - pk_pressed = !gpio_get_value(IOMUX_TO_GPIO(POWER_BTN_PIN)); - if (pk_pressed) { - if (key_pressed) - return 0; - key_pressed = 1; - pr_info("PWR key pressed\n"); - /* ron: input_report_key(pk_dev, KEY_POWER, pk_pressed); */ - set_irq_type(irq, IRQF_TRIGGER_RISING); /* ron: detect falling edge */ - - if(lid_wake_enable) - enable_irq_wake(IOMUX_TO_IRQ(LID_SW_PIN)); - - input_report_key(efikasb_inputdev, KEY_POWER, 1); - input_sync(efikasb_inputdev); - } else { - if (!key_pressed) - return 0; - key_pressed = 0; - pr_info("PWR Key released\n"); - /* ron: input_report_key(pk_dev, KEY_POWER, pk_released); */ - set_irq_type(irq, IRQF_TRIGGER_FALLING); /* ron: detect falling edge */ - input_report_key(efikasb_inputdev, KEY_POWER, 0); - input_sync(efikasb_inputdev); - } - - return IRQ_HANDLED; -} - -static int mxc_init_power_key(void) -{ - int ret; - int irq; - - /* ron: set power key as wakeup source */ - gpio_request(IOMUX_TO_GPIO(POWER_BTN_PIN), "power_btn"); - gpio_direction_input(IOMUX_TO_GPIO(POWER_BTN_PIN)); - irq = IOMUX_TO_IRQ(POWER_BTN_PIN); - set_irq_type(irq, IRQF_TRIGGER_FALLING); /* ron: detect rising & falling edge */ - - ret = request_irq(irq, power_key_int, 0, "power_key", 0); - if (ret) - pr_info("register on-off key interrupt failed\n"); - else - enable_irq_wake(irq); - - return ret; - -} - -#define KEY_RESUME KEY_WAKEUP - -static int pm_notifier_call(struct notifier_block *nb, unsigned long event, void *dummy) -{ - switch (event) { - case PM_SUSPEND_PREPARE: - printk("System Suspending .....\n"); - system_is_resuming = 1; - return NOTIFY_OK; - - case PM_POST_SUSPEND: - printk("System Resumed\n"); - system_is_resuming = 0; - input_event(efikasb_inputdev, EV_PWR, KEY_RESUME, 1); - input_sync(efikasb_inputdev); - - return NOTIFY_OK; - - } - - return NOTIFY_DONE; -} - - -static struct notifier_block pm_nb = { - .notifier_call = pm_notifier_call, -}; - - -static irqreturn_t wireless_sw_int(int irq, void *dev_id) -{ - wireless_sw_state = gpio_get_value(IOMUX_TO_GPIO(WIRELESS_SW_PIN)); - - if (wireless_sw_state) { - pr_info("Wireless SW Off\n"); - set_irq_type(irq, IRQF_TRIGGER_FALLING); - input_report_switch(efikasb_inputdev, SW_RFKILL_ALL, 0); - input_sync(efikasb_inputdev); - // power off WLAN, WWAN and BT by H/W - } else { - pr_info("Wireless SW On\n"); - set_irq_type(irq, IRQF_TRIGGER_RISING); - input_report_switch(efikasb_inputdev, SW_RFKILL_ALL, 1); - input_sync(efikasb_inputdev); - } - - return IRQ_HANDLED; -} - -static int mxc_init_wireless_sw(void) -{ - int irq, ret; - - gpio_request(IOMUX_TO_GPIO(WIRELESS_SW_PIN), "wireless_sw"); - gpio_direction_input(IOMUX_TO_GPIO(WIRELESS_SW_PIN)); - irq = IOMUX_TO_IRQ(WIRELESS_SW_PIN); - - if (gpio_get_value(IOMUX_TO_GPIO(WIRELESS_SW_PIN))) - set_irq_type(irq, IRQF_TRIGGER_FALLING); - else - set_irq_type(irq, IRQF_TRIGGER_RISING); - - ret = request_irq(irq, wireless_sw_int, 0, "wireless-sw", 0); - - if (ret) - pr_info("register wireless switch interrupt failed\n"); - - wireless_sw_state = gpio_get_value(IOMUX_TO_GPIO(WIRELESS_SW_PIN)); - - return ret; - -} - -static struct platform_device mxc_efikasb_input_dev = { - .name = "efikasb_input", -}; - -static int __init mxc_init_efikasb_inputdev(void) -{ - int ret; - struct kobject *efikasb_input_kobj; - - platform_device_register(&mxc_efikasb_input_dev); - - efikasb_input_kobj = kobject_create_and_add("status", &mxc_efikasb_input_dev.dev.kobj); - if(!efikasb_input_kobj) - return -ENOMEM; - - efikasb_inputdev = input_allocate_device(); - if (!efikasb_inputdev) { - pr_err("Failed to allocate hotkey input device\n"); - return -ENOMEM; - } - efikasb_inputdev->name = "Genesi Efika MX Smartbook Extra Buttons"; - efikasb_inputdev->phys = "genesi-efikasb/input0"; - efikasb_inputdev->uniq = "genesi-efikasb"; - efikasb_inputdev->id.bustype = BUS_HOST; - efikasb_inputdev->id.vendor = PCI_VENDOR_ID_FREESCALE; - set_bit(KEY_POWER, efikasb_inputdev->keybit); - set_bit(KEY_SLEEP, efikasb_inputdev->keybit); - set_bit(KEY_WAKEUP, efikasb_inputdev->keybit); - set_bit(EV_KEY, efikasb_inputdev->evbit); - set_bit(EV_PWR, efikasb_inputdev->evbit); - - set_bit(SW_RFKILL_ALL, efikasb_inputdev->swbit); - if(mxc_get_wireless_sw_status()) - set_bit(SW_RFKILL_ALL, efikasb_inputdev->sw); - - ret = input_register_device(efikasb_inputdev); - if (ret) { - input_free_device(efikasb_inputdev); - pr_err("Failed to register hotkey input device\n"); - kobject_put(efikasb_input_kobj); - return -ENODEV; - } - - mxc_init_power_key(); - - mxc_init_wireless_sw(); - - register_pm_notifier(&pm_nb); - - return ret; -} - -late_initcall(mxc_init_efikasb_inputdev); -