summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorJaehoon Chung <jh80.chung@samsung.com>2013-08-01 22:37:29 +0900
committerChanho Park <chanho61.park@samsung.com>2014-03-20 17:34:43 +0900
commit668d4b4d1a7e0c2803c5095afc5574ed8e49abaf (patch)
treef75312a7d56904d7d1a7dac7586a5c1c7b0b6bf9 /drivers/mmc
parentf1f65ea7688fda95de51fa94b546ef1db2e6ab4c (diff)
downloadlinux-3.10-668d4b4d1a7e0c2803c5095afc5574ed8e49abaf.tar.gz
linux-3.10-668d4b4d1a7e0c2803c5095afc5574ed8e49abaf.tar.bz2
linux-3.10-668d4b4d1a7e0c2803c5095afc5574ed8e49abaf.zip
mmc: dw_mmc: add the specified capabilities2 of the controller
Add the capabilities2 of controller to use *_CAP2_* Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/dw_mmc.c3
-rw-r--r--drivers/mmc/host/dw_mmc.h2
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index ee5f1676f14..564c9fbd5c7 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1951,6 +1951,9 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)
if (host->pdata->caps2)
mmc->caps2 = host->pdata->caps2;
+ if (drv_data && drv_data->caps2)
+ mmc->caps2 |= drv_data->caps2[ctrl_id];
+
if (host->pdata->get_bus_wd)
bus_width = host->pdata->get_bus_wd(slot->id);
else if (host->dev->of_node)
diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
index 2f52c87bbce..90e2bab485c 100644
--- a/drivers/mmc/host/dw_mmc.h
+++ b/drivers/mmc/host/dw_mmc.h
@@ -185,6 +185,7 @@ extern int dw_mci_resume(struct dw_mci *host);
/**
* dw_mci driver data - dw-mshc implementation specific driver data.
* @caps: mmc subsystem specified capabilities of the controller(s).
+ * @caps2: mmc subsystem specified capabilities2 of the controller(s).
* @init: early implementation specific initialization.
* @setup_clock: implementation specific clock configuration.
* @prepare_command: handle CMD register extensions.
@@ -197,6 +198,7 @@ extern int dw_mci_resume(struct dw_mci *host);
*/
struct dw_mci_drv_data {
unsigned long *caps;
+ unsigned long *caps2;
int (*init)(struct dw_mci *host);
int (*setup_clock)(struct dw_mci *host);
void (*prepare_command)(struct dw_mci *host, u32 *cmdr);