فهرست منبع

the unit of read/write offset and buffer size is changed to the block size in block device driver read/write interface.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@798 bbd45198-f89e-11dd-88c7-29a3b14d5316
qiuyiuestc 15 سال پیش
والد
کامیت
1e9996c0e5
1فایلهای تغییر یافته به همراه7 افزوده شده و 111 حذف شده
  1. 7 111
      bsp/mini2440/sdcard.c

+ 7 - 111
bsp/mini2440/sdcard.c

@@ -20,24 +20,12 @@ volatile rt_uint32_t rd_cnt;
 volatile rt_uint32_t wt_cnt;
 volatile rt_int32_t RCA;
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static void sd_delay(rt_uint32_t ms)
 {
 	ms *= 7326;
 	while(--ms);
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static int sd_cmd_end(int cmd, int be_resp)
 {
 	int finish0;
@@ -88,12 +76,6 @@ static int sd_cmd_end(int cmd, int be_resp)
 	}
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static int sd_data_end(void)
 {
 	int finish;
@@ -113,12 +95,6 @@ static int sd_data_end(void)
 	return RT_EOK;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static void sd_cmd0(void)
 {
 	SDICARG=0x0;
@@ -128,12 +104,6 @@ static void sd_cmd0(void)
 	SDICSTA=0x800;	    /* Clear cmd_end(no rsp) */
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static int sd_cmd55(void)
 {
 	SDICARG = RCA << 16;
@@ -149,12 +119,6 @@ static int sd_cmd55(void)
 	return RT_EOK;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static void sd_sel_desel(char sel_desel)
 {
 	if(sel_desel)
@@ -182,12 +146,6 @@ RECMDD7:
 	}
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static void sd_setbus(void)
 {
     do
@@ -201,12 +159,6 @@ static void sd_setbus(void)
     SDICSTA=0xa00;	    /* Clear cmd_end(with rsp) */
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 int sd_ocr(void)
 {
 	int i;
@@ -234,12 +186,6 @@ int sd_ocr(void)
 	return RT_ERROR;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 rt_uint8_t sd_init(void)
 {
 	//-- SD controller & card initialize
@@ -295,12 +241,6 @@ RECMD3:
 	return RT_EOK;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 rt_uint8_t sd_readblock(rt_uint32_t address, rt_uint8_t* buf)
 {
 	int status;
@@ -349,12 +289,6 @@ RERDCMD:
 	return RT_EOK;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 rt_uint8_t sd_writeblock(rt_uint32_t address, rt_uint8_t* buf)
 {
 	int status;
@@ -401,56 +335,27 @@ REWTCMD:
 
 struct rt_device sdcard_device[4];
 struct dfs_partition part[4];
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
+
 static rt_err_t rt_sdcard_init(rt_device_t dev)
 {
 	return 0;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static rt_err_t rt_sdcard_open(rt_device_t dev, rt_uint16_t oflag)
 {
 	return 0;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static rt_err_t rt_sdcard_close(rt_device_t dev)
 {
 	return 0;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static rt_err_t rt_sdcard_control(rt_device_t dev, rt_uint8_t cmd, void *args)
 {
 	return 0;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static rt_size_t rt_sdcard_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size)
 {
 	int i;
@@ -463,10 +368,10 @@ static rt_size_t rt_sdcard_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_
 	}
 
 	/* read all sectors */
-	for (i = 0; i < size / SECTOR_SIZE; i ++)
+	for (i = 0; i < size; i ++)
 	{
 		rt_sem_take(part->lock, RT_WAITING_FOREVER);
-		sd_readblock((part->offset + i)*SECTOR_SIZE + pos,
+		sd_readblock((part->offset + i + pos)*SECTOR_SIZE,
 			(rt_uint8_t*)((rt_uint8_t*)buffer + i * SECTOR_SIZE));
 		rt_sem_release(part->lock);
 	}
@@ -475,12 +380,6 @@ static rt_size_t rt_sdcard_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_
 	return size;
 }
 
-/**
- * This function will set a hook function, which will be invoked when a memory
- * block is allocated from heap memory.
- *
- * @param hook the hook function
- */
 static rt_size_t rt_sdcard_write (rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size)
 {
 	int i;
@@ -493,10 +392,10 @@ static rt_size_t rt_sdcard_write (rt_device_t dev, rt_off_t pos, const void* buf
 	}
 
 	/* read all sectors */
-	for (i = 0; i < size / SECTOR_SIZE; i++)
+	for (i = 0; i < size; i++)
 	{
 		rt_sem_take(part->lock, RT_WAITING_FOREVER);
-		sd_writeblock((part->offset + i)*SECTOR_SIZE + pos,
+		sd_writeblock((part->offset + i + pos)*SECTOR_SIZE,
 			(rt_uint8_t*)((rt_uint8_t*)buffer + i * SECTOR_SIZE));
 		rt_sem_release(part->lock);
 	}
@@ -505,11 +404,6 @@ static rt_size_t rt_sdcard_write (rt_device_t dev, rt_off_t pos, const void* buf
 	return size;
 }
 
-/**
- * This function will register sd card to device system
- *
- * @param hook the hook function
- */
 void rt_hw_sdcard_init()
 {
 	rt_uint8_t i, status;
@@ -549,6 +443,7 @@ void rt_hw_sdcard_init()
 					part[i].lock = rt_sem_create(sname, 1, RT_IPC_FLAG_FIFO);
 
 					/* register sdcard device */
+					sdcard_device[i].type  = RT_Device_Class_Block;					
 					sdcard_device[i].init = rt_sdcard_init;
 					sdcard_device[i].open = rt_sdcard_open;
 					sdcard_device[i].close = rt_sdcard_close;
@@ -570,6 +465,7 @@ void rt_hw_sdcard_init()
 						part[0].lock = rt_sem_create("sem_sd0", 1, RT_IPC_FLAG_FIFO);
 
 						/* register sdcard device */
+						sdcard_device[0].type  = RT_Device_Class_Block;								
 						sdcard_device[0].init = rt_sdcard_init;
 						sdcard_device[0].open = rt_sdcard_open;
 						sdcard_device[0].close = rt_sdcard_close;