blob: 742dd8bd66b99cc17107a92bcb04e930ce28a598 [file] [log] [blame]
Michał Kępień2f9f26b2016-01-22 15:27:13 +01001/*
2 * Common functions for kernel modules using Dell SMBIOS
3 *
4 * Copyright (c) Red Hat <mjg@redhat.com>
5 * Copyright (c) 2014 Gabriele Mazzotta <gabriele.mzt@gmail.com>
6 * Copyright (c) 2014 Pali Rohár <pali.rohar@gmail.com>
7 *
8 * Based on documentation in the libsmbios package:
9 * Copyright (C) 2005-2014 Dell Inc.
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 */
15
16#ifndef _DELL_SMBIOS_H_
17#define _DELL_SMBIOS_H_
18
Hans de Goede504b0252017-03-16 11:55:32 +010019struct notifier_block;
20
Michał Kępień2f9f26b2016-01-22 15:27:13 +010021/* This structure will be modified by the firmware when we enter
22 * system management mode, hence the volatiles */
23
24struct calling_interface_buffer {
Mario Limonciellof35a8ef2017-11-01 14:25:22 -050025 u16 cmd_class;
26 u16 cmd_select;
Michał Kępień2f9f26b2016-01-22 15:27:13 +010027 volatile u32 input[4];
28 volatile u32 output[4];
29} __packed;
30
31struct calling_interface_token {
32 u16 tokenID;
33 u16 location;
34 union {
35 u16 value;
36 u16 stringlength;
37 };
38};
39
Michał Kępień0db21802016-03-04 14:09:07 +010040int dell_smbios_error(int value);
Michał Kępieńe8edf532016-03-04 14:09:06 +010041
Michał Kępieńbc2104c2016-01-22 15:27:20 +010042struct calling_interface_buffer *dell_smbios_get_buffer(void);
Michał Kępieńb6aa7e12016-01-22 15:27:15 +010043void dell_smbios_clear_buffer(void);
Michał Kępieńcb161762016-01-22 15:27:16 +010044void dell_smbios_release_buffer(void);
Michał Kępieńc42831c2016-01-22 15:27:19 +010045void dell_smbios_send_request(int class, int select);
Michał Kępień2f9f26b2016-01-22 15:27:13 +010046
Michał Kępień96f7ef92016-01-22 15:27:22 +010047struct calling_interface_token *dell_smbios_find_token(int tokenid);
Hans de Goede504b0252017-03-16 11:55:32 +010048
49enum dell_laptop_notifier_actions {
50 DELL_LAPTOP_KBD_BACKLIGHT_BRIGHTNESS_CHANGED,
51};
52
53int dell_laptop_register_notifier(struct notifier_block *nb);
54int dell_laptop_unregister_notifier(struct notifier_block *nb);
55void dell_laptop_call_notifier(unsigned long action, void *data);
56
Michał Kępień2f9f26b2016-01-22 15:27:13 +010057#endif