Lines Matching refs:key
57 /* Key and button events */
162 struct gpiokeys_key *key;
184 key = kmem_zalloc(sizeof(*key), KM_SLEEP);
185 key->key_sc = sc;
186 key->key_phandle = child;
187 key->key_code = code;
188 key->key_label = kmem_zalloc(len, KM_SLEEP);
189 if (OF_getprop(child, "label", key->key_label, len) != len) {
190 kmem_free(key->key_label, len);
191 kmem_free(key, sizeof(*key));
194 key->key_debounce = debounce;
195 key->key_pin = fdtbus_gpio_acquire(child, "gpios",
197 if (key->key_pin)
198 key->key_state = fdtbus_gpio_read(key->key_pin);
204 key->key_pswitch.smpsw_name = key->key_label;
205 key->key_pswitch.smpsw_type = PSWITCH_TYPE_POWER;
208 key->key_pswitch.smpsw_name = key->key_label;
209 key->key_pswitch.smpsw_type = PSWITCH_TYPE_SLEEP;
212 key->key_usbcode = linux_key_to_usb(code);
213 if (key->key_usbcode != 0) {
216 key->key_pswitch.smpsw_name = key->key_label;
217 key->key_pswitch.smpsw_type = PSWITCH_TYPE_HOTKEY;
223 key->key_pswitch.smpsw_name = key->key_label;
226 key->key_state = -1; /* Send notification on attach */
227 key->key_pswitch.smpsw_type = PSWITCH_TYPE_LID;
230 key->key_pswitch.smpsw_type = PSWITCH_TYPE_HOTKEY;
236 if (key->key_pswitch.smpsw_name != NULL &&
237 sysmon_pswitch_register(&key->key_pswitch) != 0) {
238 aprint_error(" %s:ERROR", key->key_label);
239 kmem_free(key->key_label, len);
240 kmem_free(key, sizeof(*key));
245 aprint_normal(", %s", key->key_label);
247 aprint_normal(" %s", key->key_label);
250 key->key_next = sc->sc_keys;
251 sc->sc_keys = key;
282 struct gpiokeys_key *key;
284 for (key = sc->sc_keys; key; key = key->key_next) {
285 if (key->key_pin == NULL) {
288 const int new_state = fdtbus_gpio_read(key->key_pin);
289 if (new_state != key->key_state) {
290 key->key_state = new_state;
291 sysmon_task_queue_sched(0, gpiokeys_task, key);
300 struct gpiokeys_key *key = priv;
301 struct gpiokeys_softc *sc = key->key_sc;
303 if (key->key_pswitch.smpsw_name) {
304 sysmon_pswitch_event(&key->key_pswitch,
305 key->key_state ? PSWITCH_EVENT_PRESSED : PSWITCH_EVENT_RELEASED);
306 } else if (sc->sc_enabled && sc->sc_wskbddev != NULL && key->key_usbcode != 0) {
308 key->key_state ? WSCONS_EVENT_KEY_DOWN : WSCONS_EVENT_KEY_UP,
309 key->key_usbcode);