0001
0002
0003
0004
0005
0006
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");