Thread (12 messages) 12 messages, 5 authors, 2011-06-14

[PATCH v4 2/5] mmc: support sdhci-pxav2.c

flat view
STALE5603d

From: zhangfei gao <hidden>
Date: 2011-06-14 06:07:53
Also in: linux-mmc

Revision v4 of 4 in this series.

Revisions (4)
  1. v4
  2. v4
  3. v4 current
  4. v4
quoted
+static void pxav2_set_private_registers(struct sdhci_host *host, u8 mask)
+{
+ ? ? struct platform_device *pdev = to_platform_device(mmc_dev(host->mmc));
+ ? ? struct sdhci_pxa_platdata *pdata = pdev->dev.platform_data;
+
+ ? ? if (mask == SDHCI_RESET_ALL) {
+ ? ? ? ? ? ? u16 tmp = 0;
+
+ ? ? ? ? ? ? /*
+ ? ? ? ? ? ? ?* tune timing of read data/command when crc error happen
+ ? ? ? ? ? ? ?* no performance impact
+ ? ? ? ? ? ? ?*/
+ ? ? ? ? ? ? if (pdata->clk_delay_sel == 1) {
+ ? ? ? ? ? ? ? ? ? ? tmp = readw(host->ioaddr + SD_CLOCK_BURST_SIZE_SETUP);
+
+ ? ? ? ? ? ? ? ? ? ? tmp &= ~(SDCLK_DELAY_MASK << SDCLK_DELAY_SHIFT);
+ ? ? ? ? ? ? ? ? ? ? tmp |= (pdata->clk_delay_cycles & SDCLK_DELAY_MASK)
+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? << SDCLK_DELAY_SHIFT;
+ ? ? ? ? ? ? ? ? ? ? tmp &= ~(SDCLK_SEL_MASK << SDCLK_SEL_SHIFT);
+ ? ? ? ? ? ? ? ? ? ? tmp |= (1 & SDCLK_SEL_MASK) << SDCLK_SEL_SHIFT;
+
+ ? ? ? ? ? ? ? ? ? ? writew(tmp, host->ioaddr + SD_CLOCK_BURST_SIZE_SETUP);
+ ? ? ? ? ? ? }
There are 3 possible value for clk_delay_sel.

0 ?== do not use clk_delay_cycles
1 == use programmed clk_delay_cycles value (the code above)
all other values use the sd_clk which was used to drive the output

The code about only handles 2 of the 3 cases
pxa910/920 only require two cases.
1, clk_delay_sel = 1 with delay value.
2, use default setting and directly use sd_clk. clk_delay_sel = 3.
suggest

? ? ? ?(if (pdata->clk_delay_sel) {
quoted
+ ? ? ? ? ? ? if (pdata->clk_delay_sel == 1) {
+ ? ? ? ? ? ? ? ? ? ? tmp = readw(host->ioaddr + SD_CLOCK_BURST_SIZE_SETUP);
+
+ ? ? ? ? ? ? ? ? ? ? tmp &= ~(SDCLK_DELAY_MASK << SDCLK_DELAY_SHIFT);
+ ? ? ? ? ? ? ? ? ? ? tmp |= (pdata->clk_delay_cycles & SDCLK_DELAY_MASK)
+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? << SDCLK_DELAY_SHIFT;
+ ? ? ? ? ? ? ? ? ? ? tmp &= ~(SDCLK_SEL_MASK << SDCLK_SEL_SHIFT);
+ ? ? ? ? ? ? ? ? ? ? tmp |= 1 << SDCLK_SEL_SHIFT;
+
+ ? ? ? ? ? ? ? ? ? ? writew(tmp, host->ioaddr + SD_CLOCK_BURST_SIZE_SETUP);
+ ? ? ? ? ? ? } else {
quoted
+ ? ? ? ? ? ? ? ? ? ? tmp = readw(host->ioaddr + SD_CLOCK_BURST_SIZE_SETUP);
+ ? ? ? ? ? ? ? ? ? ? tmp &= ~(SDCLK_SEL_MASK << SDCLK_SEL_SHIFT);
+ ? ? ? ? ? ? ? ? ? ? tmp |= 2 ?<< SDCLK_SEL_SHIFT;
+ ? ? ? ? ? ? ? ? ? ? writew(tmp, host->ioaddr + SD_CLOCK_BURST_SIZE_SETUP);
The else is default setting on pxa910 after reset.
? ? ? ? ? ? ? ? ? }
? ? ? ? }

Philip and Mark
quoted
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help