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( |