mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-19 15:07:37 +07:00
Merge series "regulator: da9211: support changing modes" from Anand K Mistry <amistry@google.com>:
This patchset adds support for being able to change regulator modes for the da9211 regulator. This is needed to allow the voltage scaling support in the MT8173 SoC to be used in the elm (Acer Chromebook R13) and hana (several Lenovo Chromebooks) devices. Anand K Mistry (4): regulator: da9211: Move buck modes into header file dt-bindings: regulator: da9211: Document allowed modes regulator: da9211: Implement of_map_mode arm64: dts: mediatek: Update allowed regulator modes for elm boards .../devicetree/bindings/regulator/da9211.txt | 4 +++ arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi | 4 ++- drivers/regulator/da9211-regulator.c | 30 +++++++++++++++---- .../regulator/dlg,da9211-regulator.h | 16 ++++++++++ 4 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 include/dt-bindings/regulator/dlg,da9211-regulator.h -- 2.27.0.212.ge8ba1cc988-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
This commit is contained in:
commit
c9b5e85aeb
@ -15,6 +15,8 @@ Required properties:
|
||||
Optional properties:
|
||||
- enable-gpios: platform gpio for control of BUCKA/BUCKB.
|
||||
- Any optional property defined in regulator.txt
|
||||
- regulator-initial-mode and regulator-allowed-modes may be specified using
|
||||
mode values from dt-bindings/regulator/dlg,da9211-regulator.h
|
||||
|
||||
Example 1) DA9211
|
||||
pmic: da9211@68 {
|
||||
@ -30,6 +32,8 @@ Example 1) DA9211
|
||||
regulator-min-microamp = <2000000>;
|
||||
regulator-max-microamp = <5000000>;
|
||||
enable-gpios = <&gpio 27 0>;
|
||||
regulator-allowed-modes = <DA9211_BUCK_MODE_SYNC
|
||||
DA9211_BUCK_MODE_AUTO>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/regulator/of_regulator.h>
|
||||
#include <linux/regulator/da9211.h>
|
||||
#include <dt-bindings/regulator/dlg,da9211-regulator.h>
|
||||
#include "da9211-regulator.h"
|
||||
|
||||
/* DEVICE IDs */
|
||||
@ -24,10 +25,6 @@
|
||||
#define DA9213_DEVICE_ID 0x23
|
||||
#define DA9215_DEVICE_ID 0x24
|
||||
|
||||
#define DA9211_BUCK_MODE_SLEEP 1
|
||||
#define DA9211_BUCK_MODE_SYNC 2
|
||||
#define DA9211_BUCK_MODE_AUTO 3
|
||||
|
||||
/* DA9211 REGULATOR IDs */
|
||||
#define DA9211_ID_BUCKA 0
|
||||
#define DA9211_ID_BUCKB 1
|
||||
@ -89,6 +86,20 @@ static const int da9215_current_limits[] = {
|
||||
5600000, 5800000, 6000000, 6200000, 6400000, 6600000, 6800000, 7000000
|
||||
};
|
||||
|
||||
static unsigned int da9211_map_buck_mode(unsigned int mode)
|
||||
{
|
||||
switch (mode) {
|
||||
case DA9211_BUCK_MODE_SLEEP:
|
||||
return REGULATOR_MODE_STANDBY;
|
||||
case DA9211_BUCK_MODE_SYNC:
|
||||
return REGULATOR_MODE_FAST;
|
||||
case DA9211_BUCK_MODE_AUTO:
|
||||
return REGULATOR_MODE_NORMAL;
|
||||
default:
|
||||
return REGULATOR_MODE_INVALID;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int da9211_buck_get_mode(struct regulator_dev *rdev)
|
||||
{
|
||||
int id = rdev_get_id(rdev);
|
||||
@ -236,6 +247,7 @@ static const struct regulator_ops da9211_buck_ops = {
|
||||
.vsel_reg = DA9211_REG_VBUCKA_A + DA9211_ID_##_id * 2,\
|
||||
.vsel_mask = DA9211_VBUCK_MASK,\
|
||||
.owner = THIS_MODULE,\
|
||||
.of_map_mode = da9211_map_buck_mode,\
|
||||
}
|
||||
|
||||
static struct regulator_desc da9211_regulators[] = {
|
||||
@ -245,8 +257,14 @@ static struct regulator_desc da9211_regulators[] = {
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static struct of_regulator_match da9211_matches[] = {
|
||||
[DA9211_ID_BUCKA] = { .name = "BUCKA" },
|
||||
[DA9211_ID_BUCKB] = { .name = "BUCKB" },
|
||||
[DA9211_ID_BUCKA] = {
|
||||
.name = "BUCKA",
|
||||
.desc = &da9211_regulators[DA9211_ID_BUCKA],
|
||||
},
|
||||
[DA9211_ID_BUCKB] = {
|
||||
.name = "BUCKB",
|
||||
.desc = &da9211_regulators[DA9211_ID_BUCKB],
|
||||
},
|
||||
};
|
||||
|
||||
static struct da9211_pdata *da9211_parse_regulators_dt(
|
||||
|
16
include/dt-bindings/regulator/dlg,da9211-regulator.h
Normal file
16
include/dt-bindings/regulator/dlg,da9211-regulator.h
Normal file
@ -0,0 +1,16 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
|
||||
#ifndef _DT_BINDINGS_REGULATOR_DLG_DA9211_H
|
||||
#define _DT_BINDINGS_REGULATOR_DLG_DA9211_H
|
||||
|
||||
/*
|
||||
* These buck mode constants may be used to specify values in device tree
|
||||
* properties (e.g. regulator-initial-mode, regulator-allowed-modes).
|
||||
* A description of the following modes is in the manufacturers datasheet.
|
||||
*/
|
||||
|
||||
#define DA9211_BUCK_MODE_SLEEP 1
|
||||
#define DA9211_BUCK_MODE_SYNC 2
|
||||
#define DA9211_BUCK_MODE_AUTO 3
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user