1 /* SPDX-License-Identifier: GPL-2.0
3 * Copyright (C) 2020 Gateworks Corporation
5 #ifndef __LINUX_MFD_GSC_H_
6 #define __LINUX_MFD_GSC_H_
8 #include <linux/regmap.h>
10 /* Device Addresses */
12 #define GSC_UPDATE 0x21
14 #define GSC_HWMON 0x29
15 #define GSC_EEPROM0 0x50
16 #define GSC_EEPROM1 0x51
17 #define GSC_EEPROM2 0x52
18 #define GSC_EEPROM3 0x53
21 /* Register offsets */
27 GSC_IRQ_STATUS = 0x0A,
28 GSC_IRQ_ENABLE = 0x0B,
35 #define GSC_CTRL_0_PB_HARD_RESET 0
36 #define GSC_CTRL_0_PB_CLEAR_SECURE_KEY 1
37 #define GSC_CTRL_0_PB_SOFT_POWER_DOWN 2
38 #define GSC_CTRL_0_PB_BOOT_ALTERNATE 3
39 #define GSC_CTRL_0_PERFORM_CRC 4
40 #define GSC_CTRL_0_TAMPER_DETECT 5
41 #define GSC_CTRL_0_SWITCH_HOLD 6
43 #define GSC_CTRL_1_SLEEP_ENABLE 0
44 #define GSC_CTRL_1_SLEEP_ACTIVATE 1
45 #define GSC_CTRL_1_SLEEP_ADD 2
46 #define GSC_CTRL_1_SLEEP_NOWAKEPB 3
47 #define GSC_CTRL_1_WDT_TIME 4
48 #define GSC_CTRL_1_WDT_ENABLE 5
49 #define GSC_CTRL_1_SWITCH_BOOT_ENABLE 6
50 #define GSC_CTRL_1_SWITCH_BOOT_CLEAR 7
53 #define GSC_IRQ_KEY_ERASED 1
54 #define GSC_IRQ_EEPROM_WP 2
55 #define GSC_IRQ_RESV 3
56 #define GSC_IRQ_GPIO 4
57 #define GSC_IRQ_TAMPER 5
58 #define GSC_IRQ_WDT_TIMEOUT 6
59 #define GSC_IRQ_SWITCH_HOLD 7
61 int gsc_read(void *context, unsigned int reg, unsigned int *val);
62 int gsc_write(void *context, unsigned int reg, unsigned int val);
67 struct i2c_client *i2c; /* 0x20: interrupt controller, WDT */
68 struct i2c_client *i2c_hwmon; /* 0x29: hwmon, fan controller */
70 struct regmap *regmap;
76 #endif /* __LINUX_MFD_GSC_H_ */