diff --git a/components/drivers/sdio/block_dev.c b/components/drivers/sdio/block_dev.c index 581eb357984e0a901ea0e4afafb18fbe4f5e1f8d..104ac3e075618e14b96bd15fbffea557c750dbd8 100644 --- a/components/drivers/sdio/block_dev.c +++ b/components/drivers/sdio/block_dev.c @@ -227,6 +227,8 @@ static rt_err_t rt_mmcsd_control(rt_device_t dev, int cmd, void *args) case RT_DEVICE_CTRL_BLK_GETGEOME: rt_memcpy(args, &blk_dev->geometry, sizeof(struct rt_device_blk_geometry)); break; + case RT_DEVICE_CTRL_BLK_PARTITION: + rt_memcpy(args, &blk_dev->part, sizeof(struct dfs_partition)); default: break; } @@ -256,7 +258,7 @@ static rt_size_t rt_mmcsd_read(rt_device_t dev, while (remain_size) { req_size = (remain_size > blk_dev->max_req_size) ? blk_dev->max_req_size : remain_size; - err = rt_mmcsd_req_blk(blk_dev->card, part->offset + pos + offset, rd_ptr, req_size, 0); + err = rt_mmcsd_req_blk(blk_dev->card, pos + offset, rd_ptr, req_size, 0); if (err) break; offset += req_size; @@ -297,7 +299,7 @@ static rt_size_t rt_mmcsd_write(rt_device_t dev, while (remain_size) { req_size = (remain_size > blk_dev->max_req_size) ? blk_dev->max_req_size : remain_size; - err = rt_mmcsd_req_blk(blk_dev->card, part->offset + pos + offset, wr_ptr, req_size, 1); + err = rt_mmcsd_req_blk(blk_dev->card, pos + offset, wr_ptr, req_size, 1); if (err) break; offset += req_size; diff --git a/include/rtdef.h b/include/rtdef.h index 8d0e954c34d610b803a53f794adccf6b25121707..9bbf986bc85fb4354f43353bcda694dc015c8474 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -1055,6 +1055,7 @@ enum rt_device_class_type #define RT_DEVICE_CTRL_BLK_SYNC 0x41 /**< flush data to block device */ #define RT_DEVICE_CTRL_BLK_ERASE 0x42 /**< erase block on block device */ #define RT_DEVICE_CTRL_BLK_AUTOREFRESH 0x43 /**< block device : enter/exit auto refresh mode */ +#define RT_DEVICE_CTRL_BLK_PARTITION 0X44 /**< get block device partition */ /* net interface device*/ #define RT_DEVICE_CTRL_NETIF_GETMAC 0x40 /**< get mac address */