summaryrefslogtreecommitdiff
path: root/include/mmc.h
diff options
context:
space:
mode:
authorPeng Fan <van.freenix@gmail.com>2016-09-01 11:13:38 +0800
committerRobby Cai <robby.cai@nxp.com>2016-11-16 16:58:51 +0800
commita9f2abd24d4184d2862b98a5826e84a29a53eb56 (patch)
tree645739e29400d540a2253786c7b0aef227bdc5d7 /include/mmc.h
parent8bf9d633b344eaf47490137ab47d172fc87af322 (diff)
downloadu-boot-imx-a9f2abd24d4184d2862b98a5826e84a29a53eb56.zip
u-boot-imx-a9f2abd24d4184d2862b98a5826e84a29a53eb56.tar.gz
u-boot-imx-a9f2abd24d4184d2862b98a5826e84a29a53eb56.tar.bz2
mmc: sd: extracting erase related information from sd status
Add function to read SD_STATUS information. According to the information, get erase_timeout/erase_size/erase_offset. Add a structure sd_ssr to include the erase related information. Signed-off-by: Peng Fan <peng.fan@nxp.com> Cc: Jaehoon Chung <jh80.chung@samsung.com> Cc: Simon Glass <sjg@chromium.org> Cc: Bin Meng <bmeng.cn@gmail.com> Cc: Stefan Wahren <stefan.wahren@i2se.com> Cc: Clemens Gruber <clemens.gruber@pqgruber.com> Cc: Kever Yang <kever.yang@rock-chips.com> Cc: Eric Nelson <eric@nelint.com> Cc: Stephen Warren <swarren@nvidia.com> (cherry picked from commit 3697e5992f89c923aca17d7d9174739da28cb3cd) (cherry picked from commit be950ab9d0625ae1a23c7a5e03dde8e5a676ea80)
Diffstat (limited to 'include/mmc.h')
-rw-r--r--include/mmc.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/mmc.h b/include/mmc.h
index d652c14..55e9924 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -11,6 +11,7 @@
#define _MMC_H_
#include <linux/list.h>
+#include <linux/sizes.h>
#include <linux/compiler.h>
#include <part.h>
@@ -107,6 +108,7 @@
#define SD_CMD_SWITCH_UHS18V 11
#define SD_CMD_APP_SET_BUS_WIDTH 6
+#define SD_CMD_APP_SD_STATUS 13
#define SD_CMD_ERASE_WR_BLK_START 32
#define SD_CMD_ERASE_WR_BLK_END 33
#define SD_CMD_APP_SEND_OP_COND 41
@@ -342,6 +344,12 @@ struct mmc_config {
unsigned char part_type;
};
+struct sd_ssr {
+ unsigned int au; /* In sectors */
+ unsigned int erase_timeout; /* In milliseconds */
+ unsigned int erase_offset; /* In milliseconds */
+};
+
/* TODO struct mmc should be in mmc_private but it's hard to fix right now */
struct mmc {
struct list_head link;
@@ -369,6 +377,7 @@ struct mmc {
uint write_bl_len;
uint erase_grp_size; /* in 512-byte sectors */
uint hc_wp_grp_size; /* in 512-byte sectors */
+ struct sd_ssr ssr; /* SD status register */
u64 capacity;
u64 capacity_user;
u64 capacity_boot;