diff options
Diffstat (limited to 'target/linux/brcm2708/patches-3.14/0013-Fixes-for-sdhci-bcm2708.patch')
-rw-r--r-- | target/linux/brcm2708/patches-3.14/0013-Fixes-for-sdhci-bcm2708.patch | 156 |
1 files changed, 69 insertions, 87 deletions
diff --git a/target/linux/brcm2708/patches-3.14/0013-Fixes-for-sdhci-bcm2708.patch b/target/linux/brcm2708/patches-3.14/0013-Fixes-for-sdhci-bcm2708.patch index d59df5b28b..6af9fe00be 100644 --- a/target/linux/brcm2708/patches-3.14/0013-Fixes-for-sdhci-bcm2708.patch +++ b/target/linux/brcm2708/patches-3.14/0013-Fixes-for-sdhci-bcm2708.patch @@ -113,11 +113,9 @@ A typo also fixed in comments. include/linux/mmc/sdhci.h | 1 + 7 files changed, 365 insertions(+), 191 deletions(-) -diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c -index 7b5424f..687cccb 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c -@@ -1361,7 +1361,7 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, +@@ -1361,7 +1361,7 @@ static void mmc_blk_rw_rq_prep(struct mm brq->data.blocks = 1; } @@ -126,8 +124,6 @@ index 7b5424f..687cccb 100644 /* SPI multiblock writes terminate using a special * token, not a STOP_TRANSMISSION request. */ -diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c -index 692fdb1..ea11f9c 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c @@ -15,6 +15,8 @@ @@ -139,7 +135,7 @@ index 692fdb1..ea11f9c 100644 #include <linux/mmc/host.h> #include <linux/mmc/card.h> -@@ -67,6 +69,15 @@ static const unsigned int sd_au_size[] = { +@@ -67,6 +69,15 @@ static const unsigned int sd_au_size[] = __res & __mask; \ }) @@ -155,7 +151,7 @@ index 692fdb1..ea11f9c 100644 /* * Given the decoded CSD structure, decode the raw CID to our CID structure. */ -@@ -219,12 +230,63 @@ static int mmc_decode_scr(struct mmc_card *card) +@@ -219,12 +230,63 @@ static int mmc_decode_scr(struct mmc_car } /* @@ -220,7 +216,7 @@ index 692fdb1..ea11f9c 100644 u32 *ssr; if (!(card->csd.cmdclass & CCC_APP_SPEC)) { -@@ -237,14 +299,40 @@ static int mmc_read_ssr(struct mmc_card *card) +@@ -237,14 +299,40 @@ static int mmc_read_ssr(struct mmc_card if (!ssr) return -ENOMEM; @@ -266,7 +262,7 @@ index 692fdb1..ea11f9c 100644 for (i = 0; i < 16; i++) ssr[i] = be32_to_cpu(ssr[i]); -@@ -826,14 +914,10 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card, +@@ -826,14 +914,10 @@ int mmc_sd_setup_card(struct mmc_host *h if (!reinit) { /* @@ -284,8 +280,6 @@ index 692fdb1..ea11f9c 100644 return err; /* -diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c -index d8ef77c..3173c18 100644 --- a/drivers/mmc/host/sdhci-bcm2708.c +++ b/drivers/mmc/host/sdhci-bcm2708.c @@ -51,7 +51,6 @@ @@ -310,7 +304,7 @@ index d8ef77c..3173c18 100644 /*****************************************************************************\ * * -@@ -129,6 +133,14 @@ static inline unsigned long int since_ns(hptime_t t) +@@ -129,6 +133,14 @@ static inline unsigned long int since_ns return (unsigned long)((hptime() - t) * HPTIME_CLK_NS); } @@ -325,7 +319,7 @@ index d8ef77c..3173c18 100644 #if 0 static void hptime_test(void) { -@@ -241,19 +253,19 @@ static void sdhci_bcm2708_raw_writel(struct sdhci_host *host, u32 val, int reg) +@@ -241,19 +253,19 @@ static void sdhci_bcm2708_raw_writel(str /* host->clock is the clock freq in Hz */ static hptime_t last_write_hpt; hptime_t now = hptime(); @@ -349,7 +343,7 @@ index d8ef77c..3173c18 100644 } last_write_hpt = now; } -@@ -269,13 +281,13 @@ static void sdhci_bcm2708_raw_writel(struct sdhci_host *host, u32 val, int reg) +@@ -269,13 +281,13 @@ static void sdhci_bcm2708_raw_writel(str ier &= ~SDHCI_INT_DATA_TIMEOUT; writel(ier, host->ioaddr + SDHCI_SIGNAL_ENABLE); timeout_disabled = true; @@ -365,7 +359,7 @@ index d8ef77c..3173c18 100644 } #endif writel(val, host->ioaddr + reg); -@@ -353,68 +365,9 @@ void sdhci_bcm2708_writeb(struct sdhci_host *host, u8 val, int reg) +@@ -353,68 +365,9 @@ void sdhci_bcm2708_writeb(struct sdhci_h static unsigned int sdhci_bcm2708_get_max_clock(struct sdhci_host *host) { @@ -449,7 +443,7 @@ index d8ef77c..3173c18 100644 if (host_priv->dma_wanted) { if (NULL == data) { -@@ -720,13 +673,16 @@ sdhci_bcm2708_platdma_reset(struct sdhci_host *host, struct mmc_data *data) +@@ -720,13 +673,16 @@ sdhci_bcm2708_platdma_reset(struct sdhci cs = readl(host_priv->dma_chan_base + BCM2708_DMA_CS); if (!(BCM2708_DMA_ACTIVE & cs)) @@ -467,7 +461,7 @@ index d8ef77c..3173c18 100644 else printk(KERN_INFO "%s: resetting ongoing cmd %d" "DMA before %d/%d [%d]/[%d] complete\n", -@@ -779,7 +735,7 @@ sdhci_bcm2708_platdma_reset(struct sdhci_host *host, struct mmc_data *data) +@@ -779,7 +735,7 @@ sdhci_bcm2708_platdma_reset(struct sdhci #endif } @@ -476,7 +470,7 @@ index d8ef77c..3173c18 100644 } -@@ -792,11 +748,11 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host, +@@ -792,11 +748,11 @@ static void sdhci_bcm2708_dma_complete_i int sg_len; int sg_ix; int sg_todo; @@ -490,7 +484,7 @@ index d8ef77c..3173c18 100644 data = host->data; #ifdef CHECK_DMA_USE -@@ -821,7 +777,7 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host, +@@ -821,7 +777,7 @@ static void sdhci_bcm2708_dma_complete_i if (NULL == data) { DBG("PDMA unused completion - status 0x%X\n", dma_cs); @@ -499,7 +493,7 @@ index d8ef77c..3173c18 100644 return; } sg = data->sg; -@@ -878,40 +834,34 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host, +@@ -878,40 +834,34 @@ static void sdhci_bcm2708_dma_complete_i SDHCI_INT_SPACE_AVAIL); } } else { @@ -513,17 +507,6 @@ index d8ef77c..3173c18 100644 - u32 state_mask; - int timeout=1000000; - hptime_t now = hptime(); -- -- DBG("PDMA over - sync card\n"); -- if (data->flags & MMC_DATA_READ) -- state_mask = SDHCI_DOING_READ; -- else -- state_mask = SDHCI_DOING_WRITE; -- -- while (0 != (sdhci_bcm2708_raw_readl(host, -- SDHCI_PRESENT_STATE) & -- state_mask) && --timeout > 0) -- continue; + if (sync_after_dma) { + /* On the Arasan controller the stop command (which will be + scheduled after this completes) does not seem to work @@ -533,13 +516,23 @@ index d8ef77c..3173c18 100644 + the SD controller to finish reading/writing to the card. */ + u32 state_mask; + int timeout=3*1000*1000; -+ + +- DBG("PDMA over - sync card\n"); +- if (data->flags & MMC_DATA_READ) +- state_mask = SDHCI_DOING_READ; +- else +- state_mask = SDHCI_DOING_WRITE; + DBG("PDMA over - sync card\n"); + if (data->flags & MMC_DATA_READ) + state_mask = SDHCI_DOING_READ; + else + state_mask = SDHCI_DOING_WRITE; +- while (0 != (sdhci_bcm2708_raw_readl(host, +- SDHCI_PRESENT_STATE) & +- state_mask) && --timeout > 0) +- continue; +- - if (1000000-timeout > 4000) /*ave. is about 3250*/ - DBG("%s: note - long %s sync %luns - " - "%d its.\n", @@ -567,7 +560,7 @@ index d8ef77c..3173c18 100644 if (host_priv->complete) { (*host_priv->complete)(host); DBG("PDMA %s complete\n", -@@ -920,7 +870,7 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host, +@@ -920,7 +870,7 @@ static void sdhci_bcm2708_dma_complete_i SDHCI_INT_SPACE_AVAIL); } } @@ -576,7 +569,7 @@ index d8ef77c..3173c18 100644 } static irqreturn_t sdhci_bcm2708_dma_irq(int irq, void *dev_id) -@@ -929,12 +879,11 @@ static irqreturn_t sdhci_bcm2708_dma_irq(int irq, void *dev_id) +@@ -929,12 +879,11 @@ static irqreturn_t sdhci_bcm2708_dma_irq struct sdhci_host *host = dev_id; struct sdhci_bcm2708_priv *host_priv = SDHCI_HOST_PRIV(host); u32 dma_cs; /* control and status register */ @@ -590,7 +583,7 @@ index d8ef77c..3173c18 100644 dma_cs = readl(host_priv->dma_chan_base + BCM2708_DMA_CS); -@@ -958,7 +907,8 @@ static irqreturn_t sdhci_bcm2708_dma_irq(int irq, void *dev_id) +@@ -958,7 +907,8 @@ static irqreturn_t sdhci_bcm2708_dma_irq if (!host_priv->dma_wanted) { /* ignore this interrupt - it was reset */ @@ -600,7 +593,7 @@ index d8ef77c..3173c18 100644 "results were reset\n", mmc_hostname(host->mmc), dma_cs); #ifdef CHECK_DMA_USE -@@ -975,8 +925,7 @@ static irqreturn_t sdhci_bcm2708_dma_irq(int irq, void *dev_id) +@@ -975,8 +925,7 @@ static irqreturn_t sdhci_bcm2708_dma_irq result = IRQ_HANDLED; } @@ -610,7 +603,7 @@ index d8ef77c..3173c18 100644 return result; } -@@ -1019,10 +968,12 @@ static ssize_t attr_dma_store(struct device *_dev, +@@ -1019,10 +968,12 @@ static ssize_t attr_dma_store(struct dev int on = simple_strtol(buf, NULL, 0); if (on) { host->flags |= SDHCI_USE_PLATDMA; @@ -623,7 +616,7 @@ index d8ef77c..3173c18 100644 printk(KERN_INFO "%s: DMA disabled\n", mmc_hostname(host->mmc)); } -@@ -1126,7 +1077,7 @@ static int sdhci_bcm2708_suspend(struct platform_device *dev, pm_message_t state +@@ -1126,7 +1077,7 @@ static int sdhci_bcm2708_suspend(struct int ret = 0; if (host->mmc) { @@ -632,7 +625,7 @@ index d8ef77c..3173c18 100644 } return ret; -@@ -1139,7 +1090,7 @@ static int sdhci_bcm2708_resume(struct platform_device *dev) +@@ -1139,7 +1090,7 @@ static int sdhci_bcm2708_resume(struct p int ret = 0; if (host->mmc) { @@ -641,7 +634,7 @@ index d8ef77c..3173c18 100644 } return ret; -@@ -1158,19 +1109,14 @@ static unsigned int sdhci_bcm2708_quirk_extra_ints(struct sdhci_host *host) +@@ -1158,19 +1109,14 @@ static unsigned int sdhci_bcm2708_quirk_ return 1; } @@ -664,7 +657,7 @@ index d8ef77c..3173c18 100644 } /***************************************************************************** \ -@@ -1190,11 +1136,7 @@ static struct sdhci_ops sdhci_bcm2708_ops = { +@@ -1190,11 +1136,7 @@ static struct sdhci_ops sdhci_bcm2708_op #else #error The BCM2708 SDHCI driver needs CONFIG_MMC_SDHCI_IO_ACCESSORS to be set #endif @@ -676,7 +669,7 @@ index d8ef77c..3173c18 100644 #ifdef CONFIG_MMC_SDHCI_BCM2708_DMA // Platform DMA operations -@@ -1203,9 +1145,6 @@ static struct sdhci_ops sdhci_bcm2708_ops = { +@@ -1203,9 +1145,6 @@ static struct sdhci_ops sdhci_bcm2708_op .pdma_reset = sdhci_bcm2708_platdma_reset, #endif .extra_ints = sdhci_bcm2708_quirk_extra_ints, @@ -686,7 +679,7 @@ index d8ef77c..3173c18 100644 }; /*****************************************************************************\ -@@ -1244,15 +1183,30 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev) +@@ -1244,15 +1183,30 @@ static int sdhci_bcm2708_probe(struct pl ret = PTR_ERR(host); goto err; } @@ -718,7 +711,7 @@ index d8ef77c..3173c18 100644 #ifdef CONFIG_MMC_SDHCI_BCM2708_DMA host->flags = SDHCI_USE_PLATDMA; #endif -@@ -1305,17 +1259,24 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev) +@@ -1305,17 +1259,24 @@ static int sdhci_bcm2708_probe(struct pl host_priv->dma_chan = ret; ret = request_irq(host_priv->dma_irq, sdhci_bcm2708_dma_irq, @@ -745,7 +738,7 @@ index d8ef77c..3173c18 100644 #endif ret = sdhci_add_host(host); -@@ -1327,6 +1288,12 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev) +@@ -1327,6 +1288,12 @@ static int sdhci_bcm2708_probe(struct pl ret = device_create_file(&pdev->dev, &dev_attr_dma_wait); ret = device_create_file(&pdev->dev, &dev_attr_status); @@ -785,11 +778,9 @@ index d8ef77c..3173c18 100644 +MODULE_PARM_DESC(extra_messages, "Enable more sdcard warning messages"); + + -diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c -index b78afa2..db67be8 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c -@@ -131,6 +131,99 @@ static void sdhci_dumpregs(struct sdhci_host *host) +@@ -131,6 +131,99 @@ static void sdhci_dumpregs(struct sdhci_ * Low level functions * * * \*****************************************************************************/ @@ -889,7 +880,7 @@ index b78afa2..db67be8 100644 static void sdhci_clear_set_irqs(struct sdhci_host *host, u32 clear, u32 set) { -@@ -300,7 +393,7 @@ static void sdhci_led_control(struct led_classdev *led, +@@ -300,7 +393,7 @@ static void sdhci_led_control(struct led struct sdhci_host *host = container_of(led, struct sdhci_host, led); unsigned long flags; @@ -898,7 +889,7 @@ index b78afa2..db67be8 100644 if (host->runtime_suspended) goto out; -@@ -310,7 +403,7 @@ static void sdhci_led_control(struct led_classdev *led, +@@ -310,7 +403,7 @@ static void sdhci_led_control(struct led else sdhci_activate_led(host); out: @@ -907,7 +898,7 @@ index b78afa2..db67be8 100644 } #endif -@@ -457,6 +550,7 @@ static void sdhci_transfer_pio(struct sdhci_host *host, u32 intstate) +@@ -457,6 +550,7 @@ static void sdhci_transfer_pio(struct sd break; state = sdhci_readl(host, SDHCI_PRESENT_STATE); available = state & mask; @@ -915,7 +906,7 @@ index b78afa2..db67be8 100644 } DBG("PIO transfer complete - %d blocks left.\n", host->blocks); -@@ -1023,7 +1117,9 @@ void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd) +@@ -1023,7 +1117,9 @@ void sdhci_send_command(struct sdhci_hos return; } timeout--; @@ -935,7 +926,7 @@ index b78afa2..db67be8 100644 } clk |= SDHCI_CLOCK_CARD_EN; -@@ -1357,7 +1455,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) +@@ -1357,7 +1455,7 @@ static void sdhci_request(struct mmc_hos sdhci_runtime_pm_get(host); @@ -944,7 +935,7 @@ index b78afa2..db67be8 100644 WARN_ON(host->mrq != NULL); -@@ -1422,9 +1520,9 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) +@@ -1422,9 +1520,9 @@ static void sdhci_request(struct mmc_hos */ host->mrq = NULL; @@ -956,7 +947,7 @@ index b78afa2..db67be8 100644 /* Restore original mmc_request structure */ host->mrq = mrq; -@@ -1438,7 +1536,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) +@@ -1438,7 +1536,7 @@ static void sdhci_request(struct mmc_hos } mmiowb(); @@ -965,7 +956,7 @@ index b78afa2..db67be8 100644 } static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios) -@@ -1447,10 +1545,10 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios) +@@ -1447,10 +1545,10 @@ static void sdhci_do_set_ios(struct sdhc int vdd_bit = -1; u8 ctrl; @@ -978,7 +969,7 @@ index b78afa2..db67be8 100644 if (host->vmmc && ios->power_mode == MMC_POWER_OFF) mmc_regulator_set_ocr(host->mmc, host->vmmc, 0); return; -@@ -1478,9 +1576,9 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios) +@@ -1478,9 +1576,9 @@ static void sdhci_do_set_ios(struct sdhc vdd_bit = sdhci_set_power(host, ios->vdd); if (host->vmmc && vdd_bit != -1) { @@ -990,7 +981,7 @@ index b78afa2..db67be8 100644 } if (host->ops->platform_send_init_74_clocks) -@@ -1519,7 +1617,7 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios) +@@ -1519,7 +1617,7 @@ static void sdhci_do_set_ios(struct sdhc else ctrl &= ~SDHCI_CTRL_HISPD; @@ -999,7 +990,7 @@ index b78afa2..db67be8 100644 u16 clk, ctrl_2; /* In case of UHS-I modes, set High Speed Enable */ -@@ -1617,7 +1715,7 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios) +@@ -1617,7 +1715,7 @@ static void sdhci_do_set_ios(struct sdhc sdhci_reset(host, SDHCI_RESET_CMD | SDHCI_RESET_DATA); mmiowb(); @@ -1008,7 +999,7 @@ index b78afa2..db67be8 100644 } static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) -@@ -1665,7 +1763,7 @@ static int sdhci_check_ro(struct sdhci_host *host) +@@ -1665,7 +1763,7 @@ static int sdhci_check_ro(struct sdhci_h unsigned long flags; int is_readonly; @@ -1017,7 +1008,7 @@ index b78afa2..db67be8 100644 if (host->flags & SDHCI_DEVICE_DEAD) is_readonly = 0; -@@ -1675,7 +1773,7 @@ static int sdhci_check_ro(struct sdhci_host *host) +@@ -1675,7 +1773,7 @@ static int sdhci_check_ro(struct sdhci_h is_readonly = !(sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_WRITE_PROTECT); @@ -1026,7 +1017,7 @@ index b78afa2..db67be8 100644 /* This quirk needs to be replaced by a callback-function later */ return host->quirks & SDHCI_QUIRK_INVERTED_WRITE_PROTECT ? -@@ -1748,9 +1846,9 @@ static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable) +@@ -1748,9 +1846,9 @@ static void sdhci_enable_sdio_irq(struct struct sdhci_host *host = mmc_priv(mmc); unsigned long flags; @@ -1038,7 +1029,7 @@ index b78afa2..db67be8 100644 } static int sdhci_do_start_signal_voltage_switch(struct sdhci_host *host, -@@ -2101,7 +2199,7 @@ static void sdhci_card_event(struct mmc_host *mmc) +@@ -2101,7 +2199,7 @@ static void sdhci_card_event(struct mmc_ if (host->ops->card_event) host->ops->card_event(host); @@ -1047,7 +1038,7 @@ index b78afa2..db67be8 100644 /* Check host->mrq first in case we are runtime suspended */ if (host->mrq && !sdhci_do_get_cd(host)) { -@@ -2117,7 +2215,7 @@ static void sdhci_card_event(struct mmc_host *mmc) +@@ -2117,7 +2215,7 @@ static void sdhci_card_event(struct mmc_ tasklet_schedule(&host->finish_tasklet); } @@ -1056,7 +1047,7 @@ index b78afa2..db67be8 100644 } static const struct mmc_host_ops sdhci_ops = { -@@ -2156,14 +2254,14 @@ static void sdhci_tasklet_finish(unsigned long param) +@@ -2156,14 +2254,14 @@ static void sdhci_tasklet_finish(unsigne host = (struct sdhci_host*)param; @@ -1073,7 +1064,7 @@ index b78afa2..db67be8 100644 return; } -@@ -2201,7 +2299,7 @@ static void sdhci_tasklet_finish(unsigned long param) +@@ -2201,7 +2299,7 @@ static void sdhci_tasklet_finish(unsigne #endif mmiowb(); @@ -1082,7 +1073,7 @@ index b78afa2..db67be8 100644 mmc_request_done(host->mmc, mrq); sdhci_runtime_pm_put(host); -@@ -2214,7 +2312,7 @@ static void sdhci_timeout_timer(unsigned long data) +@@ -2214,7 +2312,7 @@ static void sdhci_timeout_timer(unsigned host = (struct sdhci_host*)data; @@ -1091,7 +1082,7 @@ index b78afa2..db67be8 100644 if (host->mrq) { pr_err("%s: Timeout waiting for hardware " -@@ -2235,7 +2333,7 @@ static void sdhci_timeout_timer(unsigned long data) +@@ -2235,7 +2333,7 @@ static void sdhci_timeout_timer(unsigned } mmiowb(); @@ -1100,7 +1091,7 @@ index b78afa2..db67be8 100644 } static void sdhci_tuning_timer(unsigned long data) -@@ -2245,11 +2343,11 @@ static void sdhci_tuning_timer(unsigned long data) +@@ -2245,11 +2343,11 @@ static void sdhci_tuning_timer(unsigned host = (struct sdhci_host *)data; @@ -1114,7 +1105,7 @@ index b78afa2..db67be8 100644 } /*****************************************************************************\ -@@ -2473,10 +2571,10 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id) +@@ -2473,10 +2571,10 @@ static irqreturn_t sdhci_irq(int irq, vo u32 intmask, unexpected = 0; int cardint = 0, max_loops = 16; @@ -1136,7 +1127,7 @@ index b78afa2..db67be8 100644 if (unexpected) { pr_err("%s: Unexpected interrupt 0x%08x.\n", -@@ -2674,7 +2772,7 @@ int sdhci_resume_host(struct sdhci_host *host) +@@ -2674,7 +2772,7 @@ int sdhci_resume_host(struct sdhci_host } if (!device_may_wakeup(mmc_dev(host->mmc))) { @@ -1145,7 +1136,7 @@ index b78afa2..db67be8 100644 mmc_hostname(host->mmc), host); if (ret) return ret; -@@ -2750,15 +2848,15 @@ int sdhci_runtime_suspend_host(struct sdhci_host *host) +@@ -2750,15 +2848,15 @@ int sdhci_runtime_suspend_host(struct sd host->flags &= ~SDHCI_NEEDS_RETUNING; } @@ -1165,7 +1156,7 @@ index b78afa2..db67be8 100644 return ret; } -@@ -2784,16 +2882,16 @@ int sdhci_runtime_resume_host(struct sdhci_host *host) +@@ -2784,16 +2882,16 @@ int sdhci_runtime_resume_host(struct sdh sdhci_do_start_signal_voltage_switch(host, &host->mmc->ios); if ((host_flags & SDHCI_PV_ENABLED) && !(host->quirks2 & SDHCI_QUIRK2_PRESET_VALUE_BROKEN)) { @@ -1185,7 +1176,7 @@ index b78afa2..db67be8 100644 host->runtime_suspended = false; -@@ -2804,7 +2902,7 @@ int sdhci_runtime_resume_host(struct sdhci_host *host) +@@ -2804,7 +2902,7 @@ int sdhci_runtime_resume_host(struct sdh /* Enable Card Detection */ sdhci_enable_card_detection(host); @@ -1194,7 +1185,7 @@ index b78afa2..db67be8 100644 return ret; } -@@ -3300,8 +3398,8 @@ int sdhci_add_host(struct sdhci_host *host) +@@ -3300,8 +3398,8 @@ int sdhci_add_host(struct sdhci_host *ho sdhci_init(host, 0); @@ -1205,7 +1196,7 @@ index b78afa2..db67be8 100644 if (ret) { pr_err("%s: Failed to request IRQ %d: %d\n", mmc_hostname(mmc), host->irq, ret); -@@ -3362,7 +3460,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead) +@@ -3362,7 +3460,7 @@ void sdhci_remove_host(struct sdhci_host unsigned long flags; if (dead) { @@ -1214,7 +1205,7 @@ index b78afa2..db67be8 100644 host->flags |= SDHCI_DEVICE_DEAD; -@@ -3374,7 +3472,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead) +@@ -3374,7 +3472,7 @@ void sdhci_remove_host(struct sdhci_host tasklet_schedule(&host->finish_tasklet); } @@ -1223,8 +1214,6 @@ index b78afa2..db67be8 100644 } sdhci_disable_card_detection(host); -diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h -index 6857875..649f3cf 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -300,8 +300,6 @@ struct sdhci_ops { @@ -1236,7 +1225,7 @@ index 6857875..649f3cf 100644 unsigned int (*missing_status)(struct sdhci_host *host); void (*hw_reset)(struct sdhci_host *host); -@@ -445,4 +443,10 @@ extern int sdhci_runtime_suspend_host(struct sdhci_host *host); +@@ -445,4 +443,10 @@ extern int sdhci_runtime_suspend_host(st extern int sdhci_runtime_resume_host(struct sdhci_host *host); #endif @@ -1247,8 +1236,6 @@ index 6857875..649f3cf 100644 + + #endif /* __SDHCI_HW_H */ -diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h -index 99f5709..cd6f996 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h @@ -282,6 +282,7 @@ struct mmc_host { @@ -1259,8 +1246,6 @@ index 99f5709..cd6f996 100644 mmc_pm_flag_t pm_caps; /* supported pm features */ -diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h -index e23fffb..b1b6537 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h @@ -102,6 +102,7 @@ struct sdhci_host { @@ -1271,6 +1256,3 @@ index e23fffb..b1b6537 100644 void __iomem *ioaddr; /* Mapped address */ const struct sdhci_ops *ops; /* Low level hw interface */ --- -1.9.1 - |