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

Commit 5c4c1489 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc:
  sdhci: make sure to clear the error interrupt
  mmc: at91_mci: wakeup on card insertion (or removal)
  mmc: add maintainer for at91
parents c2e68052 964f9ce2
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -651,7 +651,12 @@ W: http://linux-atm.sourceforge.net
S:	Maintained

ATMEL AT91 MCI DRIVER
S:	Orphan
P:	Nicolas Ferre
M:	nicolas.ferre@rfo.atmel.com
L:	linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
W:	http://www.atmel.com/products/AT91/
W:	http://www.at91.com/
S:	Maintained

ATMEL MACB ETHERNET DRIVER
P:	Haavard Skinnemoen
+12 −1
Original line number Diff line number Diff line
@@ -903,8 +903,10 @@ static int __init at91_mci_probe(struct platform_device *pdev)
	/*
	 * Add host to MMC layer
	 */
	if (host->board->det_pin)
	if (host->board->det_pin) {
		host->present = !at91_get_gpio_value(host->board->det_pin);
		device_init_wakeup(&pdev->dev, 1);
	}
	else
		host->present = -1;

@@ -940,6 +942,7 @@ static int __exit at91_mci_remove(struct platform_device *pdev)
	host = mmc_priv(mmc);

	if (host->present != -1) {
		device_init_wakeup(&pdev->dev, 0);
		free_irq(host->board->det_pin, host);
		cancel_delayed_work(&host->mmc->detect);
	}
@@ -966,8 +969,12 @@ static int __exit at91_mci_remove(struct platform_device *pdev)
static int at91_mci_suspend(struct platform_device *pdev, pm_message_t state)
{
	struct mmc_host *mmc = platform_get_drvdata(pdev);
	struct at91mci_host *host = mmc_priv(mmc);
	int ret = 0;

	if (device_may_wakeup(&pdev->dev))
		enable_irq_wake(host->board->det_pin);

	if (mmc)
		ret = mmc_suspend_host(mmc, state);

@@ -977,8 +984,12 @@ static int at91_mci_suspend(struct platform_device *pdev, pm_message_t state)
static int at91_mci_resume(struct platform_device *pdev)
{
	struct mmc_host *mmc = platform_get_drvdata(pdev);
	struct at91mci_host *host = mmc_priv(mmc);
	int ret = 0;

	if (device_may_wakeup(&pdev->dev))
		disable_irq_wake(host->board->det_pin);

	if (mmc)
		ret = mmc_resume_host(mmc);

+2 −0
Original line number Diff line number Diff line
@@ -1024,6 +1024,8 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)

	intmask &= ~(SDHCI_INT_CMD_MASK | SDHCI_INT_DATA_MASK);

	intmask &= ~SDHCI_INT_ERROR;

	if (intmask & SDHCI_INT_BUS_POWER) {
		printk(KERN_ERR "%s: Card is consuming too much power!\n",
			mmc_hostname(host->mmc));
+1 −0
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@
#define  SDHCI_INT_CARD_INSERT	0x00000040
#define  SDHCI_INT_CARD_REMOVE	0x00000080
#define  SDHCI_INT_CARD_INT	0x00000100
#define  SDHCI_INT_ERROR	0x00008000
#define  SDHCI_INT_TIMEOUT	0x00010000
#define  SDHCI_INT_CRC		0x00020000
#define  SDHCI_INT_END_BIT	0x00040000