fix fb soft rending, ts

This commit is contained in:
Angell Fear
2010-09-22 21:11:15 +06:00
parent b0afbbbb1d
commit 467299d85c
11 changed files with 378 additions and 294 deletions

View File

@@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.33 # Linux kernel version: 2.6.33
# Mon Aug 23 14:03:45 2010 # Sat Sep 11 04:31:01 2010
# #
CONFIG_ARM=y CONFIG_ARM=y
CONFIG_HAVE_PWM=y CONFIG_HAVE_PWM=y
@@ -64,7 +64,7 @@ CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=17 CONFIG_LOG_BUF_SHIFT=17
CONFIG_GROUP_SCHED=y CONFIG_GROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_RT_GROUP_SCHED is not set CONFIG_RT_GROUP_SCHED=y
CONFIG_USER_SCHED=y CONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set # CONFIG_CGROUP_SCHED is not set
CONFIG_CGROUPS=y CONFIG_CGROUPS=y
@@ -85,17 +85,17 @@ CONFIG_USER_NS=y
CONFIG_PID_NS=y CONFIG_PID_NS=y
CONFIG_NET_NS=y CONFIG_NET_NS=y
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="../ramfs-android" CONFIG_INITRAMFS_SOURCE="../ramfs-android/"
CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_ROOT_UID=0
CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_INITRAMFS_ROOT_GID=0
CONFIG_RD_GZIP=y CONFIG_RD_GZIP=y
# CONFIG_RD_BZIP2 is not set # CONFIG_RD_BZIP2 is not set
CONFIG_RD_LZMA=y # CONFIG_RD_LZMA is not set
# CONFIG_RD_LZO is not set # CONFIG_RD_LZO is not set
# CONFIG_INITRAMFS_COMPRESSION_NONE is not set # CONFIG_INITRAMFS_COMPRESSION_NONE is not set
# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set CONFIG_INITRAMFS_COMPRESSION_GZIP=y
# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set # CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set
CONFIG_INITRAMFS_COMPRESSION_LZMA=y # CONFIG_INITRAMFS_COMPRESSION_LZMA is not set
# CONFIG_INITRAMFS_COMPRESSION_LZO is not set # CONFIG_INITRAMFS_COMPRESSION_LZO is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
@@ -104,7 +104,6 @@ CONFIG_EMBEDDED=y
CONFIG_UID16=y CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y CONFIG_HOTPLUG=y
CONFIG_PRINTK=y CONFIG_PRINTK=y
@@ -138,7 +137,6 @@ CONFIG_HAVE_CLK=y
# #
# GCOV-based kernel profiling # GCOV-based kernel profiling
# #
# CONFIG_GCOV_KERNEL is not set
# CONFIG_SLOW_WORK is not set # CONFIG_SLOW_WORK is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y CONFIG_SLABINFO=y
@@ -305,6 +303,8 @@ CONFIG_G900_KBR=y
CONFIG_G900_BUTTON=y CONFIG_G900_BUTTON=y
CONFIG_G900_LEDS=y CONFIG_G900_LEDS=y
CONFIG_G900_PHONE=y CONFIG_G900_PHONE=y
CONFIG_G900_POWER_BUTTON=y
CONFIG_G900_FLASH=y
CONFIG_PXA27x=y CONFIG_PXA27x=y
CONFIG_PXA_SSP=y CONFIG_PXA_SSP=y
CONFIG_PLAT_PXA=y CONFIG_PLAT_PXA=y
@@ -389,7 +389,7 @@ CONFIG_KEXEC=y
# #
CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y # CONFIG_CPU_FREQ_DEBUG is not set
CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
@@ -427,8 +427,7 @@ CONFIG_HAVE_AOUT=y
# Power management options # Power management options
# #
CONFIG_PM=y CONFIG_PM=y
CONFIG_PM_DEBUG=y # CONFIG_PM_DEBUG is not set
CONFIG_PM_VERBOSE=y
# CONFIG_SUSPEND is not set # CONFIG_SUSPEND is not set
CONFIG_HAS_WAKELOCK=y CONFIG_HAS_WAKELOCK=y
CONFIG_HAS_EARLYSUSPEND=y CONFIG_HAS_EARLYSUSPEND=y
@@ -539,14 +538,13 @@ CONFIG_WEXT_SPY=y
CONFIG_CFG80211=y CONFIG_CFG80211=y
CONFIG_NL80211_TESTMODE=y CONFIG_NL80211_TESTMODE=y
CONFIG_CFG80211_DEVELOPER_WARNINGS=y CONFIG_CFG80211_DEVELOPER_WARNINGS=y
CONFIG_CFG80211_REG_DEBUG=y # CONFIG_CFG80211_REG_DEBUG is not set
CONFIG_CFG80211_DEFAULT_PS=y CONFIG_CFG80211_DEFAULT_PS=y
CONFIG_CFG80211_DEBUGFS=y
CONFIG_WIRELESS_OLD_REGULATORY=y CONFIG_WIRELESS_OLD_REGULATORY=y
CONFIG_CFG80211_WEXT=y CONFIG_CFG80211_WEXT=y
CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_WIRELESS_EXT_SYSFS=y
CONFIG_LIB80211=y CONFIG_LIB80211=y
CONFIG_LIB80211_DEBUG=y # CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=y CONFIG_MAC80211=y
# CONFIG_MAC80211_RC_PID is not set # CONFIG_MAC80211_RC_PID is not set
# CONFIG_MAC80211_RC_MINSTREL is not set # CONFIG_MAC80211_RC_MINSTREL is not set
@@ -555,7 +553,6 @@ CONFIG_MAC80211=y
CONFIG_MAC80211_RC_DEFAULT="" CONFIG_MAC80211_RC_DEFAULT=""
CONFIG_MAC80211_MESH=y CONFIG_MAC80211_MESH=y
# CONFIG_MAC80211_LEDS is not set # CONFIG_MAC80211_LEDS is not set
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_DEBUG_MENU is not set # CONFIG_MAC80211_DEBUG_MENU is not set
# CONFIG_WIMAX is not set # CONFIG_WIMAX is not set
CONFIG_RFKILL=y CONFIG_RFKILL=y
@@ -578,11 +575,96 @@ CONFIG_FW_LOADER=y
# CONFIG_FIRMWARE_IN_KERNEL is not set # CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE="libertas/gspi8385_hlp.bin libertas/gspi8385.bin" CONFIG_EXTRA_FIRMWARE="libertas/gspi8385_hlp.bin libertas/gspi8385.bin"
CONFIG_EXTRA_FIRMWARE_DIR="../FW" CONFIG_EXTRA_FIRMWARE_DIR="../FW"
CONFIG_DEBUG_DRIVER=y
CONFIG_DEBUG_DEVRES=y
# CONFIG_SYS_HYPERVISOR is not set # CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set # CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_TESTS is not set
# CONFIG_MTD_CONCAT is not set
# CONFIG_MTD_PARTITIONS is not set
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
# 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_MTD_OOPS is not set
#
# RAM/ROM/Flash chip drivers
#
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_RAM is not set
CONFIG_MTD_ROM=y
# CONFIG_MTD_ABSENT is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=y
# CONFIG_MTD_PHYSMAP_COMPAT 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=y
# CONFIG_MTD_NAND_VERIFY_WRITE is not set
# CONFIG_MTD_NAND_ECC_SMC is not set
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
# CONFIG_MTD_NAND_GPIO is not set
CONFIG_MTD_NAND_IDS=y
CONFIG_MTD_NAND_DISKONCHIP=m
# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
# CONFIG_MTD_NAND_SHARPSL is not set
# CONFIG_MTD_NAND_PLATFORM is not set
# CONFIG_MTD_ALAUDA is not set
# CONFIG_MTD_ONENAND is not set
#
# LPDDR flash memory drivers
#
# CONFIG_MTD_LPDDR is not set
#
# UBI - Unsorted block images
#
# CONFIG_MTD_UBI is not set
# CONFIG_PARPORT is not set # CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_COW_COMMON is not set # CONFIG_BLK_DEV_COW_COMMON is not set
@@ -689,7 +771,7 @@ CONFIG_LIBERTAS=y
# CONFIG_LIBERTAS_USB is not set # CONFIG_LIBERTAS_USB is not set
# CONFIG_LIBERTAS_SDIO is not set # CONFIG_LIBERTAS_SDIO is not set
CONFIG_LIBERTAS_SPI=m CONFIG_LIBERTAS_SPI=m
CONFIG_LIBERTAS_DEBUG=y # CONFIG_LIBERTAS_DEBUG is not set
# CONFIG_P54_COMMON is not set # CONFIG_P54_COMMON is not set
# CONFIG_RT2X00 is not set # CONFIG_RT2X00 is not set
# CONFIG_WL12XX is not set # CONFIG_WL12XX is not set
@@ -874,7 +956,6 @@ CONFIG_I2C_PXA=y
# CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set # CONFIG_I2C_DEBUG_CHIP is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_DEBUG=y
CONFIG_SPI_MASTER=y CONFIG_SPI_MASTER=y
# #
@@ -898,7 +979,6 @@ CONFIG_SPI_SPIDEV=y
# CONFIG_PPS is not set # CONFIG_PPS is not set
CONFIG_ARCH_REQUIRE_GPIOLIB=y CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_DEBUG_GPIO=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# #
@@ -929,7 +1009,7 @@ CONFIG_GPIO_SYSFS=y
# #
# CONFIG_W1 is not set # CONFIG_W1 is not set
CONFIG_POWER_SUPPLY=y CONFIG_POWER_SUPPLY=y
CONFIG_POWER_SUPPLY_DEBUG=y # CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_PDA_POWER=y CONFIG_PDA_POWER=y
CONFIG_APM_POWER=y CONFIG_APM_POWER=y
# CONFIG_BATTERY_DS2760 is not set # CONFIG_BATTERY_DS2760 is not set
@@ -1074,9 +1154,7 @@ CONFIG_SND_JACK=y
CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y CONFIG_SND_VERBOSE_PROCFS=y
CONFIG_SND_VERBOSE_PRINTK=y CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DEBUG=y # CONFIG_SND_DEBUG is not set
CONFIG_SND_DEBUG_VERBOSE=y
CONFIG_SND_PCM_XRUN_DEBUG=y
CONFIG_SND_VMASTER=y CONFIG_SND_VMASTER=y
# CONFIG_SND_RAWMIDI_SEQ is not set # CONFIG_SND_RAWMIDI_SEQ is not set
# CONFIG_SND_OPL3_LIB_SEQ is not set # CONFIG_SND_OPL3_LIB_SEQ is not set
@@ -1159,7 +1237,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set # CONFIG_USB_ARCH_HAS_EHCI is not set
CONFIG_USB=y CONFIG_USB=y
CONFIG_USB_DEBUG=y # CONFIG_USB_DEBUG is not set
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
# #
@@ -1210,7 +1288,7 @@ CONFIG_USB_ACM=m
# also be needed; see USB_STORAGE Help for more info # also be needed; see USB_STORAGE Help for more info
# #
CONFIG_USB_STORAGE=m CONFIG_USB_STORAGE=m
CONFIG_USB_STORAGE_DEBUG=y # CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_DATAFAB=m CONFIG_USB_STORAGE_DATAFAB=m
CONFIG_USB_STORAGE_FREECOM=m CONFIG_USB_STORAGE_FREECOM=m
CONFIG_USB_STORAGE_ISD200=m CONFIG_USB_STORAGE_ISD200=m
@@ -1266,7 +1344,7 @@ CONFIG_USB_SERIAL_GENERIC=y
# CONFIG_USB_SERIAL_NAVMAN is not set # CONFIG_USB_SERIAL_NAVMAN is not set
# CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_OTI6858 is not set # CONFIG_USB_SERIAL_OTI6858 is not set
CONFIG_USB_SERIAL_QUALCOMM=m # CONFIG_USB_SERIAL_QUALCOMM is not set
# CONFIG_USB_SERIAL_SPCP8X5 is not set # CONFIG_USB_SERIAL_SPCP8X5 is not set
# CONFIG_USB_SERIAL_HP4X is not set # CONFIG_USB_SERIAL_HP4X is not set
# CONFIG_USB_SERIAL_SAFE is not set # CONFIG_USB_SERIAL_SAFE is not set
@@ -1305,9 +1383,7 @@ CONFIG_USB_SERIAL_QUALCOMM=m
# CONFIG_USB_ISIGHTFW is not set # CONFIG_USB_ISIGHTFW is not set
# CONFIG_USB_VST is not set # CONFIG_USB_VST is not set
CONFIG_USB_GADGET=y CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
# CONFIG_USB_GADGET_DEBUG_FILES is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=100 CONFIG_USB_GADGET_VBUS_DRAW=100
CONFIG_USB_GADGET_SELECTED=y CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_AT91 is not set
@@ -1658,64 +1734,14 @@ CONFIG_FRAME_WARN=1024
# CONFIG_MAGIC_SYSRQ is not set # CONFIG_MAGIC_SYSRQ is not set
# CONFIG_STRIP_ASM_SYMS is not set # CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_UNUSED_SYMBOLS is not set # CONFIG_UNUSED_SYMBOLS is not set
CONFIG_DEBUG_FS=y # CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set # CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_KERNEL is not set
CONFIG_DEBUG_SHIRQ=y
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y
CONFIG_DEBUG_OBJECTS=y
CONFIG_DEBUG_OBJECTS_SELFTEST=y
CONFIG_DEBUG_OBJECTS_FREE=y
CONFIG_DEBUG_OBJECTS_TIMERS=y
CONFIG_DEBUG_OBJECTS_WORK=y
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
CONFIG_DEBUG_SLAB=y
CONFIG_DEBUG_SLAB_LEAK=y
# CONFIG_DEBUG_KMEMLEAK is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
CONFIG_LOCK_STAT=y
CONFIG_DEBUG_LOCKDEP=y
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y # CONFIG_DEBUG_MEMORY_INIT is not set
# CONFIG_DEBUG_VM is not set
CONFIG_DEBUG_WRITECOUNT=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_DEBUG_LIST=y
CONFIG_DEBUG_SG=y
CONFIG_DEBUG_NOTIFIERS=y
CONFIG_DEBUG_CREDENTIALS=y
CONFIG_BOOT_PRINTK_DELAY=y
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_DETECTOR=y CONFIG_RCU_CPU_STALL_DETECTOR=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_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set # CONFIG_LATENCYTOP is not set
# CONFIG_SYSCTL_SYSCALL_CHECK is not set # CONFIG_SYSCTL_SYSCALL_CHECK is not set
CONFIG_DEBUG_PAGEALLOC=y
CONFIG_WANT_PAGE_DEBUG_FLAGS=y
CONFIG_PAGE_POISONING=y
CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_TRACING_SUPPORT=y CONFIG_TRACING_SUPPORT=y
CONFIG_FTRACE=y CONFIG_FTRACE=y
@@ -1732,17 +1758,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_KMEMTRACE is not set # CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not set # CONFIG_WORKQUEUE_TRACER is not set
# CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_BLK_DEV_IO_TRACE is not set
CONFIG_DYNAMIC_DEBUG=y
# CONFIG_SAMPLES is not set # CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
CONFIG_ARM_UNWIND=y CONFIG_ARM_UNWIND=y
CONFIG_DEBUG_USER=y # CONFIG_DEBUG_USER is not set
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_STACK_USAGE=y
CONFIG_DEBUG_LL=y
CONFIG_EARLY_PRINTK=y
# CONFIG_DEBUG_ICEDCC is not set
# CONFIG_OC_ETM is not set # CONFIG_OC_ETM is not set
# #
@@ -1872,7 +1891,8 @@ CONFIG_ZLIB_INFLATE=y
CONFIG_LZO_COMPRESS=y CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y CONFIG_LZO_DECOMPRESS=y
CONFIG_DECOMPRESS_GZIP=y CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_LZMA=y CONFIG_REED_SOLOMON=m
CONFIG_REED_SOLOMON_DEC16=y
CONFIG_HAS_IOMEM=y CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y CONFIG_HAS_DMA=y

View File

@@ -43,3 +43,9 @@ config G900_POWER_BUTTON
depends on MACH_G900 depends on MACH_G900
---help--- ---help---
This is a POWER Buttons driver for G900 This is a POWER Buttons driver for G900
config G900_FLASH
tristate "G900 mDOC G4 flash Experemental"
depends on MACH_G900
---help---
This is a mDOC flash driver for G900

View File

@@ -4,4 +4,5 @@ obj-$(CONFIG_G900_BUTTON) += g900_buttons.o
obj-$(CONFIG_G900_POWER_BUTTON) += g900_pwr_btn.o obj-$(CONFIG_G900_POWER_BUTTON) += g900_pwr_btn.o
obj-$(CONFIG_G900_LEDS) += g900_leds.o obj-$(CONFIG_G900_LEDS) += g900_leds.o
obj-$(CONFIG_G900_PHONE) += g900_msm6280.o obj-$(CONFIG_G900_PHONE) += g900_msm6280.o
#obj-$(CONFIG_G900_FLASH) += ttfs/
obj-m += ttfs/

View File

@@ -28,10 +28,6 @@
#include <linux/gpio_keys.h> #include <linux/gpio_keys.h>
#include <linux/pda_power.h> #include <linux/pda_power.h>
//#include <linux/mtd/mtd.h>
//#include <linux/mtd/map.h>
//#include <linux/mtd/partitions.h>
//#include <linux/mtd/physmap.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
@@ -153,12 +149,6 @@ d- = USBC_N(C 20)
/* Leds
G900_CFG_OUT(GPIO16_LED_nVibra, AF0, DRIVE_HIGH), // or should be GPIO16_PWM0_OUT ?
G900_CFG_OUT(GPIO37_LED_nFlash, AF0, DRIVE_HIGH), // it can't be GPIO37_USB_P2_8 ?
G900_CFG_OUT(GPIO85_LED_nKeyboard, AF0, DRIVE_HIGH),
G900_CFG_OUT(GPIO86_LED_nKeypad, AF0, DRIVE_HIGH),
*/
/* Lcd backlight */ /* Lcd backlight */
GPIO17_PWM1_OUT, GPIO17_PWM1_OUT,
@@ -497,7 +487,7 @@ static void __init spi_init(void)
} }
/* DEBUG */ /* +++++++++++++++++++++++++++++++++++++++++DEBUG ++++++++++++++++++++++++++++++++++++++++++*/
static void __init debuging(void) static void __init debuging(void)
{ {
@@ -505,6 +495,18 @@ static void __init debuging(void)
} }
/*
* NOR flash
*/
#include <linux/mtd/mtd.h>
#include <linux/mtd/map.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/physmap.h>
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!DEBUG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
@@ -582,6 +584,8 @@ static struct platform_device g900_pwr_button = {
.name = "g900-power-button", .name = "g900-power-button",
}; };
static struct platform_device g900_sound = { static struct platform_device g900_sound = {
.name = "g900-wm9714", .name = "g900-wm9714",
.id = -1, .id = -1,
@@ -617,6 +621,7 @@ static struct platform_device *g900_devices[] __initdata = {
&g900_ts, &g900_ts,
&pxa2xx_pcm, &pxa2xx_pcm,
&g900_sound, &g900_sound,
//&g900_flash,
}; };
static void __init g900_map_io(void) static void __init g900_map_io(void)
@@ -637,12 +642,27 @@ static void fix_msc(void)
* Localbus setup: * Localbus setup:
* CS0: ; * CS0: ;
* CS1: ; * CS1: ;
* CS2: ;
* CS3: -;
* CS4: ???.
* CS5: gsm. * CS5: gsm.
*/ */
MSC0 = 0x7ff09888; MSC0 = 0x7ff09888;
MSC1 = 0x000089c4; MSC1 = 0x000089c4;
MSC2 = 0x5ff95ff9; MSC2 = 0x5ff95ff9;
MDREFR = 0x2013a01e; MDREFR = 0x2013a01e;
/*WinCe
MDCNFG : 0xa80009d7 = 10101000 00000000 00001001 11010111
MDREFR : 0x2013a01e = 00100000 00010011 10100000 00011110
MSC0 : 0x7ff09888 = 01111111 11110000 10011000 10001000
MSC1 : 0x000089c4 = 00000000 00000000 10001001 11000100
MSC2 : 0x5ff95ff9 = 01011111 11111001 01011111 11111001
MECR : 0x00000001 = 00000000 00000000 00000000 00000001
33222222 22221111 11111100 00000000
10987654 32109876 54321098 76543210
*/
} }

View File

@@ -68,13 +68,13 @@ static struct gpio_led gpio_leds[] = {
.gpio = GPIO16_LED_nVibra, .gpio = GPIO16_LED_nVibra,
.name = "vibrator", .name = "vibrator",
.active_low = 0, .active_low = 0,
.max_timeout = 4000, .max_timeout = 15000,
}, },
{ {
.gpio = GPIO37_LED_nFlash, .gpio = GPIO37_LED_nFlash,
.name = "flash", .name = "flash",
.active_low = 0, .active_low = 0,
.max_timeout = 4000, .max_timeout = 15000,
}, },
}; };
static struct timed_gpio_platform_data g900_timed_gpio_data = { static struct timed_gpio_platform_data g900_timed_gpio_data = {

View File

@@ -1,8 +1,8 @@
/* /*
* drivers/input/touchscreen/ak4183.c * drivers/input/touchscreen/ak4183.c
* *
* Copyright (c) 2010 Angell * Copyright (c) 2010 SashaG <...>
* Angell Fear <angell@angellfear.ru> * Copyright (c) 2010 Fear <angell@angellfear.ru>
* *
* Using code from: * Using code from:
* tsc2007.c * tsc2007.c
@@ -28,13 +28,12 @@
#include <linux/input.h> #include <linux/input.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/delay.h>
#include <linux/i2c/ak4183.h> #include <linux/i2c/ak4183.h>
#define TS_POLL_DELAY 10 /* us delay between samples */ #define TS_POLL_DELAY 10 /* us delay between samples */
#define TS_POLL_PERIOD 100 /* us delay between samples */ #define TS_POLL_PERIOD 1000 /* us delay between samples */
#define AK4183_12BIT 1 /* 12 bit mode */ #define AK4183_12BIT 1 /*12 bit resolution*/
#define devdbg(x...) printk(x) #define devdbg(x...) printk(x)
@@ -44,7 +43,7 @@
#define AK4183_BIT_A1 (0x1 << 5) #define AK4183_BIT_A1 (0x1 << 5)
#define AK4183_BIT_A0 (0x1 << 4) #define AK4183_BIT_A0 (0x1 << 4)
#define AK4183_BIT_PD0 (0x1 << 2) #define AK4183_BIT_PD0 (0x1 << 2)
#define AK4183_BIT_MODE (0x1 << 1) #define AK4183_BIT_R8BIT (0x1 << 1)
#define MAX_12BIT ((1 << 12) - 1) #define MAX_12BIT ((1 << 12) - 1)
@@ -52,10 +51,21 @@
#if AK4183_12BIT #if AK4183_12BIT
#define ADC_ON_12BIT 0 #define ADC_ON_12BIT 0
#else #else
#define ADC_ON_12BIT AK4183_BIT_MODE #define ADC_ON_12BIT AK4183_BIT_R8BIT
#endif #endif
/*
BIT Name Function
7 S Start Bit. “1” Accelerate and Axis Command, “0”: Sleep mode Command
6-4 A2-A0 Channel Selection Bits. Analog inputs to the A/D converter and the activated driver switches are
selected. Please see the following table for the detail.
3 X1 Dont care
2 PD0 Power down bit (refer to power-down control)
1 MODE Resolution of A/D converter. “0”: 12 bit output “1”: 8 bit output
0 X2 Dont care
*/
#define READ_X ( ADC_ON_12BIT | AK4183_BIT_S | AK4183_BIT_A2 ) #define READ_X ( ADC_ON_12BIT | AK4183_BIT_S | AK4183_BIT_A2 )
#define READ_Y ( ADC_ON_12BIT | AK4183_BIT_S | AK4183_BIT_A0 | AK4183_BIT_A2 ) #define READ_Y ( ADC_ON_12BIT | AK4183_BIT_S | AK4183_BIT_A0 | AK4183_BIT_A2 )
#define READ_Z1 ( ADC_ON_12BIT | AK4183_BIT_S | AK4183_BIT_A1 | AK4183_BIT_A2 ) #define READ_Z1 ( ADC_ON_12BIT | AK4183_BIT_S | AK4183_BIT_A1 | AK4183_BIT_A2 )
@@ -68,25 +78,38 @@
#define PWRDOWN ( AK4183_BIT_S | AK4183_BIT_PD0 ) #define PWRDOWN ( AK4183_BIT_S | AK4183_BIT_PD0 )
/*
BIT Name Function
7 S Start Bit. <20>1<EFBFBD> Accelerate and Axis Command, <20>0<EFBFBD>: Sleep mode Command
6-4 A2-A0 Channel Selection Bits. Analog inputs to the A/D converter and the activated driver switches are
selected. Please see the following table for the detail.
3 X1 Don<6F>t care
2 PD0 Power down bit (refer to power-down control)
1 MODE Resolution of A/D converter. <20>0<EFBFBD>: 12 bit output <20>1<EFBFBD>: 8 bit output
0 X2 Don<6F>t care
*/ #define samples 200
////touch calib test data
#define tmc_ax -11
//-0,05705; *200
#define tmc_bx 566382
//2831,91107; *200
#define tmc_x0 450
//450;
#define tmc_x10 476382
//bx-x0
#define tmc_ax_m_x0 -5135
//ax*x0
#define tmc_ay -11
//-0,05579;
#define tmc_by 593736
//2968,68213 *200
#define tmc_y0 440
//440;
#define tmc_y10 505736
//bx-x0
#define tmc_ay_m_y0 -4910
//ay*y0
struct ts_event { struct ts_event {
u16 x; u16 x;
u16 y; u16 y;
u16 z1, z2; u16 z1, z2;
u32 prs;
}; };
struct ak4183 { struct ak4183 {
@@ -98,7 +121,6 @@ struct ak4183 {
u16 model; u16 model;
u16 x_plate_ohms; u16 x_plate_ohms;
u16 y_plate_ohms;
bool pendown; bool pendown;
int irq; int irq;
@@ -108,29 +130,28 @@ struct ak4183 {
}; };
/* /*
0 4000 left 32 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 419 0 4000 left 32 право 419
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> X=0x0150 Y=0x0ee0 P=0x0106 верх лево X=0x0150 Y=0x0ee0 P=0x0106
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> X=0x0e50 Y=0x0ee0 P=0x0104 верх право X=0x0e50 Y=0x0ee0 P=0x0104
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> X=0x0110 Y=0x0090 P=0x00ea низ лево X=0x0110 Y=0x0090 P=0x00ea
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> X=0x0dc0 Y=0x0080 P=0x00ec низ право X=0x0dc0 Y=0x0080 P=0x00ec
wince wince
CalibrationData 2174,1990 563,3553 700,465 3463,506 3440,3547 CalibrationData 2174,1990 563,3553 700,465 3463,506 3440,3547
wince hex wince hex
CalibrationData 0x87E,0x7C6 0x233,0xDE1 0x2BC,0x1D1 0xD87,0x1FA 0xD70,0xDDB CalibrationData 0x87E,0x7C6 0x233,0xDE1 0x2BC,0x1D1 0xD87,0x1FA 0xD70,0xDDB
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD> <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> середина, верх лево,низ лево,низ право, верх право
*/ */
static int abs_x[3] = {0x0110, 0x0dc0, 1}; static int abs_x[3] = {0x0110, 0x0dc0, 20};
module_param_array(abs_x, int, NULL, 0); module_param_array(abs_x, int, NULL, 0);
MODULE_PARM_DESC(abs_x, "Touchscreen absolute X min, max, fuzz"); MODULE_PARM_DESC(abs_x, "Touchscreen absolute X min, max, fuzz");
static int abs_y[3] = {0x0ee0, 0x0080, 1}; static int abs_y[3] = {0x0ee0, 0x0080, 20};
module_param_array(abs_y, int, NULL, 0); module_param_array(abs_y, int, NULL, 0);
MODULE_PARM_DESC(abs_y, "Touchscreen absolute Y min, max, fuzz"); MODULE_PARM_DESC(abs_y, "Touchscreen absolute Y min, max, fuzz");
static int abs_p[3] = {0, 0xfff, 2};
static int abs_p[3] = {0, MAX_12BIT, 0};
module_param_array(abs_p, int, NULL, 0); module_param_array(abs_p, int, NULL, 0);
MODULE_PARM_DESC(abs_p, "Touchscreen absolute Pressure min, max, fuzz"); MODULE_PARM_DESC(abs_p, "Touchscreen absolute Pressure min, max, fuzz");
@@ -151,79 +172,48 @@ static inline int ak4183_xfer(struct ak4183 *tsc, u8 cmd)
* Where DataLow has [D11-D4], DataHigh has [D3-D0 << 4 | Dummy 4bit]. * Where DataLow has [D11-D4], DataHigh has [D3-D0 << 4 | Dummy 4bit].
*/ */
val = swab16(data) >> 4; val = swab16(data) >> 4;
//dev_dbg(&tsc->client->dev, "data: 0x%x, val: 0x%x\n", data, val);
devdbg("data: 0x%x, val: 0x%x\n", data, val);
return val; return val;
} }
static void ak4183_read_values(struct ak4183 *tsc, struct ts_event *tc) static u32 ak4183_read_values(struct ak4183 *tsc, struct ts_event *tc)
{ {
u32 rt = 0;
s32 rtt = 0;
/* y- still on; turn on only y+ (and ADC) */ //s32 x,y;
tc->y = ak4183_xfer(tsc, READ_Y); tc->x = ak4183_xfer(tsc, READ_X);//x
/* turn y- off, x+ on, then leave in lowpower */ tc->y = ak4183_xfer(tsc, READ_Y);//y
tc->x = ak4183_xfer(tsc, READ_X); //printk(KERN_INFO "AK4183: %5i;%5i;",
// tc->x,tc->y);
/* turn y+ off, x- on; we'll use formula #1 */ tc->z1 = ak4183_xfer(tsc,READ_Z1);//z1
tc->z1 = ak4183_xfer(tsc, READ_Z1); tc->z2 = ak4183_xfer(tsc,READ_Z2);//z2
tc->z2 = ak4183_xfer(tsc, READ_Z2);
/** calcilate pressure resistance **/
tc->prs = 0;
/* range filtering */
if (tc->x == MAX_12BIT)
tc->x = 0;
/* compute touch pressure resistance using equation #1 */
#if 1
if (likely(tc->x && tc->z1)) { if (likely(tc->x && tc->z1)) {
/* compute touch pressure resistance using equation #1 */
rt = tc->x*(tc->z2-tc->z1)/(tc->z1);
//tc->prs = tc->z2 - tc->z1; if (rt<6350){ // min toch
tc->prs = (tc->z2 / tc->z1 - 1); rtt=rt-5000;//for func ; 0-max touch
tc->prs *= (tc->x/256); if (rt<5000){rt=5000;} // max
tc->prs *= tsc->x_plate_ohms; rt=(6350-rt)*3;//0xFFF max
tc->prs /= tc->z1; if (rt>=0xFFF) {rt=0xFFE;}//max
//tc->prs = (tc->prs + 2047) >> 12; // printk(KERN_INFO "AK4183: %5u;%5u;%5u;%5u;%5u;",
// tc->x,tc->y,tc->z1,tc->z2,rtt);
}else }else{
tc->prs = 0; rt=0;//no touch
#else
if(likely(tc->x && tc->z1)) {
//tc->prs = (tsc->x_plate_ohms * tc->x * (tc->z2 - tc->z1) ) / (4096 * tc->z1); // 12 <20><><EFBFBD>
tc->prs = tsc->x_plate_ohms;
tc->prs *= tc->x;
tc->prs /= 4096;
tc->prs *= ((4096/tc->z1) - 1);
tc->prs -= tsc->y_plate_ohms * (1 - (tc->y / 4096));
} }
#endif }
//todo : need pwrdown
/* if (rt){//*200
Rtouch = (Rxplate) * (Xposition/4096) * [(Z2/Z1) <20> 1] tc->x=(u32)(((s32)(tc->x)*tmc_x10+rtt*tmc_ax_m_x0)/(tmc_x10+tmc_ax*rtt));
Rtouch = (Rxplate*Xposition/4096)*[(4096/Z1) <20> 1] <20> Ryplate*[1 <20> (Yposition/4096)] tc->y=(u32)(((s32)(tc->y)*tmc_y10+rtt*tmc_ay_m_y0)/(tmc_y10+tmc_ay*rtt));
*/ }
return rt;
printk(KERN_INFO "ts: calc X = 0x%04x Y = 0x%04x Z1 = 0x%04x, Z2 = 0x%04x, PRS = 0x%04x\n", tc->x, tc->y, tc->z1, tc->z2, tc->prs);
/* Prepare for next touch reading - power down ADC, enable PENIRQ */
//ak4183_xfer(tsc, PWRDOWN);
} }
static void ak4183_send_up_event(struct ak4183 *tsc) static void ak4183_send_up_event(struct ak4183 *tsc)
{ {
struct input_dev *input = tsc->input; struct input_dev *input = tsc->input;
devdbg("ak4183: send_up_event\n"); dev_dbg(&tsc->client->dev, "UP\n");
input_report_key(input, BTN_TOUCH, 0); input_report_key(input, BTN_TOUCH, 0);
input_report_abs(input, ABS_PRESSURE, 0); input_report_abs(input, ABS_PRESSURE, 0);
@@ -232,8 +222,11 @@ static void ak4183_send_up_event(struct ak4183 *tsc)
static void ak4183_work(struct work_struct *work) static void ak4183_work(struct work_struct *work)
{ {
struct ak4183 *ts = container_of(to_delayed_work(work), struct ak4183, work); struct ak4183 *ts =
container_of(to_delayed_work(work), struct ak4183, work);
struct ts_event tc; struct ts_event tc;
u32 rt;
/* /*
* NOTE: We can't rely on the pressure to determine the pen down * NOTE: We can't rely on the pressure to determine the pen down
* state, even though this controller has a pressure sensor. * state, even though this controller has a pressure sensor.
@@ -242,52 +235,47 @@ static void ak4183_work(struct work_struct *work)
* expected value. * expected value.
* *
* The only safe way to check for the pen up condition is in the * The only safe way to check for the pen up condition is in the
* work function by reading the pen signal state (it's a GPIO * work function by reading he pen signal state (it's a GPIO
* and IRQ). Unfortunately such callback is not always available, * and IRQ). Unfortunately such callback is not always available,
* in that case we have rely on the pressure anyway. * in that case we have rely on the pressure anyway.
*/ */
if (ts->get_pendown_state) { if (ts->get_pendown_state) {
if (unlikely(!ts->get_pendown_state())) { if (unlikely(!ts->get_pendown_state())) {
devdbg("ak4183: pendown_state = UP\n");
ak4183_send_up_event(ts); ak4183_send_up_event(ts);
ts->pendown = false; ts->pendown = false;
goto out; goto out;
} }
devdbg("ak4183: pen is still down\n"); //dev_dbg(&ts->client->dev, "pen is still down\n");
} }
ak4183_read_values(ts, &tc); rt = ak4183_read_values(ts, &tc);
if (tc.prs > MAX_12BIT) { if (rt > MAX_12BIT) {
/* /*
* Sample found inconsistent by debouncing or pressure is * Sample found inconsistent by debouncing or pressure is
* beyond the maximum. Don't report it to user space, * beyond the maximum. Don't report it to user space,
* repeat at least once more the measurement. * repeat at least once more the measurement.
*/ */
devdbg("ak4183: ignored pressure %d\n", tc.prs); dev_dbg(&ts->client->dev, "ignored pressure %d\n", rt);
goto out; goto out;
} }
if (tc.prs) { if (rt) {
struct input_dev *input = ts->input; struct input_dev *input = ts->input;
if (!ts->pendown) { if (!ts->pendown) {
devdbg("ak4183: DOWN\n"); dev_dbg(&ts->client->dev, "DOWN\n");
input_report_key(input, BTN_TOUCH, 1); input_report_key(input, BTN_TOUCH, 1);
ts->pendown = true; ts->pendown = true;
} }
devdbg("ak4183 x = 0x%4x,y = 0x%4x,rt = 0x%4x", tc.x, tc.y, rt);
input_report_abs(input, ABS_X, tc.x); input_report_abs(input, ABS_X, tc.x);
input_report_abs(input, ABS_Y, tc.y); input_report_abs(input, ABS_Y, tc.y);
input_report_abs(input, ABS_PRESSURE, tc.prs); input_report_abs(input, ABS_PRESSURE, rt);
input_sync(input); input_sync(input);
} else if (!ts->get_pendown_state && ts->pendown) { } else if (!ts->get_pendown_state && ts->pendown) {
/* /*
* We don't have callback to check pendown state, so we * We don't have callback to check pendown state, so we
@@ -390,12 +378,9 @@ static int __devinit ak4183_probe(struct i2c_client *client,
input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH); input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
// input_set_abs_params(input_dev, ABS_X, 0, MAX_12BIT, 0, 0);
input_set_abs_params(input_dev, ABS_X, abs_x[0], abs_x[1], abs_x[2], 0); input_set_abs_params(input_dev, ABS_X, abs_x[0], abs_x[1], abs_x[2], 0);
// input_set_abs_params(input_dev, ABS_Y, 0, MAX_12BIT, 0, 0);
input_set_abs_params(input_dev, ABS_Y, abs_y[0], abs_y[1], abs_y[2], 0); input_set_abs_params(input_dev, ABS_Y, abs_y[0], abs_y[1], abs_y[2], 0);
input_set_abs_params(input_dev, ABS_PRESSURE, abs_p[0], abs_p[1], abs_p[2], 0); input_set_abs_params(input_dev, ABS_PRESSURE, 0, MAX_12BIT, 0, 0);
// input_set_abs_params(input_dev, ABS_PRESSURE, 0, MAX_12BIT, 0, 0);
if (pdata->init_platform_hw) if (pdata->init_platform_hw)
pdata->init_platform_hw(); pdata->init_platform_hw();

View File

@@ -37,15 +37,24 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/fb.h> #include <asm/fb.h>
#define VIDEOMEMPAGE (1 << PAGE_SHIFT)
#define FB_WIDTH 480 #define FB_WIDTH 480
#define FB_HEIGHT 800 #define FB_HEIGHT 800
#define VIDEOMEMSTART 0x0a000020 /* vram variable value from HaRET */ #define VIDEOMEMSTART 0x0a000020 /* vram variable value from HaRET */
#define FB_NUMBER_OF_BUFFERS 2 #define FB_NUMBER_OF_BUFFERS 3
#define FB_BYTES_PER_PIXEL 2 #define FB_BYTES_PER_PIXEL 2
#define VIDEOMEMSIZE FB_WIDTH * FB_HEIGHT * FB_BYTES_PER_PIXEL * FB_NUMBER_OF_BUFFERS #define VIDEOMEMBUFSIZE FB_WIDTH * FB_HEIGHT * FB_BYTES_PER_PIXEL
#define VIDEOMEMSIZE VIDEOMEMBUFSIZE * FB_NUMBER_OF_BUFFERS + VIDEOMEMPAGE
/*
FB_WIDTH * FB_HEIGHT * FB_BYTES_PER_PIXEL= 0xBB800
*2 = 0x177000
*/
int mmap_flag = 0;
static void *videomemory; static void *videomemory;
static u_long videomemorysize = VIDEOMEMSIZE * FB_NUMBER_OF_BUFFERS; static u_long videomemorysize = VIDEOMEMSIZE * FB_NUMBER_OF_BUFFERS;
module_param(videomemorysize, ulong, 0); module_param(videomemorysize, ulong, 0);
@@ -61,7 +70,7 @@ static struct fb_var_screeninfo g900fb_default __initdata = {
.xres = FB_WIDTH, .xres = FB_WIDTH,
.yres = FB_HEIGHT, .yres = FB_HEIGHT,
.xres_virtual = FB_WIDTH, .xres_virtual = FB_WIDTH,
.yres_virtual = FB_HEIGHT * FB_NUMBER_OF_BUFFERS, .yres_virtual = FB_HEIGHT * FB_NUMBER_OF_BUFFERS+100,
.bits_per_pixel = 16, .bits_per_pixel = 16,
.red = { 11, 5, 0 }, .red = { 11, 5, 0 },
.green = { 5, 6, 0 }, .green = { 5, 6, 0 },
@@ -100,92 +109,89 @@ static void g900fb_imageblit(struct fb_info *info, const struct fb_image *image)
static void g900fb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) static void g900fb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
{ {
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ /* Метод ускорения для заполнения прямоугольника линиями пикселей */
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ /* похоже вообще не используеться */
cfb_fillrect(info,rect); cfb_fillrect(info,rect);
}; };
static void g900fb_copyarea(struct fb_info *info, const struct fb_copyarea *region) static void g900fb_copyarea(struct fb_info *info, const struct fb_copyarea *region)
{ {
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ /* Метод ускорения копирования одной прямоугольной области в другую */
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ /* похоже вообще не используеться */
cfb_copyarea(info,region); cfb_copyarea(info,region);
}; };
static void g900fb_imageblit(struct fb_info *info, const struct fb_image *image) static void g900fb_imageblit(struct fb_info *info, const struct fb_image *image)
{ {
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ /* Метод ускорения рисования на экране картинки */
/* <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> !!! */ /* Без этого даже не отображаеться консоль !!! */
cfb_imageblit(info,image); cfb_imageblit(info,image);
/*
printk("FB: g900fb_imageblit\n");
printk("FB: smem_start 0x%08x,screen_base 0x%08x\n",info->fix.smem_start, info->screen_base);
printk("FB: offset x:0x%08x, y:0x%08x\n",info->var.xoffset,info->var.yoffset);
printk("FB: xres x:0x%08x, y:0x%08x\n",info->var.xres, info->var.yres);
printk("FB: image dx:0x%08x, dy:0x%08x, w:0x%08x, h:0x%08x\n",
image->dx, image->dy,image->width, image->height);
//*/
}; };
/*
static int g900fb_mmap(struct fb_info *info, struct vm_area_struct *vma) static int g900fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
{ {
//vma->vm_mm->mmap_base = 0x0a000020;
//vma->vm_start = 0x0a000020;
unsigned long off; unsigned long off;
unsigned long start; unsigned long start;
u32 len; u32 len;
mmap_flag = 1;
off = vma->vm_pgoff << PAGE_SHIFT;
//printk("FB: +g900fb_mmap: 0x%08x\n",off);
/*
start = info->fix.smem_start; start = info->fix.smem_start;
len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.smem_len); len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.smem_len);
if (off >= len) { */
//memory mapped io #define fix_video_mem_page (VIDEOMEMBUFSIZE + VIDEOMEMPAGE - 0x20)
off -= len;
if (info->var.accel_flags) { start = info->fix.smem_start + fix_video_mem_page;
mutex_unlock(&info->mm_lock);
return -EINVAL; len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.smem_len + VIDEOMEMPAGE);
}
start = info->fix.mmio_start;
len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.mmio_len);
}
start &= PAGE_MASK; start &= PAGE_MASK;
if ((vma->vm_end - vma->vm_start + off) > len) if ((vma->vm_end - vma->vm_start + off) > len)
{
//printk("FB: -g900fb_mmap: offset > len");
return -EINVAL; return -EINVAL;
}
off += start; off += start;
vma->vm_pgoff = off >> PAGE_SHIFT; vma->vm_pgoff = off >> PAGE_SHIFT;
vma->vm_flags |= VM_IO | VM_RESERVED; vma->vm_flags |= VM_IO | VM_RESERVED;
vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
if (remap_pfn_range(vma, vma->vm_start, off >> PAGE_SHIFT,
//printk("FB: -g900fb_mmap: start = 0x%08x, len = 0x%08x, pgoff = 0x%08x, prot = 0x%08x, vm_start = 0x%08x, vm_end = 0x%08x\n", start, len, vma->vm_pgoff, vma->vm_page_prot, vma->vm_start, vma->vm_end);
/*
FB: fb->fb.screen_base=0xd5000020
FB: -g900fb_mmap: start = 0x0a0bc000, len = 0x00179000, pgoff = 0x0000a0bc, prot = 0x00000387, vm_start = 0x44ea4000, vm_end = 0x4501b000
*/
if (remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
vma->vm_end - vma->vm_start, vma->vm_page_prot)) vma->vm_end - vma->vm_start, vma->vm_page_prot))
return -EAGAIN; return -EAGAIN;
//return 0;
printk("FB: +vma mmap_base: 0x%08x,vm_start: 0x%08x,vm_end: 0x%08x, vm_pgoff: 0x%08x\n",
vma->vm_mm->mmap_base,vma->vm_start,vma->vm_end,vma->vm_pgoff);
return 0; return 0;
}; };
*/
static struct fb_ops g900fb_ops = { static struct fb_ops g900fb_ops = {
.fb_check_var = g900fb_check_var, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ .fb_check_var = g900fb_check_var, /* Проверка параметров */
//.fb_set_par = g900fb_set_par, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ //.fb_set_par = g900fb_set_par, /* Программирование регистров контроллера */
.fb_setcolreg = g900fb_setcolreg, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ .fb_setcolreg = g900fb_setcolreg, /* Установка карты цветов */
.fb_pan_display = g900fb_pan_display, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ .fb_pan_display = g900fb_pan_display, /* переключение страниц буферов */
.fb_fillrect = g900fb_fillrect, .fb_fillrect = g900fb_fillrect,
.fb_copyarea = g900fb_copyarea, .fb_copyarea = g900fb_copyarea,
.fb_imageblit = g900fb_imageblit, .fb_imageblit = g900fb_imageblit,
//.fb_ioctl = g900fb_ioctl, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ioctl */ //.fb_ioctl = g900fb_ioctl, /* Зависимая от устройства ioctl */
//.fb_blank = g900fb_blank, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ //.fb_blank = g900fb_blank, /* Включение/выключение экрана */
//.fb_mmap = g900fb_mmap, .fb_mmap = g900fb_mmap,
}; };
@@ -275,25 +281,27 @@ static int g900fb_pan_display(struct fb_var_screeninfo *var,
{ {
struct fb_copyarea fbca; struct fb_copyarea fbca;
/* /* TODO find hardware flip page or copyarea*/
printk("FB: g900fb_pan_display\n");
printk("FB: smem_start 0x%08x,screen_base 0x%08x\n",info->fix.smem_start, info->screen_base);
printk("FB: xoffset 0x%08x,0x%08x\n",info->var.xoffset, var->xoffset);
printk("FB: yoffset 0x%08x,0x%08x\n",info->var.yoffset, var->yoffset);
*/
if(info->var.yoffset >=FB_HEIGHT)
{
/* TODO find hardware flip page*/
memset(&fbca, 0, sizeof(fbca)); memset(&fbca, 0, sizeof(fbca));
if(info->var.yoffset == 0 && mmap_flag > 0){
fbca.sx=info->var.xoffset + 0x30;
fbca.sy=info->var.yoffset + FB_HEIGHT + 0x03;
fbca.dx=info->var.xoffset;
fbca.dy=info->var.yoffset;
}
else if(info->var.yoffset >= FB_HEIGHT)
{
fbca.sx=info->var.xoffset + 0x30;
fbca.sy=info->var.yoffset + FB_HEIGHT + 0x03;
fbca.dx=info->var.xoffset; fbca.dx=info->var.xoffset;
fbca.dy=info->var.yoffset - FB_HEIGHT; fbca.dy=info->var.yoffset - FB_HEIGHT;
}
fbca.width=FB_WIDTH; fbca.width=FB_WIDTH;
fbca.height=FB_HEIGHT; fbca.height=FB_HEIGHT;
fbca.sx=info->var.xoffset;
fbca.sy=info->var.yoffset;
cfb_copyarea(info,&fbca); cfb_copyarea(info,&fbca);
}
//printk("FB: g900fb_pan_display x=%d,y=%d\n",info->var.xoffset,info->var.yoffset);
return 0; return 0;
} }
@@ -334,9 +342,9 @@ static int __init g900fb_probe(struct platform_device *dev)
platform_set_drvdata(dev, &fb->fb); platform_set_drvdata(dev, &fb->fb);
printk(KERN_INFO"fb%d: g900 frame buffer device, using %ldK of video memory\n", printk(KERN_INFO "fb%d: g900 frame buffer device, using %ldK of video memory\n",
fb->fb.node, videomemorysize >> 10); fb->fb.node, videomemorysize >> 10);
printk(KERN_INFO"FB: fb->fb.screen_base=0x%08x\n", fb->fb.screen_base); //printk(KERN_INFO "FB: fb->fb.screen_base=0x%08x\n", fb->fb.screen_base);
return 0; return 0;

36
ramfs-android/bin/MAKEDEVS Executable file
View File

@@ -0,0 +1,36 @@
#!/bin/sh
mkdir -m 0777 /dev/block
mknod -m 0666 /dev/block/loop0 b 7 0
mknod -m 0666 /dev/block/loop1 b 7 1
mknod -m 0666 /dev/block/loop2 b 7 2
mknod -m 0666 /dev/block/mmcblk0 b 179 0
mknod -m 0666 /dev/block/mmcblk0p1 b 179 1
mknod -m 0666 /dev/block/mmcblk0p2 b 179 2
mknod -m 0666 /dev/block/mmcblk0p3 b 179 3
mknod -m 0666 /dev/block/mmcblk0p4 b 179 4
mknod -m 0666 /dev/block/mmcblk0p5 b 179 5
mkdir -m 0777 /dev/input
mknod -m 0644 /dev/input/event0 c 13 64
mknod -m 0644 /dev/input/event1 c 13 65
mknod -m 0644 /dev/input/event2 c 13 66
mknod -m 0644 /dev/input/event3 c 13 67
mknod -m 0666 /dev/null c 1 3
mknod -m 0444 /dev/zero c 1 5
#mknod -m 0666 /dev/console c 5 1
mknod -m 0666 /dev/tty c 5 0
mknod -m 0666 /dev/tty0 c 4 0
mknod -m 0666 /dev/tty1 c 4 1
mknod -m 0666 /dev/tty2 c 4 2
mknod -m 0666 /dev/tty3 c 4 3
mknod -m 0666 /dev/tty4 c 4 4
mknod -m 0644 /dev/ppp0 c 108 0
mknod -m 0644 /dev/smd0 c 253 0
mknod -m 0644 /dev/smd1 c 253 1
mknod -m 0644 /dev/initrd b 1 250
mkdir -m 0777 /dev/graphics
mknod -m 0666 /dev/graphics/fb0 c 29 0

View File

@@ -43,7 +43,7 @@ sleep 1
mount -t proc proc /proc mount -t proc proc /proc
mount -t sysfs sys /sys mount -t sysfs sys /sys
#exec /bin/sh /bin/MAKEDEVS
fail() { fail() {
@@ -108,7 +108,15 @@ if [ -e /sdcard/ANDROID/userscript.sh ] ; then
/data/userscript.sh /data/userscript.sh
fi fi
#ls /sys/class/timed_output/ export LD_PRELOAD=/system/lib/libts.so:/system/lib/ts/pthres.so
if [ -f /sdcard/ts ] ; then
echo "EXECUTE CALIBRATE TOUCHSCREEN!!!"
/bin/mkdir -m 0777 /data/system/tslib
/system/bin/ts_calibrate
/bin/rm /sdcard/ts
fi
#exec /bin/sh #exec /bin/sh
exec /init_1 exec /init_1

View File

@@ -6,7 +6,7 @@ sysclktz 0
loglevel 3 loglevel 3
# setup the global environment # setup the global environment
export PATH /sbin:/system/sbin:/system/bin:/system/xbin export PATH /sbin:/system/sbin:/system/bin:/system/xbin:/bin
export LD_LIBRARY_PATH /system/lib export LD_LIBRARY_PATH /system/lib
export ANDROID_BOOTLOGO 1 export ANDROID_BOOTLOGO 1
export ANDROID_ROOT /system export ANDROID_ROOT /system

Binary file not shown.