Thread (20 messages) flat view 20 messages, 5 authors, 2011-01-27
STALE5712d

[PATCH] mmci: fixup broken_blockend variant patch v2

From: Linus Walleij <hidden>
Date: 2011-01-18 15:01:48

2011/1/17 Rabin Vincent [off-list ref]:
On Mon, Jan 17, 2011 at 21:26, Linus Walleij
quoted
The intention is to turn it off for HW which we know is broken,
(has broken_blocken set true) which is what happens above.
Right, but don't you already remove the place where it was being set?

| - ? ? ? mask = MCI_IRQENABLE;
| - ? ? ? /* Don't use the datablockend flag if it's broken */
| - ? ? ? if (variant->broken_blockend)
| - ? ? ? ? ? ? ? mask &= ~MCI_DATABLOCKEND;
| -
| - ? ? ? writel(mask, host->base + MMCIMASK0);
| + ? ? ? writel(MCI_IRQENABLE, host->base + MMCIMASK0);
|
| ? ? ? ?amba_set_drvdata(dev, mmc);
|
| diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h
| index df06f01..7ac8c4d 100644
| --- a/drivers/mmc/host/mmci.h
| +++ b/drivers/mmc/host/mmci.h
| @@ -137,7 +137,7 @@
| ?#define MCI_IRQENABLE ?\
| ? ? ? ?(MCI_CMDCRCFAILMASK|MCI_DATACRCFAILMASK|MCI_CMDTIMEOUTMASK| ? ? \
| ? ? ? ?MCI_DATATIMEOUTMASK|MCI_TXUNDERRUNMASK|MCI_RXOVERRUNMASK| ? ? ? \
| - ? ? ? MCI_CMDRESPENDMASK|MCI_CMDSENTMASK|MCI_DATABLOCKENDMASK)
| + ? ? ? MCI_CMDRESPENDMASK|MCI_CMDSENTMASK)
Um, this shows I should really split the patch, yes MCI_DATABLOCKENDMASK
is removed as set by default, then added back depending on whether the
.broken_blockend flag is set or not.

In the code quoted earlier actually:

       writel(datactrl, base + MMCIDATACTRL);
-       writel(readl(base + MMCIMASK0)&  ~MCI_DATAENDMASK, base + MMCIMASK0);
-       mmci_set_mask1(host, irqmask);
+       irqmask0 = readl(base + MMCIMASK0);
+       if (variant->broken_blockend)
+               irqmask0&= ~MCI_DATABLOCKENDMASK;
+       else
+               irqmask0 |= MCI_DATABLOCKENDMASK;
+       irqmask0&= ~MCI_DATAENDMASK;
+       writel(irqmask0, base + MMCIMASK0);
+       mmci_set_mask1(host, irqmask1);

Sorry for the confusion...

Yours,
Linus Walleij
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help