mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
49f661ba99
The previous version of this driver included wildcards in file names and descriptions. This patch renames the driver to only support MAX5970 and MAX5978, which are the only chips that the driver actually supports. Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com> Link: https://lore.kernel.org/r/20230427113046.3971425-1-Naresh.Solanki@9elements.com Signed-off-by: Lee Jones <lee@kernel.org>
96 lines
2.7 KiB
C
96 lines
2.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Device driver for regulators in MAX5970 and MAX5978 IC
|
|
*
|
|
* Copyright (c) 2022 9elements GmbH
|
|
*
|
|
* Author: Patrick Rudolph <patrick.rudolph@9elements.com>
|
|
*/
|
|
|
|
#ifndef _MFD_MAX5970_H
|
|
#define _MFD_MAX5970_H
|
|
|
|
#include <linux/regmap.h>
|
|
|
|
#define MAX5970_NUM_SWITCHES 2
|
|
#define MAX5978_NUM_SWITCHES 1
|
|
#define MAX5970_NUM_LEDS 4
|
|
|
|
struct max5970_data {
|
|
int num_switches;
|
|
u32 irng[MAX5970_NUM_SWITCHES];
|
|
u32 mon_rng[MAX5970_NUM_SWITCHES];
|
|
u32 shunt_micro_ohms[MAX5970_NUM_SWITCHES];
|
|
};
|
|
|
|
enum max5970_chip_type {
|
|
TYPE_MAX5978 = 1,
|
|
TYPE_MAX5970,
|
|
};
|
|
|
|
#define MAX5970_REG_CURRENT_L(ch) (0x01 + (ch) * 4)
|
|
#define MAX5970_REG_CURRENT_H(ch) (0x00 + (ch) * 4)
|
|
#define MAX5970_REG_VOLTAGE_L(ch) (0x03 + (ch) * 4)
|
|
#define MAX5970_REG_VOLTAGE_H(ch) (0x02 + (ch) * 4)
|
|
#define MAX5970_REG_MON_RANGE 0x18
|
|
#define MAX5970_MON_MASK 0x3
|
|
#define MAX5970_MON(reg, ch) (((reg) >> ((ch) * 2)) & MAX5970_MON_MASK)
|
|
#define MAX5970_MON_MAX_RANGE_UV 16000000
|
|
|
|
#define MAX5970_REG_CH_UV_WARN_H(ch) (0x1A + (ch) * 10)
|
|
#define MAX5970_REG_CH_UV_WARN_L(ch) (0x1B + (ch) * 10)
|
|
#define MAX5970_REG_CH_UV_CRIT_H(ch) (0x1C + (ch) * 10)
|
|
#define MAX5970_REG_CH_UV_CRIT_L(ch) (0x1D + (ch) * 10)
|
|
#define MAX5970_REG_CH_OV_WARN_H(ch) (0x1E + (ch) * 10)
|
|
#define MAX5970_REG_CH_OV_WARN_L(ch) (0x1F + (ch) * 10)
|
|
#define MAX5970_REG_CH_OV_CRIT_H(ch) (0x20 + (ch) * 10)
|
|
#define MAX5970_REG_CH_OV_CRIT_L(ch) (0x21 + (ch) * 10)
|
|
|
|
#define MAX5970_VAL2REG_H(x) (((x) >> 2) & 0xFF)
|
|
#define MAX5970_VAL2REG_L(x) ((x) & 0x3)
|
|
|
|
#define MAX5970_REG_DAC_FAST(ch) (0x2E + (ch))
|
|
|
|
#define MAX5970_FAST2SLOW_RATIO 200
|
|
|
|
#define MAX5970_REG_STATUS0 0x31
|
|
#define MAX5970_CB_IFAULTF(ch) (1 << (ch))
|
|
#define MAX5970_CB_IFAULTS(ch) (1 << ((ch) + 4))
|
|
|
|
#define MAX5970_REG_STATUS1 0x32
|
|
#define STATUS1_PROT_MASK 0x3
|
|
#define STATUS1_PROT(reg) \
|
|
(((reg) >> 6) & STATUS1_PROT_MASK)
|
|
#define STATUS1_PROT_SHUTDOWN 0
|
|
#define STATUS1_PROT_CLEAR_PG 1
|
|
#define STATUS1_PROT_ALERT_ONLY 2
|
|
|
|
#define MAX5970_REG_STATUS2 0x33
|
|
#define MAX5970_IRNG_MASK 0x3
|
|
#define MAX5970_IRNG(reg, ch) \
|
|
(((reg) >> ((ch) * 2)) & MAX5970_IRNG_MASK)
|
|
|
|
#define MAX5970_REG_STATUS3 0x34
|
|
#define MAX5970_STATUS3_ALERT BIT(4)
|
|
#define MAX5970_STATUS3_PG(ch) BIT(ch)
|
|
|
|
#define MAX5970_REG_FAULT0 0x35
|
|
#define UV_STATUS_WARN(ch) (1 << (ch))
|
|
#define UV_STATUS_CRIT(ch) (1 << ((ch) + 4))
|
|
|
|
#define MAX5970_REG_FAULT1 0x36
|
|
#define OV_STATUS_WARN(ch) (1 << (ch))
|
|
#define OV_STATUS_CRIT(ch) (1 << ((ch) + 4))
|
|
|
|
#define MAX5970_REG_FAULT2 0x37
|
|
#define OC_STATUS_WARN(ch) (1 << (ch))
|
|
|
|
#define MAX5970_REG_CHXEN 0x3b
|
|
#define CHXEN(ch) (3 << ((ch) * 2))
|
|
|
|
#define MAX5970_REG_LED_FLASH 0x43
|
|
|
|
#define MAX_REGISTERS 0x49
|
|
#define ADC_MASK 0x3FF
|
|
|
|
#endif /* _MFD_MAX5970_H */
|