58 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * HID support for Vivaldi Keyboard4 *5 * Copyright 2020 Google LLC.6 * Author: Sean O'Brien <seobrien@chromium.org>7 */8 9#include <linux/device.h>10#include <linux/hid.h>11#include <linux/input/vivaldi-fmap.h>12#include <linux/kernel.h>13#include <linux/module.h>14 15#include "hid-vivaldi-common.h"16 17static int vivaldi_probe(struct hid_device *hdev,18 const struct hid_device_id *id)19{20 struct vivaldi_data *drvdata;21 int ret;22 23 drvdata = devm_kzalloc(&hdev->dev, sizeof(*drvdata), GFP_KERNEL);24 if (!drvdata)25 return -ENOMEM;26 27 hid_set_drvdata(hdev, drvdata);28 29 ret = hid_parse(hdev);30 if (ret)31 return ret;32 33 return hid_hw_start(hdev, HID_CONNECT_DEFAULT);34}35 36static const struct hid_device_id vivaldi_table[] = {37 { HID_DEVICE(HID_BUS_ANY, HID_GROUP_VIVALDI, HID_ANY_ID, HID_ANY_ID) },38 { }39};40 41MODULE_DEVICE_TABLE(hid, vivaldi_table);42 43static struct hid_driver hid_vivaldi = {44 .name = "hid-vivaldi",45 .id_table = vivaldi_table,46 .probe = vivaldi_probe,47 .feature_mapping = vivaldi_feature_mapping,48 .driver = {49 .dev_groups = vivaldi_attribute_groups,50 },51};52 53module_hid_driver(hid_vivaldi);54 55MODULE_AUTHOR("Sean O'Brien");56MODULE_DESCRIPTION("HID vivaldi driver");57MODULE_LICENSE("GPL");58