>-----Original Message-----
>From: [email protected]
>[mailto:[email protected]] On Behalf Of
>[email protected]
>Sent: Thursday, March 31, 2011 5:27 PM
>To: [email protected]
>Subject: [Meego-kernel] [RFC/PATCH] sdhci-pci: add 8-bit bus width support
>for mrst hc0
>
>Accroding to 15ec44611904be0dcc97b84c29fbf964e5e2b36f,
>"mmc: sdhci: 8-bit bus width changes", add 8-bit bus width
>to probe_slot.
>And hook platform_8bit_width to support 8-bit bus width.
>
>Signed-off-by: Major Lee <[email protected]>
>---
> sdhci-pci.c |   41 +++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
>--- linux-2.6.37.bak/drivers/mmc/host/sdhci-pci.c      2011-03-31
>15:19:30.838717856 +0800
>+++ linux-2.6.37/drivers/mmc/host/sdhci-pci.c  2011-03-31
>17:06:59.826928000 +0800
>@@ -146,6 +146,21 @@ static const struct sdhci_pci_fixes sdhc
> };
>
> /*
>+ * Accroding to 15ec44611904be0dcc97b84c29fbf964e5e2b36f,
>+ * "mmc: sdhci: 8-bit bus width changes", add 8-bit bus width
>+ * to probe_slot.
>+ * There is lack of declaration of SFI_DEV_TYPE_SD in
>+ * "Simple Firmware Interface Draft 0.8.2"; and there is also
>+ * need to add SFI_DEV_TYPE_SD in firmware.
>+ * Currently, add MMC_CAP_8_BIT_DATA directly.
>+ */
>+static int mrst_hc_probe_slot(struct sdhci_pci_slot *slot)
>+{
>+      slot->host->mmc->caps |= MMC_CAP_8_BIT_DATA;
>+      return 0;
>+}
>+
>+/*
>  * ADMA operation is disabled for Moorestown platform due to
>  * hardware bugs.
>  */
>@@ -161,6 +176,7 @@ static int mrst_hc_probe(struct sdhci_pc
>
> static const struct sdhci_pci_fixes sdhci_intel_mrst_hc0 = {
>       .quirks         = SDHCI_QUIRK_BROKEN_ADMA |
>SDHCI_QUIRK_NO_HISPD_BIT,
>+      .probe_slot             = mrst_hc_probe_slot,
> };
>
> static const struct sdhci_pci_fixes sdhci_intel_mrst_hc1 = {
>@@ -641,8 +657,33 @@ static int sdhci_pci_enable_dma(struct s
>       return 0;
> }
>
>+static int sdhci_pci_8bit_width(struct sdhci_host *host, int width)
>+{
>+      u8 ctrl;
>+
>+      ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
>+
>+      switch (width) {
>+      case MMC_BUS_WIDTH_8:
>+              ctrl |= SDHCI_CTRL_8BITBUS;
>+              ctrl &= ~SDHCI_CTRL_4BITBUS;
>+              break;
>+      case MMC_BUS_WIDTH_4:
>+              ctrl |= SDHCI_CTRL_4BITBUS;
>+              ctrl &= ~SDHCI_CTRL_8BITBUS;
>+              break;
>+      default:
>+              break;
>+      }
>+
>+      sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
>+
>+      return 0;
>+}
>+
> static struct sdhci_ops sdhci_pci_ops = {
>       .enable_dma     = sdhci_pci_enable_dma,
>+      .platform_8bit_width    = sdhci_pci_8bit_width,
> };
>
To enable 8bit support, I don't think the new callback 'platform_8bit_width' is 
needed.
This is because the MMC core will enable the 8bit width support (in 
mmc_init_card() of file drivers/mmc/core/mmc.c) if the host controller driver 
set MMC_CAP_8_BIT_DATA.

So, only set the MMC_CAP_8_BIT_DATA cap bit in host controller driver is 
enough, don't need to do anything else.

Thanks.

Regards,
Yunpeng


_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel

Reply via email to