add power button, recovery vibrator, fix kbr, add logo

This commit is contained in:
Angell Fear
2010-09-08 03:43:32 +06:00
parent 42a9167095
commit 58951e23d8
12 changed files with 1126 additions and 1675 deletions

View File

@@ -38,3 +38,8 @@ config G900_PHONE
---help--- ---help---
This is a DPRam driver for G900 PXA270 <-> MSM6280 This is a DPRam driver for G900 PXA270 <-> MSM6280
config G900_POWER_BUTTON
tristate "G900 Power Buttons"
depends on MACH_G900
---help---
This is a POWER Buttons driver for G900

View File

@@ -1,6 +1,7 @@
obj-$(CONFIG_MACH_G900) += g900.o obj-$(CONFIG_MACH_G900) += g900.o
obj-$(CONFIG_G900_KBR) += g900_keyboard.o obj-$(CONFIG_G900_KBR) += g900_keyboard.o
obj-$(CONFIG_G900_BUTTON) += g900_buttons.o obj-$(CONFIG_G900_BUTTON) += g900_buttons.o
obj-$(CONFIG_G900_LEDS) += g900_leds.o obj-$(CONFIG_G900_POWER_BUTTON) += g900_pwr_btn.o
obj-$(CONFIG_G900_PHONE) += g900_msm6280.o obj-$(CONFIG_G900_LEDS) += g900_leds.o
obj-$(CONFIG_G900_PHONE) += g900_msm6280.o

View File

@@ -578,7 +578,9 @@ static struct platform_device g900_keyboard = {
static struct platform_device g900_button = { static struct platform_device g900_button = {
.name = "g900-button", .name = "g900-button",
}; };
static struct platform_device g900_pwr_button = {
.name = "g900-power-button",
};
static struct platform_device g900_sound = { static struct platform_device g900_sound = {
.name = "g900-wm9714", .name = "g900-wm9714",
@@ -611,6 +613,7 @@ static struct platform_device wm9713_codec =
static struct platform_device *g900_devices[] __initdata = { static struct platform_device *g900_devices[] __initdata = {
&g900_keyboard, &g900_keyboard,
&g900_button, &g900_button,
&g900_pwr_button,
&g900_ts, &g900_ts,
&pxa2xx_pcm, &pxa2xx_pcm,
&g900_sound, &g900_sound,

View File

@@ -58,7 +58,10 @@ static struct platform_device kbr_switch_device = {
#endif #endif
static struct gpio_keys_button gpio_buttons[] = { static struct gpio_keys_button gpio_buttons[] = {
#ifndef CONFIG_G900_POWER_BUTTON
{KEY_POWER, GPIO3_BTN_nPower, 0, "Power button"}, {KEY_POWER, GPIO3_BTN_nPower, 0, "Power button"},
#endif
#ifndef CONFIG_SWITCH_GPIO #ifndef CONFIG_SWITCH_GPIO
{99 , GPIO9_BTN_nKBOpen, 0, "Keyboard open"}, {99 , GPIO9_BTN_nKBOpen, 0, "Keyboard open"},
{SW_HEADPHONE_INSERT, GPIO51_BTN_nJackInsert, 0, "HeadPhone insert"}, {SW_HEADPHONE_INSERT, GPIO51_BTN_nJackInsert, 0, "HeadPhone insert"},

View File

@@ -48,19 +48,19 @@ static unsigned int g900_matrix_keys[] = {
KEY(0, 2, KEY_B), KEY(0, 2, KEY_B),
KEY(0, 3, KEY_X), KEY(0, 3, KEY_X),
KEY(0, 4, KEY_V), KEY(0, 4, KEY_V),
KEY(0, 5, KEY_LEFTSHIFT), KEY(0, 5, KEY_LEFTSHIFT), /* Shift on keyboard */
KEY(0, 6, KEY_F1), /* Left Softkey on keyboard */ KEY(0, 6, KEY_F1), /* Left Softkey on keyboard */
KEY(0, 7, KEY_N), KEY(0, 7, KEY_N),
// KEY(1, 0, KEY_LANGUAGE), /* RU button */ // KEY(1, 0, KEY_LANGUAGE), /* RU button */
KEY(1, 0, KEY_X), /* RU button */ KEY(1, 0, KEY_X), /* RU button */
KEY(1, 1, KEY_MENU), /* Windows key on keyboard KEY_LEFTMETA */ KEY(1, 1, KEY_MENU), /* WIN key on keyboard */
KEY(1, 2, KEY_SPACE), KEY(1, 2, KEY_SPACE),
KEY(1, 3, KEY_LEFTALT), /*KEY_OK*/ KEY(1, 3, KEY_LEFTALT), /*KEY_OK*/
KEY(1, 4, KEY_2), KEY(1, 4, KEY_2),
KEY(1, 5, KEY_FN), /* Keyboard modificator key */ KEY(1, 5, KEY_FN), /* GREEN COMMA */
// KEY(1, 5, KEY_8), /* Keyboard modificator key */ // KEY(1, 5, KEY_8),
KEY(1, 6, KEY_F2), /* Right Softkey on keyboard */ KEY(1, 6, KEY_F2), /* Right Softkey on keyboard */
KEY(1, 7, KEY_COMMA), KEY(1, 7, KEY_COMMA),
KEY(2, 0, KEY_R), KEY(2, 0, KEY_R),
@@ -78,7 +78,7 @@ static unsigned int g900_matrix_keys[] = {
KEY(3, 3, KEY_D), KEY(3, 3, KEY_D),
KEY(3, 4, KEY_H), KEY(3, 4, KEY_H),
KEY(3, 5, KEY_A), KEY(3, 5, KEY_A),
KEY(3, 6, KEY_WWW), KEY(3, 6, KEY_WWW), /* IE button upper the screen */
KEY(3, 7, KEY_ENTER), KEY(3, 7, KEY_ENTER),
KEY(4, 0, KEY_BACKSPACE), KEY(4, 0, KEY_BACKSPACE),
@@ -86,73 +86,73 @@ static unsigned int g900_matrix_keys[] = {
KEY(4, 2, KEY_O), KEY(4, 2, KEY_O),
KEY(4, 3, KEY_I), KEY(4, 3, KEY_I),
KEY(4, 4, KEY_1), KEY(4, 4, KEY_1),
KEY(4, 5, KEY_VOLUMEDOWN), KEY(4, 5, KEY_VOLUMEDOWN), /* VOLUME DOWN */
KEY(4, 6, KEY_VOLUMEUP), KEY(4, 6, KEY_VOLUMEUP), /* VOLUME UP */
KEY(4, 7, KEY_CAMERA), KEY(4, 7, KEY_CAMERA),
KEY(5, 0, KEY_KPENTER), /* Middle button below the screen */ KEY(5, 0, KEY_KPENTER), /* Middle button below the screen */
KEY(5, 1, KEY_UP), KEY(5, 1, KEY_UP),
KEY(5, 2, KEY_APOSTROPHE), KEY(5, 2, KEY_APOSTROPHE),
KEY(5, 3, KEY_M), KEY(5, 3, KEY_M),
KEY(5, 4, KEY_F3), /*KEY_PHONE*/ KEY(5, 4, KEY_F3), /* GREEN PHONE */
KEY(5, 5, KEY_UP), KEY(5, 5, KEY_UP), /* UP dpad*/
KEY(5, 6, KEY_BACK), /*KEY_OK*/ KEY(5, 6, KEY_BACK), /* KEY_OK */
KEY(5, 7, KEY_CANCEL), /*KEY_CANCEL ??? */ KEY(5, 7, KEY_F4), /* RED PHONE */
KEY(6, 0, KEY_LEFTCTRL), KEY(6, 0, KEY_LEFTCTRL),
KEY(6, 1, KEY_BACKSLASH), /* + shift = | */ KEY(6, 1, KEY_BACKSLASH), /* + shift = | */
KEY(6, 2, KEY_L), KEY(6, 2, KEY_L),
KEY(6, 3, KEY_K), KEY(6, 3, KEY_K),
KEY(6, 4, KEY_F2), /* Right Softkey below the screen */ KEY(6, 4, KEY_F2), /* Right Softkey below the screen */
KEY(6, 5, KEY_LEFT), KEY(6, 5, KEY_LEFT), /* LEFT dpad*/
KEY(6, 6, KEY_F1), /* Left Softkey below the screen */ KEY(6, 6, KEY_F1), /* Left Softkey below the screen */
KEY(6, 7, KEY_DOWN), KEY(6, 7, KEY_DOWN), /* DOWN dpad*/
KEY(7, 0, KEY_RIGHT), KEY(7, 0, KEY_RIGHT),
KEY(7, 1, KEY_DOWN), KEY(7, 1, KEY_DOWN),
KEY(7, 2, KEY_LEFT), KEY(7, 2, KEY_LEFT),
KEY(7, 3, KEY_DOT), KEY(7, 3, KEY_DOT),
KEY(7, 4, KEY_MAIL), KEY(7, 4, KEY_MAIL), /* Key mail below the screen */
KEY(7, 5, KEY_RIGHT), KEY(7, 5, KEY_RIGHT), /* RIGHT dpad*/
KEY(7, 6, KEY_MENU), /* Windows key below the screen KEY_RIGHTMETA*/ KEY(7, 6, KEY_MENU), /* Windows key below the screen KEY_RIGHTMETA*/
KEY(7, 7, KEY_HOME), KEY(7, 7, KEY_HOME), /* Key Contact below the screen */
/* keys alternate function */ /* keys alternate function */
KEY(8, 0, KEY_SEMICOLON), /* + shift = : */ KEY(8, 0, KEY_SEMICOLON), /* + shift = : */
KEY(8, 1, KEY_MINUS), /* + shift = _ */ KEY(8, 1, KEY_MINUS), /* + shift = _ */
KEY(8, 2, KEY_EQUAL), KEY(8, 2, KEY_EQUAL),
KEY(8, 3, KEY_APOSTROPHE), /* + shift = ' */ KEY(8, 3, KEY_APOSTROPHE), /* + shift = ' */
KEY(8, 4, KEY_SEMICOLON), KEY(8, 4, KEY_SEMICOLON),
KEY(8, 5, KEY_LEFTSHIFT), KEY(8, 5, KEY_LEFTSHIFT),
KEY(8, 6, KEY_F1), /* Left Softkey on keyboard */ KEY(8, 6, KEY_F1),
KEY(8, 7, KEY_7), KEY(8, 7, KEY_7),
KEY(9, 0, KEY_TAB), /* RU button */ KEY(9, 0, KEY_TAB),
KEY(9, 1, KEY_LEFTMETA), /* Windows key on keyboard */ KEY(9, 1, KEY_LEFTMETA),
KEY(9, 2, KEY_SPACE), KEY(9, 2, KEY_SPACE),
KEY(9, 3, KEY_LEFTALT), KEY(9, 3, KEY_LEFTALT),
KEY(9, 4, KEY_2), KEY(9, 4, KEY_2),
// KEY(9, 5, KEY_FN), /* KEY_FN */ // KEY(9, 5, KEY_FN), /* KEY_FN */
KEY(9, 6, KEY_F2), /* Right Softkey on keyboard */ KEY(9, 6, KEY_F2),
KEY(9, 7, KEY_8), /* + shift = * */ KEY(9, 7, KEY_8), /* + shift = * */
KEY(10, 0, KEY_7), /* + shift = & */ KEY(10, 0, KEY_7), /* + shift = & */
KEY(10, 1, KEY_4), /* + shift = $ */ KEY(10, 1, KEY_4), /* + shift = $ */
KEY(10, 2, KEY_0), /* + shift = ) */ KEY(10, 2, KEY_0), /* + shift = ) */
KEY(10, 3, KEY_5), /* + shift = % */ KEY(10, 3, KEY_5), /* + shift = % */
KEY(10, 4, KEY_9), /* + shift = ( */ KEY(10, 4, KEY_9), /* + shift = ( */
KEY(10, 5, KEY_2), /* + shift = @ */ KEY(10, 5, KEY_2), /* + shift = @ */
KEY(10, 6, KEY_1), KEY(10, 6, KEY_1),
KEY(10, 7, KEY_4), KEY(10, 7, KEY_4),
KEY(11, 0, KEY_SLASH), /* + shift = ? */ KEY(11, 0, KEY_SLASH), /* + shift = ? */
KEY(11, 1, KEY_6), /* + shift = ^ */ KEY(11, 1, KEY_6), /* + shift = ^ */
KEY(11, 2, KEY_1), /* + shift = ! */ KEY(11, 2, KEY_1), /* + shift = ! */
KEY(11, 3, KEY_BACKSLASH), KEY(11, 3, KEY_BACKSLASH),
KEY(11, 4, KEY_MINUS), KEY(11, 4, KEY_MINUS),
KEY(11, 5, KEY_GRAVE), /* + shift = ~ */ KEY(11, 5, KEY_GRAVE), /* + shift = ~ */
KEY(11, 6, KEY_WWW), KEY(11, 6, KEY_WWW),
KEY(11, 7, KEY_ENTER), KEY(11, 7, KEY_ENTER),
@@ -165,31 +165,31 @@ static unsigned int g900_matrix_keys[] = {
KEY(12, 6, KEY_VOLUMEUP), KEY(12, 6, KEY_VOLUMEUP),
KEY(12, 7, KEY_CAMERA), KEY(12, 7, KEY_CAMERA),
KEY(13, 0, KEY_KPENTER), /* Middle button below the screen */ KEY(13, 0, KEY_KPENTER),
KEY(13, 1, KEY_PAGEUP), /* PG UP*/ KEY(13, 1, KEY_PAGEUP), /* PG UP*/
KEY(13, 2, KEY_9), KEY(13, 2, KEY_9),
KEY(13, 3, KEY_8), KEY(13, 3, KEY_8),
KEY(13, 4, KEY_PHONE), KEY(13, 4, KEY_PHONE), /* GREEN PHONE */
KEY(13, 5, KEY_UP), KEY(13, 5, KEY_UP),
KEY(13, 6, KEY_OK), KEY(13, 6, KEY_OK),
KEY(13, 7, KEY_CANCEL), KEY(13, 7, KEY_F4), /* RED PHONE */
KEY(14, 0, KEY_ESC), KEY(14, 0, KEY_ESC),
KEY(14, 1, KEY_KPPLUS), KEY(14, 1, KEY_KPPLUS),
KEY(14, 2, KEY_6), KEY(14, 2, KEY_6),
KEY(14, 3, KEY_5), KEY(14, 3, KEY_5),
KEY(14, 4, KEY_F2), /* Right Softkey below the screen */ KEY(14, 4, KEY_F2),
KEY(14, 5, KEY_LEFT), KEY(14, 5, KEY_LEFT),
KEY(14, 6, KEY_F1), /* Left Softkey below the screen */ KEY(14, 6, KEY_F1),
KEY(14, 7, KEY_DOWN), KEY(14, 7, KEY_DOWN),
KEY(15, 0, KEY_X), /* FOLDER */ KEY(15, 0, KEY_X), /* FOLDER */
KEY(15, 1, KEY_PAGEDOWN), /* PG DWN */ KEY(15, 1, KEY_PAGEDOWN), /* PG DWN */
KEY(15, 2, KEY_3), /* shift + 3 = # */ KEY(15, 2, KEY_3), /* shift + 3 = # */
KEY(15, 3, KEY_0), KEY(15, 3, KEY_0),
KEY(15, 4, KEY_MAIL), KEY(15, 4, KEY_MAIL),
KEY(15, 5, KEY_RIGHT), KEY(15, 5, KEY_RIGHT),
KEY(15, 6, KEY_RIGHTMETA), /* Windows key below the screen */ KEY(15, 6, KEY_RIGHTMETA),
KEY(15, 7, KEY_HOME) KEY(15, 7, KEY_HOME)
}; };

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 = 400, .max_timeout = 4000,
}, },
{ {
.gpio = GPIO37_LED_nFlash, .gpio = GPIO37_LED_nFlash,
.name = "flash", .name = "flash",
.active_low = 0, .active_low = 0,
.max_timeout = 400, .max_timeout = 4000,
}, },
}; };
static struct timed_gpio_platform_data g900_timed_gpio_data = { static struct timed_gpio_platform_data g900_timed_gpio_data = {
@@ -170,7 +170,7 @@ static struct platform_device g900_lcd_backlight = {
&g900_gpio_leds, &g900_gpio_leds,
&g900_lcd_backlight, &g900_lcd_backlight,
#ifdef CONFIG_ANDROID_TIMED_GPIO #ifdef CONFIG_ANDROID_TIMED_GPIO
//&g900_timed_gpio, /* BUG !*/ &g900_timed_gpio, /* BUG !*/
#endif #endif
}; };

View File

@@ -0,0 +1,121 @@
/*
* Buttons support for Toshiba G900. GPIO buttons
* based on:
* Xiao Huang g900_button.c
*/
#include <linux/input.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/platform_device.h>
#include <linux/gpio_keys.h>
#include <asm/mach-types.h>
#include <mach/hardware.h>
#include <mach/pxa2xx-regs.h>
#include <mach/g900-gpio.h>
#include <mach/gpio.h>
#include <mach/regs-ost.h>
#include <mach/reset.h>
#define BTN_POWER GPIO3_BTN_nPower
static void cpu_hw_reset(void)
{
/* Initialize the watchdog and let it fire */
OWER = OWER_WME;
OSSR = OSSR_M3;
OSMR3 = OSCR + 368640; /* ... in 100 ms */
}
static irqreturn_t pwr_btn_irq(int irq, void *dev_id)
{
int state;
state = GET_GPIO(BTN_POWER);
if(state){
printk("g900-power-button: unpress");
}else{
cpu_hw_reset();
}
printk("g900-power-button: state=%d\n", state);
return IRQ_HANDLED;
}
static int buttons_probe(struct platform_device *pdev)
{
int err;
int irqflag = IRQF_SAMPLE_RANDOM;
#ifdef CONFIG_PREEMPT_RT
irqflag |= IRQF_NODELAY;
#endif
if (!machine_is_g900())
return -ENODEV;
//assign irq and keybit
set_irq_type(IRQ_GPIO(BTN_POWER), IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING);
err = request_irq(IRQ_GPIO(BTN_POWER), pwr_btn_irq, irqflag, "g900-gpio-buttons", NULL);
if (err)
{
printk(KERN_ERR "g900-power-button: Cannot assign GPIO(%d) IRQ\n", BTN_POWER);
return err;
}
printk("g900-power-button: *****IRQ %d OK****", IRQ_GPIO(BTN_POWER));
return 0;
}
static int buttons_remove(struct platform_device *pdev)
{
free_irq(IRQ_GPIO(BTN_POWER), NULL);
return 0;
}
static int buttons_suspend(struct platform_device *pdev, pm_message_t state)
{
return 0;
}
static int buttons_resume(struct platform_device *pdev)
{
return 0;
}
static struct platform_driver buttons_driver = {
.driver = {
.name = "g900-power-button",
},
.probe = buttons_probe,
.remove = buttons_remove,
#ifdef CONFIG_PM
.suspend = buttons_suspend,
.resume = buttons_resume,
#endif
};
static int __init buttons_init(void)
{
return platform_driver_register(&buttons_driver);
}
static void __exit buttons_exit(void)
{
platform_driver_unregister(&buttons_driver);
}
module_init(buttons_init);
module_exit(buttons_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Angell FEar<angell@angellfear.ru>");
MODULE_DESCRIPTION("Power Button driver for Toshiba G900");

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,41 @@
#!/bin/sh #!/bin/sh
echo "Ramdisk for Toshiba G900 from Angell Fear" echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo " *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*"
echo " * *"
echo " * Ramdisk for Toshiba G900 from Angell Fear *"
echo " * ANDROID SUPPORT *"
echo " *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*"
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo "Wating 1 sec. before mounting file systems..." echo "Wating 1 sec. before mounting file systems..."
sleep 1 sleep 1
@@ -30,8 +65,8 @@ echo "Mounting SD card to /sdcard"
/bin/mount -t vfat /dev/block/mmcblk0p1 /sdcard /bin/mount -t vfat /dev/block/mmcblk0p1 /sdcard
[ $? -eq 0 ] || fail "Failed to Mount SD Card" [ $? -eq 0 ] || fail "Failed to Mount SD Card"
echo "Dumping kernel log." #echo "Dumping kernel log."
dmesg > /sdcard/ANDROID/kernel.log #dmesg > /sdcard/ANDROID/kernel.log
echo "Mapping file 'data.img' to 'loop' device /dev/loop0" echo "Mapping file 'data.img' to 'loop' device /dev/loop0"
/bin/losetup /dev/block/loop0 /sdcard/ANDROID/data.img /bin/losetup /dev/block/loop0 /sdcard/ANDROID/data.img
@@ -67,11 +102,13 @@ fi
#/bin/losetup /dev/block/loop2 /sdcard/ANDROID/extram.img #/bin/losetup /dev/block/loop2 /sdcard/ANDROID/extram.img
#[ $? -eq 0 ] && /bin/swapon /dev/block/loop2 #[ $? -eq 0 ] && /bin/swapon /dev/block/loop2
#if [ -e /sdcard/ANDROID/userscript.sh ] ; then if [ -e /sdcard/ANDROID/userscript.sh ] ; then
# cp /sdcard/ANDROID/userscript.sh /data cp /sdcard/ANDROID/userscript.sh /data
# /bin/chmod 777 /data/userscript.sh /bin/chmod 777 /data/userscript.sh
# /data/userscript.sh /data/userscript.sh
#fi fi
#ls /sys/class/timed_output/
#exec /bin/sh #exec /bin/sh
exec /init_1 exec /init_1

View File

@@ -252,6 +252,8 @@ on boot
chown system system /sys/class/timed_output/vibrator/enable chown system system /sys/class/timed_output/vibrator/enable
chown system system /sys/class/timed_output/flash/enable
chown system system /sys/class/leds/keyboard-backlight/brightness chown system system /sys/class/leds/keyboard-backlight/brightness
chown system system /sys/class/leds/lcd-backlight/brightness chown system system /sys/class/leds/lcd-backlight/brightness
chown system system /sys/class/leds/button-backlight/brightness chown system system /sys/class/leds/button-backlight/brightness

View File

@@ -21,7 +21,7 @@ echo ""
echo " *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*" echo " *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*"
echo " * *" echo " * *"
echo " * Ramdisk for Toshiba G900 from Angell Fear *" echo " * Ramdisk for Toshiba G900 from Angell Fear *"
echo " * *" echo " * LINUX SUPPORT *"
echo " *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*" echo " *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*"
echo "" echo ""
echo "" echo ""