rk30 lcdc:完善rk_fb.c中的相关接口
authoryxj <yxj@I7-CH.(none)>
Mon, 27 Feb 2012 09:54:07 +0000 (17:54 +0800)
committeryxj <yxj@I7-CH.(none)>
Mon, 27 Feb 2012 09:56:14 +0000 (17:56 +0800)
arch/arm/configs/rk30_sdk_defconfig
drivers/video/rockchip/chips/rk30_lcdc.c
drivers/video/rockchip/rk_fb.c
drivers/video/rockchip/rk_fb.h

index 27b3fcc3c408661218b57c504bdd39003826e0d5..9bf48fb167afd75854cf3905a89e4f23d67e76ea 100644 (file)
+#
+# Automatically generated make config: don't edit
+# Linux/arm 3.0.8 Kernel Configuration
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_SCHED_CLOCK=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_HAVE_PROC_CPU=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_ARCH_HAS_CPUFREQ=y
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_VECTORS_BASE=0xffff0000
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_HAVE_IRQ_WORK=y
+
+#
+# General setup
+#
 CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_CROSS_COMPILE=""
+CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_LZO=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_LZMA is not set
 CONFIG_KERNEL_LZO=y
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_SWAP=y
+# CONFIG_SYSVIPC is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_FHANDLE is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+CONFIG_HAVE_GENERIC_HARDIRQS=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HAVE_SPARSE_IRQ=y
+CONFIG_GENERIC_IRQ_SHOW=y
+# CONFIG_SPARSE_IRQ is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_PREEMPT_RCU=y
+# CONFIG_TINY_RCU is not set
+# CONFIG_TINY_PREEMPT_RCU is not set
+CONFIG_PREEMPT_RCU=y
+# 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_RCU_BOOST is not set
+# CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=19
 CONFIG_CGROUPS=y
 CONFIG_CGROUP_DEBUG=y
 CONFIG_CGROUP_FREEZER=y
+# CONFIG_CGROUP_DEVICE is not set
+# CONFIG_CPUSETS is not set
 CONFIG_CGROUP_CPUACCT=y
 CONFIG_RESOURCE_COUNTERS=y
+# CONFIG_CGROUP_MEM_RES_CTLR is not set
 CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
 CONFIG_RT_GROUP_SCHED=y
+# CONFIG_BLK_CGROUP is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
 CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_XZ is not set
+# CONFIG_RD_LZO is not set
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
 CONFIG_PANIC_TIMEOUT=1
+CONFIG_EXPERT=y
+CONFIG_UID16=y
 # CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
 # CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
 CONFIG_ASHMEM=y
 # CONFIG_AIO is not set
 CONFIG_EMBEDDED=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+
+#
+# Kernel Performance Events And Counters
+#
+# CONFIG_PERF_EVENTS is not set
+# CONFIG_PERF_COUNTERS is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=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 is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_SPIN_UNLOCK is not set
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is not set
+# CONFIG_INLINE_READ_LOCK is not set
+# CONFIG_INLINE_READ_LOCK_BH is not set
+# CONFIG_INLINE_READ_LOCK_IRQ is not set
+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_READ_UNLOCK is not set
+# CONFIG_INLINE_READ_UNLOCK_BH is not set
+# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_WRITE_TRYLOCK is not set
+# CONFIG_INLINE_WRITE_LOCK is not set
+# CONFIG_INLINE_WRITE_LOCK_BH is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_WRITE_UNLOCK is not set
+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
+# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
+# CONFIG_MUTEX_SPIN_ON_OWNER is not set
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+CONFIG_MMU=y
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_VEXPRESS is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCMRING is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CNS3XXX 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 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_DOVE is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_LPC32XX 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_W90X900 is not set
+# CONFIG_ARCH_NUC93X is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_SHMOBILE 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_S5P64X0 is not set
+# CONFIG_ARCH_S5PC100 is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_EXYNOS4 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_TCC_926 is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_NOMADIK is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_RK29 is not set
 CONFIG_ARCH_RK30=y
+# CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_VT8500 is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_DDR_TYPE_DDRII is not set
+# CONFIG_DDR_TYPE_LPDDR is not set
+# CONFIG_DDR_TYPE_DDR3_800D is not set
+# CONFIG_DDR_TYPE_DDR3_800E is not set
+# CONFIG_DDR_TYPE_DDR3_1066E is not set
+# CONFIG_DDR_TYPE_DDR3_1066F is not set
+# CONFIG_DDR_TYPE_DDR3_1066G is not set
+# CONFIG_DDR_TYPE_DDR3_1333F is not set
+# CONFIG_DDR_TYPE_DDR3_1333G is not set
+# CONFIG_DDR_TYPE_DDR3_1333H is not set
+# CONFIG_DDR_TYPE_DDR3_1333J is not set
+# CONFIG_DDR_TYPE_DDR3_1600G is not set
+# CONFIG_DDR_TYPE_DDR3_1600H is not set
+# CONFIG_DDR_TYPE_DDR3_1600J is not set
+# CONFIG_DDR_TYPE_DDR3_1600K is not set
+# CONFIG_DDR_TYPE_DDR3_1866J is not set
+# CONFIG_DDR_TYPE_DDR3_1866K is not set
+# CONFIG_DDR_TYPE_DDR3_1866L is not set
+# CONFIG_DDR_TYPE_DDR3_1866M is not set
+# CONFIG_DDR_TYPE_DDR3_2133K is not set
+# CONFIG_DDR_TYPE_DDR3_2133L is not set
+# CONFIG_DDR_TYPE_DDR3_2133M is not set
+# CONFIG_DDR_TYPE_DDR3_2133N is not set
+CONFIG_DDR_TYPE_DDR3_DEFAULT=y
 CONFIG_DDR_SDRAM_FREQ=456
+# CONFIG_DDR_FREQ is not set
+# CONFIG_WIFI_CONTROL_FUNC is not set
 # CONFIG_RK29_VPU is not set
+CONFIG_RK29_LAST_LOG=y
+CONFIG_MACH_RK30_SDK=y
+
+#
+# System MMU
+#
+CONFIG_PLAT_RK=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v6K=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 is not set
+# CONFIG_SWP_EMULATE is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
 # CONFIG_CACHE_L2X0 is not set
+CONFIG_ARM_L1_CACHE_SHIFT=5
+CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+CONFIG_CPU_HAS_PMU=y
+# CONFIG_ARM_ERRATA_430973 is not set
+# CONFIG_ARM_ERRATA_458693 is not set
+# CONFIG_ARM_ERRATA_460075 is not set
+# CONFIG_ARM_ERRATA_743622 is not set
+# CONFIG_ARM_ERRATA_754322 is not set
+CONFIG_ARM_GIC=y
+CONFIG_PL330=y
+# CONFIG_FIQ_DEBUGGER is not set
+
+#
+# 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_HAVE_SMP=y
+# CONFIG_SMP is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
 CONFIG_PREEMPT=y
+CONFIG_HZ=100
+# CONFIG_THUMB2_KERNEL is not set
 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_HAVE_ARCH_PFN_VALID=y
 CONFIG_HIGHMEM=y
+# CONFIG_HIGHPTE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_KSM is not set
 CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
+CONFIG_NEED_PER_CPU_KM=y
+# CONFIG_CLEANCACHE is not set
+CONFIG_FORCE_MAX_ZONEORDER=11
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+# CONFIG_SECCOMP is not set
+# CONFIG_CC_STACKPROTECTOR is not set
+# CONFIG_DEPRECATED_PARAM_STRUCT is not set
+# CONFIG_ARM_FLUSH_CONSOLE_ON_RESTART is not set
+
+#
+# Boot options
+#
+# CONFIG_USE_OF is not set
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
 CONFIG_CMDLINE="console=ttyS1 androidboot.console=ttyS1 init=/init debug"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_CMDLINE_EXTEND is not set
+# CONFIG_CMDLINE_FORCE is not set
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+# CONFIG_AUTO_ZRELADDR is not set
+
+#
+# CPU Power Management
+#
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+# CONFIG_CPU_IDLE is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
 CONFIG_VFP=y
+CONFIG_VFPv3=y
+# CONFIG_NEON is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
 # CONFIG_SUSPEND is not set
+# CONFIG_PM_RUNTIME is not set
+# CONFIG_SUSPEND_TIME is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
 CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+# CONFIG_INET is not set
+CONFIG_ANDROID_PARANOID_NETWORK=y
 # CONFIG_NET_ACTIVITY_STATS is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# 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_WAN_ROUTER is not set
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+# CONFIG_BATMAN_ADV is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
 # CONFIG_WIRELESS is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH=""
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
 # CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
 CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_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 is not set
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# 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_SM_FTL is not set
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_SWAP 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
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# 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_IDS is not set
+# CONFIG_MTD_NAND is not set
 CONFIG_MTD_RKNAND=y
+CONFIG_MTD_NAND_RK29XX=y
+CONFIG_MTD_RKNAND_BUFFER=y
+# CONFIG_MTD_EMMC_CLK_POWER_SAVE is not set
+# CONFIG_MTD_NAND_RK29XX_DEBUG is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+# 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 is not set
+
+#
+# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
+#
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_SENSORS_LIS3LV02D is not set
 CONFIG_MISC_DEVICES=y
+# CONFIG_AD525X_DPOT is not set
 # CONFIG_ANDROID_PMEM is not set
+# CONFIG_INTEL_MID_PTI is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_SENSORS_AK8975 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
+# CONFIG_UID_STAT is not set
+# CONFIG_BMP085 is not set
+# CONFIG_APANIC is not set
+# CONFIG_STE is not set
+# CONFIG_MTK23D is not set
+# CONFIG_FM580X is not set
+# CONFIG_MU509 is not set
+# CONFIG_MW100 is not set
+# CONFIG_RK29_NEWTON is not set
+# CONFIG_RK29_SC8800 is not set
+# CONFIG_TDSC8800 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 is not set
+# CONFIG_RK29_SUPPORT_MODEM is not set
+# CONFIG_RK29_GPS is not set
+# CONFIG_MPU_SENSORS_TIMERIRQ is not set
+# CONFIG_INV_SENSORS is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# CONFIG_TI_ST is not set
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+# CONFIG_NETDEVICES is not set
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
 CONFIG_INPUT_FF_MEMLESS=y
 CONFIG_INPUT_POLLDEV=y
+# CONFIG_INPUT_SPARSEKMAP is not set
+
+#
+# Userland interfaces
+#
 # CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
 CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_KEYRESET is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYS_RK29=y
+# CONFIG_SYNAPTICS_SO340010 is not set
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
 # CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_KEYBOARD_WM831X_GPIO is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
 # CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+# CONFIG_MAG_SENSORS is not set
+# CONFIG_G_SENSOR_DEVICE is not set
+# CONFIG_GYRO_SENSOR_DEVICE is not set
+# CONFIG_INPUT_JOGBALL is not set
+# CONFIG_LIGHT_SENSOR_DEVICE is not set
+
+#
+# Hardware I/O ports
+#
 # CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
 # CONFIG_CONSOLE_TRANSLATIONS is not set
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
 # CONFIG_LEGACY_PTYS is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_N_GSM is not set
+# CONFIG_TRACE_SINK is not set
+CONFIG_DEVMEM=y
+CONFIG_DEVKMEM=y
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX3107 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_TIMBERDALE is not set
 CONFIG_SERIAL_RK29=y
+# CONFIG_UART0_RK29 is not set
 CONFIG_UART1_RK29=y
+# CONFIG_UART2_RK29 is not set
+# CONFIG_UART3_RK29 is not set
 CONFIG_SERIAL_RK29_CONSOLE=y
+# CONFIG_SERIAL_SC8800 is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_IFX6X60 is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_HVC_DCC is not set
+# CONFIG_IPMI_HANDLER is not set
 # CONFIG_HW_RANDOM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_DCC_TTY is not set
+# CONFIG_RAMOOPS is not set
 CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
 # CONFIG_I2C_COMPAT is not set
+# CONFIG_I2C_CHARDEV is not set
+# CONFIG_I2C_MUX is not set
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_DESIGNWARE is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_PXA_PCI is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_RK30=y
+
+#
+# Now, there are five selectable I2C channels.
+#
+CONFIG_I2C0_RK30=y
+CONFIG_I2C0_CONTROLLER_RK29=y
+# CONFIG_I2C0_CONTROLLER_RK30 is not set
+CONFIG_I2C1_RK30=y
+CONFIG_I2C1_CONTROLLER_RK29=y
+# CONFIG_I2C1_CONTROLLER_RK30 is not set
+CONFIG_I2C2_RK30=y
+CONFIG_I2C2_CONTROLLER_RK29=y
+# CONFIG_I2C2_CONTROLLER_RK30 is not set
+CONFIG_I2C3_RK30=y
+CONFIG_I2C3_CONTROLLER_RK29=y
+# CONFIG_I2C3_CONTROLLER_RK30 is not set
+CONFIG_I2C4_RK30=y
+CONFIG_I2C4_CONTROLLER_RK29=y
+# CONFIG_I2C4_CONTROLLER_RK30 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_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_ALTERA is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_OC_TINY is not set
+# CONFIG_SPI_PXA2XX_PCI is not set
+# CONFIG_SPI_XILINX is not set
 CONFIG_SPIM_RK29=y
 CONFIG_SPIM0_RK29=y
 CONFIG_SPIM1_RK29=y
+# CONFIG_LCD_USE_SPIM_CONTROL is not set
+# CONFIG_SPI_DESIGNWARE is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
 # CONFIG_ADC is not set
+
+#
+# Headset device support
+#
+# CONFIG_RK_HEADSET_DET is not set
+
+#
+# PPS support
+#
+# CONFIG_PPS is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+
+#
+# Enable Device Drivers -> PPS to see the PTP clock options.
+#
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+# CONFIG_GPIO_SYSFS is not set
+
+#
+# Memory mapped GPIO drivers:
+#
+# CONFIG_GPIO_BASIC_MMIO is not set
+# CONFIG_GPIO_IT8761E is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_SX150X is not set
+# CONFIG_GPIO_ADP5588 is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_GPIO_MC33880 is not set
+# CONFIG_GPIO_74X164 is not set
+
+#
+# AC97 GPIO expanders:
+#
+# CONFIG_GPIO_PCA9554 is not set
+# CONFIG_IOEXTEND_TCA6424 is not set
 CONFIG_EXPANDED_GPIO_NUM=0
 CONFIG_EXPANDED_GPIO_IRQ_NUM=0
+# CONFIG_EXPAND_GPIO_SOFT_INTERRUPT is not set
 CONFIG_SPI_FPGA_GPIO_NUM=0
 CONFIG_SPI_FPGA_GPIO_IRQ_NUM=0
+
+#
+# MODULbus GPIO expanders:
+#
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
 # CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+CONFIG_BCMA_POSSIBLE=y
+
+#
+# Broadcom specific AMBA
+#
+# CONFIG_BCMA is not set
 # CONFIG_MFD_SUPPORT is not set
+# CONFIG_REGULATOR is not set
+# CONFIG_MEDIA_SUPPORT is not set
+# CONFIG_SMS_SIANO_MDTV is not set
+
+#
+# Graphics support
+#
+# CONFIG_DRM is not set
+# CONFIG_ION is not set
+# 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 is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_WMT_GE_ROPS is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_RK29 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME 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_RK29_BL=y
+# CONFIG_BUTTON_LIGHT is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=y
+
+#
+# Display hardware drivers
+#
+# CONFIG_LCD_NULL is not set
+# CONFIG_LCD_LG_LP097X02 is not set
+CONFIG_LCD_TD043MGEA1=y
+# CONFIG_LCD_HX8357 is not set
+# CONFIG_LCD_TJ048NC01CA is not set
+# CONFIG_LCD_HL070VM4AU is not set
+# CONFIG_LCD_HSD070IDW1 is not set
+# CONFIG_LCD_RGB_TFT480800_25_E is not set
+# CONFIG_LCD_HSD100PXN is not set
+# CONFIG_LCD_HSD07PFW1 is not set
+# CONFIG_LCD_BYD8688FTGF is not set
+# CONFIG_LCD_B101AW06 is not set
+# CONFIG_LCD_LS035Y8DX02A is not set
+# CONFIG_LCD_LS035Y8DX04A is not set
+# CONFIG_LCD_CPTCLAA038LA31XE is not set
+# CONFIG_LCD_A060SE02 is not set
+# CONFIG_LCD_S1D13521 is not set
+# CONFIG_LCD_NT35582 is not set
+# CONFIG_LCD_NT35580 is not set
+# CONFIG_LCD_IPS1P5680_V1_E is not set
+# CONFIG_LCD_MCU_TFT480800_25_E is not set
+# CONFIG_LCD_NT35510 is not set
+# CONFIG_LCD_ILI9803_CPT4_3 is not set
+# CONFIG_LCD_AT070TNA2 is not set
+# CONFIG_LCD_AT070TN93 is not set
+# CONFIG_LCD_TX23D88VM is not set
+# CONFIG_LCD_A050VL01 is not set
+
+#
+# HDMI
+#
+# CONFIG_HDMI is not set
+CONFIG_FB_ROCKCHIP=y
+CONFIG_LCDC_RK30=y
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_LOGO_CHARGER_CLUT224 is not set
+# CONFIG_LOGO_G3_CLUT224 is not set
+# CONFIG_SOUND is not set
 # CONFIG_HID_SUPPORT is not set
 # CONFIG_USB_SUPPORT is not set
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_NFC_DEVICES is not set
+# CONFIG_SWITCH is not set
+# CONFIG_ACCESSIBILITY is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+# CONFIG_STAGING is not set
+CONFIG_CLKDEV_LOOKUP=y
+
+#
+# CMMB
+#
 # CONFIG_CMMB is not set
+# CONFIG_TEST_CODE is not set
+# CONFIG_RK29_SMC is not set
+
+#
+# CIR support
+#
+# CONFIG_RK_CIR is not set
+
+#
+# File systems
+#
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
 # CONFIG_DNOTIFY is not set
+CONFIG_INOTIFY_USER=y
+# CONFIG_FANOTIFY is not set
+# CONFIG_QUOTA is not set
+# CONFIG_QUOTACTL is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# 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 is not set
+# CONFIG_TMPFS_XATTR is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
 # CONFIG_MISC_FILESYSTEMS is not set
 # CONFIG_NETWORK_FILESYSTEMS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_NLS is not set
+
+#
+# Kernel hacking
+#
 CONFIG_PRINTK_TIME=y
+CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
 CONFIG_MAGIC_SYSRQ=y
+# CONFIG_STRIP_ASM_SYMS is not set
+# 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_LOCKUP_DETECTOR is not set
+# CONFIG_HARDLOCKUP_DETECTOR is not set
 CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
 # CONFIG_SCHED_DEBUG is not set
 CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_KMEMLEAK is not set
 # CONFIG_DEBUG_PREEMPT is not set
+# 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_SPARSE_RCU_POINTER 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_STACK_USAGE is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# 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_TEST_LIST_SORT is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
+CONFIG_RCU_CPU_STALL_VERBOSE=y
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_LKDTM is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACING_SUPPORT=y
 # CONFIG_FTRACE is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_STRICT_DEVMEM is not set
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_OC_ETM is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+# CONFIG_CRYPTO is not set
+# CONFIG_BINARY_PRINTF is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
 # CONFIG_CRC32 is not set
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+# CONFIG_XZ_DEC is not set
+# CONFIG_XZ_DEC_BCJ is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_NLATTR=y
+# CONFIG_AVERAGE is not set
index 640d6189b36a5e95593b15cae5533f015e98289d..9b9eec63f621c3670ef41121d8f2623766a24f8e 100644 (file)
@@ -358,7 +358,8 @@ static int win1_set_par(struct rk30_lcdc_device *lcdc_dev,rk_screen *screen,
     ypos = par->ypos+screen->upper_margin + screen->vsync_len;
        addr = par->smem_start + par->y_offset;
 
-       
+       DBG("%s>>format:%d>>>xact:%d>>yact:%d>>xvir:%d>>yvir:%d>>ypos:%d>>xsize:%d>>ysize:%d>>y_addr:0x%x\n",
+               __func__,par->format,xact,yact,xvir,yvir,ypos,par->xsize,par->ysize,addr);
        switch (par->format)
        {
                case RGB888:
@@ -392,26 +393,25 @@ static int win1_set_par(struct rk30_lcdc_device *lcdc_dev,rk_screen *screen,
     LcdMskReg(lcdc_dev, WIN1_COLOR_KEY_CTRL, m_COLORKEY_EN | m_KEYCOLOR, v_COLORKEY_EN(1) | v_KEYCOLOR(0));
        switch(par->format)
     {
-       case ARGB888:
-               LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO, v_ARGB888_VIRWIDTH(xvir));
-               break;
-       case RGB888:  //rgb888
-               LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO, v_RGB888_VIRWIDTH(xvir));
-               break;
-       case RGB565:  //rgb565
-               LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO, v_RGB565_VIRWIDTH(xvir));
-               break;
-       case YUV422:
-       case YUV420:   
-               LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO,v_YUV_VIRWIDTH(xvir));
-               break;
-       default:
-               LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO, v_RGB888_VIRWIDTH(xvir));
-               break;
+        case ARGB888:
+            LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO, v_ARGB888_VIRWIDTH(xvir));
+            break;
+        case RGB888:  //rgb888
+            LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO, v_RGB888_VIRWIDTH(xvir));
+            break;
+        case RGB565:  //rgb565
+            LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO, v_RGB565_VIRWIDTH(xvir));
+            break;
+        case YUV422:
+        case YUV420:   
+            LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO,v_YUV_VIRWIDTH(xvir));
+            break;
+        default:
+            LcdMskReg(lcdc_dev, WIN1_VIR, m_WORDLO, v_RGB888_VIRWIDTH(xvir));
+            break;
     }
     
        LcdWrReg(lcdc_dev, REG_CFG_DONE, 0x01);
-    
 
     return 0;
 }
index 33ea664b099169d1d4583b25ebef59f631e8191d..dcc5578227d110b384b142fe637809f47f3d3cf1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * drivers/video/rk30_fb.c
+ * drivers/video/rockchip/rk_fb.c
  *
  * Copyright (C) 2012 ROCKCHIP, Inc.
  *
@@ -73,45 +73,98 @@ static struct rk_fb_rgb def_rgb_16 = {
      transp: { offset: 0,  length: 0, },
 };
 
-int fb0_open(struct fb_info *info, int user)
-{
-  return 0; 
-}
 
-int fb0_release(struct fb_info *info, int user)
+/***************************************************************************
+fb0-----------lcdc0------------win1  for ui
+fb1-----------lcdc0------------win0  for video,win0 support 3d display
+fb2-----------lcdc1------------win1  for ui
+fb3-----------lcdc1-------------win0 for video ,win0 support 3d display
+
+defautl:we alloc three buffer,one for fb0 and fb2 display ui,one for ipp rotate
+        fb1 and fb3 are used for video play,the buffer is alloc by android,and
+        pass the phy addr to fix.smem_start by ioctl
+****************************************************************************/
+
+static int rk_fb_ioctl(struct fb_info *info, unsigned int cmd,
+                       unsigned long arg)
 {
-  
+    struct rk_fb_inf *inf = dev_get_drvdata(info->device);
+    u32 yuv_phy[2];
+    fbprintk(">>>>>> %s : cmd:0x%x \n",__FUNCTION__,cmd);
+
+       CHK_SUSPEND(inf);
+
+    switch(cmd)
+    {
+        case FB0_IOCTL_STOP_TIMER_FLUSH:    //stop timer flush mcu panel after android is runing
+            break;
+        case FBIOPUT_16OR32:
+               break;
+        case FBIOGET_16OR32:
+            break;
+        case FBIOGET_IDLEFBUff_16OR32:
+        case FBIOSET_COMPOSE_LAYER_COUNTS:
+            break;
+        case FBIOGET_COMPOSE_LAYER_COUNTS:
+           case FBIOPUT_FBPHYADD:
+            return info->fix.smem_start;
+        case FB1_IOCTL_SET_YUV_ADDR:
+            if (copy_from_user(yuv_phy, arg, 8))
+                           return -EFAULT;
+            info->fix.smem_start = yuv_phy[0];
+            info->fix.mmio_start = yuv_phy[1];
+            break;
+        case FBIOGET_OVERLAY_STATE:
+            return inf->video_mode;
+        case FBIOGET_SCREEN_STATE:
+        case FBIOPUT_SET_CURSOR_EN:
+        case FBIOPUT_SET_CURSOR_POS:
+        case FBIOPUT_SET_CURSOR_IMG:
+        case FBIOPUT_SET_CURSOR_CMAP:
+        case FBIOPUT_GET_CURSOR_RESOLUTION:
+        case FBIOPUT_GET_CURSOR_EN:
+        default:
+            break;
+    }
     return 0;
 }
 
-static int fb0_blank(int blank_mode, struct fb_info *info)
-{
-       struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-       struct rk_lcdc_device_driver *rk_fb_dev_drv = fb_inf->rk_lcdc_device[0];
-        fb_inf->rk_lcdc_device[0]->blank(rk_fb_dev_drv,0,blank_mode);
+static int rk_fb_blank(int blank_mode, struct fb_info *info)
+{
+    struct rk_fb_inf *inf = dev_get_drvdata(info->device);
+    struct rk_lcdc_device_driver *dev_drv = NULL;
+    struct fb_fix_screeninfo *fix = &info->fix;
+    int layer_id;
+    if(!strcmp(fix->id,"fb1")){
+        dev_drv = inf->rk_lcdc_device[0];
+        layer_id = 0;
+    }else if(!strcmp(fix->id,"fb0")){
+        dev_drv = inf->rk_lcdc_device[0];
+        layer_id = 1;
+    }else if(!strcmp(fix->id,"fb3")){
+        dev_drv = inf->rk_lcdc_device[1];
+        layer_id = 0;
+    }else if(!strcmp(fix->id,"fb2")){
+        dev_drv = inf->rk_lcdc_device[1];
+        layer_id = 1;
+    }else{
+        dev_drv = inf->rk_lcdc_device[0];
+        layer_id = 0;
+    }
+    dev_drv->blank(dev_drv,layer_id,blank_mode);
 
     return 0;
 }
 
-static int fb0_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
+static int rk_fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
 {
-       struct rk_fb_inf *inf = dev_get_drvdata(info->device);
-       rk_screen *screen = &inf->rk_lcdc_device[0]->screen;
-        u16 xpos = (var->nonstd>>8) & 0xfff;
-        u16 ypos = (var->nonstd>>20) & 0xfff;
-        u16 xlcd = screen->x_res;
-        u16 ylcd = screen->y_res;
-        //fbprintk(">>>>>> %s : %s\n", __FILE__, __FUNCTION__);
-        CHK_SUSPEND(inf);
+       CHK_SUSPEND(inf);
  
         if( 0==var->xres_virtual || 0==var->yres_virtual ||
                 0==var->xres || 0==var->yres || var->xres<16 ||
                 ((16!=var->bits_per_pixel)&&(32!=var->bits_per_pixel)) )
         {
-                printk(">>>>>> fb0_check_var fail 1!!! \n");
+                printk(">>>>>> fb_check_var fail 1!!! \n");
                 printk(">>>>>> 0==%d || 0==%d ", var->xres_virtual,var->yres_virtual);
                 printk("0==%d || 0==%d || %d<16 || ", var->xres,var->yres,var->xres<16);
                 printk("bits_per_pixel=%d \n", var->bits_per_pixel);
@@ -121,220 +174,188 @@ static int fb0_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
         if( (var->xoffset+var->xres)>var->xres_virtual ||
                 (var->yoffset+var->yres)>var->yres_virtual*2 )
         {
-                printk(">>>>>> fb0_check_var fail 2!!! \n");
+                printk(">>>>>> fb_check_var fail 2!!! \n");
                 printk(">>>>>> (%d+%d)>%d || ", var->xoffset,var->xres,var->xres_virtual);
                 printk("(%d+%d)>%d || ", var->yoffset,var->yres,var->yres_virtual);
-                printk("(%d+%d)>%d || (%d+%d)>%d \n", xpos,var->xres,xlcd,ypos,var->yres,ylcd);
                 return -EINVAL;
         }
-        switch(var->bits_per_pixel)
-        {
-        case 16:        // rgb565
-                var->xres_virtual = (var->xres_virtual + 0x1) & (~0x1);
-                var->xres = (var->xres + 0x1) & (~0x1);
-                var->xoffset = (var->xoffset) & (~0x1);
-                break;
-        default:        // rgb888
-                var->bits_per_pixel = 32;
-                break;
-        }
-    return 0;
-}
-
-
-static int fb0_set_par(struct fb_info *info)
-{
-       struct rk_fb_inf *inf =  platform_get_drvdata(g_fb_pdev);
-       struct fb_var_screeninfo *var = &info->var;
-       struct fb_fix_screeninfo *fix = &info->fix;
-       struct rk_lcdc_device_driver *rk_fb_dev_drv = inf->rk_lcdc_device[0];
-       struct layer_par *par = &rk_fb_dev_drv->layer_par[0];
-       rk_screen *screen = &rk_fb_dev_drv->screen;
-       
-       u32 offset=0,  smem_len=0;
-    u16 xres_virtual = var->xres_virtual;      //virtual screen size
-    u16 xpos_virtual = var->xoffset;           //visiable offset in virtual screen
-    u16 ypos_virtual = var->yoffset;
-
-        switch(var->bits_per_pixel)
-     {
-       case 16:    // rgb565
-               par->format = RGB565;
-                       fix->line_length = 2 * xres_virtual;  
-                       offset = (ypos_virtual*xres_virtual + xpos_virtual)*2;
-               break;
-       case 32:    // rgb888
-       default:
-               par->format = RGB888;
-               fix->line_length = 4 * xres_virtual;
-               offset = (ypos_virtual*xres_virtual + xpos_virtual)*4;
-        
-               if(ypos_virtual >= 2*var->yres)
-               {
-               par->format = RGB565;
-               if(ypos_virtual == 3*var->yres)
-               {            
-                       offset -= var->yres * var->xres *2;
-               }
-               }
-               break;
-     }
-
-        smem_len = fix->line_length * var->yres_virtual;
-     if (smem_len > fix->smem_len)     // buffer need realloc
-     {
-        printk("%s sorry!!! win0 buf is not enough\n",__FUNCTION__);
-        printk("line_length = %d, yres_virtual = %d, win0_buf only = %dB\n",fix->line_length,var->yres_virtual,fix->smem_len);
-        printk("you can change buf size MEM_FB_SIZE in board-xxx.c \n");
-               return 0;
-     }
-         par->smem_start = fix->smem_start;
-         par->y_offset = offset;
-      par->xpos = 0;
-      par->ypos = 0;
-         par->xact = var->xres;
-         par->yact = var->yres;
-         par->xres_virtual = var->xres_virtual;                /* virtual resolution           */
-         par->yres_virtual = var->yres_virtual;
-      par->xsize = screen->x_res;
-      par->ysize = screen->y_res;
-      inf->rk_lcdc_device[0]->set_par(rk_fb_dev_drv,0);
-       return 0;
-}
-
-static int fb0_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-       struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-    return 0;
-}
-
-static int fb0_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
-{
-       struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-    return 0;
-}
-
-static int fb1_blank(int blank_mode, struct fb_info *info)
-{
-       struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-   return 0;
-}
-
-static int fb1_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-    return 0;
-}
-
-static int fb1_set_par(struct fb_info *info)
-{
- struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-   return 0;
-    return 0;
-}
-
-static int fb1_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-       struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-    return 0;
-}
-
-static int fb1_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
-{
-  struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-    return 0;
-}
-int fb1_open(struct fb_info *info, int user)
-{
-  return 0; 
-}
-
-int fb1_release(struct fb_info *info, int user)
-{
-  
-    return 0;
-}
-static int fb2_blank(int blank_mode, struct fb_info *info)
-{
-       struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-   return 0;
-}
-
-static int fb2_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-    return 0;
-}
-
-static int fb2_set_par(struct fb_info *info)
-{
- struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-   return 0;
-    return 0;
-}
-
-static int fb2_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-       struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-    return 0;
-}
-
-static int fb2_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
-{
-  struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-    return 0;
-}
-int fb2_open(struct fb_info *info, int user)
-{
-  return 0; 
-}
-
-int fb2_release(struct fb_info *info, int user)
-{
-  
-    return 0;
-}
 
-static int fb3_blank(int blank_mode, struct fb_info *info)
-{
-       struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-   return 0;
-}
-
-static int fb3_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
-{
+    switch(var->nonstd&0x0f)
+    {
+        case 0: // rgb
+            switch(var->bits_per_pixel)
+            {
+            case 16:    // rgb565
+                var->xres_virtual = (var->xres_virtual + 0x1) & (~0x1);
+                var->xres = (var->xres + 0x1) & (~0x1);
+                var->xoffset = (var->xoffset) & (~0x1);
+                break;
+            default:    // rgb888
+                var->bits_per_pixel = 32;
+                break;
+            }
+            var->nonstd &= ~0xc0;  //not support I2P in this format
+            break;
+        case 1: // yuv422
+            var->xres_virtual = (var->xres_virtual + 0x3) & (~0x3);
+            var->xres = (var->xres + 0x3) & (~0x3);
+            var->xoffset = (var->xoffset) & (~0x3);
+            break;
+        case 2: // yuv4200
+            var->xres_virtual = (var->xres_virtual + 0x3) & (~0x3);
+            var->yres_virtual = (var->yres_virtual + 0x1) & (~0x1);
+            var->xres = (var->xres + 0x3) & (~0x3);
+            var->yres = (var->yres + 0x1) & (~0x1);
+            var->xoffset = (var->xoffset) & (~0x3);
+            var->yoffset = (var->yoffset) & (~0x1);
+            break;
+        case 3: // yuv4201
+            var->xres_virtual = (var->xres_virtual + 0x3) & (~0x3);
+            var->yres_virtual = (var->yres_virtual + 0x1) & (~0x1);
+            var->xres = (var->xres + 0x3) & (~0x3);
+            var->yres = (var->yres + 0x1) & (~0x1);
+            var->xoffset = (var->xoffset) & (~0x3);
+            var->yoffset = (var->yoffset) & (~0x1);
+            var->nonstd &= ~0xc0;   //not support I2P in this format
+            break;
+        case 4: // none
+        case 5: // yuv444
+            var->xres_virtual = (var->xres_virtual + 0x3) & (~0x3);
+            var->xres = (var->xres + 0x3) & (~0x3);
+            var->xoffset = (var->xoffset) & (~0x3);
+            var->nonstd &= ~0xc0;   //not support I2P in this format
+            break;
+        default:
+            printk(">>>>>> fb1 var->nonstd=%d is invalid! \n", var->nonstd);
+            return -EINVAL;
+        }
+        
     return 0;
 }
 
-static int fb3_set_par(struct fb_info *info)
-{
- struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-   return 0;
-}
 
-static int fb3_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-       struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-    return 0;
-}
+static int rk_fb_set_par(struct fb_info *info)
+{
+    struct rk_fb_inf *inf = dev_get_drvdata(info->device);
+    struct fb_var_screeninfo *var = &info->var;
+    struct fb_fix_screeninfo *fix = &info->fix;
+    struct rk_lcdc_device_driver * dev_drv = NULL;
+    struct layer_par *par = NULL;
+    rk_screen *screen = NULL;
+    int layer_id = 0;  
+    u32 smem_len=0,map_size = 0;
+    u32 cblen = 0,crlen = 0;
+    u32 xvir = var->xres_virtual;              /* virtual resolution           */
+    u32 yvir = var->yres_virtual;
+    u32 xoffset = var->xoffset;                        /* offset from virtual to visible */
+    u32 yoffset = var->yoffset;                        /* resolution                   */
+
+    
+    u16 xpos = (var->nonstd>>8) & 0xfff;      //visiable pos in panel
+    u16 ypos = (var->nonstd>>20) & 0xfff;
+    u16 xsize =0,ysize = 0;
+    u8 data_format = var->nonstd&0x0f;
+
+    if(!strcmp(fix->id,"fb1")){
+        dev_drv = inf->rk_lcdc_device[0];
+        par = &dev_drv->layer_par[0];
+        layer_id = 0;
+    }else if(!strcmp(fix->id,"fb0")){
+        dev_drv = inf->rk_lcdc_device[0];
+        par = &dev_drv->layer_par[1];
+        layer_id = 1;
+    }else if(!strcmp(fix->id,"fb3")){
+        dev_drv = inf->rk_lcdc_device[1];
+        par = &dev_drv->layer_par[0];
+        layer_id = 0;
+    }else if(!strcmp(fix->id,"fb2")){
+        dev_drv = inf->rk_lcdc_device[1];
+        par = &dev_drv->layer_par[1];
+        layer_id = 1;
+    }else{
+        dev_drv = inf->rk_lcdc_device[0];
+        par = &dev_drv->layer_par[1];
+        layer_id = 0;
+    }
+    screen = &dev_drv->screen;
 
-static int fb3_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
-{
-  struct rk_fb_inf *fb_inf = platform_get_drvdata(g_fb_pdev);
-    return 0;
-}
-int fb3_open(struct fb_info *info, int user)
-{
-  return 0; 
-}
+    if((!strcmp(fix->id,"fb0"))||(!strcmp(fix->id,"fb2")))  //four ui
+    {
+        xsize = screen->x_res;
+        ysize = screen->y_res;
+    }
+    else if((!strcmp(fix->id,"fb1"))||(!strcmp(fix->id,"fb3")))
+    {
+        xsize = (var->grayscale>>8) & 0xfff;  //visiable size in panel ,for vide0
+        ysize = (var->grayscale>>20) & 0xfff;
+    }
+       CHK_SUSPEND(inf);
+       /* calculate y_offset,c_offset,line_length,cblen and crlen  */
+    switch (data_format)
+    {
+        case 0:                    // rgb
+            switch(var->bits_per_pixel)
+            {
+                case 16:    // rgb565
+                    par->format =RGB565;
+                    fix->line_length = 2 * xvir;
+                    par->y_offset = (yoffset*xvir + xoffset)*2;
+                    break;
+                case 32:   // rgb888
+                    par->format = RGB888;
+                    fix->line_length = 4 * xvir;
+                    par->y_offset = (yoffset*xvir + xoffset)*4;
+                    break;
+                default:
+                    return -EINVAL;
+            }
+            break;
+        case 1: // yuv422
+            par->format = YUV422;
+            fix->line_length = xvir;
+            cblen = crlen = (xvir*yvir)>>1;
+            par->y_offset = yoffset*xvir + xoffset;
+            par->c_offset = par->y_offset;
+            break;
+        case 2: // yuv4200
+            par->format = YUV420;
+            fix->line_length = xvir;
+            cblen = crlen = (xvir*yvir)>>2;
+            par->y_offset = yoffset*xvir + xoffset;
+            par->c_offset = (yoffset>>1)*xvir + xoffset;
+            break;
+        case 4: // none
+        case 5: // yuv444
+            par->format = 5;
+            fix->line_length = xvir<<2;
+            par->y_offset = yoffset*xvir + xoffset;
+            par->c_offset = yoffset*2*xvir +(xoffset<<1);
+            cblen = crlen = (xvir*yvir);
+            break;
+        default:
+            return -EINVAL;
+    }
 
-int fb3_release(struct fb_info *info, int user)
-{
-  
-    return 0;
+    smem_len = fix->line_length * yvir + cblen + crlen;
+   // map_size = PAGE_ALIGN(smem_len);
+
+    fix->smem_len = smem_len;
+    par->xpos = xpos;
+    par->ypos = ypos;
+    par->xsize = xsize;
+    par->ysize = ysize;
+    
+    par->smem_start =fix->smem_start;
+    par->xact = var->xres;
+    par->yact = var->yres;
+    par->xres_virtual = xvir;          // virtuail resolution  
+    par->yres_virtual = yvir;
+    dev_drv->set_par(dev_drv,layer_id);
+    
+       return 0;
 }
 
-
 static inline unsigned int chan_to_field(unsigned int chan,
                                         struct fb_bitfield *bf)
 {
@@ -368,70 +389,23 @@ static int fb_setcolreg(unsigned regno,
        return 0;
 }
 
-static struct fb_ops fb_ops[] = {
-       [0]={
-               .owner          = THIS_MODULE,
-               .fb_open    = fb0_open,
-               .fb_release = fb0_release,
-               .fb_check_var   = fb0_check_var,
-               .fb_set_par     = fb0_set_par,
-               .fb_blank       = fb0_blank,
-               .fb_pan_display = fb0_pan_display,
-               .fb_ioctl = fb0_ioctl,
-               .fb_setcolreg   = fb_setcolreg,
-               .fb_fillrect    = cfb_fillrect,
-               .fb_copyarea    = cfb_copyarea,
-               .fb_imageblit   = cfb_imageblit,
-       },
-       [1]={
-               .owner          = THIS_MODULE,
-               .fb_open    = fb1_open,
-               .fb_release = fb1_release,
-               .fb_check_var   = fb1_check_var,
-               .fb_set_par     = fb1_set_par,
-               .fb_blank       = fb1_blank,
-               .fb_pan_display = fb1_pan_display,
-               .fb_ioctl = fb1_ioctl,
-               .fb_setcolreg   = fb_setcolreg,
-               .fb_fillrect    = cfb_fillrect,
-               .fb_copyarea    = cfb_copyarea,
-               .fb_imageblit   = cfb_imageblit,        
-       },
-       [2]={
-               .owner          = THIS_MODULE,
-               .fb_open    = fb2_open,
-               .fb_release = fb2_release,
-               .fb_check_var   = fb2_check_var,
-               .fb_set_par     = fb2_set_par,
-               .fb_blank       = fb2_blank,
-               .fb_pan_display = fb2_pan_display,
-               .fb_ioctl = fb2_ioctl,
-               .fb_setcolreg   = fb_setcolreg,
-               .fb_fillrect    = cfb_fillrect,
-               .fb_copyarea    = cfb_copyarea,
-               .fb_imageblit   = cfb_imageblit,
-       },
-       [3]={
-               .owner          = THIS_MODULE,
-               .fb_open    = fb3_open,
-               .fb_release = fb3_release,
-               .fb_check_var   = fb3_check_var,
-               .fb_set_par     = fb3_set_par,
-               .fb_blank       = fb3_blank,
-               .fb_pan_display = fb3_pan_display,
-               .fb_ioctl = fb3_ioctl,
-               .fb_setcolreg   = fb_setcolreg,
-               .fb_fillrect    = cfb_fillrect,
-               .fb_copyarea    = cfb_copyarea,
-               .fb_imageblit   = cfb_imageblit,
-       }
+static struct fb_ops fb_ops = {
+    .owner          = THIS_MODULE,
+    .fb_check_var   = rk_fb_check_var,
+    .fb_set_par     = rk_fb_set_par,
+    .fb_blank       = rk_fb_blank,
+    .fb_ioctl       = rk_fb_ioctl,
+    .fb_setcolreg   = fb_setcolreg,
+    .fb_fillrect    = cfb_fillrect,
+    .fb_copyarea    = cfb_copyarea,
+    .fb_imageblit   = cfb_imageblit,
 };
 
 
 
 static struct fb_var_screeninfo def_var = {
-    .red    = {11,5,0},//def_rgb_16.red,
-    .green  = {5,6,0},//def_rgb_16.green,
+    .red    = {11,5,0},//default set to rgb565,the boot logo is rgb565
+    .green  = {5,6,0},
     .blue   = {0,5,0},
     .transp = {0,0,0}, 
     .nonstd      = 0, //win1 format & ypos & xpos (ypos<<20 + xpos<<8 + format)
@@ -454,52 +428,50 @@ static struct fb_fix_screeninfo def_fix = {
 
 static int request_fb_buffer(struct fb_info *fbi,int fb_id)
 {
-       struct resource *res;
-       int ret = 0;
-       switch(fb_id)
-       {
-               case 0:
-                       res = platform_get_resource_byname(g_fb_pdev, IORESOURCE_MEM, "fb0 buf");
-                       if (res == NULL)
-                       {
-                       dev_err(&g_fb_pdev->dev, "failed to get win0 memory \n");
-                       ret = -ENOENT;
-               }
-               fbi->fix.smem_start = res->start;
-               fbi->fix.smem_len = res->end - res->start + 1;
-               fbi->screen_base = ioremap(res->start, fbi->fix.smem_len);
-               memset(fbi->screen_base, 0, fbi->fix.smem_len);
-                       break;
-               #ifdef CONFIG_FB_WORK_IPP
-               case 1:
-                       /* alloc ipp buf for rotate */
-               res = platform_get_resource_byname(g_fb_pdev, IORESOURCE_MEM, "ipp buf");
-                       if (res == NULL)
-               {
-                       dev_err(&g_fb_pdev->dev, "failed to get win1 ipp memory \n");
-                       ret = -ENOENT;
-               }
-               fbi->fix.mmio_start = res->start;
-               fbi->fix.mmio_len = res->end - res->start + 1;
-                       break;
-               #endif
-               case 2:
-                       res = platform_get_resource_byname(g_fb_pdev, IORESOURCE_MEM, "fb2 buf");
-                       if (res == NULL)
-                       {
-                       dev_err(&g_fb_pdev->dev, "failed to get win0 memory \n");
-                       ret = -ENOENT;
-               }
-               fbi->fix.smem_start = res->start;
-               fbi->fix.smem_len = res->end - res->start + 1;
-               fbi->screen_base = ioremap(res->start, fbi->fix.smem_len);
-               memset(fbi->screen_base, 0, fbi->fix.smem_len);
-                   break;
-               default:
-                       break;
-                       
+    struct resource *res;
+    int ret = 0;
+    switch(fb_id)
+    {
+        case 0:
+            res = platform_get_resource_byname(g_fb_pdev, IORESOURCE_MEM, "fb0 buf");
+            if (res == NULL)
+            {
+                dev_err(&g_fb_pdev->dev, "failed to get win0 memory \n");
+                ret = -ENOENT;
+            }
+            fbi->fix.smem_start = res->start;
+            fbi->fix.smem_len = res->end - res->start + 1;
+            fbi->screen_base = ioremap(res->start, fbi->fix.smem_len);
+            memset(fbi->screen_base, 0, fbi->fix.smem_len);
+        #ifdef CONFIG_FB_WORK_IPP
+        /* alloc ipp buf for rotate */
+            res = platform_get_resource_byname(g_fb_pdev, IORESOURCE_MEM, "ipp buf");
+            if (res == NULL)
+            {
+                dev_err(&g_fb_pdev->dev, "failed to get win1 ipp memory \n");
+                ret = -ENOENT;
+            }
+            fbi->fix.mmio_start = res->start;
+            fbi->fix.mmio_len = res->end - res->start + 1;
+            break;
+        #endif
+        case 2:
+            res = platform_get_resource_byname(g_fb_pdev, IORESOURCE_MEM, "fb2 buf");
+            if (res == NULL)
+            {
+                dev_err(&g_fb_pdev->dev, "failed to get win0 memory \n");
+                ret = -ENOENT;
+            }
+            fbi->fix.smem_start = res->start;
+            fbi->fix.smem_len = res->end - res->start + 1;
+            fbi->screen_base = ioremap(res->start, fbi->fix.smem_len);
+            memset(fbi->screen_base, 0, fbi->fix.smem_len);
+            break;
+        default:
+            ret = -EINVAL;
+            break;             
        }
-       return ret;
+    return ret;
 }
 int rk_fb_register(struct rk_lcdc_device_driver *dev_drv)
 {
@@ -507,60 +479,64 @@ int rk_fb_register(struct rk_lcdc_device_driver *dev_drv)
        struct fb_info *fbi;
        int i=0,ret = 0;
        int lcdc_id = 0;
-       int win0_index = 0;
        if(NULL==dev_drv){
-               printk("rk_fb_register lcdc register fail");
-               return -ENOENT;
-       }
-       for(i=0;i<RK30_MAX_LCDC_SUPPORT;i++){
-               if(NULL==fb_inf->rk_lcdc_device[i]){
-               fb_inf->rk_lcdc_device[i] = dev_drv;
-               fb_inf->rk_lcdc_device[i]->id = i;
-               fb_inf->num_lcdc++;
-               break;
-               }
-       }
-       if(i==RK30_MAX_LCDC_SUPPORT){
-               printk("rk_fb_register lcdc out of support %d",i);
-               return -ENOENT;
-       }
-       lcdc_id = i;
+        printk("null lcdc device driver?");
+        return -ENOENT;
+    }
+    for(i=0;i<RK30_MAX_LCDC_SUPPORT;i++){
+        if(NULL==fb_inf->rk_lcdc_device[i]){
+            fb_inf->rk_lcdc_device[i] = dev_drv;
+            fb_inf->rk_lcdc_device[i]->id = i;
+            fb_inf->num_lcdc++;
+            break;
+        }
+    }
+    if(i==RK30_MAX_LCDC_SUPPORT){
+        printk("rk_fb_register lcdc out of support %d",i);
+        return -ENOENT;
+    }
+    lcdc_id = i;
        
        /************fb set,one layer one fb ***********/
-       for(i=0;i<dev_drv->num_layer;i++)
-       {
-               fbi= framebuffer_alloc(0, &g_fb_pdev->dev);
-               if(!fbi)
-               {
-                       dev_err(&g_fb_pdev->dev,">> fb framebuffer_alloc fail!");
-                       fbi = NULL;
-                       ret = -ENOMEM;
-               }
-               fbi->var = def_var;
-               fbi->fix = def_fix;
-               sprintf(fbi->fix.id,"fb%d",fb_inf->num_fb);
-               fbi->var.xres = fb_inf->rk_lcdc_device[lcdc_id]->screen.x_res;
-               fbi->var.yres = fb_inf->rk_lcdc_device[lcdc_id]->screen.y_res;
-               fbi->var.bits_per_pixel = 16;
-               fbi->var.xres_virtual = fb_inf->rk_lcdc_device[lcdc_id]->screen.x_res;
-               fbi->var.yres_virtual = fb_inf->rk_lcdc_device[lcdc_id]->screen.y_res;
-               fbi->var.width = fb_inf->rk_lcdc_device[lcdc_id]->screen.width;
-               fbi->var.height = fb_inf->rk_lcdc_device[lcdc_id]->screen.height;
-               fbi->var.pixclock =fb_inf->rk_lcdc_device[lcdc_id]->pixclock;
-               fbi->var.left_margin = fb_inf->rk_lcdc_device[lcdc_id]->screen.left_margin;
-               fbi->var.right_margin = fb_inf->rk_lcdc_device[lcdc_id]->screen.right_margin;
-               fbi->var.upper_margin = fb_inf->rk_lcdc_device[lcdc_id]->screen.upper_margin;
-               fbi->var.lower_margin = fb_inf->rk_lcdc_device[lcdc_id]->screen.lower_margin;
-               fbi->var.vsync_len = fb_inf->rk_lcdc_device[lcdc_id]->screen.vsync_len;
-               fbi->var.hsync_len = fb_inf->rk_lcdc_device[lcdc_id]->screen.hsync_len;
-               fbi->fbops                       = &fb_ops[fb_inf->num_fb];
-               fbi->flags                       = FBINFO_FLAG_DEFAULT;
-               fbi->pseudo_palette  = fb_inf->rk_lcdc_device[lcdc_id]->layer_par[i].pseudo_pal;
-               request_fb_buffer(fbi,fb_inf->num_fb);
-               fb_inf->fb[fb_inf->num_fb] = fbi;
-               printk("%s>>>>>%s\n",__func__,fb_inf->fb[fb_inf->num_fb]->fix.id);
-               fb_inf->num_fb++;
-               
+    for(i=0;i<dev_drv->num_layer;i++)
+    {
+        fbi= framebuffer_alloc(0, &g_fb_pdev->dev);
+        if(!fbi)
+        {
+            dev_err(&g_fb_pdev->dev,">> fb framebuffer_alloc fail!");
+            fbi = NULL;
+            ret = -ENOMEM;
+        }
+        fbi->var = def_var;
+        fbi->fix = def_fix;
+        sprintf(fbi->fix.id,"fb%d",fb_inf->num_fb);
+        fbi->var.xres = fb_inf->rk_lcdc_device[lcdc_id]->screen.x_res;
+        fbi->var.yres = fb_inf->rk_lcdc_device[lcdc_id]->screen.y_res;
+        fbi->var.bits_per_pixel = 16;
+        fbi->var.xres_virtual = fb_inf->rk_lcdc_device[lcdc_id]->screen.x_res;
+        fbi->var.yres_virtual = fb_inf->rk_lcdc_device[lcdc_id]->screen.y_res;
+        fbi->var.width = fb_inf->rk_lcdc_device[lcdc_id]->screen.width;
+        fbi->var.height = fb_inf->rk_lcdc_device[lcdc_id]->screen.height;
+        fbi->var.pixclock =fb_inf->rk_lcdc_device[lcdc_id]->pixclock;
+        fbi->var.left_margin = fb_inf->rk_lcdc_device[lcdc_id]->screen.left_margin;
+        fbi->var.right_margin = fb_inf->rk_lcdc_device[lcdc_id]->screen.right_margin;
+        fbi->var.upper_margin = fb_inf->rk_lcdc_device[lcdc_id]->screen.upper_margin;
+        fbi->var.lower_margin = fb_inf->rk_lcdc_device[lcdc_id]->screen.lower_margin;
+        fbi->var.vsync_len = fb_inf->rk_lcdc_device[lcdc_id]->screen.vsync_len;
+        fbi->var.hsync_len = fb_inf->rk_lcdc_device[lcdc_id]->screen.hsync_len;
+        fbi->fbops                      = &fb_ops;
+        fbi->flags                      = FBINFO_FLAG_DEFAULT;
+        fbi->pseudo_palette  = fb_inf->rk_lcdc_device[lcdc_id]->layer_par[i].pseudo_pal;
+        request_fb_buffer(fbi,fb_inf->num_fb);
+        ret = register_framebuffer(fbi);
+        if(ret<0)
+        {
+            printk("%s>>fb%d register_framebuffer fail!\n",__func__,fb_inf->num_fb);
+            ret = -EINVAL;
+        }
+        fb_inf->fb[fb_inf->num_fb] = fbi;
+        printk("%s>>>>>%s\n",__func__,fb_inf->fb[fb_inf->num_fb]->fix.id);
+        fb_inf->num_fb++;      
        }
 #if !defined(CONFIG_FRAMEBUFFER_CONSOLE) && defined(CONFIG_LOGO)
     fb_inf->fb[fb_inf->num_fb-2]->fbops->fb_set_par(fb_inf->fb[fb_inf->num_fb-2]);
index 35159c8979492cad5d28a8133aa16fc5c54e22ef..cd0db101cd45f32cf0832dc179caab88669519e3 100644 (file)
 #define RK_MAX_FB_SUPPORT     4
 
 
+
+#define FB0_IOCTL_STOP_TIMER_FLUSH             0x6001
+#define FB0_IOCTL_SET_PANEL                            0x6002
+
+#ifdef CONFIG_FB_WIMO
+#define FB_WIMO_FLAG
+#endif
+#ifdef FB_WIMO_FLAG
+#define FB0_IOCTL_SET_BUF                                      0x6017
+#define FB0_IOCTL_COPY_CURBUF                          0x6018
+#define FB0_IOCTL_CLOSE_BUF                            0x6019
+#endif
+
+#define FB1_IOCTL_GET_PANEL_SIZE               0x5001
+#define FB1_IOCTL_SET_YUV_ADDR                 0x5002
+//#define FB1_TOCTL_SET_MCU_DIR                        0x5003
+#define FB1_IOCTL_SET_ROTATE            0x5003
+#define FB1_IOCTL_SET_I2P_ODD_ADDR      0x5005
+#define FB1_IOCTL_SET_I2P_EVEN_ADDR     0x5006
+#define FB1_IOCTL_SET_WIN0_TOP          0x5018
+
 /********************************************************************
-**                          display output format                        *
+**              display output interface supported by rk lcdc                       *
 ********************************************************************/
 /* */
 #define OUT_P888            0
@@ -36,6 +57,8 @@
 #define OUT_D888_P666       0x21  //
 #define OUT_D888_P565       0x22  //
 
+
+//display data format
 enum data_format{
        ARGB888 = 0,
        RGB888,
@@ -44,6 +67,7 @@ enum data_format{
        YUV420,
        YUV444,
 };
+
 struct rk_fb_rgb {
        struct fb_bitfield      red;
        struct fb_bitfield      green;
@@ -63,23 +87,24 @@ typedef enum _TRSP_MODE
 } TRSP_MODE;
 
 struct layer_par {
-       u32     pseudo_pal[16];
-    u32 y_offset;
-    u32 c_offset;
+    const char *name;
+    int id;
+    u32        pseudo_pal[16];
+    u32 y_offset;       //yuv/rgb offset
+    u32 c_offset;     //cb cr offset
     u32 xpos;         //start point in panel
     u32 ypos;
-    u16 xsize;        //size of panel
-    u16 ysize;
-       u16 xact;        //act size
-       u16 yact;
-       u16 xres_virtual;
-       u16 yres_virtual;
-       unsigned long smem_start;
+    u16 xsize;        // display window width
+    u16 ysize;          //
+    u16 xact;        //origin display window size
+    u16 yact;
+    u16 xres_virtual;
+    u16 yres_virtual;
+    unsigned long smem_start;
     enum data_format format;
        
-       bool support_3d;
-       const char *name;
-       int id;
+    bool support_3d;
+    
 };
 
 struct rk_lcdc_device_driver{
@@ -106,6 +131,8 @@ struct rk_fb_inf {
     
     struct rk_lcdc_device_driver *rk_lcdc_device[RK30_MAX_LCDC_SUPPORT];
     int num_lcdc;
+
+    int video_mode;  //when play video set it to 1
 };
 extern int rk_fb_register(struct rk_lcdc_device_driver *fb_device_driver);
 extern int rk_fb_unregister(struct rk_lcdc_device_driver *fb_device_driver);