Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Oct 2008 08:18:11 GMT
From:      Andrew Turner <andrew@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 151940 for review
Message-ID:  <200810260818.m9Q8IBsM015505@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=151940

Change 151940 by andrew@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200810260818.m9Q8IBsM015505>