brintos

brintos / linux-shallow public Read only

0
0
Text · 2.6 KiB · 0863512 Raw
123 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2 3/*4 * msi-ec: MSI laptops' embedded controller driver.5 *6 * Copyright (C) 2023 Jose Angel Pastrana <japp0005@red.ujaen.es>7 * Copyright (C) 2023 Aakash Singh <mail@singhaakash.dev>8 * Copyright (C) 2023 Nikita Kravets <teackot@gmail.com>9 */10 11#ifndef _MSI_EC_H_12#define _MSI_EC_H_13 14#include <linux/types.h>15 16#define MSI_EC_DRIVER_NAME "msi-ec"17 18#define MSI_EC_ADDR_UNKNOWN 0xff01 // unknown address19#define MSI_EC_ADDR_UNSUPP  0xff01 // unsupported parameter20 21// Firmware info addresses are universal22#define MSI_EC_FW_VERSION_ADDRESS 0xa023#define MSI_EC_FW_DATE_ADDRESS    0xac24#define MSI_EC_FW_TIME_ADDRESS    0xb425#define MSI_EC_FW_VERSION_LENGTH  1226#define MSI_EC_FW_DATE_LENGTH     827#define MSI_EC_FW_TIME_LENGTH     828 29struct msi_ec_charge_control_conf {30	int address;31	int offset_start;32	int offset_end;33	int range_min;34	int range_max;35};36 37struct msi_ec_webcam_conf {38	int address;39	int block_address;40	int bit;41};42 43struct msi_ec_fn_win_swap_conf {44	int address;45	int bit;46};47 48struct msi_ec_cooler_boost_conf {49	int address;50	int bit;51};52 53#define MSI_EC_MODE_NULL { NULL, 0 }54struct msi_ec_mode {55	const char *name;56	int value;57};58 59struct msi_ec_shift_mode_conf {60	int address;61	struct msi_ec_mode modes[5]; // fixed size for easier hard coding62};63 64struct msi_ec_super_battery_conf {65	int address;66	int mask;67};68 69struct msi_ec_fan_mode_conf {70	int address;71	struct msi_ec_mode modes[5]; // fixed size for easier hard coding72};73 74struct msi_ec_cpu_conf {75	int rt_temp_address;76	int rt_fan_speed_address; // realtime77	int rt_fan_speed_base_min;78	int rt_fan_speed_base_max;79	int bs_fan_speed_address; // basic80	int bs_fan_speed_base_min;81	int bs_fan_speed_base_max;82};83 84struct msi_ec_gpu_conf {85	int rt_temp_address;86	int rt_fan_speed_address; // realtime87};88 89struct msi_ec_led_conf {90	int micmute_led_address;91	int mute_led_address;92	int bit;93};94 95#define MSI_EC_KBD_BL_STATE_MASK 0x396struct msi_ec_kbd_bl_conf {97	int bl_mode_address;98	int bl_modes[2];99	int max_mode;100 101	int bl_state_address;102	int state_base_value;103	int max_state;104};105 106struct msi_ec_conf {107	const char * const *allowed_fw;108 109	struct msi_ec_charge_control_conf charge_control;110	struct msi_ec_webcam_conf         webcam;111	struct msi_ec_fn_win_swap_conf    fn_win_swap;112	struct msi_ec_cooler_boost_conf   cooler_boost;113	struct msi_ec_shift_mode_conf     shift_mode;114	struct msi_ec_super_battery_conf  super_battery;115	struct msi_ec_fan_mode_conf       fan_mode;116	struct msi_ec_cpu_conf            cpu;117	struct msi_ec_gpu_conf            gpu;118	struct msi_ec_led_conf            leds;119	struct msi_ec_kbd_bl_conf         kbd_bl;120};121 122#endif // _MSI_EC_H_123