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