From 8aa6bae7ce4c83e1a2ab6e1418052c3997f5492b Mon Sep 17 00:00:00 2001 From: yxj Date: Mon, 27 Feb 2012 17:54:07 +0800 Subject: [PATCH] =?utf8?q?rk30=20lcdc=EF=BC=9A=E5=AE=8C=E5=96=84rk=5Ffb.c?= =?utf8?q?=E4=B8=AD=E7=9A=84=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- arch/arm/configs/rk30_sdk_defconfig | 1161 ++++++++++++++++++++++ drivers/video/rockchip/chips/rk30_lcdc.c | 36 +- drivers/video/rockchip/rk_fb.c | 738 +++++++------- drivers/video/rockchip/rk_fb.h | 55 +- 4 files changed, 1577 insertions(+), 413 deletions(-) diff --git a/arch/arm/configs/rk30_sdk_defconfig b/arch/arm/configs/rk30_sdk_defconfig index 27b3fcc3c408..9bf48fb167af 100644 --- a/arch/arm/configs/rk30_sdk_defconfig +++ b/arch/arm/configs/rk30_sdk_defconfig @@ -1,97 +1,1258 @@ +# +# 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 diff --git a/drivers/video/rockchip/chips/rk30_lcdc.c b/drivers/video/rockchip/chips/rk30_lcdc.c index 640d6189b36a..9b9eec63f621 100644 --- a/drivers/video/rockchip/chips/rk30_lcdc.c +++ b/drivers/video/rockchip/chips/rk30_lcdc.c @@ -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; } diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index 33ea664b0991..dcc5578227d1 100644 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -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;irk_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;irk_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;inum_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;inum_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]); diff --git a/drivers/video/rockchip/rk_fb.h b/drivers/video/rockchip/rk_fb.h index 35159c897949..cd0db101cd45 100644 --- a/drivers/video/rockchip/rk_fb.h +++ b/drivers/video/rockchip/rk_fb.h @@ -21,8 +21,29 @@ #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); -- 2.34.1