mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 17:43:59 +00:00
[PATCH] Add write protection switch handling to the PXA MMC driver
Add a write protection switch handling code to the PXA MMC driver so that platform specific code can provide it if available. Signed-off-by: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
5b4fd9aef7
commit
e619524fe5
@ -362,6 +362,16 @@ static void pxamci_request(struct mmc_host *mmc, struct mmc_request *mrq)
|
|||||||
pxamci_start_cmd(host, mrq->cmd, cmdat);
|
pxamci_start_cmd(host, mrq->cmd, cmdat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int pxamci_get_ro(struct mmc_host *mmc)
|
||||||
|
{
|
||||||
|
struct pxamci_host *host = mmc_priv(mmc);
|
||||||
|
|
||||||
|
if (host->pdata && host->pdata->get_ro)
|
||||||
|
return host->pdata->get_ro(mmc->dev);
|
||||||
|
/* Host doesn't support read only detection so assume writeable */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||||
{
|
{
|
||||||
struct pxamci_host *host = mmc_priv(mmc);
|
struct pxamci_host *host = mmc_priv(mmc);
|
||||||
@ -401,6 +411,7 @@ static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
|||||||
|
|
||||||
static struct mmc_host_ops pxamci_ops = {
|
static struct mmc_host_ops pxamci_ops = {
|
||||||
.request = pxamci_request,
|
.request = pxamci_request,
|
||||||
|
.get_ro = pxamci_get_ro,
|
||||||
.set_ios = pxamci_set_ios,
|
.set_ios = pxamci_set_ios,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ struct mmc_host;
|
|||||||
struct pxamci_platform_data {
|
struct pxamci_platform_data {
|
||||||
unsigned int ocr_mask; /* available voltages */
|
unsigned int ocr_mask; /* available voltages */
|
||||||
int (*init)(struct device *, irqreturn_t (*)(int, void *, struct pt_regs *), void *);
|
int (*init)(struct device *, irqreturn_t (*)(int, void *, struct pt_regs *), void *);
|
||||||
|
int (*get_ro)(struct device *);
|
||||||
void (*setpower)(struct device *, unsigned int);
|
void (*setpower)(struct device *, unsigned int);
|
||||||
void (*exit)(struct device *, void *);
|
void (*exit)(struct device *, void *);
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user