77 lines
1.8 KiB
C
77 lines
1.8 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0
|
||
|
*
|
||
|
* Copyright (C) 2020 Gateworks Corporation
|
||
|
*/
|
||
|
#ifndef __LINUX_MFD_GSC_H_
|
||
|
#define __LINUX_MFD_GSC_H_
|
||
|
|
||
|
#include <linux/regmap.h>
|
||
|
|
||
|
/* Device Addresses */
|
||
|
#define GSC_MISC 0x20
|
||
|
#define GSC_UPDATE 0x21
|
||
|
#define GSC_GPIO 0x23
|
||
|
#define GSC_HWMON 0x29
|
||
|
#define GSC_EEPROM0 0x50
|
||
|
#define GSC_EEPROM1 0x51
|
||
|
#define GSC_EEPROM2 0x52
|
||
|
#define GSC_EEPROM3 0x53
|
||
|
#define GSC_RTC 0x68
|
||
|
|
||
|
/* Register offsets */
|
||
|
enum {
|
||
|
GSC_CTRL_0 = 0x00,
|
||
|
GSC_CTRL_1 = 0x01,
|
||
|
GSC_TIME = 0x02,
|
||
|
GSC_TIME_ADD = 0x06,
|
||
|
GSC_IRQ_STATUS = 0x0A,
|
||
|
GSC_IRQ_ENABLE = 0x0B,
|
||
|
GSC_FW_CRC = 0x0C,
|
||
|
GSC_FW_VER = 0x0E,
|
||
|
GSC_WP = 0x0F,
|
||
|
};
|
||
|
|
||
|
/* Bit definitions */
|
||
|
#define GSC_CTRL_0_PB_HARD_RESET 0
|
||
|
#define GSC_CTRL_0_PB_CLEAR_SECURE_KEY 1
|
||
|
#define GSC_CTRL_0_PB_SOFT_POWER_DOWN 2
|
||
|
#define GSC_CTRL_0_PB_BOOT_ALTERNATE 3
|
||
|
#define GSC_CTRL_0_PERFORM_CRC 4
|
||
|
#define GSC_CTRL_0_TAMPER_DETECT 5
|
||
|
#define GSC_CTRL_0_SWITCH_HOLD 6
|
||
|
|
||
|
#define GSC_CTRL_1_SLEEP_ENABLE 0
|
||
|
#define GSC_CTRL_1_SLEEP_ACTIVATE 1
|
||
|
#define GSC_CTRL_1_SLEEP_ADD 2
|
||
|
#define GSC_CTRL_1_SLEEP_NOWAKEPB 3
|
||
|
#define GSC_CTRL_1_WDT_TIME 4
|
||
|
#define GSC_CTRL_1_WDT_ENABLE 5
|
||
|
#define GSC_CTRL_1_SWITCH_BOOT_ENABLE 6
|
||
|
#define GSC_CTRL_1_SWITCH_BOOT_CLEAR 7
|
||
|
|
||
|
#define GSC_IRQ_PB 0
|
||
|
#define GSC_IRQ_KEY_ERASED 1
|
||
|
#define GSC_IRQ_EEPROM_WP 2
|
||
|
#define GSC_IRQ_RESV 3
|
||
|
#define GSC_IRQ_GPIO 4
|
||
|
#define GSC_IRQ_TAMPER 5
|
||
|
#define GSC_IRQ_WDT_TIMEOUT 6
|
||
|
#define GSC_IRQ_SWITCH_HOLD 7
|
||
|
|
||
|
int gsc_read(void *context, unsigned int reg, unsigned int *val);
|
||
|
int gsc_write(void *context, unsigned int reg, unsigned int val);
|
||
|
|
||
|
struct gsc_dev {
|
||
|
struct device *dev;
|
||
|
|
||
|
struct i2c_client *i2c; /* 0x20: interrupt controller, WDT */
|
||
|
struct i2c_client *i2c_hwmon; /* 0x29: hwmon, fan controller */
|
||
|
|
||
|
struct regmap *regmap;
|
||
|
|
||
|
unsigned int fwver;
|
||
|
unsigned short fwcrc;
|
||
|
};
|
||
|
|
||
|
#endif /* __LINUX_MFD_GSC_H_ */
|