Commit 63068465 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/home/rmk/linux-2.6-mmc

parents 35b7ac4c c26971cb
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1079,12 +1079,16 @@ static void mmc_setup(struct mmc_host *host)
/**
 *	mmc_detect_change - process change of state on a MMC socket
 *	@host: host which changed state.
 *	@delay: optional delay to wait before detection (jiffies)
 *
 *	All we know is that card(s) have been inserted or removed
 *	from the socket(s).  We don't know which socket or cards.
 */
void mmc_detect_change(struct mmc_host *host)
void mmc_detect_change(struct mmc_host *host, unsigned long delay)
{
	if (delay)
		schedule_delayed_work(&host->detect, delay);
	else
		schedule_work(&host->detect);
}

@@ -1189,7 +1193,7 @@ int mmc_add_host(struct mmc_host *host)
	ret = mmc_add_host_sysfs(host);
	if (ret == 0) {
		mmc_power_off(host);
		mmc_detect_change(host);
		mmc_detect_change(host, 0);
	}

	return ret;
@@ -1259,7 +1263,7 @@ EXPORT_SYMBOL(mmc_suspend_host);
 */
int mmc_resume_host(struct mmc_host *host)
{
	mmc_detect_change(host);
	mmc_detect_change(host, 0);

	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -442,7 +442,7 @@ static void mmci_check_status(unsigned long data)

	status = host->plat->status(mmc_dev(host->mmc));
	if (status ^ host->oldstat)
		mmc_detect_change(host->mmc);
		mmc_detect_change(host->mmc, 0);

	host->oldstat = status;
	mod_timer(&host->timer, jiffies + HZ);
+3 −1
Original line number Diff line number Diff line
@@ -423,7 +423,9 @@ static void pxamci_dma_irq(int dma, void *devid, struct pt_regs *regs)

static irqreturn_t pxamci_detect_irq(int irq, void *devid, struct pt_regs *regs)
{
	mmc_detect_change(devid);
	struct pxamci_host *host = mmc_priv(devid);

	mmc_detect_change(devid, host->pdata->detect_delay);
	return IRQ_HANDLED;
}

+2 −2
Original line number Diff line number Diff line
@@ -1122,7 +1122,7 @@ static void wbsd_detect_card(unsigned long data)
	
	DBG("Executing card detection\n");
	
	mmc_detect_change(host->mmc);	
	mmc_detect_change(host->mmc, 0);	
}

/*
@@ -1198,7 +1198,7 @@ static void wbsd_tasklet_card(unsigned long param)
		 */
		spin_unlock(&host->lock);

		mmc_detect_change(host->mmc);
		mmc_detect_change(host->mmc, 0);
	}
	else
		spin_unlock(&host->lock);
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ struct mmc_host;

struct pxamci_platform_data {
	unsigned int ocr_mask;			/* available voltages */
	unsigned long detect_delay;		/* delay in jiffies before detecting cards after interrupt */
	int (*init)(struct device *, irqreturn_t (*)(int, void *, struct pt_regs *), void *);
	int (*get_ro)(struct device *);
	void (*setpower)(struct device *, unsigned int);
Loading