Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e619524f authored by Richard Purdie's avatar Richard Purdie Committed by Linus Torvalds
Browse files

[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: default avatarRichard Purdie <rpurdie@rpsys.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 5b4fd9ae
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -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,
};
};


+1 −0
Original line number Original line Diff line number Diff line
@@ -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 *);
};
};