-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dm: pmic: add s2mps11 PMIC I/O driver
This driver allows I/O operations on the Samsung S2MPS11 PMIC, which provides lots of LDO/BUCK outputs. To enable it, update defconfig with: - CONFIG_PMIC_S2MPS11 and additional, if were not defined: - CONFIG_CMD_PMIC - CONFIG_ERRNO_STR The binding info: doc/device-tree-bindings/pmic/s2mps11.txt Signed-off-by: Przemyslaw Marczak <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Anand Moon <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
- Loading branch information
1 parent
d64c8ad
commit 35d460f
Showing
5 changed files
with
203 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
SAMSUNG, S2MPS11 PMIC | ||
|
||
This file describes the binding info for the PMIC driver: | ||
- drivers/power/pmic/s2mps11.c | ||
|
||
Required properties: | ||
- compatible: "samsung,s2mps11-pmic" | ||
- reg = 0x66 | ||
|
||
With those two properties, the pmic device can be used for read/write only. | ||
|
||
Example: | ||
|
||
s2mps11@66 { | ||
compatible = "samsung,s2mps11-pmic"; | ||
reg = <0x66>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
/* | ||
* Copyright (C) 2015 Samsung Electronics | ||
* Przemyslaw Marczak <[email protected]> | ||
* | ||
* SPDX-License-Identifier: GPL-2.0+ | ||
*/ | ||
|
||
#include <common.h> | ||
#include <fdtdec.h> | ||
#include <errno.h> | ||
#include <dm.h> | ||
#include <i2c.h> | ||
#include <power/pmic.h> | ||
#include <power/s2mps11.h> | ||
|
||
DECLARE_GLOBAL_DATA_PTR; | ||
|
||
static int s2mps11_reg_count(struct udevice *dev) | ||
{ | ||
return S2MPS11_REG_COUNT; | ||
} | ||
|
||
static int s2mps11_write(struct udevice *dev, uint reg, const uint8_t *buff, | ||
int len) | ||
{ | ||
int ret; | ||
|
||
ret = dm_i2c_write(dev, reg, buff, len); | ||
if (ret) | ||
error("write error to device: %p register: %#x!", dev, reg); | ||
|
||
return ret; | ||
} | ||
|
||
static int s2mps11_read(struct udevice *dev, uint reg, uint8_t *buff, int len) | ||
{ | ||
int ret; | ||
|
||
ret = dm_i2c_read(dev, reg, buff, len); | ||
if (ret) | ||
error("read error from device: %p register: %#x!", dev, reg); | ||
|
||
return ret; | ||
} | ||
|
||
static struct dm_pmic_ops s2mps11_ops = { | ||
.reg_count = s2mps11_reg_count, | ||
.read = s2mps11_read, | ||
.write = s2mps11_write, | ||
}; | ||
|
||
static const struct udevice_id s2mps11_ids[] = { | ||
{ .compatible = "samsung,s2mps11-pmic" }, | ||
{ } | ||
}; | ||
|
||
U_BOOT_DRIVER(pmic_s2mps11) = { | ||
.name = "s2mps11_pmic", | ||
.id = UCLASS_PMIC, | ||
.of_match = s2mps11_ids, | ||
.ops = &s2mps11_ops, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
#ifndef __S2MPS11__H__ | ||
#define __S2MPS11__H__ | ||
|
||
enum s2mps11_reg { | ||
S2MPS11_REG_ID = 0, | ||
S2MPS11_REG_INT1, | ||
S2MPS11_REG_INT2, | ||
S2MPS11_REG_INT3, | ||
S2MPS11_REG_INT1M, | ||
S2MPS11_REG_INT2M, | ||
S2MPS11_REG_INT3M, | ||
S2MPS11_REG_STATUS1, | ||
S2MPS11_REG_STATUS2, | ||
S2MPS11_REG_OFFSRC, | ||
S2MPS11_REG_PWRONSRC, | ||
S2MPS11_REG_RTC_CTRL, | ||
S2MPS11_REG_CTRL1, | ||
S2MPS11_REG_ETC_TEST, | ||
S2MPS11_REG_RSVD3, | ||
S2MPS11_REG_BU_CHG, | ||
S2MPS11_REG_RAMP, | ||
S2MPS11_REG_RAMP_BUCK, | ||
S2MPS11_REG_LDO1_8, | ||
S2MPS11_REG_LDO9_16, | ||
S2MPS11_REG_LDO17_24, | ||
S2MPS11_REG_LDO25_32, | ||
S2MPS11_REG_LDO33_38, | ||
S2MPS11_REG_LDO1_8_OVC, | ||
S2MPS11_REG_LDO9_16_OVC, | ||
S2MPS11_REG_LDO17_24_OVC, | ||
S2MPS11_REG_LDO25_32_OVC, | ||
S2MPS11_REG_LDO33_38_OVC, | ||
S2MPS11_REG_RESERVED1, | ||
S2MPS11_REG_RESERVED2, | ||
S2MPS11_REG_RESERVED3, | ||
S2MPS11_REG_RESERVED4, | ||
S2MPS11_REG_RESERVED5, | ||
S2MPS11_REG_RESERVED6, | ||
S2MPS11_REG_RESERVED7, | ||
S2MPS11_REG_RESERVED8, | ||
S2MPS11_REG_WDRSTEN_CTRL, | ||
S2MPS11_REG_B1CTRL1, | ||
S2MPS11_REG_B1CTRL2, | ||
S2MPS11_REG_B2CTRL1, | ||
S2MPS11_REG_B2CTRL2, | ||
S2MPS11_REG_B3CTRL1, | ||
S2MPS11_REG_B3CTRL2, | ||
S2MPS11_REG_B4CTRL1, | ||
S2MPS11_REG_B4CTRL2, | ||
S2MPS11_REG_B5CTRL1, | ||
S2MPS11_REG_BUCK5_SW, | ||
S2MPS11_REG_B5CTRL2, | ||
S2MPS11_REG_B5CTRL3, | ||
S2MPS11_REG_B5CTRL4, | ||
S2MPS11_REG_B5CTRL5, | ||
S2MPS11_REG_B6CTRL1, | ||
S2MPS11_REG_B6CTRL2, | ||
S2MPS11_REG_B7CTRL1, | ||
S2MPS11_REG_B7CTRL2, | ||
S2MPS11_REG_B8CTRL1, | ||
S2MPS11_REG_B8CTRL2, | ||
S2MPS11_REG_B9CTRL1, | ||
S2MPS11_REG_B9CTRL2, | ||
S2MPS11_REG_B10CTRL1, | ||
S2MPS11_REG_B10CTRL2, | ||
S2MPS11_REG_L1CTRL, | ||
S2MPS11_REG_L2CTRL, | ||
S2MPS11_REG_L3CTRL, | ||
S2MPS11_REG_L4CTRL, | ||
S2MPS11_REG_L5CTRL, | ||
S2MPS11_REG_L6CTRL, | ||
S2MPS11_REG_L7CTRL, | ||
S2MPS11_REG_L8CTRL, | ||
S2MPS11_REG_L9CTRL, | ||
S2MPS11_REG_L10CTRL, | ||
S2MPS11_REG_L11CTRL, | ||
S2MPS11_REG_L12CTRL, | ||
S2MPS11_REG_L13CTRL, | ||
S2MPS11_REG_L14CTRL, | ||
S2MPS11_REG_L15CTRL, | ||
S2MPS11_REG_L16CTRL, | ||
S2MPS11_REG_L17CTRL, | ||
S2MPS11_REG_L18CTRL, | ||
S2MPS11_REG_L19CTRL, | ||
S2MPS11_REG_L20CTRL, | ||
S2MPS11_REG_L21CTRL, | ||
S2MPS11_REG_L22CTRL, | ||
S2MPS11_REG_L23CTRL, | ||
S2MPS11_REG_L24CTRL, | ||
S2MPS11_REG_L25CTRL, | ||
S2MPS11_REG_L26CTRL, | ||
S2MPS11_REG_L27CTRL, | ||
S2MPS11_REG_L28CTRL, | ||
S2MPS11_REG_L29CTRL, | ||
S2MPS11_REG_L30CTRL, | ||
S2MPS11_REG_L31CTRL, | ||
S2MPS11_REG_L32CTRL, | ||
S2MPS11_REG_L33CTRL, | ||
S2MPS11_REG_L34CTRL, | ||
S2MPS11_REG_L35CTRL, | ||
S2MPS11_REG_L36CTRL, | ||
S2MPS11_REG_L37CTRL, | ||
S2MPS11_REG_L38CTRL, | ||
S2MPS11_REG_COUNT, | ||
}; | ||
|
||
#define S2MPS11_LDO26_ENABLE 0xec | ||
|
||
#endif |