diff options
| author | [email protected] <[email protected]> | 2012-02-29 15:41:58 +0000 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2012-02-29 15:41:58 +0000 |
| commit | cc4874a8b6fd4e1a5c99f0ad4cc81284c4ecfcbc (patch) | |
| tree | 61b96c95cec875097265d5ed9740cc3f8c3c91ff /components/drivers | |
| parent | 79a699b7bf32e647d7816df6e2cf9858e65b12fb (diff) | |
update sdio driver
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1981 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'components/drivers')
| -rw-r--r-- | components/drivers/sdio/sdio.c | 39 | ||||
| -rw-r--r-- | components/drivers/sdio/sdio.h | 10 |
2 files changed, 45 insertions, 4 deletions
diff --git a/components/drivers/sdio/sdio.c b/components/drivers/sdio/sdio.c index 5a436c3946..b72c2fdb1d 100644 --- a/components/drivers/sdio/sdio.c +++ b/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)
{
diff --git a/components/drivers/sdio/sdio.h b/components/drivers/sdio/sdio.h index d84269661c..1a208c14ad 100644 --- a/components/drivers/sdio/sdio.h +++ b/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);
|
