From d7f3e00cc2fc03492a1626d03bfdd48c738ce01d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Tue, 19 Jul 2022 16:58:56 +0800 Subject: [PATCH 1/2] modify driver struct --- include/rtdef.h | 12 ++++++++++-- src/device.c | 10 ---------- src/driver.c | 2 +- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/include/rtdef.h b/include/rtdef.h index 34c3b9b9ca..8bacfd02f5 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -1102,7 +1102,7 @@ struct rt_device { struct rt_object parent; /**< inherit from rt_object */ #ifdef RT_USING_DM - const struct rt_driver *drv; + struct rt_driver *drv; void *dtb_node; #endif enum rt_device_class_type type; /**< device type */ @@ -1147,11 +1147,18 @@ struct rt_driver { #ifdef RT_USING_DEVICE_OPS const struct rt_device_ops *dev_ops; +#else + /* common device interface */ + rt_err_t (*init) (rt_device_t dev); + rt_err_t (*open) (rt_device_t dev, rt_uint16_t oflag); + rt_err_t (*close) (rt_device_t dev); + rt_size_t (*read) (rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size); + rt_size_t (*write) (rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size); + rt_err_t (*control)(rt_device_t dev, int cmd, void *args); #endif const struct filesystem_ops *fops; const char *name; enum rt_device_class_type dev_type; - int device_priv_data_size; int device_size; int flag; const struct rt_device_id *dev_match; @@ -1159,6 +1166,7 @@ struct rt_driver int (*probe_init)(struct rt_device *dev); int (*remove)(struct rt_device *dev); const void *ops; /* driver-specific operations */ + void *drvpriv_data; }; typedef struct rt_driver *rt_driver_t; diff --git a/src/device.c b/src/device.c index 88c7680a48..fb7a2b8046 100644 --- a/src/device.c +++ b/src/device.c @@ -525,16 +525,6 @@ rt_device_t rt_device_create_since_driver(rt_driver_t drv,int device_id) { return RT_NULL; } - if(drv->device_priv_data_size != 0) - { - device->user_data = (void *)(rt_calloc(1,drv->device_priv_data_size)); - if(device->user_data == RT_NULL) - { - rt_free(device); - return RT_NULL; - } - } - device->device_id = device_id; rt_snprintf(device->parent.name, sizeof(device->parent.name), "%s%d", drv->name, device_id); return device; diff --git a/src/driver.c b/src/driver.c index 02f757a387..cf96eca9f6 100644 --- a/src/driver.c +++ b/src/driver.c @@ -64,7 +64,7 @@ rt_err_t rt_driver_match_with_dtb(const rt_driver_t drv,void *from_node,int max_ rt_device_t device; int ret,i; int total_dev_num = 0; - if ((!drv)||(!drv->dev_match)||(!drv->dev_match->compatible)||(!from_node)||(!drv->device_size)||(!drv->device_priv_data_size)) + if ((!drv)||(!drv->dev_match)||(!drv->dev_match->compatible)||(!from_node)||(!drv->device_size)) { return -RT_EINVAL; } -- Gitee From 647806f7092ce59eea06f40f31b7e5ffca014528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Tue, 19 Jul 2022 17:09:42 +0800 Subject: [PATCH 2/2] modify driver struct --- include/rtdef.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/rtdef.h b/include/rtdef.h index 8bacfd02f5..76087668c7 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -1102,7 +1102,7 @@ struct rt_device { struct rt_object parent; /**< inherit from rt_object */ #ifdef RT_USING_DM - struct rt_driver *drv; + struct rt_driver *drv; void *dtb_node; #endif enum rt_device_class_type type; /**< device type */ @@ -1166,7 +1166,7 @@ struct rt_driver int (*probe_init)(struct rt_device *dev); int (*remove)(struct rt_device *dev); const void *ops; /* driver-specific operations */ - void *drvpriv_data; + void *drv_priv_data; }; typedef struct rt_driver *rt_driver_t; -- Gitee