cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dell-smbios.h (2668B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 *  Common functions for kernel modules using Dell SMBIOS
      4 *
      5 *  Copyright (c) Red Hat <mjg@redhat.com>
      6 *  Copyright (c) 2014 Gabriele Mazzotta <gabriele.mzt@gmail.com>
      7 *  Copyright (c) 2014 Pali Rohár <pali@kernel.org>
      8 *
      9 *  Based on documentation in the libsmbios package:
     10 *  Copyright (C) 2005-2014 Dell Inc.
     11 */
     12
     13#ifndef _DELL_SMBIOS_H_
     14#define _DELL_SMBIOS_H_
     15
     16#include <linux/device.h>
     17#include <uapi/linux/wmi.h>
     18
     19/* Classes and selects used only in kernel drivers */
     20#define CLASS_KBD_BACKLIGHT 4
     21#define SELECT_KBD_BACKLIGHT 11
     22
     23/* Tokens used in kernel drivers, any of these
     24 * should be filtered from userspace access
     25 */
     26#define BRIGHTNESS_TOKEN	0x007d
     27#define KBD_LED_AC_TOKEN	0x0451
     28#define KBD_LED_OFF_TOKEN	0x01E1
     29#define KBD_LED_ON_TOKEN	0x01E2
     30#define KBD_LED_AUTO_TOKEN	0x01E3
     31#define KBD_LED_AUTO_25_TOKEN	0x02EA
     32#define KBD_LED_AUTO_50_TOKEN	0x02EB
     33#define KBD_LED_AUTO_75_TOKEN	0x02EC
     34#define KBD_LED_AUTO_100_TOKEN	0x02F6
     35#define GLOBAL_MIC_MUTE_ENABLE	0x0364
     36#define GLOBAL_MIC_MUTE_DISABLE	0x0365
     37
     38struct notifier_block;
     39
     40struct calling_interface_token {
     41	u16 tokenID;
     42	u16 location;
     43	union {
     44		u16 value;
     45		u16 stringlength;
     46	};
     47};
     48
     49struct calling_interface_structure {
     50	struct dmi_header header;
     51	u16 cmdIOAddress;
     52	u8 cmdIOCode;
     53	u32 supportedCmds;
     54	struct calling_interface_token tokens[];
     55} __packed;
     56
     57int dell_smbios_register_device(struct device *d, void *call_fn);
     58void dell_smbios_unregister_device(struct device *d);
     59
     60int dell_smbios_error(int value);
     61int dell_smbios_call_filter(struct device *d,
     62	struct calling_interface_buffer *buffer);
     63int dell_smbios_call(struct calling_interface_buffer *buffer);
     64
     65struct calling_interface_token *dell_smbios_find_token(int tokenid);
     66
     67enum dell_laptop_notifier_actions {
     68	DELL_LAPTOP_KBD_BACKLIGHT_BRIGHTNESS_CHANGED,
     69};
     70
     71int dell_laptop_register_notifier(struct notifier_block *nb);
     72int dell_laptop_unregister_notifier(struct notifier_block *nb);
     73void dell_laptop_call_notifier(unsigned long action, void *data);
     74
     75/* for the supported backends */
     76#ifdef CONFIG_DELL_SMBIOS_WMI
     77int init_dell_smbios_wmi(void);
     78void exit_dell_smbios_wmi(void);
     79#else /* CONFIG_DELL_SMBIOS_WMI */
     80static inline int init_dell_smbios_wmi(void)
     81{
     82	return -ENODEV;
     83}
     84static inline void exit_dell_smbios_wmi(void)
     85{}
     86#endif /* CONFIG_DELL_SMBIOS_WMI */
     87
     88#ifdef CONFIG_DELL_SMBIOS_SMM
     89int init_dell_smbios_smm(void);
     90void exit_dell_smbios_smm(void);
     91#else /* CONFIG_DELL_SMBIOS_SMM */
     92static inline int init_dell_smbios_smm(void)
     93{
     94	return -ENODEV;
     95}
     96static inline void exit_dell_smbios_smm(void)
     97{}
     98#endif /* CONFIG_DELL_SMBIOS_SMM */
     99
    100#endif /* _DELL_SMBIOS_H_ */