diff --git a/kernel-2.6.33/arch/arm/configs/g900_defconfig b/kernel-2.6.33/arch/arm/configs/g900_defconfig index cf99168d..9b572309 100644 --- a/kernel-2.6.33/arch/arm/configs/g900_defconfig +++ b/kernel-2.6.33/arch/arm/configs/g900_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.33 -# Mon Aug 23 14:03:45 2010 +# Sat Sep 11 04:31:01 2010 # CONFIG_ARM=y CONFIG_HAVE_PWM=y @@ -64,7 +64,7 @@ CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_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_CGROUP_SCHED is not set CONFIG_CGROUPS=y @@ -85,17 +85,17 @@ CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="../ramfs-android" +CONFIG_INITRAMFS_SOURCE="../ramfs-android/" CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_RD_GZIP=y # CONFIG_RD_BZIP2 is not set -CONFIG_RD_LZMA=y +# CONFIG_RD_LZMA is not set # CONFIG_RD_LZO 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_LZMA=y +# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set # CONFIG_INITRAMFS_COMPRESSION_LZO is not set CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y @@ -104,7 +104,6 @@ CONFIG_EMBEDDED=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y -CONFIG_KALLSYMS_ALL=y # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y @@ -138,7 +137,6 @@ CONFIG_HAVE_CLK=y # # GCOV-based kernel profiling # -# CONFIG_GCOV_KERNEL is not set # CONFIG_SLOW_WORK is not set CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_SLABINFO=y @@ -305,6 +303,8 @@ CONFIG_G900_KBR=y CONFIG_G900_BUTTON=y CONFIG_G900_LEDS=y CONFIG_G900_PHONE=y +CONFIG_G900_POWER_BUTTON=y +CONFIG_G900_FLASH=y CONFIG_PXA27x=y CONFIG_PXA_SSP=y CONFIG_PLAT_PXA=y @@ -389,7 +389,7 @@ CONFIG_KEXEC=y # CONFIG_CPU_FREQ=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_DETAILS=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y @@ -427,8 +427,7 @@ CONFIG_HAVE_AOUT=y # Power management options # CONFIG_PM=y -CONFIG_PM_DEBUG=y -CONFIG_PM_VERBOSE=y +# CONFIG_PM_DEBUG is not set # CONFIG_SUSPEND is not set CONFIG_HAS_WAKELOCK=y CONFIG_HAS_EARLYSUSPEND=y @@ -539,14 +538,13 @@ CONFIG_WEXT_SPY=y CONFIG_CFG80211=y CONFIG_NL80211_TESTMODE=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_DEBUGFS=y CONFIG_WIRELESS_OLD_REGULATORY=y CONFIG_CFG80211_WEXT=y CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_LIB80211=y -CONFIG_LIB80211_DEBUG=y +# CONFIG_LIB80211_DEBUG is not set CONFIG_MAC80211=y # CONFIG_MAC80211_RC_PID is not set # CONFIG_MAC80211_RC_MINSTREL is not set @@ -555,7 +553,6 @@ CONFIG_MAC80211=y CONFIG_MAC80211_RC_DEFAULT="" CONFIG_MAC80211_MESH=y # CONFIG_MAC80211_LEDS is not set -# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_DEBUG_MENU is not set # CONFIG_WIMAX is not set CONFIG_RFKILL=y @@ -578,11 +575,96 @@ CONFIG_FW_LOADER=y # CONFIG_FIRMWARE_IN_KERNEL is not set CONFIG_EXTRA_FIRMWARE="libertas/gspi8385_hlp.bin libertas/gspi8385.bin" CONFIG_EXTRA_FIRMWARE_DIR="../FW" -CONFIG_DEBUG_DRIVER=y -CONFIG_DEBUG_DEVRES=y # CONFIG_SYS_HYPERVISOR 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_BLK_DEV=y # CONFIG_BLK_DEV_COW_COMMON is not set @@ -689,7 +771,7 @@ CONFIG_LIBERTAS=y # CONFIG_LIBERTAS_USB is not set # CONFIG_LIBERTAS_SDIO is not set CONFIG_LIBERTAS_SPI=m -CONFIG_LIBERTAS_DEBUG=y +# CONFIG_LIBERTAS_DEBUG is not set # CONFIG_P54_COMMON is not set # CONFIG_RT2X00 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_CHIP is not set CONFIG_SPI=y -CONFIG_SPI_DEBUG=y CONFIG_SPI_MASTER=y # @@ -898,7 +979,6 @@ CONFIG_SPI_SPIDEV=y # CONFIG_PPS is not set CONFIG_ARCH_REQUIRE_GPIOLIB=y CONFIG_GPIOLIB=y -CONFIG_DEBUG_GPIO=y CONFIG_GPIO_SYSFS=y # @@ -929,7 +1009,7 @@ CONFIG_GPIO_SYSFS=y # # CONFIG_W1 is not set CONFIG_POWER_SUPPLY=y -CONFIG_POWER_SUPPLY_DEBUG=y +# CONFIG_POWER_SUPPLY_DEBUG is not set CONFIG_PDA_POWER=y CONFIG_APM_POWER=y # CONFIG_BATTERY_DS2760 is not set @@ -1074,9 +1154,7 @@ CONFIG_SND_JACK=y CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_VERBOSE_PROCFS=y CONFIG_SND_VERBOSE_PRINTK=y -CONFIG_SND_DEBUG=y -CONFIG_SND_DEBUG_VERBOSE=y -CONFIG_SND_PCM_XRUN_DEBUG=y +# CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=y # CONFIG_SND_RAWMIDI_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_EHCI is not set CONFIG_USB=y -CONFIG_USB_DEBUG=y +# CONFIG_USB_DEBUG is not set CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # @@ -1210,7 +1288,7 @@ CONFIG_USB_ACM=m # also be needed; see USB_STORAGE Help for more info # CONFIG_USB_STORAGE=m -CONFIG_USB_STORAGE_DEBUG=y +# CONFIG_USB_STORAGE_DEBUG is not set CONFIG_USB_STORAGE_DATAFAB=m CONFIG_USB_STORAGE_FREECOM=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_PL2303 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_HP4X 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_VST is not set CONFIG_USB_GADGET=y -# CONFIG_USB_GADGET_DEBUG 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_SELECTED=y # CONFIG_USB_GADGET_AT91 is not set @@ -1658,64 +1734,14 @@ CONFIG_FRAME_WARN=1024 # CONFIG_MAGIC_SYSRQ is not set # CONFIG_STRIP_ASM_SYMS 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_DEBUG_KERNEL=y -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_KERNEL is not set CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_INFO=y -# 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_DEBUG_MEMORY_INIT is not set 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_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_TRACING_SUPPORT=y CONFIG_FTRACE=y @@ -1732,17 +1758,10 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_KMEMTRACE is not set # CONFIG_WORKQUEUE_TRACER is not set # CONFIG_BLK_DEV_IO_TRACE is not set -CONFIG_DYNAMIC_DEBUG=y # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_KGDB is not set CONFIG_ARM_UNWIND=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_STACK_USAGE=y -CONFIG_DEBUG_LL=y -CONFIG_EARLY_PRINTK=y -# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_DEBUG_USER is not set # CONFIG_OC_ETM is not set # @@ -1872,7 +1891,8 @@ CONFIG_ZLIB_INFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y CONFIG_DECOMPRESS_GZIP=y -CONFIG_DECOMPRESS_LZMA=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y diff --git a/kernel-2.6.33/arch/arm/mach-pxa/g900/Kconfig b/kernel-2.6.33/arch/arm/mach-pxa/g900/Kconfig index c74ddcbe..007a153a 100755 --- a/kernel-2.6.33/arch/arm/mach-pxa/g900/Kconfig +++ b/kernel-2.6.33/arch/arm/mach-pxa/g900/Kconfig @@ -43,3 +43,9 @@ config G900_POWER_BUTTON depends on MACH_G900 ---help--- 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 diff --git a/kernel-2.6.33/arch/arm/mach-pxa/g900/Makefile b/kernel-2.6.33/arch/arm/mach-pxa/g900/Makefile index d4ea074b..feb4b907 100755 --- a/kernel-2.6.33/arch/arm/mach-pxa/g900/Makefile +++ b/kernel-2.6.33/arch/arm/mach-pxa/g900/Makefile @@ -4,4 +4,5 @@ obj-$(CONFIG_G900_BUTTON) += g900_buttons.o obj-$(CONFIG_G900_POWER_BUTTON) += g900_pwr_btn.o obj-$(CONFIG_G900_LEDS) += g900_leds.o obj-$(CONFIG_G900_PHONE) += g900_msm6280.o - +#obj-$(CONFIG_G900_FLASH) += ttfs/ +obj-m += ttfs/ diff --git a/kernel-2.6.33/arch/arm/mach-pxa/g900/g900.c b/kernel-2.6.33/arch/arm/mach-pxa/g900/g900.c index 506202cf..f82aeee3 100755 --- a/kernel-2.6.33/arch/arm/mach-pxa/g900/g900.c +++ b/kernel-2.6.33/arch/arm/mach-pxa/g900/g900.c @@ -28,10 +28,6 @@ #include #include -//#include -//#include -//#include -//#include #include #include @@ -152,13 +148,7 @@ d- = USBC_N(C 20) GPIO45_BTUART_RTS, - - /* 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 */ GPIO17_PWM1_OUT, @@ -497,7 +487,7 @@ static void __init spi_init(void) } -/* DEBUG */ +/* +++++++++++++++++++++++++++++++++++++++++DEBUG ++++++++++++++++++++++++++++++++++++++++++*/ static void __init debuging(void) { @@ -505,6 +495,18 @@ static void __init debuging(void) } +/* + * NOR flash + */ +#include +#include +#include +#include + + + +/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!DEBUG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ + @@ -582,6 +584,8 @@ static struct platform_device g900_pwr_button = { .name = "g900-power-button", }; + + static struct platform_device g900_sound = { .name = "g900-wm9714", .id = -1, @@ -617,6 +621,7 @@ static struct platform_device *g900_devices[] __initdata = { &g900_ts, &pxa2xx_pcm, &g900_sound, + //&g900_flash, }; static void __init g900_map_io(void) @@ -637,12 +642,27 @@ static void fix_msc(void) * Localbus setup: * CS0: ; * CS1: ; + * CS2: ; + * CS3: -; + * CS4: ???. * CS5: gsm. */ MSC0 = 0x7ff09888; MSC1 = 0x000089c4; MSC2 = 0x5ff95ff9; 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 +*/ + } diff --git a/kernel-2.6.33/arch/arm/mach-pxa/g900/g900_leds.c b/kernel-2.6.33/arch/arm/mach-pxa/g900/g900_leds.c index f4abac6d..349be01e 100755 --- a/kernel-2.6.33/arch/arm/mach-pxa/g900/g900_leds.c +++ b/kernel-2.6.33/arch/arm/mach-pxa/g900/g900_leds.c @@ -68,13 +68,13 @@ static struct gpio_led gpio_leds[] = { .gpio = GPIO16_LED_nVibra, .name = "vibrator", .active_low = 0, - .max_timeout = 4000, + .max_timeout = 15000, }, { .gpio = GPIO37_LED_nFlash, .name = "flash", .active_low = 0, - .max_timeout = 4000, + .max_timeout = 15000, }, }; static struct timed_gpio_platform_data g900_timed_gpio_data = { diff --git a/kernel-2.6.33/drivers/input/touchscreen/ak4183.c b/kernel-2.6.33/drivers/input/touchscreen/ak4183.c index 60d1d4f4..9bd06b18 100755 --- a/kernel-2.6.33/drivers/input/touchscreen/ak4183.c +++ b/kernel-2.6.33/drivers/input/touchscreen/ak4183.c @@ -1,8 +1,8 @@ /* * drivers/input/touchscreen/ak4183.c * - * Copyright (c) 2010 Angell - * Angell Fear + * Copyright (c) 2010 SashaG <...> + * Copyright (c) 2010 Fear * * Using code from: * tsc2007.c @@ -28,13 +28,12 @@ #include #include #include +#include #include -#define TS_POLL_DELAY 10 /* us delay between samples */ -#define TS_POLL_PERIOD 100 /* us delay between samples */ -#define AK4183_12BIT 1 /* 12 bit mode */ - - +#define TS_POLL_DELAY 10 /* us delay between samples */ +#define TS_POLL_PERIOD 1000 /* us delay between samples */ +#define AK4183_12BIT 1 /*12 bit resolution*/ #define devdbg(x...) printk(x) @@ -44,7 +43,7 @@ #define AK4183_BIT_A1 (0x1 << 5) #define AK4183_BIT_A0 (0x1 << 4) #define AK4183_BIT_PD0 (0x1 << 2) -#define AK4183_BIT_MODE (0x1 << 1) +#define AK4183_BIT_R8BIT (0x1 << 1) #define MAX_12BIT ((1 << 12) - 1) @@ -52,10 +51,21 @@ #if AK4183_12BIT #define ADC_ON_12BIT 0 #else -#define ADC_ON_12BIT AK4183_BIT_MODE +#define ADC_ON_12BIT AK4183_BIT_R8BIT #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 Don’t 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 Don’t care +*/ + #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_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 ) -/* -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 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 { u16 x; u16 y; u16 z1, z2; - u32 prs; }; struct ak4183 { @@ -98,7 +121,6 @@ struct ak4183 { u16 model; u16 x_plate_ohms; - u16 y_plate_ohms; bool pendown; int irq; @@ -108,29 +130,28 @@ struct ak4183 { }; /* -0 4000 left 32 419 - X=0x0150 Y=0x0ee0 P=0x0106 - X=0x0e50 Y=0x0ee0 P=0x0104 - X=0x0110 Y=0x0090 P=0x00ea - X=0x0dc0 Y=0x0080 P=0x00ec +0 4000 left 32 право 419 +верх лево X=0x0150 Y=0x0ee0 P=0x0106 +верх право X=0x0e50 Y=0x0ee0 P=0x0104 +низ лево X=0x0110 Y=0x0090 P=0x00ea +низ право X=0x0dc0 Y=0x0080 P=0x00ec wince CalibrationData 2174,1990 563,3553 700,465 3463,506 3440,3547 wince hex CalibrationData 0x87E,0x7C6 0x233,0xDE1 0x2BC,0x1D1 0xD87,0x1FA 0xD70,0xDDB -, , , , +середина, верх лево,низ лево,низ право, верх право */ -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_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_PARM_DESC(abs_y, "Touchscreen absolute Y min, max, fuzz"); - -static int abs_p[3] = {0, MAX_12BIT, 0}; +static int abs_p[3] = {0, 0xfff, 2}; module_param_array(abs_p, int, NULL, 0); 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]. */ val = swab16(data) >> 4; - - devdbg("data: 0x%x, val: 0x%x\n", data, val); - + //dev_dbg(&tsc->client->dev, "data: 0x%x, val: 0x%x\n", data, val); return val; } -static void ak4183_read_values(struct ak4183 *tsc, struct ts_event *tc) -{ - - - /* y- still on; turn on only y+ (and ADC) */ - tc->y = ak4183_xfer(tsc, READ_Y); - /* turn y- off, x+ on, then leave in lowpower */ - tc->x = ak4183_xfer(tsc, READ_X); - - /* turn y+ off, x- on; we'll use formula #1 */ - tc->z1 = ak4183_xfer(tsc, READ_Z1); - 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 +static u32 ak4183_read_values(struct ak4183 *tsc, struct ts_event *tc) +{ + u32 rt = 0; + s32 rtt = 0; + //s32 x,y; + tc->x = ak4183_xfer(tsc, READ_X);//x + tc->y = ak4183_xfer(tsc, READ_Y);//y + //printk(KERN_INFO "AK4183: %5i;%5i;", + // tc->x,tc->y); + tc->z1 = ak4183_xfer(tsc,READ_Z1);//z1 + tc->z2 = ak4183_xfer(tsc,READ_Z2);//z2 if (likely(tc->x && tc->z1)) { - - - //tc->prs = tc->z2 - tc->z1; - tc->prs = (tc->z2 / tc->z1 - 1); - tc->prs *= (tc->x/256); - tc->prs *= tsc->x_plate_ohms; - tc->prs /= tc->z1; - //tc->prs = (tc->prs + 2047) >> 12; - - }else - tc->prs = 0; -#else - if(likely(tc->x && tc->z1)) { - //tc->prs = (tsc->x_plate_ohms * tc->x * (tc->z2 - tc->z1) ) / (4096 * tc->z1); // 12 - 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)); + /* compute touch pressure resistance using equation #1 */ + rt = tc->x*(tc->z2-tc->z1)/(tc->z1); + if (rt<6350){ // min toch + rtt=rt-5000;//for func ; 0-max touch + if (rt<5000){rt=5000;} // max + rt=(6350-rt)*3;//0xFFF max + if (rt>=0xFFF) {rt=0xFFE;}//max + // printk(KERN_INFO "AK4183: %5u;%5u;%5u;%5u;%5u;", + // tc->x,tc->y,tc->z1,tc->z2,rtt); + }else{ + rt=0;//no touch + } } -#endif - -/* -Rtouch = (Rxplate) * (Xposition/4096) * [(Z2/Z1) 1] -Rtouch = (Rxplate*Xposition/4096)*[(4096/Z1) 1] Ryplate*[1 (Yposition/4096)] -*/ - - - 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); + //todo : need pwrdown + if (rt){//*200 + tc->x=(u32)(((s32)(tc->x)*tmc_x10+rtt*tmc_ax_m_x0)/(tmc_x10+tmc_ax*rtt)); + tc->y=(u32)(((s32)(tc->y)*tmc_y10+rtt*tmc_ay_m_y0)/(tmc_y10+tmc_ay*rtt)); + } + return rt; } - - static void ak4183_send_up_event(struct ak4183 *tsc) { 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_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) { - 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; + u32 rt; + /* * NOTE: We can't rely on the pressure to determine the pen down * state, even though this controller has a pressure sensor. @@ -242,52 +235,47 @@ static void ak4183_work(struct work_struct *work) * expected value. * * 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, * in that case we have rely on the pressure anyway. */ if (ts->get_pendown_state) { if (unlikely(!ts->get_pendown_state())) { - devdbg("ak4183: pendown_state = UP\n"); ak4183_send_up_event(ts); ts->pendown = false; goto out; } - devdbg("ak4183: pen is still down\n"); + //dev_dbg(&ts->client->dev, "pen is still down\n"); } - ak4183_read_values(ts, &tc); - - if (tc.prs > MAX_12BIT) { + rt = ak4183_read_values(ts, &tc); + + if (rt > MAX_12BIT) { /* * Sample found inconsistent by debouncing or pressure is * beyond the maximum. Don't report it to user space, * 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; } - if (tc.prs) { + if (rt) { struct input_dev *input = ts->input; if (!ts->pendown) { - devdbg("ak4183: DOWN\n"); + dev_dbg(&ts->client->dev, "DOWN\n"); input_report_key(input, BTN_TOUCH, 1); 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_Y, tc.y); - input_report_abs(input, ABS_PRESSURE, tc.prs); - + input_report_abs(input, ABS_PRESSURE, rt); input_sync(input); - - - } else if (!ts->get_pendown_state && ts->pendown) { /* * 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->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_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_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) pdata->init_platform_hw(); diff --git a/kernel-2.6.33/drivers/video/g900fb2.c b/kernel-2.6.33/drivers/video/g900fb2.c index e4ed68f0..d7d6e9f6 100755 --- a/kernel-2.6.33/drivers/video/g900fb2.c +++ b/kernel-2.6.33/drivers/video/g900fb2.c @@ -37,15 +37,24 @@ #include #include +#define VIDEOMEMPAGE (1 << PAGE_SHIFT) -#define FB_WIDTH 480 -#define FB_HEIGHT 800 -#define VIDEOMEMSTART 0x0a000020 /* vram variable value from HaRET */ -#define FB_NUMBER_OF_BUFFERS 2 -#define FB_BYTES_PER_PIXEL 2 -#define VIDEOMEMSIZE FB_WIDTH * FB_HEIGHT * FB_BYTES_PER_PIXEL * FB_NUMBER_OF_BUFFERS +#define FB_WIDTH 480 +#define FB_HEIGHT 800 +#define VIDEOMEMSTART 0x0a000020 /* vram variable value from HaRET */ +#define FB_NUMBER_OF_BUFFERS 3 +#define FB_BYTES_PER_PIXEL 2 +#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 u_long videomemorysize = VIDEOMEMSIZE * FB_NUMBER_OF_BUFFERS; module_param(videomemorysize, ulong, 0); @@ -61,7 +70,7 @@ static struct fb_var_screeninfo g900fb_default __initdata = { .xres = FB_WIDTH, .yres = FB_HEIGHT, .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, .red = { 11, 5, 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) { -/* */ -/* */ +/* Метод ускорения для заполнения прямоугольника линиями пикселей */ +/* похоже вообще не используеться */ cfb_fillrect(info,rect); }; static void g900fb_copyarea(struct fb_info *info, const struct fb_copyarea *region) { -/* */ -/* */ +/* Метод ускорения копирования одной прямоугольной области в другую */ +/* похоже вообще не используеться */ cfb_copyarea(info,region); }; static void g900fb_imageblit(struct fb_info *info, const struct fb_image *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) { - //vma->vm_mm->mmap_base = 0x0a000020; - //vma->vm_start = 0x0a000020; - unsigned long off; unsigned long start; u32 len; + mmap_flag = 1; + off = vma->vm_pgoff << PAGE_SHIFT; + + //printk("FB: +g900fb_mmap: 0x%08x\n",off); +/* start = info->fix.smem_start; len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.smem_len); - if (off >= len) { - //memory mapped io - off -= len; - if (info->var.accel_flags) { - mutex_unlock(&info->mm_lock); - return -EINVAL; - } - start = info->fix.mmio_start; - len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.mmio_len); - } +*/ +#define fix_video_mem_page (VIDEOMEMBUFSIZE + VIDEOMEMPAGE - 0x20) + + start = info->fix.smem_start + fix_video_mem_page; + + len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.smem_len + VIDEOMEMPAGE); start &= PAGE_MASK; if ((vma->vm_end - vma->vm_start + off) > len) + { + //printk("FB: -g900fb_mmap: offset > len"); return -EINVAL; + } + off += start; vma->vm_pgoff = off >> PAGE_SHIFT; vma->vm_flags |= VM_IO | VM_RESERVED; 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)) 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; }; -*/ + static struct fb_ops g900fb_ops = { - .fb_check_var = g900fb_check_var, /* */ - //.fb_set_par = g900fb_set_par, /* */ - .fb_setcolreg = g900fb_setcolreg, /* */ - .fb_pan_display = g900fb_pan_display, /* */ + .fb_check_var = g900fb_check_var, /* Проверка параметров */ + //.fb_set_par = g900fb_set_par, /* Программирование регистров контроллера */ + .fb_setcolreg = g900fb_setcolreg, /* Установка карты цветов */ + .fb_pan_display = g900fb_pan_display, /* переключение страниц буферов */ .fb_fillrect = g900fb_fillrect, .fb_copyarea = g900fb_copyarea, .fb_imageblit = g900fb_imageblit, - //.fb_ioctl = g900fb_ioctl, /* ioctl */ - //.fb_blank = g900fb_blank, /* / */ - //.fb_mmap = g900fb_mmap, + //.fb_ioctl = g900fb_ioctl, /* Зависимая от устройства ioctl */ + //.fb_blank = g900fb_blank, /* Включение/выключение экрана */ + .fb_mmap = g900fb_mmap, }; @@ -275,25 +281,27 @@ static int g900fb_pan_display(struct fb_var_screeninfo *var, { struct fb_copyarea fbca; -/* - 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)); - fbca.dx=info->var.xoffset; - fbca.dy=info->var.yoffset - FB_HEIGHT; - fbca.width=FB_WIDTH; - fbca.height=FB_HEIGHT; - fbca.sx=info->var.xoffset; - fbca.sy=info->var.yoffset; - cfb_copyarea(info,&fbca); - } + /* TODO find hardware flip page or copyarea*/ + 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.dy=info->var.yoffset - FB_HEIGHT; + } + fbca.width=FB_WIDTH; + fbca.height=FB_HEIGHT; + cfb_copyarea(info,&fbca); + + //printk("FB: g900fb_pan_display x=%d,y=%d\n",info->var.xoffset,info->var.yoffset); return 0; } @@ -334,9 +342,9 @@ static int __init g900fb_probe(struct platform_device *dev) 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); - 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; diff --git a/ramfs-android/bin/MAKEDEVS b/ramfs-android/bin/MAKEDEVS new file mode 100755 index 00000000..7f8ab6fa --- /dev/null +++ b/ramfs-android/bin/MAKEDEVS @@ -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 diff --git a/ramfs-android/init b/ramfs-android/init index dd60b427..415bfd13 100755 --- a/ramfs-android/init +++ b/ramfs-android/init @@ -43,7 +43,7 @@ sleep 1 mount -t proc proc /proc mount -t sysfs sys /sys -#exec /bin/sh +/bin/MAKEDEVS fail() { @@ -108,7 +108,15 @@ if [ -e /sdcard/ANDROID/userscript.sh ] ; then /data/userscript.sh 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 /init_1 diff --git a/ramfs-android/init.rc b/ramfs-android/init.rc index 2aa1b0e1..cd21201f 100755 --- a/ramfs-android/init.rc +++ b/ramfs-android/init.rc @@ -6,7 +6,7 @@ sysclktz 0 loglevel 3 # 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 ANDROID_BOOTLOGO 1 export ANDROID_ROOT /system @@ -14,7 +14,7 @@ loglevel 3 export ANDROID_DATA /data export EXTERNAL_STORAGE /sdcard export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar - + # Backward compatibility # symlink /system/etc /etc diff --git a/ramfs-android/init_1 b/ramfs-android/init_1 index 85072b78..0fd2a64e 100755 Binary files a/ramfs-android/init_1 and b/ramfs-android/init_1 differ