Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
61dfa65e
U
U-Boot.Mirror
项目概览
OS
/
U-Boot.Mirror
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
U-Boot.Mirror
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
61dfa65e
编写于
8月 14, 2015
作者:
T
Tom Rini
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.denx.de/u-boot-pmic
上级
dfcd23e3
1c1f6076
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
110 addition
and
2 deletion
+110
-2
drivers/power/pmic/Kconfig
drivers/power/pmic/Kconfig
+7
-0
drivers/power/pmic/pfuze100.c
drivers/power/pmic/pfuze100.c
+96
-0
drivers/power/pmic/pmic_pfuze100.c
drivers/power/pmic/pmic_pfuze100.c
+1
-1
include/power/pfuze100_pmic.h
include/power/pfuze100_pmic.h
+6
-1
未找到文件。
drivers/power/pmic/Kconfig
浏览文件 @
61dfa65e
...
@@ -10,6 +10,13 @@ config DM_PMIC
...
@@ -10,6 +10,13 @@ config DM_PMIC
- 'drivers/power/pmic/pmic-uclass.c'
- 'drivers/power/pmic/pmic-uclass.c'
- 'include/power/pmic.h'
- 'include/power/pmic.h'
config DM_PMIC_PFUZE100
bool "Enable Driver Model for PMIC PFUZE100"
depends on DM_PMIC
---help---
This config enables implementation of driver-model pmic uclass features
for PMIC PFUZE100. The driver implements read/write operations.
config DM_PMIC_MAX77686
config DM_PMIC_MAX77686
bool "Enable Driver Model for PMIC MAX77686"
bool "Enable Driver Model for PMIC MAX77686"
depends on DM_PMIC
depends on DM_PMIC
...
...
drivers/power/pmic/pfuze100.c
0 → 100644
浏览文件 @
61dfa65e
/*
* Copyright (C) 2015 Freescale Semiconductor, Inc
* Peng Fan <Peng.Fan@freescale.com>
*
* 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/regulator.h>
#include <power/pfuze100_pmic.h>
DECLARE_GLOBAL_DATA_PTR
;
static
const
struct
pmic_child_info
pmic_children_info
[]
=
{
/* sw[x], swbst */
{
.
prefix
=
"s"
,
.
driver
=
PFUZE100_REGULATOR_DRIVER
},
/* vgen[x], vsnvs, vcc, v33, vcc_sd */
{
.
prefix
=
"v"
,
.
driver
=
PFUZE100_REGULATOR_DRIVER
},
{
},
};
static
int
pfuze100_reg_count
(
struct
udevice
*
dev
)
{
return
PFUZE100_NUM_OF_REGS
;
}
static
int
pfuze100_write
(
struct
udevice
*
dev
,
uint
reg
,
const
uint8_t
*
buff
,
int
len
)
{
if
(
dm_i2c_write
(
dev
,
reg
,
buff
,
len
))
{
error
(
"write error to device: %p register: %#x!"
,
dev
,
reg
);
return
-
EIO
;
}
return
0
;
}
static
int
pfuze100_read
(
struct
udevice
*
dev
,
uint
reg
,
uint8_t
*
buff
,
int
len
)
{
if
(
dm_i2c_read
(
dev
,
reg
,
buff
,
len
))
{
error
(
"read error from device: %p register: %#x!"
,
dev
,
reg
);
return
-
EIO
;
}
return
0
;
}
static
int
pfuze100_bind
(
struct
udevice
*
dev
)
{
int
children
;
int
regulators_node
;
const
void
*
blob
=
gd
->
fdt_blob
;
regulators_node
=
fdt_subnode_offset
(
blob
,
dev
->
of_offset
,
"regulators"
);
if
(
regulators_node
<=
0
)
{
debug
(
"%s: %s regulators subnode not found!"
,
__func__
,
dev
->
name
);
return
-
ENXIO
;
}
debug
(
"%s: '%s' - found regulators subnode
\n
"
,
__func__
,
dev
->
name
);
children
=
pmic_bind_children
(
dev
,
regulators_node
,
pmic_children_info
);
if
(
!
children
)
debug
(
"%s: %s - no child found
\n
"
,
__func__
,
dev
->
name
);
/* Always return success for this device */
return
0
;
}
static
struct
dm_pmic_ops
pfuze100_ops
=
{
.
reg_count
=
pfuze100_reg_count
,
.
read
=
pfuze100_read
,
.
write
=
pfuze100_write
,
};
static
const
struct
udevice_id
pfuze100_ids
[]
=
{
{
.
compatible
=
"fsl,pfuze100"
,
.
data
=
PFUZE100
,
},
{
.
compatible
=
"fsl,pfuze200"
,
.
data
=
PFUZE200
,
},
{
.
compatible
=
"fsl,pfuze3000"
,
.
data
=
PFUZE3000
,
},
{
}
};
U_BOOT_DRIVER
(
pmic_pfuze100
)
=
{
.
name
=
"pfuze100 pmic"
,
.
id
=
UCLASS_PMIC
,
.
of_match
=
pfuze100_ids
,
.
bind
=
pfuze100_bind
,
.
ops
=
&
pfuze100_ops
,
};
drivers/power/pmic/pmic_pfuze100.c
浏览文件 @
61dfa65e
...
@@ -23,7 +23,7 @@ int power_pfuze100_init(unsigned char bus)
...
@@ -23,7 +23,7 @@ int power_pfuze100_init(unsigned char bus)
p
->
name
=
name
;
p
->
name
=
name
;
p
->
interface
=
PMIC_I2C
;
p
->
interface
=
PMIC_I2C
;
p
->
number_of_regs
=
P
MIC
_NUM_OF_REGS
;
p
->
number_of_regs
=
P
FUZE100
_NUM_OF_REGS
;
p
->
hw
.
i2c
.
addr
=
CONFIG_POWER_PFUZE100_I2C_ADDR
;
p
->
hw
.
i2c
.
addr
=
CONFIG_POWER_PFUZE100_I2C_ADDR
;
p
->
hw
.
i2c
.
tx_num
=
1
;
p
->
hw
.
i2c
.
tx_num
=
1
;
p
->
bus
=
bus
;
p
->
bus
=
bus
;
...
...
include/power/pfuze100_pmic.h
浏览文件 @
61dfa65e
...
@@ -8,6 +8,11 @@
...
@@ -8,6 +8,11 @@
#ifndef __PFUZE100_PMIC_H_
#ifndef __PFUZE100_PMIC_H_
#define __PFUZE100_PMIC_H_
#define __PFUZE100_PMIC_H_
/* Device ID */
enum
{
PFUZE100
=
0x10
,
PFUZE200
=
0x11
,
PFUZE3000
=
0x30
};
#define PFUZE100_REGULATOR_DRIVER "pfuze100_regulator"
/* PFUZE100 registers */
/* PFUZE100 registers */
enum
{
enum
{
PFUZE100_DEVICEID
=
0x00
,
PFUZE100_DEVICEID
=
0x00
,
...
@@ -54,7 +59,7 @@ enum {
...
@@ -54,7 +59,7 @@ enum {
PFUZE100_VGEN5VOL
=
0x70
,
PFUZE100_VGEN5VOL
=
0x70
,
PFUZE100_VGEN6VOL
=
0x71
,
PFUZE100_VGEN6VOL
=
0x71
,
P
MIC
_NUM_OF_REGS
=
0x7f
,
P
FUZE100
_NUM_OF_REGS
=
0x7f
,
};
};
/* Registor offset based on VOLT register */
/* Registor offset based on VOLT register */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录