#include <linux/unaligned.h>
#include <linux/hid.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/surface_aggregator/controller.h>
#include <linux/surface_aggregator/device.h>
#include "surface_hid_core.h"
struct surface_hid_buffer_slice { … } __packed;
static_assert(…);
enum surface_hid_cid { … };
static int ssam_hid_get_descriptor(struct surface_hid_device *shid, u8 entry, u8 *buf, size_t len)
{ … }
static int ssam_hid_set_raw_report(struct surface_hid_device *shid, u8 rprt_id, bool feature,
u8 *buf, size_t len)
{ … }
static int ssam_hid_get_raw_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
{ … }
static u32 ssam_hid_event_fn(struct ssam_event_notifier *nf, const struct ssam_event *event)
{ … }
static int shid_output_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
{ … }
static int shid_get_feature_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
{ … }
static int shid_set_feature_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
{ … }
static int surface_hid_probe(struct ssam_device *sdev)
{ … }
static void surface_hid_remove(struct ssam_device *sdev)
{ … }
static const struct ssam_device_id surface_hid_match[] = …;
MODULE_DEVICE_TABLE(ssam, surface_hid_match);
static struct ssam_device_driver surface_hid_driver = …;
module_ssam_device_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;