/* SPDX-License-Identifier: GPL-2.0-or-later */
/* Copyright (C) 2018 ROHM Semiconductors */
#ifndef __LINUX_MFD_ROHM_H__
#define __LINUX_MFD_ROHM_H__
#include <linux/regmap.h>
#include <linux/regulator/driver.h>
enum rohm_chip_type {
ROHM_CHIP_TYPE_BD9571,
ROHM_CHIP_TYPE_BD9573,
ROHM_CHIP_TYPE_BD9574,
ROHM_CHIP_TYPE_BD9576,
ROHM_CHIP_TYPE_BD71815,
ROHM_CHIP_TYPE_BD71828,
ROHM_CHIP_TYPE_BD71837,
ROHM_CHIP_TYPE_BD71847,
ROHM_CHIP_TYPE_BD96801,
ROHM_CHIP_TYPE_BD96802,
ROHM_CHIP_TYPE_BD96805,
ROHM_CHIP_TYPE_BD96806,
ROHM_CHIP_TYPE_AMOUNT
};
struct rohm_regmap_dev {
struct device *dev;
struct regmap *regmap;
};
#define ROHM_DVS_LEVEL_RUN BIT(0 )
#define ROHM_DVS_LEVEL_IDLE BIT(1 )
#define ROHM_DVS_LEVEL_SUSPEND BIT(2 )
#define ROHM_DVS_LEVEL_LPSR BIT(3 )
#define ROHM_DVS_LEVEL_SNVS BIT(4 )
#define ROHM_DVS_LEVEL_VALID_AMOUNT 5
#define ROHM_DVS_LEVEL_UNKNOWN 0
/**
* struct rohm_dvs_config - dynamic voltage scaling register descriptions
*
* @ level_map : bitmap representing supported run - levels for this
* regulator
* @ run_reg : register address for regulator config at ' run ' state
* @ run_mask : value mask for regulator voltages at ' run ' state
* @ run_on_mask : enable mask for regulator at ' run ' state
* @ idle_reg : register address for regulator config at ' idle ' state
* @ idle_mask : value mask for regulator voltages at ' idle ' state
* @ idle_on_mask : enable mask for regulator at ' idle ' state
* @ suspend_reg : register address for regulator config at ' suspend ' state
* @ suspend_mask : value mask for regulator voltages at ' suspend ' state
* @ suspend_on_mask : enable mask for regulator at ' suspend ' state
* @ lpsr_reg : register address for regulator config at ' lpsr ' state
* @ lpsr_mask : value mask for regulator voltages at ' lpsr ' state
* @ lpsr_on_mask : enable mask for regulator at ' lpsr ' state
*
* Description of ROHM PMICs voltage configuration registers for different
* system states . This is used to correctly configure the PMIC at startup
* based on values read from DT .
*/
struct rohm_dvs_config {
uint64_t level_map;
unsigned int run_reg;
unsigned int run_mask;
unsigned int run_on_mask;
unsigned int idle_reg;
unsigned int idle_mask;
unsigned int idle_on_mask;
unsigned int suspend_reg;
unsigned int suspend_mask;
unsigned int suspend_on_mask;
unsigned int lpsr_reg;
unsigned int lpsr_mask;
unsigned int lpsr_on_mask;
unsigned int snvs_reg;
unsigned int snvs_mask;
unsigned int snvs_on_mask;
};
#if IS_ENABLED(CONFIG_REGULATOR_ROHM)
int rohm_regulator_set_dvs_levels(const struct rohm_dvs_config *dvs,
struct device_node *np,
const struct regulator_desc *desc,
struct regmap *regmap);
int rohm_regulator_set_voltage_sel_restricted(struct regulator_dev *rdev,
unsigned int sel);
#endif
#endif
Messung V0.5 in Prozent C=97 H=100 G=98
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-09-30)
¤
*© Formatika GbR, Deutschland