Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
fdaff15a
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
fdaff15a
编写于
9月 28, 2014
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'regulator/topic/sky81452' into regulator-drivers
Conflicts: drivers/regulator/Kconfig drivers/regulator/Makefile
上级
d1c3f7ca
9839d627
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
158 addition
and
0 deletion
+158
-0
Documentation/devicetree/bindings/regulator/sky81452-regulator.txt
...tion/devicetree/bindings/regulator/sky81452-regulator.txt
+16
-0
drivers/regulator/Kconfig
drivers/regulator/Kconfig
+11
-0
drivers/regulator/Makefile
drivers/regulator/Makefile
+1
-0
drivers/regulator/sky81452-regulator.c
drivers/regulator/sky81452-regulator.c
+130
-0
未找到文件。
Documentation/devicetree/bindings/regulator/sky81452-regulator.txt
0 → 100644
浏览文件 @
fdaff15a
SKY81452 voltage regulator
Required properties:
- any required generic properties defined in regulator.txt
Optional properties:
- any available generic properties defined in regulator.txt
Example:
regulator {
/* generic regulator properties */
regulator-name = "touch_en";
regulator-min-microvolt = <4500000>;
regulator-max-microvolt = <8000000>;
};
drivers/regulator/Kconfig
浏览文件 @
fdaff15a
...
@@ -502,6 +502,17 @@ config REGULATOR_S5M8767
...
@@ -502,6 +502,17 @@ config REGULATOR_S5M8767
via I2C bus. S5M8767A have 9 Bucks and 28 LDOs output and
via I2C bus. S5M8767A have 9 Bucks and 28 LDOs output and
supports DVS mode with 8bits of output voltage control.
supports DVS mode with 8bits of output voltage control.
config REGULATOR_SKY81452
tristate "Skyworks Solutions SKY81452 voltage regulator"
depends on SKY81452
help
This driver supports Skyworks SKY81452 voltage output regulator
via I2C bus. SKY81452 has one voltage linear regulator can be
programmed from 4.5V to 20V.
This driver can also be built as a module. If so, the module
will be called sky81452-regulator.
config REGULATOR_TI_ABB
config REGULATOR_TI_ABB
tristate "TI Adaptive Body Bias on-chip LDO"
tristate "TI Adaptive Body Bias on-chip LDO"
depends on ARCH_OMAP
depends on ARCH_OMAP
...
...
drivers/regulator/Makefile
浏览文件 @
fdaff15a
...
@@ -67,6 +67,7 @@ obj-$(CONFIG_REGULATOR_RC5T583) += rc5t583-regulator.o
...
@@ -67,6 +67,7 @@ obj-$(CONFIG_REGULATOR_RC5T583) += rc5t583-regulator.o
obj-$(CONFIG_REGULATOR_S2MPA01)
+=
s2mpa01.o
obj-$(CONFIG_REGULATOR_S2MPA01)
+=
s2mpa01.o
obj-$(CONFIG_REGULATOR_S2MPS11)
+=
s2mps11.o
obj-$(CONFIG_REGULATOR_S2MPS11)
+=
s2mps11.o
obj-$(CONFIG_REGULATOR_S5M8767)
+=
s5m8767.o
obj-$(CONFIG_REGULATOR_S5M8767)
+=
s5m8767.o
obj-$(CONFIG_REGULATOR_SKY81452)
+=
sky81452-regulator.o
obj-$(CONFIG_REGULATOR_STW481X_VMMC)
+=
stw481x-vmmc.o
obj-$(CONFIG_REGULATOR_STW481X_VMMC)
+=
stw481x-vmmc.o
obj-$(CONFIG_REGULATOR_TI_ABB)
+=
ti-abb-regulator.o
obj-$(CONFIG_REGULATOR_TI_ABB)
+=
ti-abb-regulator.o
obj-$(CONFIG_REGULATOR_TPS6105X)
+=
tps6105x-regulator.o
obj-$(CONFIG_REGULATOR_TPS6105X)
+=
tps6105x-regulator.o
...
...
drivers/regulator/sky81452-regulator.c
0 → 100644
浏览文件 @
fdaff15a
/*
* sky81452-regulator.c SKY81452 regulator driver
*
* Copyright 2014 Skyworks Solutions Inc.
* Author : Gyungoh Yoo <jack.yoo@skyworksinc.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/init.h>
#include <linux/err.h>
#include <linux/of.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/of_regulator.h>
/* registers */
#define SKY81452_REG1 0x01
#define SKY81452_REG3 0x03
/* bit mask */
#define SKY81452_LEN 0x40
#define SKY81452_LOUT 0x1F
static
struct
regulator_ops
sky81452_reg_ops
=
{
.
list_voltage
=
regulator_list_voltage_linear_range
,
.
map_voltage
=
regulator_map_voltage_linear_range
,
.
get_voltage_sel
=
regulator_get_voltage_sel_regmap
,
.
set_voltage_sel
=
regulator_set_voltage_sel_regmap
,
.
enable
=
regulator_enable_regmap
,
.
disable
=
regulator_disable_regmap
,
.
is_enabled
=
regulator_is_enabled_regmap
,
};
static
const
struct
regulator_linear_range
sky81452_reg_ranges
[]
=
{
REGULATOR_LINEAR_RANGE
(
4500000
,
0
,
14
,
250000
),
REGULATOR_LINEAR_RANGE
(
9000000
,
15
,
31
,
1000000
),
};
static
const
struct
regulator_desc
sky81452_reg
=
{
.
name
=
"LOUT"
,
.
ops
=
&
sky81452_reg_ops
,
.
type
=
REGULATOR_VOLTAGE
,
.
owner
=
THIS_MODULE
,
.
n_voltages
=
SKY81452_LOUT
+
1
,
.
linear_ranges
=
sky81452_reg_ranges
,
.
n_linear_ranges
=
ARRAY_SIZE
(
sky81452_reg_ranges
),
.
vsel_reg
=
SKY81452_REG3
,
.
vsel_mask
=
SKY81452_LOUT
,
.
enable_reg
=
SKY81452_REG1
,
.
enable_mask
=
SKY81452_LEN
,
};
#ifdef CONFIG_OF
static
struct
regulator_init_data
*
sky81452_reg_parse_dt
(
struct
device
*
dev
)
{
struct
regulator_init_data
*
init_data
;
struct
device_node
*
np
;
np
=
of_get_child_by_name
(
dev
->
parent
->
of_node
,
"regulator"
);
if
(
unlikely
(
!
np
))
{
dev_err
(
dev
,
"regulator node not found"
);
return
NULL
;
}
init_data
=
of_get_regulator_init_data
(
dev
,
np
);
of_node_put
(
np
);
return
init_data
;
}
#else
static
struct
regulator_init_data
*
sky81452_reg_parse_dt
(
struct
device
*
dev
)
{
return
ERR_PTR
(
-
EINVAL
);
}
#endif
static
int
sky81452_reg_probe
(
struct
platform_device
*
pdev
)
{
struct
device
*
dev
=
&
pdev
->
dev
;
const
struct
regulator_init_data
*
init_data
=
dev_get_platdata
(
dev
);
struct
regulator_config
config
=
{
};
struct
regulator_dev
*
rdev
;
if
(
!
init_data
)
{
init_data
=
sky81452_reg_parse_dt
(
dev
);
if
(
IS_ERR
(
init_data
))
return
PTR_ERR
(
init_data
);
}
config
.
dev
=
dev
;
config
.
init_data
=
init_data
;
config
.
of_node
=
dev
->
of_node
;
config
.
regmap
=
dev_get_drvdata
(
dev
->
parent
);
rdev
=
devm_regulator_register
(
dev
,
&
sky81452_reg
,
&
config
);
if
(
IS_ERR
(
rdev
))
return
PTR_ERR
(
rdev
);
platform_set_drvdata
(
pdev
,
rdev
);
return
0
;
}
static
struct
platform_driver
sky81452_reg_driver
=
{
.
driver
=
{
.
name
=
"sky81452-regulator"
,
},
.
probe
=
sky81452_reg_probe
,
};
module_platform_driver
(
sky81452_reg_driver
);
MODULE_DESCRIPTION
(
"Skyworks SKY81452 Regulator driver"
);
MODULE_AUTHOR
(
"Gyungoh Yoo <jack.yoo@skyworksinc.com>"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_VERSION
(
"1.0"
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录