Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  surface_hid_core.h  Sprache: unbekannt

 
/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Common/core components for the Surface System Aggregator Module (SSAM) HID
 * transport driver. Provides support for integrated HID devices on Microsoft
 * Surface models.
 *
 * Copyright (C) 2019-2021 Maximilian Luz <luzmaximilian@gmail.com>
 */


#ifndef SURFACE_HID_CORE_H
#define SURFACE_HID_CORE_H

#include <linux/hid.h>
#include <linux/pm.h>
#include <linux/types.h>

#include <linux/surface_aggregator/controller.h>
#include <linux/surface_aggregator/device.h>

enum surface_hid_descriptor_entry {
 SURFACE_HID_DESC_HID    = 0,
 SURFACE_HID_DESC_REPORT = 1,
 SURFACE_HID_DESC_ATTRS  = 2,
};

struct surface_hid_descriptor {
 __u8 desc_len;   /* = 9 */
 __u8 desc_type;   /* = HID_DT_HID */
 __le16 hid_version;
 __u8 country_code;
 __u8 num_descriptors;  /* = 1 */

 __u8 report_desc_type;  /* = HID_DT_REPORT */
 __le16 report_desc_len;
} __packed;

static_assert(sizeof(struct surface_hid_descriptor) == 9);

struct surface_hid_attributes {
 __le32 length;
 __le16 vendor;
 __le16 product;
 __le16 version;
 __u8 _unknown[22];
} __packed;

static_assert(sizeof(struct surface_hid_attributes) == 32);

struct surface_hid_device;

struct surface_hid_device_ops {
 int (*get_descriptor)(struct surface_hid_device *shid, u8 entry, u8 *buf, size_t len);
 int (*output_report)(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len);
 int (*get_feature_report)(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len);
 int (*set_feature_report)(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len);
};

struct surface_hid_device {
 struct device *dev;
 struct ssam_controller *ctrl;
 struct ssam_device_uid uid;

 struct surface_hid_descriptor hid_desc;
 struct surface_hid_attributes attrs;

 struct ssam_event_notifier notif;
 struct hid_device *hid;

 struct surface_hid_device_ops ops;
};

int surface_hid_device_add(struct surface_hid_device *shid);
void surface_hid_device_destroy(struct surface_hid_device *shid);

extern const struct dev_pm_ops surface_hid_pm_ops;

#endif /* SURFACE_HID_CORE_H */

Messung V0.5 in Prozent
C=97 H=96 G=96

[Dauer der Verarbeitung: 0.11 Sekunden, vorverarbeitet 2026-09-28]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126864
#Domains=1897691