Revision 72741084d903e65e121c27bd29494d941729d4a1 authored by Ulf Hansson on 27 August 2019, 08:10:43 UTC, committed by Ulf Hansson on 30 August 2019, 07:17:53 UTC
The OCR register defines the supported range of VDD voltages for SD cards.
However, it has turned out that some SD cards reports an invalid voltage
range, for example having bit7 set.

When a host supports MMC_CAP2_FULL_PWR_CYCLE and some of the voltages from
the invalid VDD range, this triggers the core to run a power cycle of the
card to try to initialize it at the lowest common supported voltage.
Obviously this fails, since the card can't support it.

Let's fix this problem, by clearing invalid bits from the read OCR register
for SD cards, before proceeding with the VDD voltage negotiation.

Cc: stable@vger.kernel.org
Reported-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Philip Langdale <philipl@overt.org>
Tested-by: Philip Langdale <philipl@overt.org>
Tested-by: Manuel Presnitz <mail@mpy.de>
1 parent 7871aa6
History
File Mode Size
cluster
dlm
dlmfs
Kconfig -rw-r--r-- 2.5 KB
Makefile -rw-r--r-- 1.0 KB
acl.c -rw-r--r-- 9.1 KB
acl.h -rw-r--r-- 776 bytes
alloc.c -rw-r--r-- 195.4 KB
alloc.h -rw-r--r-- 11.2 KB
aops.c -rw-r--r-- 61.5 KB
aops.h -rw-r--r-- 2.4 KB
blockcheck.c -rw-r--r-- 15.4 KB
blockcheck.h -rw-r--r-- 3.3 KB
buffer_head_io.c -rw-r--r-- 11.1 KB
buffer_head_io.h -rw-r--r-- 1.6 KB
dcache.c -rw-r--r-- 12.5 KB
dcache.h -rw-r--r-- 1.2 KB
dir.c -rw-r--r-- 113.5 KB
dir.h -rw-r--r-- 3.2 KB
dlmglue.c -rw-r--r-- 125.0 KB
dlmglue.h -rw-r--r-- 6.7 KB
export.c -rw-r--r-- 6.2 KB
export.h -rw-r--r-- 392 bytes
extent_map.c -rw-r--r-- 23.6 KB
extent_map.h -rw-r--r-- 2.3 KB
file.c -rw-r--r-- 65.4 KB
file.h -rw-r--r-- 2.3 KB
filecheck.c -rw-r--r-- 12.0 KB
filecheck.h -rw-r--r-- 1.9 KB
heartbeat.c -rw-r--r-- 2.8 KB
heartbeat.h -rw-r--r-- 828 bytes
inode.c -rw-r--r-- 45.4 KB
inode.h -rw-r--r-- 5.3 KB
ioctl.c -rw-r--r-- 22.4 KB
ioctl.h -rw-r--r-- 369 bytes
journal.c -rw-r--r-- 61.4 KB
journal.h -rw-r--r-- 22.2 KB
localalloc.c -rw-r--r-- 33.3 KB
localalloc.h -rw-r--r-- 1.5 KB
locks.c -rw-r--r-- 2.8 KB
locks.h -rw-r--r-- 471 bytes
mmap.c -rw-r--r-- 4.3 KB
mmap.h -rw-r--r-- 173 bytes
move_extents.c -rw-r--r-- 25.2 KB
move_extents.h -rw-r--r-- 363 bytes
namei.c -rw-r--r-- 69.3 KB
namei.h -rw-r--r-- 1.1 KB
ocfs1_fs_compat.h -rw-r--r-- 2.3 KB
ocfs2.h -rw-r--r-- 24.6 KB
ocfs2_fs.h -rw-r--r-- 49.6 KB
ocfs2_ioctl.h -rw-r--r-- 6.5 KB
ocfs2_lockid.h -rw-r--r-- 2.7 KB
ocfs2_lockingver.h -rw-r--r-- 562 bytes
ocfs2_trace.h -rw-r--r-- 75.8 KB
quota.h -rw-r--r-- 4.6 KB
quota_global.c -rw-r--r-- 29.8 KB
quota_local.c -rw-r--r-- 35.5 KB
refcounttree.c -rw-r--r-- 120.2 KB
refcounttree.h -rw-r--r-- 4.4 KB
reservations.c -rw-r--r-- 20.0 KB
reservations.h -rw-r--r-- 4.9 KB
resize.c -rw-r--r-- 15.5 KB
resize.h -rw-r--r-- 444 bytes
slot_map.c -rw-r--r-- 11.6 KB
slot_map.h -rw-r--r-- 769 bytes
stack_o2cb.c -rw-r--r-- 11.2 KB
stack_user.c -rw-r--r-- 28.9 KB
stackglue.c -rw-r--r-- 17.0 KB
stackglue.h -rw-r--r-- 8.8 KB
suballoc.c -rw-r--r-- 74.6 KB
suballoc.h -rw-r--r-- 6.9 KB
super.c -rw-r--r-- 68.4 KB
super.h -rw-r--r-- 911 bytes
symlink.c -rw-r--r-- 2.5 KB
symlink.h -rw-r--r-- 634 bytes
sysfile.c -rw-r--r-- 4.1 KB
sysfile.h -rw-r--r-- 416 bytes
uptodate.c -rw-r--r-- 17.0 KB
uptodate.h -rw-r--r-- 2.3 KB
xattr.c -rw-r--r-- 192.9 KB
xattr.h -rw-r--r-- 3.1 KB

back to top