代码拉取完成,页面将自动刷新
531
添加rt_driver相关代码
已合并
拉取/合并请求描述:
[
增加rt_driver完全兼容以前的device模型以及操作方法
以下是网卡驱动的一个实例:
int imx6ull_eth_probe(struct rt_device *dev)
{
struct dtb_node *fdt_node = (struct dtb_node *)(dev->fdt_node);
if(fdt_node)
{
/*从设备节点中获取到设备相关信息,并填入dev->user_data*/
}
return 0;
}
int imx6ull_eth_init(struct rt_device *dev)
{
/*根据dev->user_data 完成特性设备的初始化*/
imx6ul_eth_init_test(dev->user_data);
return 0;
}
struct rt_device_id imx6ull_eth_id =
{
.compatible = "fsl,imx6ul-fec",
};
struct rt_driver eth_driver =
{
.dev_match = &imx6ull_eth_id,
.dev_type = RT_Device_Class_NetIf,
.device_priv_data_size = sizeof(struct rt_imx6ul_ethps),
.device_size = sizeof(struct eth_device),
.name = "e",
.flag = RT_DEVICE_FLAG_RDWR,
.probe = imx6ull_eth_probe,
.init = imx6ull_eth_init,
.dev_ops = &_k_enet_ops
};
extern int device_tree_setup(void);
static int imx6ul_eth_drvier_init_with_dtb(void)
{
int max_device_num = 10;
void *from_node = get_dtb_node_head();//from_node可以是设备树的root节点,也可以是目标设备的父节点
rt_driver_device_match_with_dtb(ð_driver,from_node,max_device_num);
}
static int imx6ul_eth_drvier_init_with_id(void)
{
int i = 0;
int device_num = 2;
for(i = 0; i < device_num; i++)
{
rt_driver_device_match_with_id(ð_driver,i);
}
}
INIT_DEVICE_EXPORT(imx6ul_eth_drvier_init_with_dtb); //驱动注册使用dtb
//INIT_DEVICE_EXPORT(imx6ul_eth_drvier_init_with_id);//驱动注册不适用dtb
]
以下的内容不应该在提交PR时的message修改,修改下述message,PR会被直接关闭。请在提交PR后,浏览器查看PR并对以下检查项逐项check,没问题后逐条在页面上打钩。
当前拉取/合并请求的状态:
必须选择一项:
- 本拉取/合并请求是一个草稿版本
- 本拉取/合并请求是一个成熟版本
代码质量:
我在这个拉取/合并请求中已经考虑了:
- 已经仔细查看过代码改动的对比
- 代码风格正确,包括缩进空格,命名及其他风格
-
没有垃圾代码,代码尽量精简,不包含
#if 0
代码,不包含已经被注释了的代码 - 所有变更均有原因及合理的,并且不会影响到其他软件组件代码或
- 对难懂代码均提供对应的注释
- 本拉取/合并请求代码是高质量的
- 本拉取/合并符合RT-Thread代码规范