|
Lines 74-79
Link Here
|
| 74 |
#define ACPI_IBM_METHOD_FANSTATUS 12 |
74 |
#define ACPI_IBM_METHOD_FANSTATUS 12 |
| 75 |
#define ACPI_IBM_METHOD_THERMAL 13 |
75 |
#define ACPI_IBM_METHOD_THERMAL 13 |
| 76 |
#define ACPI_IBM_METHOD_HANDLEREVENTS 14 |
76 |
#define ACPI_IBM_METHOD_HANDLEREVENTS 14 |
|
|
77 |
#define ACPI_IBM_METHOD_MIC_LED 15 |
| 77 |
|
78 |
|
| 78 |
/* Hotkeys/Buttons */ |
79 |
/* Hotkeys/Buttons */ |
| 79 |
#define IBM_RTC_HOTKEY1 0x64 |
80 |
#define IBM_RTC_HOTKEY1 0x64 |
|
Lines 175-180
Link Here
|
| 175 |
int led_busy; |
176 |
int led_busy; |
| 176 |
int led_state; |
177 |
int led_state; |
| 177 |
|
178 |
|
|
|
179 |
/* Mic led handle */ |
| 180 |
ACPI_HANDLE mic_led_handle; |
| 181 |
int mic_led_state; |
| 182 |
|
| 178 |
int wlan_bt_flags; |
183 |
int wlan_bt_flags; |
| 179 |
int thermal_updt_supported; |
184 |
int thermal_updt_supported; |
| 180 |
|
185 |
|
|
Lines 258-264
Link Here
|
| 258 |
.method = ACPI_IBM_METHOD_FANSTATUS, |
263 |
.method = ACPI_IBM_METHOD_FANSTATUS, |
| 259 |
.description = "Fan enable", |
264 |
.description = "Fan enable", |
| 260 |
}, |
265 |
}, |
| 261 |
|
266 |
{ |
|
|
267 |
.name = "mic_led", |
| 268 |
.method = ACPI_IBM_METHOD_MIC_LED, |
| 269 |
.description = "Mic led", |
| 270 |
}, |
| 262 |
{ NULL, 0, NULL, 0 } |
271 |
{ NULL, 0, NULL, 0 } |
| 263 |
}; |
272 |
}; |
| 264 |
|
273 |
|
|
Lines 371-376
Link Here
|
| 371 |
} |
380 |
} |
| 372 |
|
381 |
|
| 373 |
static int |
382 |
static int |
|
|
383 |
acpi_ibm_mic_led_set (struct acpi_ibm_softc *sc, int arg) |
| 384 |
{ |
| 385 |
ACPI_OBJECT_LIST input; |
| 386 |
ACPI_OBJECT params[1]; |
| 387 |
ACPI_STATUS status; |
| 388 |
|
| 389 |
if (arg < 0 || arg > 1) |
| 390 |
return (EINVAL); |
| 391 |
|
| 392 |
if (sc->mic_led_handle) { |
| 393 |
params[0].Type = ACPI_TYPE_INTEGER; |
| 394 |
params[0].Integer.Value = 0; |
| 395 |
/* mic led: 0 off, 2 on */ |
| 396 |
if (arg == 1) |
| 397 |
params[0].Integer.Value = 2; |
| 398 |
|
| 399 |
input.Pointer = params; |
| 400 |
input.Count = 1; |
| 401 |
|
| 402 |
status = AcpiEvaluateObject (sc->handle, "MMTS", &input, NULL); |
| 403 |
if (ACPI_SUCCESS(status)) |
| 404 |
sc->mic_led_state = arg; |
| 405 |
return(status); |
| 406 |
} |
| 407 |
|
| 408 |
return (0); |
| 409 |
} |
| 410 |
|
| 411 |
static int |
| 374 |
acpi_ibm_probe(device_t dev) |
412 |
acpi_ibm_probe(device_t dev) |
| 375 |
{ |
413 |
{ |
| 376 |
if (acpi_disabled("ibm") || |
414 |
if (acpi_disabled("ibm") || |
|
Lines 552-557
Link Here
|
| 552 |
} |
590 |
} |
| 553 |
ACPI_SERIAL_END(ibm); |
591 |
ACPI_SERIAL_END(ibm); |
| 554 |
|
592 |
|
|
|
593 |
/* The mic led is does not turn back on sysctl_set is called in the above loop */ |
| 594 |
acpi_ibm_mic_led_set(sc, sc->mic_led_state); |
| 595 |
|
| 555 |
return (0); |
596 |
return (0); |
| 556 |
} |
597 |
} |
| 557 |
|
598 |
|
|
Lines 739-744
Link Here
|
| 739 |
else |
780 |
else |
| 740 |
val = -1; |
781 |
val = -1; |
| 741 |
break; |
782 |
break; |
|
|
783 |
case ACPI_IBM_METHOD_MIC_LED: |
| 784 |
if (sc->mic_led_handle) |
| 785 |
return sc->mic_led_state; |
| 786 |
else |
| 787 |
val = -1; |
| 788 |
break; |
| 742 |
} |
789 |
} |
| 743 |
|
790 |
|
| 744 |
return (val); |
791 |
return (val); |
|
Lines 783-788
Link Here
|
| 783 |
return acpi_ibm_mute_set(sc, arg); |
830 |
return acpi_ibm_mute_set(sc, arg); |
| 784 |
break; |
831 |
break; |
| 785 |
|
832 |
|
|
|
833 |
case ACPI_IBM_METHOD_MIC_LED: |
| 834 |
return acpi_ibm_mic_led_set (sc, arg); |
| 835 |
break; |
| 836 |
|
| 786 |
case ACPI_IBM_METHOD_THINKLIGHT: |
837 |
case ACPI_IBM_METHOD_THINKLIGHT: |
| 787 |
return acpi_ibm_thinklight_set(sc, arg); |
838 |
return acpi_ibm_thinklight_set(sc, arg); |
| 788 |
break; |
839 |
break; |
|
Lines 842-847
Link Here
|
| 842 |
/* EC is required here, which was already checked before */ |
893 |
/* EC is required here, which was already checked before */ |
| 843 |
return (TRUE); |
894 |
return (TRUE); |
| 844 |
|
895 |
|
|
|
896 |
case ACPI_IBM_METHOD_MIC_LED: |
| 897 |
if (ACPI_SUCCESS(AcpiGetHandle(sc->handle, "MMTS", &sc->mic_led_handle))) |
| 898 |
{ |
| 899 |
/* Turn off mic led by default */ |
| 900 |
acpi_ibm_mic_led_set (sc, 0); |
| 901 |
return(TRUE); |
| 902 |
} |
| 903 |
else |
| 904 |
sc->mic_led_handle = NULL; |
| 905 |
return (FALSE); |
| 906 |
|
| 845 |
case ACPI_IBM_METHOD_THINKLIGHT: |
907 |
case ACPI_IBM_METHOD_THINKLIGHT: |
| 846 |
sc->cmos_handle = NULL; |
908 |
sc->cmos_handle = NULL; |
| 847 |
sc->light_get_supported = ACPI_SUCCESS(acpi_GetInteger( |
909 |
sc->light_get_supported = ACPI_SUCCESS(acpi_GetInteger( |