Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * HID support for Vivaldi Keyboard
0004  *
0005  * Copyright 2020 Google LLC.
0006  * Author: Sean O'Brien <seobrien@chromium.org>
0007  */
0008 
0009 #include <linux/device.h>
0010 #include <linux/hid.h>
0011 #include <linux/input/vivaldi-fmap.h>
0012 #include <linux/kernel.h>
0013 #include <linux/module.h>
0014 
0015 #include "hid-vivaldi-common.h"
0016 
0017 static int vivaldi_probe(struct hid_device *hdev,
0018              const struct hid_device_id *id)
0019 {
0020     struct vivaldi_data *drvdata;
0021     int ret;
0022 
0023     drvdata = devm_kzalloc(&hdev->dev, sizeof(*drvdata), GFP_KERNEL);
0024     if (!drvdata)
0025         return -ENOMEM;
0026 
0027     hid_set_drvdata(hdev, drvdata);
0028 
0029     ret = hid_parse(hdev);
0030     if (ret)
0031         return ret;
0032 
0033     return hid_hw_start(hdev, HID_CONNECT_DEFAULT);
0034 }
0035 
0036 static const struct hid_device_id vivaldi_table[] = {
0037     { HID_DEVICE(HID_BUS_ANY, HID_GROUP_VIVALDI, HID_ANY_ID, HID_ANY_ID) },
0038     { }
0039 };
0040 
0041 MODULE_DEVICE_TABLE(hid, vivaldi_table);
0042 
0043 static struct hid_driver hid_vivaldi = {
0044     .name = "hid-vivaldi",
0045     .id_table = vivaldi_table,
0046     .probe = vivaldi_probe,
0047     .feature_mapping = vivaldi_feature_mapping,
0048     .input_configured = vivaldi_input_configured,
0049 };
0050 
0051 module_hid_driver(hid_vivaldi);
0052 
0053 MODULE_AUTHOR("Sean O'Brien");
0054 MODULE_DESCRIPTION("HID vivaldi driver");
0055 MODULE_LICENSE("GPL");