Merge branch 'v3.2-rc6' into next/drivers
authorArnd Bergmann <arnd@arndb.de>
Tue, 27 Dec 2011 23:41:33 +0000 (23:41 +0000)
committerArnd Bergmann <arnd@arndb.de>
Tue, 27 Dec 2011 23:41:33 +0000 (23:41 +0000)
1  2 
arch/arm/Kconfig
drivers/mmc/host/omap_hsmmc.c

diff --combined arch/arm/Kconfig
index 96804b5dd21b002b5a1ff13b7ea0b2c09dbe5e61,776d76b8cb695ff052f310d9f50a737209e96f1b..b8c69726839c81647df6c6941fa8ea956e420980
@@@ -220,8 -220,9 +220,9 @@@ config NEED_MACH_MEMORY_
          be avoided when possible.
  
  config PHYS_OFFSET
-       hex "Physical address of main memory"
+       hex "Physical address of main memory" if MMU
        depends on !ARM_PATCH_PHYS_VIRT && !NEED_MACH_MEMORY_H
+       default DRAM_BASE if !MMU
        help
          Please provide the physical address corresponding to the
          location of main memory in your system.
@@@ -591,7 -592,6 +592,7 @@@ config ARCH_MM
        select ARCH_REQUIRE_GPIOLIB
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
 +      select GPIO_PXA
        select HAVE_SCHED_CLOCK
        select TICK_ONESHOT
        select PLAT_PXA
@@@ -674,7 -674,6 +675,7 @@@ config ARCH_PX
        select CLKSRC_MMIO
        select ARCH_REQUIRE_GPIOLIB
        select GENERIC_CLOCKEVENTS
 +      select GPIO_PXA
        select HAVE_SCHED_CLOCK
        select TICK_ONESHOT
        select PLAT_PXA
index f0d792183b8e09d643e7ac94b0bc1ad6bc33470a,d5fe43d53c51894ff9e861dbced02bfde10ef705..d1fb561e089d8e0ba24888d702b01ef428745b25
@@@ -1010,6 -1010,7 +1010,7 @@@ static void omap_hsmmc_dma_cleanup(stru
                        host->data->sg_len,
                        omap_hsmmc_get_dma_dir(host, host->data));
                omap_free_dma(dma_ch);
+               host->data->host_cookie = 0;
        }
        host->data = NULL;
  }
@@@ -1575,8 -1576,10 +1576,10 @@@ static void omap_hsmmc_post_req(struct 
        struct mmc_data *data = mrq->data;
  
        if (host->use_dma) {
-               dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len,
-                            omap_hsmmc_get_dma_dir(host, data));
+               if (data->host_cookie)
+                       dma_unmap_sg(mmc_dev(host->mmc), data->sg,
+                                    data->sg_len,
+                                    omap_hsmmc_get_dma_dir(host, data));
                data->host_cookie = 0;
        }
  }
@@@ -1988,8 -1991,6 +1991,8 @@@ static int __init omap_hsmmc_probe(stru
        if (mmc_slot(host).nonremovable)
                mmc->caps |= MMC_CAP_NONREMOVABLE;
  
 +      mmc->pm_caps = mmc_slot(host).pm_caps;
 +
        omap_hsmmc_conf_bus_power(host);
  
        /* Select DMA lines */
@@@ -2178,7 -2179,13 +2181,7 @@@ static int omap_hsmmc_suspend(struct de
                cancel_work_sync(&host->mmc_carddetect_work);
                ret = mmc_suspend_host(host->mmc);
  
 -              if (ret == 0) {
 -                      omap_hsmmc_disable_irq(host);
 -                      OMAP_HSMMC_WRITE(host->base, HCTL,
 -                              OMAP_HSMMC_READ(host->base, HCTL) & ~SDBP);
 -                      if (host->got_dbclk)
 -                              clk_disable(host->dbclk);
 -              } else {
 +              if (ret) {
                        host->suspended = 0;
                        if (host->pdata->resume) {
                                ret = host->pdata->resume(&pdev->dev,
                                        dev_dbg(mmc_dev(host->mmc),
                                                "Unmask interrupt failed\n");
                        }
 +                      goto err;
                }
 -              pm_runtime_put_sync(host->dev);
 +
 +              if (!(host->mmc->pm_flags & MMC_PM_KEEP_POWER)) {
 +                      omap_hsmmc_disable_irq(host);
 +                      OMAP_HSMMC_WRITE(host->base, HCTL,
 +                              OMAP_HSMMC_READ(host->base, HCTL) & ~SDBP);
 +              }
 +              if (host->got_dbclk)
 +                      clk_disable(host->dbclk);
 +
        }
 +err:
 +      pm_runtime_put_sync(host->dev);
        return ret;
  }
  
@@@ -2220,8 -2216,7 +2223,8 @@@ static int omap_hsmmc_resume(struct dev
                if (host->got_dbclk)
                        clk_enable(host->dbclk);
  
 -              omap_hsmmc_conf_bus_power(host);
 +              if (!(host->mmc->pm_flags & MMC_PM_KEEP_POWER))
 +                      omap_hsmmc_conf_bus_power(host);
  
                if (host->pdata->resume) {
                        ret = host->pdata->resume(&pdev->dev, host->slot_id);
This page took 0.048954 seconds and 5 git commands to generate.