Thread (9 messages) 9 messages, 4 authors, 2014-03-20

Re: [PATCH v2] mmc: sdhci: add quirk for broken write protect detection

From: Michal Simek <hidden>
Date: 2014-03-20 12:27:07
Also in: linux-mmc, lkml

Hi,

On 03/06/2014 05:42 PM, Sören Brinkmann wrote:
On Thu, 2014-03-06 at 02:31PM +0100, Mike Looijmans wrote:
quoted
On 03/04/2014 10:00 PM, Sören Brinkmann wrote:
quoted
On Tue, 2014-03-04 at 10:06PM +0200, Eli Billauer wrote:
quoted
Hello Sören,

wp-inverted solves the practical problem indeed, and fools the
driver into thinking that the card has an inverted write protection
sensor, and the logic zero that it finds in the hardware register
means that the card isn't write protected.

I'm insisting on this patch, because I think that the device tree
should describe the hardware as it is, and not fool the driver into
behaving the way we want it to. These tricks always bite back later
on.
Well, why is broken-wp more accurate than wp-inverted? Strictly
speaking the WP is there and working, it's just tied off to some value
you want to have interpreted the other way.
Anyway, seems like this is solvable with wp-inverted and whether the
additional quirk is needed I leave to others do decide.
I've begged for this patch - or a similar one - to be included too,
because on our boards, the "wp" value appears to be sort of random.
Out of 5 prototype boards, 3 would only boot with wp-inverted while
the other 2 wouldn't boot with wp-inverted set.

In our case I really don't know (and I don't care either) to which
logic level the wp happens to think it's wired. I just want to be
able to tell the driver that the WP line is
free-floating-and-might-have-any-random-value-at-any-given-moment
which is a bit long, so I'd go for disable-wp instead.
Could you provide the design you use and give more details? According to
the people I talked to, the signal should never float, unless you pin it
out and don't drive it.
Actually, you should open a support case for this. It is not supposed to
happen.
we have got this from Mike (we couldn't reply because he has lost this email
thread.

Mike:
"I think I found the issue. In ps7_init.c as generated by the tools, it sets the "WP" pin not to EMIO, but to MIO 0. We use pin 0 for a status LED.

# devmem 0XF8000830
0x002E0000

Register 0XF8000830 is SD0_WP_CD_SEL, and 0x002E0000 sets CD to pin 46 and WP to pin "0", not to EMIO as I specified in the design.
"

Eli: Maybe you have the same issue as Mike. Can you please check it?

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help