summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mmc/card.h8
-rw-r--r--include/linux/mmc/core.h5
2 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 9178aa48209a..8f17619931ab 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -22,6 +22,7 @@ struct mmc_cid {
unsigned char hwrev;
unsigned char fwrev;
unsigned char month;
+ unsigned short prod_rev;
};
struct mmc_csd {
@@ -83,6 +84,9 @@ struct mmc_ext_csd {
u8 out_of_int_time; /* out of int time */
bool bk_ops; /* BK ops support bit */
bool bk_ops_en; /* BK ops enable bit */
+ bool refresh; /* refresh of blocks supported */
+ __kernel_time_t last_tv_sec; /* last time a block was refreshed */
+ __kernel_time_t last_bkops_tv_sec; /* last time bkops was done */
};
struct sd_scr {
@@ -224,6 +228,10 @@ struct mmc_card {
unsigned int sd_bus_speed; /* Bus Speed Mode set for the card */
struct dentry *debugfs_root;
+
+ struct timer_list timer;
+ struct work_struct bkops;
+ struct work_struct refresh;
};
/*
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
index c3e55fa63fb6..0c4472eff796 100644
--- a/include/linux/mmc/core.h
+++ b/include/linux/mmc/core.h
@@ -11,6 +11,10 @@
#include <linux/interrupt.h>
#include <linux/device.h>
+#define MMC_SLOW_WRITE_TIME 500000 /* time (us) */
+#define MMC_REFRESH_INTERVAL 60 /* time (s) */
+#define MMC_BKOPS_INTERVAL 20 /* time (s) */
+
struct request;
struct mmc_data;
struct mmc_request;
@@ -138,6 +142,7 @@ extern struct mmc_async_req *mmc_start_req(struct mmc_host *,
struct mmc_async_req *, int *);
extern int mmc_interrupt_hpi(struct mmc_card *);
extern int mmc_bkops_start(struct mmc_card *card, bool is_synchronous);
+extern void mmc_refresh(unsigned long data);
extern void mmc_wait_for_req(struct mmc_host *, struct mmc_request *);
extern int mmc_wait_for_cmd(struct mmc_host *, struct mmc_command *, int);