List Info

Thread: 2 GB SD-card




2 GB SD-card
user name
2006-06-01 17:13:01
Hi.

I just bought a 2 GB SD-card to use it on my iPaq, but it is
not readable:
when I plug it and try to read it (raw device read using
dd), I get:

 first_minor 0x00000000  
 /dev/mmc:[mmc_protocol.c:224] mmc_cim_read_write_block
failure during cmd 16, error 3 (ERROR_BLOCK_LEN)
end_request: I/O error, dev fe:00 (mmc), sector 0
[mmc_protocol.c:224] mmc_cim_read_write_block failure during
cmd 16, error 3 (ERROR_BLOCK_LEN)

and dd dies with an I/O error. Furthermore, /proc/partitions
reports 980224.
On the other hand, I can read it with an USB card reader,
and the true size
is 1960448.

I am currently using the kernel version
2.4.19-rmk6-pxa1-hh37 from Familiar.
Would upgrading be any use?

Regards,

-- 
  Nicolas George
_______________________________________________
Open Source Software for Compaq iPAQ Handhelds.
iPAQ mailing list
iPAQhandhelds.org
https://h
andhelds.org/mailman/listinfo/ipaq
irc://irc.openprojects.net #ipaq
2 GB SD-card
user name
2006-06-20 12:05:42
Le tridi 13 prairial, an CCXIV, Nicolas George a écrit :
> I just bought a 2 GB SD-card to use it on my iPaq, but
it is not readable:
> when I plug it and try to read it (raw device read
using dd), I get:
<snip>
> and dd dies with an I/O error. Furthermore,
/proc/partitions reports 980224.
> On the other hand, I can read it with an USB card
reader, and the true size
> is 1960448.

That is a known issue, which has been recently addressed in
the lkmlı. A fix
was made in the 2.6 kernel. With some help from Todd Blumer,
I was able to
backport it to the MMC/SD driver in iPaq 2.4 kernel (it is
very simple).

I used the patched version for a few days, and reading from
the card did not
cause any problem, so I believe it is correct. Here is the
diff:

---
linux-2.4.19-rmk6-pxa1-hh37/drivers/mmc/mmc_core.c.orig	2003
-09-18 16:32:37.000000000 +0200
+++
linux-2.4.19-rmk6-pxa1-hh37/drivers/mmc/mmc_core.c	2006-06-1
6 16:19:15.000000000 +0200
 -131,6
+131,10 
 	csd->vdd_w_curr_min     = (buf[10] & 0xe0) >>
5;
 	csd->vdd_w_curr_max     = (buf[10] & 0x1c) >>
2;
 	csd->c_size_mult        = ((buf[10] & 0x03)
<< 1) | ((buf[11] & 0x80) >> 7);
+	if(csd->read_bl_len > 9) {
+	    csd->c_size_mult += csd->read_bl_len - 9;
+	    csd->read_bl_len = 9;
+	}
 	switch ( csd->csd_structure ) {
 	case CSD_STRUCT_VER_1_0:
 	case CSD_STRUCT_VER_1_1:


1: The problem is that the data structure used to report the
card geometry
to the host can express up to exactly 2^21 (2M) sectors.
Thus, cards bigger
than 1 giga-octet lie about their sector size to get a few
extra bits.

-- 
  Nicolas George
_______________________________________________
Open Source Software for Compaq iPAQ Handhelds.
iPAQ mailing list
iPAQhandhelds.org
https://h
andhelds.org/mailman/listinfo/ipaq
irc://irc.openprojects.net #ipaq
[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )