toshiba_acpi bluetooth patch
Hi,
Some Toshiba Portege laptops needs bluetooth to be enabled, before it can be used. Since some time there are some patches to do it. (see: http://glozer.net/dynabook/dynabook.html)
I made some cleanings and make it work with recent kernels. See attatchment - any comments are welcome!
regards,
Marek Hobler, 'neutrinus'
36c35
< #define TOSHIBA_ACPI_VERSION "0.18"
---
Quoted 1 line
#define
TOSHIBA_ACPI_VERSION"0.18-p4"
92a92,96
Quoted 5 lines
#define
HCI_WIRELESS0x0056
#defineHCI_BT_POWER0x0080
#defineHCI_BT_ATTACH0x0040
#defineHCI_BT_ORINOCO0x0200
203a208,218
Quoted 11 lines
static
acpi_statushci_write2(u32 reg, u32 in1, u32 in2, u32* result){ u32 in[HCI_WORDS] = { HCI_SET, reg, in1, in2, 0, 0 }; u32 out[HCI_WORDS]; acpi_status status = hci_raw(in, out); *result = (status == AE_OK) ? out[0] : HCI_FAILURE; return status; }
213a229,241
Quoted 9 lines
static
acpi_statushci_read2(u32 reg, u32* out1, u32* out2, u32* result){ u32 in[HCI_WORDS] = { HCI_GET, reg, *out1, *out2, 0, 0 }; u32 out[HCI_WORDS]; acpi_status status = hci_raw(in, out); *out1 = out[2]; *out2 = out[3]; *result = (status == AE_OK) ? out[0] : HCI_FAILURE; return status;
Quoted 4 lines
}
484a513,581
Quoted 59 lines
static char*
read_wk(char* p){ u32 hci_result; u32 value = 0; u32 value2 = 0; hci_read2(HCI_WIRELESS, &value, &value2, &hci_result); if (hci_result == HCI_SUCCESS) { p += sprintf(p,"wireless key: %d\n", value ); } else { p += sprintf(p, "ERROR\n"); } return p; }static char*
read_bt(char* p){ u32 hci_result; u32 value = 0; u32 value2 = 0; hci_read2(HCI_WIRELESS, &value, &value2, &hci_result); if (hci_result == HCI_SUCCESS) { p += sprintf(p,"present: %d\n", (value & 0x0f)?1:0); } else { p += sprintf(p, "ERROR\n"); } value = 0; value2 = 0x0001; hci_read2(HCI_WIRELESS, &value, &value2, &hci_result); if (hci_result == HCI_SUCCESS) { p += sprintf(p,"power: %d\n", (value & 128) >> 7); p += sprintf(p,"attach: %d\n", (value & 64) >> 6); p += sprintf(p,"wireless: %d\n", (value & 512) >> 9); } else { p += sprintf(p, "ERROR\n"); } return p; }static unsigned long
write_bt(const char* buffer, unsigned long count){ int value; u32 hci_result; if (sscanf(buffer, " power : %i", &value) == 1 && value >= 0 && value <= 1) { hci_write2(HCI_WIRELESS, value, HCI_BT_POWER, &hci_result); if (hci_result != HCI_SUCCESS) return -EFAULT; } else if (sscanf(buffer, " attach : %i", &value) == 1 && value >= 0 && value <= 1) { hci_write2(HCI_WIRELESS, value, HCI_BT_ATTACH, &hci_result); if (hci_result != HCI_SUCCESS) return -EFAULT; } else if (sscanf(buffer, " orinoco : %i", &value) == 1 && value >= 0 && value <= 1) { hci_write2(HCI_WIRELESS, value, HCI_BT_ORINOCO, &hci_result);
Quoted 10 lines
if (hci_result != HCI_SUCCESS)
return -EFAULT;
} else {
return -EINVAL;
}
return count;
}503a601,602
Quoted 2 lines
{"wireless_key", read_wk, NULL },
{"bluetooth", read_bt, write_bt },Hi,
getting this patch into the kernel would be great.
I use the toshbt tool from
to enable Bluetooth on my Toshiba Tecra S3, but getting it upstream would make things easier to maintain.
Anything I can help ?
cu romal
Quoted 8 lines · [email protected] schrieb:
Hi,
Some Toshiba Portege laptops needs bluetooth to be enabled, before it can be used. Since some time there are some patches to do it. (see: http://glozer.net/dynabook/dynabook.html)I made some cleanings and make it work with recent kernels. See attatchment - any comments are welcome!
regards,
Marek Hobler, 'neutrinus'