Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
0fe484b8
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0fe484b8
编写于
7月 06, 2022
作者:
许
许文强
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
注释对齐
Signed-off-by:
N
许文强
<
wqxuy@isoftstone.com
>
上级
6c7f6d42
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
14 deletion
+14
-14
zh-cn/device-dev/driver/driver-platform-spi-develop.md
zh-cn/device-dev/driver/driver-platform-spi-develop.md
+14
-14
未找到文件。
zh-cn/device-dev/driver/driver-platform-spi-develop.md
浏览文件 @
0fe484b8
...
...
@@ -90,7 +90,7 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
platform :: host {
hostName = "platform_host";
priority = 50;
device_spi :: device { //为每一个 SPI 控制器配置一个HDF设备节点
device_spi :: device {
//为每一个 SPI 控制器配置一个HDF设备节点
device0 :: deviceNode {
policy = 1;
priority = 60;
...
...
@@ -104,8 +104,8 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
priority = 60;
permission = 0644;
moduleName = "HDF_PLATFORM_SPI"; // 【必要】用于指定驱动名称,该字段的值必须和驱动入口结构的moduleName值一致
serviceName = "HDF_PLATFORM_SPI_1"; // 【必要且唯一】驱动对外发布服务的名称
deviceMatchAttr = "hisilicon_hi35xx_spi_1";// 需要与设备hcs文件中的match_attr匹配
serviceName = "HDF_PLATFORM_SPI_1";
// 【必要且唯一】驱动对外发布服务的名称
deviceMatchAttr = "hisilicon_hi35xx_spi_1";
// 需要与设备hcs文件中的match_attr匹配
}
...
}
...
...
@@ -294,10 +294,10 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
int32_t ret;
struct SpiCntlr *cntlr = NULL;
...
cntlr = SpiCntlrFromDevice(device);// 这里有HdfDeviceObject到SpiCntlr的强制转化,通过service成员,赋值见Bind函数
cntlr = SpiCntlrFromDevice(device);
// 这里有HdfDeviceObject到SpiCntlr的强制转化,通过service成员,赋值见Bind函数
// return (device == NULL) ? NULL : (struct SpiCntlr *)device->service;
...
ret = Pl022Init(cntlr, device);// 【必要】实例化厂商自定义操作对象,示例见下
ret = Pl022Init(cntlr, device);
// 【必要】实例化厂商自定义操作对象,示例见下
...
ret = Pl022Probe(cntlr->priv);
...
...
...
@@ -318,15 +318,15 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
// 计算最大,最小速度对应的频率
pl022->maxSpeedHz = (pl022->clkRate) / ((SCR_MIN + 1) * CPSDVSR_MIN);
pl022->minSpeedHz = (pl022->clkRate) / ((SCR_MAX + 1) * CPSDVSR_MAX);
DListHeadInit(&pl022->deviceList);// 初始化DList链表
pl022->cntlr = cntlr;
// 使Pl022与SpiCntlr可以相互转化的前提
cntlr->priv = pl022; // 使Pl022与SpiCntlr可以相互转化的前提
cntlr->busNum = pl022->busNum; // 给SpiCntlr的busNum赋值
cntlr->method = &g_method; // SpiCntlrMethod的实例化对象的挂载
DListHeadInit(&pl022->deviceList);
// 初始化DList链表
pl022->cntlr = cntlr; // 使Pl022与SpiCntlr可以相互转化的前提
cntlr->priv = pl022;
// 使Pl022与SpiCntlr可以相互转化的前提
cntlr->busNum = pl022->busNum;
// 给SpiCntlr的busNum赋值
cntlr->method = &g_method;
// SpiCntlrMethod的实例化对象的挂载
...
ret = Pl022CreatAndInitDevice(pl022);
if (ret != 0) {
Pl022Release(pl022);
// 初始化失败就释放Pl022对象
Pl022Release(pl022); // 初始化失败就释放Pl022对象
return ret;
}
return 0;
...
...
@@ -352,11 +352,11 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
{
struct SpiCntlr *cntlr = NULL;
...
cntlr = SpiCntlrFromDevice(device);// 这里有HdfDeviceObject到SpiCntlr的强制转化,通过service成员,赋值见Bind函数
// return (device==NULL) ?NULL:(struct SpiCntlr *)device->service;
cntlr = SpiCntlrFromDevice(device);
// 这里有HdfDeviceObject到SpiCntlr的强制转化,通过service成员,赋值见Bind函数
// return (device==NULL) ?NULL:(struct SpiCntlr *)device->service;
...
if (cntlr->priv != NULL) {
Pl022Remove((struct Pl022 *)cntlr->priv);// 这里有SpiCntlr到Pl022的强制转化
Pl022Remove((struct Pl022 *)cntlr->priv);
// 这里有SpiCntlr到Pl022的强制转化
}
SpiCntlrDestroy(cntlr); // 释放Pl022对象
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录