예제 #1
0
static int bcmsdh_sdmmc_resume(struct device *pdev)
{
#ifdef CONFIG_MACH_NOTLE
	struct sdio_func *func = dev_to_sdio_func(pdev);

	dev_err(pdev,"%s(%d) [%08x]\n",__func__, __LINE__,(unsigned int*) pdev);
	sd_err(("%s Enter\n", __FUNCTION__));
	if (func->num != 2)
		return 0;

	bcmshd_resume_work_sdio_func = dev_to_sdio_func(pdev);
	queue_delayed_work(sdmmc_pm_workqueue, &bcmshd_resume_work, msecs_to_jiffies(0));
#else
	sdioh_info_t *sdioh;
	struct sdio_func *func = dev_to_sdio_func(pdev);

	sd_err(("%s Enter\n", __FUNCTION__));
	if (func->num != 2)
		return 0;

	sdioh = sdio_get_drvdata(func);
	dhd_mmc_suspend = FALSE;
#if defined(OOB_INTR_ONLY)
	bcmsdh_resume(sdioh->bcmsdh);
#endif

	smp_mb();
#endif

	return 0;
}
예제 #2
0
static int bcmsdh_sdmmc_resume(struct device *pdev)
{
	sdioh_info_t *sdioh;
	struct sdio_func *func = dev_to_sdio_func(pdev);

	sd_err(("%s Enter\n", __FUNCTION__));
	if (func->num != 2)
		return 0;

	sdioh = sdio_get_drvdata(func);
	dhd_mmc_suspend = FALSE;
#if defined(OOB_INTR_ONLY) && !defined(CUSTOMER_HW4)
	bcmsdh_resume(sdioh->bcmsdh);
#endif /* OOB_INTR_ONLY && !CUSTOMER_HW4 */

	smp_mb();
	return 0;
}
static int bcmsdh_sdmmc_resume(struct device *pdev)
{
	sdioh_info_t *sdioh;
	struct sdio_func *func = dev_to_sdio_func(pdev);

	sd_err(("%s +\n", __FUNCTION__));
	if (func->num != 2)
		return 0;

	sdioh = sdio_get_drvdata(func);
	dhd_mmc_suspend = FALSE;
#if defined(OOB_INTR_ONLY)
#ifndef HW_WIFI_OOB_INT_SET
	bcmsdh_resume(sdioh->bcmsdh);
#endif
#endif

	smp_mb();
	sd_err(("%s -\n", __FUNCTION__));
	return 0;
}
static int bcmsdh_sdmmc_resume(struct device *pdev)
{
#if defined(OOB_INTR_ONLY)
	sdioh_info_t *sdioh;
#endif
	struct sdio_func *func = dev_to_sdio_func(pdev);

	printk("%s Enter\n", __FUNCTION__);
	if (func->num != 2)
		return 0;

	dhd_mmc_suspend = FALSE;
#if defined(OOB_INTR_ONLY)
	sdioh = sdio_get_drvdata(func);
	bcmsdh_resume(sdioh->bcmsdh);
#endif

	smp_mb();
	printk("%s Exit\n", __FUNCTION__);
	return 0;
}
예제 #5
0
static void bcmshd_resume_delayed_work_fn(struct work_struct * work)
{
	if (dhd_mmc_suspend)
	{
		sdioh_info_t *sdioh;
		struct sdio_func *func = bcmshd_resume_work_sdio_func;
		printk("\nbcmshd_resume_delayed_work_fn\n");

		sd_err(("%s Enter\n", __FUNCTION__));

		if (func->num != 2)
			return;

		sdioh = sdio_get_drvdata(func);
		dhd_mmc_suspend = FALSE;
#if defined(OOB_INTR_ONLY)
		bcmsdh_resume(sdioh->bcmsdh);
#endif
		smp_mb();
	}
}
예제 #6
0
static int bcmsdh_sdmmc_resume(struct device *pdev)
{
	sdioh_info_t *sdioh;
	struct sdio_func *func = dev_to_sdio_func(pdev);
	struct mmc_host *host;

	sd_err(("%s Enter\n", __FUNCTION__));
	if (func->num != 2)
		return 0;

	host = func->card->host;
	host->pm_flags &= ~MMC_PM_KEEP_POWER;

	sdioh = sdio_get_drvdata(func);
	dhd_mmc_suspend = FALSE;
#if defined(OOB_INTR_ONLY)
	bcmsdh_resume(sdioh->bcmsdh);
#endif 

	smp_mb();
	return 0;
}
예제 #7
0
static int bcmsdh_sdmmc_resume(struct sdio_func *func)
{
	if (func->num == 1) bcmsdh_resume(&sdmmc_dev);
	return 0;
}