PERFORCE change 151940 for review
Andrew Turner
andrew at FreeBSD.org
Sun Oct 26 08:18:12 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=151940
Change 151940 by andrew at andrew_bender on 2008/10/26 08:17:42
Disable interrupts in s3c24x0_mci_fini
Implement MMC/SD writing
Affected files ...
.. //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_mci.c#2 edit
Differences ...
==== //depot/projects/arm/src/sys/arm/s3c2xx0/s3c24x0_mci.c#2 (text+ko) ====
@@ -120,6 +120,10 @@
static void
s3c24x0_mci_fini(device_t dev)
{
+ struct s3c24x0_mci_softc *sc;
+
+ sc = device_get_softc(dev);
+ WR4(sc, SDI_IMSK, 0x0); /* Disable all interrupts */
}
static int
@@ -231,7 +235,8 @@
{
uint32_t cmdr, dcon;
struct mmc_data *data;
- int fifo_cnt, read_cnt;
+ uint32_t *vaddr;
+ int read_cnt, write_cnt;
sc->curcmd = cmd;
data = cmd->data;
@@ -276,14 +281,22 @@
WR4(sc, SDI_CCON, cmdr);
- if (data && (data->flags & MMC_DATA_READ)) {
- uint32_t *vaddr = cmd->data->data;
- read_cnt = cmd->data->len;
- fifo_cnt = 0;
- while(read_cnt) {
- *(vaddr++) = RD4(sc, SDI_DAT);
- read_cnt -= 4;
- fifo_cnt++;
+ if (data) {
+ if (data->flags & MMC_DATA_WRITE) {
+ vaddr = cmd->data->data;
+ write_cnt = cmd->data->len;
+ while (write_cnt > 0) {
+ WR4(sc, SDI_DAT, *(vaddr++));
+ write_cnt -= 4;
+ }
+ }
+ if (data->flags & MMC_DATA_READ) {
+ vaddr = cmd->data->data;
+ read_cnt = cmd->data->len;
+ while (read_cnt > 0) {
+ *(vaddr++) = RD4(sc, SDI_DAT);
+ read_cnt -= 4;
+ }
}
}
}
@@ -338,7 +351,7 @@
static int
s3c24x0_mci_get_ro(device_t brdev, device_t reqdev)
{
- return (-1);
+ return (0);
}
static int
More information about the p4-projects
mailing list