Skip to contentSkip to conversation

toshiba_acpi bluetooth patch

DISCUSSION [email protected] 2 participants 2 messages Aug 9, 2007 – Aug 10, 2007 ACPI

lore
Share & tools
lore
#0 lore raw

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_WIRELESS 0x0056
#define HCI_BT_POWER 0x0080
#define HCI_BT_ATTACH 0x0040
#define HCI_BT_ORINOCO 0x0200

203a208,218

Quoted 11 lines

static acpi_status hci_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_status hci_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 },
#1 lore raw

Hi,

getting this patch into the kernel would be great.

I use the toshbt tool from

http://0bits.com/?q=node/6

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'