Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
4ae7335d
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
4ae7335d
编写于
13年前
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'topic/interface' of
git://opensource.wolfsonmicro.com/regmap
into for-3.2
上级
69474147
069af897
无相关合并请求
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
61 addition
and
0 deletion
+61
-0
drivers/base/regmap/regmap.c
drivers/base/regmap/regmap.c
+9
-0
include/linux/regmap.h
include/linux/regmap.h
+52
-0
未找到文件。
drivers/base/regmap/regmap.c
浏览文件 @
4ae7335d
...
...
@@ -37,6 +37,11 @@ struct regmap {
void
*
work_buf
;
/* Scratch buffer used to format I/O */
struct
regmap_format
format
;
/* Buffer format */
const
struct
regmap_bus
*
bus
;
unsigned
int
max_register
;
bool
(
*
writeable_reg
)(
struct
device
*
dev
,
unsigned
int
reg
);
bool
(
*
readable_reg
)(
struct
device
*
dev
,
unsigned
int
reg
);
bool
(
*
volatile_reg
)(
struct
device
*
dev
,
unsigned
int
reg
);
};
static
void
regmap_format_4_12_write
(
struct
regmap
*
map
,
...
...
@@ -116,6 +121,10 @@ struct regmap *regmap_init(struct device *dev,
map
->
format
.
val_bytes
=
config
->
val_bits
/
8
;
map
->
dev
=
dev
;
map
->
bus
=
bus
;
map
->
max_register
=
config
->
max_register
;
map
->
writeable_reg
=
config
->
writeable_reg
;
map
->
readable_reg
=
config
->
readable_reg
;
map
->
volatile_reg
=
config
->
volatile_reg
;
switch
(
config
->
reg_bits
)
{
case
4
:
...
...
This diff is collapsed.
Click to expand it.
include/linux/regmap.h
浏览文件 @
4ae7335d
...
...
@@ -20,9 +20,61 @@
struct
i2c_client
;
struct
spi_device
;
/**
* Default value for a register. We use an array of structs rather
* than a simple array as many modern devices have very sparse
* register maps.
*
* @reg: Register address.
* @def: Register default value.
*/
struct
reg_default
{
unsigned
int
reg
;
unsigned
int
def
;
};
/**
* Configuration for the register map of a device.
*
* @reg_bits: Number of bits in a register address, mandatory.
* @val_bits: Number of bits in a register value, mandatory.
*
* @writeable_reg: Optional callback returning true if the register
* can be written to.
* @readable_reg: Optional callback returning true if the register
* can be read from.
* @volatile_reg: Optional callback returning true if the register
* value can't be cached.
* @precious_reg: Optional callback returning true if the rgister
* should not be read outside of a call from the driver
* (eg, a clear on read interrupt status register).
*
* @max_register: Optional, specifies the maximum valid register index.
* @reg_defaults: Power on reset values for registers (for use with
* register cache support).
* @num_reg_defaults: Number of elements in reg_defaults.
*
* @read_flag_mask: Mask to be set in the top byte of the register when doing
* a read.
* @write_flag_mask: Mask to be set in the top byte of the register when doing
* a write. If both read_flag_mask and write_flag_mask are
* empty the regmap_bus default masks are used.
*/
struct
regmap_config
{
int
reg_bits
;
int
val_bits
;
bool
(
*
writeable_reg
)(
struct
device
*
dev
,
unsigned
int
reg
);
bool
(
*
readable_reg
)(
struct
device
*
dev
,
unsigned
int
reg
);
bool
(
*
volatile_reg
)(
struct
device
*
dev
,
unsigned
int
reg
);
bool
(
*
precious_reg
)(
struct
device
*
dev
,
unsigned
int
reg
);
unsigned
int
max_register
;
struct
reg_default
*
reg_defaults
;
int
num_reg_defaults
;
u8
read_flag_mask
;
u8
write_flag_mask
;
};
typedef
int
(
*
regmap_hw_write
)(
struct
device
*
dev
,
const
void
*
data
,
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
反馈
建议
客服
返回
顶部