root/drivers/platform/x86/acer-wireless.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. acer_wireless_notify
  2. acer_wireless_add

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Acer Wireless Radio Control Driver
   4  *
   5  * Copyright (C) 2017 Endless Mobile, Inc.
   6  */
   7 
   8 #include <linux/acpi.h>
   9 #include <linux/input.h>
  10 #include <linux/kernel.h>
  11 #include <linux/module.h>
  12 #include <linux/pci_ids.h>
  13 #include <linux/types.h>
  14 
  15 static const struct acpi_device_id acer_wireless_acpi_ids[] = {
  16         {"10251229", 0},
  17         {"", 0},
  18 };
  19 MODULE_DEVICE_TABLE(acpi, acer_wireless_acpi_ids);
  20 
  21 static void acer_wireless_notify(struct acpi_device *adev, u32 event)
  22 {
  23         struct input_dev *idev = acpi_driver_data(adev);
  24 
  25         dev_dbg(&adev->dev, "event=%#x\n", event);
  26         if (event != 0x80) {
  27                 dev_notice(&adev->dev, "Unknown SMKB event: %#x\n", event);
  28                 return;
  29         }
  30         input_report_key(idev, KEY_RFKILL, 1);
  31         input_report_key(idev, KEY_RFKILL, 0);
  32         input_sync(idev);
  33 }
  34 
  35 static int acer_wireless_add(struct acpi_device *adev)
  36 {
  37         struct input_dev *idev;
  38 
  39         idev = devm_input_allocate_device(&adev->dev);
  40         if (!idev)
  41                 return -ENOMEM;
  42 
  43         adev->driver_data = idev;
  44         idev->name = "Acer Wireless Radio Control";
  45         idev->phys = "acer-wireless/input0";
  46         idev->id.bustype = BUS_HOST;
  47         idev->id.vendor = PCI_VENDOR_ID_AI;
  48         idev->id.product = 0x1229;
  49         set_bit(EV_KEY, idev->evbit);
  50         set_bit(KEY_RFKILL, idev->keybit);
  51 
  52         return input_register_device(idev);
  53 }
  54 
  55 static struct acpi_driver acer_wireless_driver = {
  56         .name = "Acer Wireless Radio Control Driver",
  57         .class = "hotkey",
  58         .ids = acer_wireless_acpi_ids,
  59         .ops = {
  60                 .add = acer_wireless_add,
  61                 .notify = acer_wireless_notify,
  62         },
  63 };
  64 module_acpi_driver(acer_wireless_driver);
  65 
  66 MODULE_DESCRIPTION("Acer Wireless Radio Control Driver");
  67 MODULE_AUTHOR("Chris Chiu <chiu@gmail.com>");
  68 MODULE_LICENSE("GPL v2");

/* [<][>][^][v][top][bottom][index][help] */