dslinux/linux-2.6.x/drivers/mmc mmc_block.c

amadeus dslinux_amadeus at user.in-berlin.de
Thu Jul 13 23:12:33 CEST 2006


Update of /cvsroot/dslinux/dslinux/linux-2.6.x/drivers/mmc
In directory antilope:/tmp/cvs-serv24824/linux-2.6.x/drivers/mmc

Modified Files:
	mmc_block.c 
Log Message:
Fix blocksize for 2 GByte SD cards

Index: mmc_block.c
===================================================================
RCS file: /cvsroot/dslinux/dslinux/linux-2.6.x/drivers/mmc/mmc_block.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- mmc_block.c	3 Jul 2006 20:12:48 -0000	1.3
+++ mmc_block.c	13 Jul 2006 21:12:30 -0000	1.4
@@ -351,13 +351,19 @@
 		sprintf(md->disk->disk_name, "mmcblk%d", devidx);
 		sprintf(md->disk->devfs_name, "mmc/blk%d", devidx);
 
-		md->block_bits = card->csd.read_blkbits;
+		/* Set the blocksize. If card->csd.read_blkbits > 9, use 9
+                   because SD cards are not able to transfer more than 512 Bytes
+                   in one sector. */
+		if (card->csd.read_blkbits > 9)
+			md->block_bits = 9;
+		else
+			md->block_bits = card->csd.read_blkbits;
 
 		blk_queue_hardsect_size(md->queue.queue, 1 << md->block_bits);
 
 		/*
 		 * The CSD capacity field is in units of read_blkbits.
-		 * set_capacity takes units of 512 bytes.
+		 * set_capacity takes units of max. 512 bytes.
 		 */
 		set_capacity(md->disk, card->csd.capacity << (card->csd.read_blkbits - 9));
 	}




More information about the dslinux-commit mailing list