Explorar o código

update sdio driver

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1981 bbd45198-f89e-11dd-88c7-29a3b14d5316
luohui2320@gmail.com %!s(int64=13) %!d(string=hai) anos
pai
achega
cc4874a8b6
Modificáronse 2 ficheiros con 45 adicións e 4 borrados
  1. 37 2
      components/drivers/sdio/sdio.c
  2. 8 2
      components/drivers/sdio/sdio.h

+ 37 - 2
components/drivers/sdio/sdio.c

@@ -317,19 +317,54 @@ rt_int32_t sdio_io_writew(struct rt_sdio_function *func, rt_uint16_t data, rt_ui
 	return sdio_io_rw_extended_block(func, 1, addr, 1, (rt_uint8_t *)&dmabuf, 2);
 }
 
-rt_int32_t sdio_io_read_multi_fifo_1(struct rt_sdio_function *func, 
+rt_uint32_t sdio_io_readl(struct rt_sdio_function *func, rt_uint32_t addr, rt_int32_t *err)
+{
+	rt_int32_t ret;
+	rt_uint32_t dmabuf;
+
+	if (err)
+		*err = 0;
+
+	ret = sdio_io_rw_extended_block(func, 0, addr, 1, (rt_uint8_t *)&dmabuf, 4);
+	if (ret) 
+	{
+		if (err)
+			*err = ret;
+	}
+
+	return dmabuf;
+}
+
+rt_int32_t sdio_io_writel(struct rt_sdio_function *func, rt_uint32_t data, rt_uint32_t addr)
+{
+	rt_uint32_t dmabuf = data;
+
+	return sdio_io_rw_extended_block(func, 1, addr, 1, (rt_uint8_t *)&dmabuf, 4);
+}
+
+rt_int32_t sdio_io_read_multi_fifo_b(struct rt_sdio_function *func, 
 				     rt_uint32_t addr, rt_uint8_t *buf, rt_uint32_t len)
 {
 	return sdio_io_rw_extended_block(func, 0, addr, 0, buf, len);
 }
 
-rt_int32_t sdio_io_write_multi_fifo_1(struct rt_sdio_function *func, 
+rt_int32_t sdio_io_write_multi_fifo_b(struct rt_sdio_function *func, 
 				      rt_uint32_t addr, rt_uint8_t *buf, rt_uint32_t len)
 {
 	return sdio_io_rw_extended_block(func, 1, addr, 0, buf, len);
 }
 
+rt_int32_t sdio_io_read_multi_incr_b(struct rt_sdio_function *func, 
+				     rt_uint32_t addr, rt_uint8_t *buf, rt_uint32_t len)
+{
+	return sdio_io_rw_extended_block(func, 0, addr, 1, buf, len);
+}
 
+rt_int32_t sdio_io_write_multi_incr_b(struct rt_sdio_function *func, 
+				      rt_uint32_t addr, rt_uint8_t *buf, rt_uint32_t len)
+{
+	return sdio_io_rw_extended_block(func, 1, addr, 1, buf, len);
+}
 
 static rt_int32_t sdio_read_cccr(struct rt_mmcsd_card *card)
 {

+ 8 - 2
components/drivers/sdio/sdio.h

@@ -203,9 +203,15 @@ rt_int32_t sdio_io_writeb(struct rt_sdio_function *func,
 			  rt_uint32_t reg, rt_uint8_t data);
 rt_uint16_t sdio_io_readw(struct rt_sdio_function *func, rt_uint32_t addr, rt_int32_t *err);
 rt_int32_t sdio_io_writew(struct rt_sdio_function *func, rt_uint16_t data, rt_uint32_t addr);
-rt_int32_t sdio_io_read_multi_fifo_1(struct rt_sdio_function *func, 
+rt_uint32_t sdio_io_readl(struct rt_sdio_function *func, rt_uint32_t addr, rt_int32_t *err);
+rt_int32_t sdio_io_writel(struct rt_sdio_function *func, rt_uint32_t data, rt_uint32_t addr);
+rt_int32_t sdio_io_read_multi_fifo_b(struct rt_sdio_function *func, 
 				     rt_uint32_t addr, rt_uint8_t *buf, rt_uint32_t len);
-rt_int32_t sdio_io_write_multi_fifo_1(struct rt_sdio_function *func, 
+rt_int32_t sdio_io_write_multi_fifo_b(struct rt_sdio_function *func, 
+				      rt_uint32_t addr, rt_uint8_t *buf, rt_uint32_t len);
+rt_int32_t sdio_io_read_multi_incr_b(struct rt_sdio_function *func, 
+				     rt_uint32_t addr, rt_uint8_t *buf, rt_uint32_t len);
+rt_int32_t sdio_io_write_multi_incr_b(struct rt_sdio_function *func, 
 				      rt_uint32_t addr, rt_uint8_t *buf, rt_uint32_t len);
 rt_int32_t init_sdio(struct rt_mmcsd_host *host, rt_uint32_t ocr);
 rt_int32_t sdio_attach_irq(struct rt_sdio_function *func, rt_sdio_irq_handler_t *handler);