Bugs and problems in omnibook module code
=========================================
-* You can use /proc/apm emulation for battery status monitoring only.
-* Volume Control buttons do not generate scancodes on XE3GC style models.
- Scancode emulation needs intensive testing to be reliable.
* Volume Control buttons on machine (not on docking station) do not generate
scancodes on OB500 style models. It is unhandled yet.
-* Sometimes (I assume when the embedded controller is busy) the procfs
- interface displays fake values.
* Setting the LCD brightness on HP OmniBook XE3 GF via /proc/omnibook/lcd
is working if you press one of the brightness control keys once after
writing the value into /proc/omnibook/lcd.
-* After reenable the touchpad via /proc/omnibook/touchpad you may restart
- X / gpm.
* I'm not a native English speaker so text corrections are welcome.
-* obtest can BADLY confuse the in-kernel ACPI code due to racy
- implementation of obtest
+* obtest can BADLY confuse the in-kernel ACPI code due to its racy
+ implementation.
+* Reenabling wifi adapter after previous disabling is broken on
+ Toshiba Satellite M100 (ipw3945)
+* See http://sourceforge.net/tracker/?atid=868542&group_id=174260&func=browse
+ for sf.net bug tracking system.
-Problems with OmniBook machines running Linux
-=============================================
-
-* If you use APM there are a lot of mysterious hangs at suspend/resume on
- the new models. The OmniBooks use ACPI not APM but ACPI for Linux does not
- provide reliable power management functions yet. Use swsusp instead.
-* In some cases the touchpad in XE3 GF models can freeze the laptop after
- disabling and reenabling it with the disable button and doing a tap
- action when neither gpm nor X is running. It seems to be a BIOS or
- firmware bug.
- Please report if you can reproduce it.
-* On XE3 GC models Fn-s key combination try to suspend to ram which freezes
- the machine completely.
-* The ESS winmodem in XE3 (and other) machines is not working with Linux.
- There are (or at least was) binary only drivers but those have a lot of
- problems (eg. lock up the machine at disconnect etc.)
-* The 3Com winmodem in OmniBook 5xx (and other) laptops is unsupported by
- Linux.
Toshiba Satellite P20
12. Toshiba Satellite M30X
Toshiba Satellite M35X
+ Toshiba Satellite M40X
Toshiba Satellite M70
+ Toshiba Satellite M100
13. Toshiba Satellite M40
+ Toshiba Satellite M45
+ Toshiba Tecra S1
14. Toshiba Satellite A105
If your model is not listed above you may try to load the module. If it
Fn + F5 hotkey: 0x40
That is to enable multimedia hotkeys only do:
- $cat 0x2 > /proc/omnibook/hotkeys
+ $echo 0x2 > /proc/omnibook/hotkeys
To enable Fn hotkeys and Dock events only do:
- $cat 0x24 > /proc/omnibook/hotkeys (as 0x24 = 0x4 + 0x20)
+ $echo 0x24 > /proc/omnibook/hotkeys (as 0x24 = 0x4 + 0x20)
Finally 'off' is equivalent to 0x0, and 'on' to 0x67 that is
Onetouch, Multimedia, Fn, Dock and Fn+F5.
* Create a clean access method to the i8042 kbd controller (this will require
a kernel patch)
* To be cleaned: battery dump fan_policy
-* Fix wifi and Toshiba Satellite M100 (ipw3945)
Old items imported from previous version:
write_capability = io_op->backend->hotkeys_set(io_op, state);
if( write_capability < 0)
- return write_capability;
+ goto out;
/* Update saved state */
saved_state = state & write_capability;
-
- return 0;
+
+out:
+ return write_capability;
}
static int omnibook_hotkeys_get(struct omnibook_operation *io_op, unsigned int *state)
if(io_op->backend->hotkeys_get)
read_capability = io_op->backend->hotkeys_get(io_op, &read_state);
if(read_capability < 0)
- return read_capability;
+ goto out;
/* Return previously set state for the fields that are write only */
*state = (read_state & read_capability) + (saved_state & ~read_capability);
-
- return 0;
+
+out:
+ return read_capability;
}
/*
unsigned int read_state, mask;
read_capability = omnibook_hotkeys_get(io_op, &read_state);
+ dprintk("read_cap :%i\n",read_capability);
if(read_capability < 0)
return read_capability;
write_capability = omnibook_hotkeys_set(io_op, read_state);
+ dprintk("write_cap :%i\n",write_capability);
if(write_capability < 0)
return write_capability;
- for( mask = DISPLAY_LCD_ON ; mask <= HKEY_FNF5; mask = mask << 1) {
+ for( mask = HKEY_ONETOUCH ; mask <= HKEY_FNF5; mask = mask << 1) {
/* we assume write capability or read capability imply support */
if( (read_capability | write_capability ) & mask )
len += sprintf(buffer + len, "%s %s.\n",
static int __init omnibook_hotkeys_init(struct omnibook_operation *io_op)
{
+ int retval;
printk(O_INFO "Enabling all hotkeys.\n");
- return omnibook_hotkeys_set(io_op, HKEY_ON);
+ retval = omnibook_hotkeys_set(io_op, HKEY_ON);
+ return retval < 0 ? retval : 0;
}
static void __exit omnibook_hotkeys_cleanup(struct omnibook_operation *io_op)
},
.driver_data = (void*) TSM40
},
+ {
+ .callback = dmi_matched,
+ .ident = "Toshiba Satellite M45",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Satellite M45"),
+ },
+ .driver_data = (void*) TSM40
+ },
{
.callback = dmi_matched,
.ident = "Toshiba Tecra S1",
Board Name: SB400
Board Version: Rev0.4b
+---------------------------------------------
+Toshiba Satellite M45 (S355) ----------------
+
+BIOS Vendor: TOSHIBA
+BIOS Version: Version 2.00
+BIOS Release: 02/07/2006
+System Vendor: TOSHIBA
+Product Name: Satellite M45
+Version: PSM40U-073001
+Serial Number: 85080639Q
+Board Vendor: TOSHIBA
+Board Name: Version A0
+
---------------------------------------------
Toshiba Satellite M40X (-131)----------------
+
BIOS Vendor: TOSHIBA
BIOS Version: V1.60
BIOS Release: 06/09/2005