Re: [PATCH v2] dma: fix scope of errata i88 upto 3430ES1.0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> * Venkatraman S <svenkatr@xxxxxx> [100426 07:46]:
>> Tony Lindgren <tony@xxxxxxxxxxx> wrote:
>> > * Venkatraman S <svenkatr@xxxxxx> [100419 03:47]:
>> >> Hi Tony,
>> >> > Venkatraman S <svenkatr@xxxxxx> wrote:
>> >> > From 2799506180649cbb61d24cf2b4171425b2e1fa80 Mon Sep 17 00:00:00 2001
>> >> > From: Venkatraman S <svenkatr@xxxxxx>
>> >> > Date: Mon, 5 Apr 2010 20:56:27 +0530
>> >> > Subject: [PATCH] dma: fix scope of errata i88 upto 3430ES1.0
>> >> >
>> >> > DMA errata for special end of block programming is applicable
>> >> > only for OMAP2430 & OMAP3430 ES1.0.
>> >> > This patch does the necessary checks before the workaround
>> >> > is applied. Tested on 3430 SDP
>> >> >
>> >> > Signed-off-by: Thara Gopinath <thara@xxxxxx>
>> >> > Signed-off-by: Venkatraman S <svenkatr@xxxxxx>
>> >> > Reviewed-by: Shilimkar Santosh <santosh.shilimkar@xxxxxx>
>> >> > ---
>> >> > From v1, removed the redundant omap3430() check
>> >> >
>> >> >  arch/arm/plat-omap/dma.c |   20 ++++++++++++--------
>> >> >  1 files changed, 12 insertions(+), 8 deletions(-)
>> >> >
>> >> > diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
>> >> > index 2ab224c..a9b480a 100644
>> >> > --- a/arch/arm/plat-omap/dma.c
>> >> > +++ b/arch/arm/plat-omap/dma.c
>> >> > @@ -1663,14 +1663,17 @@ int omap_stop_dma_chain_transfers(int chain_id)
>> >> >        channels = dma_linked_lch[chain_id].linked_dmach_q;
>> >> >
>> >> >        /*
>> >> > -        * DMA Errata:
>> >> > -        * Special programming model needed to disable DMA before end of block
>> >> > +        * DMA Errata: i88
>> >> > +        * Special programming model needed
>> >> > +        * to disable DMA before end of block
>> >> >         */
>> >> >        sys_cf = dma_read(OCP_SYSCONFIG);
>> >> > -       l = sys_cf;
>> >> > -       /* Middle mode reg set no Standby */
>> >> > -       l &= ~((1 << 12)|(1 << 13));
>> >> > -       dma_write(l, OCP_SYSCONFIG);
>> >> > +       if (cpu_is_omap2430() || (omap_rev() == OMAP3430_REV_ES1_0)) {
>> >> > +               l = sys_cf;
>> >> > +               /* Middle mode reg set no Standby */
>> >> > +               l &= ~((1 << 12)|(1 << 13));
>> >> > +               dma_write(l, OCP_SYSCONFIG);
>> >> > +       }
>> >> >
>> >> >        for (i = 0; i < dma_linked_lch[chain_id].no_of_lchs_linked; i++) {
>> >> >
>> >
>> > What about other omaps? It seems that we're currently doing the workaround
>> > for all omaps. Seems like "Tested on 3430 SDP" is not quite safe enough
>> > for making change that might affect other omaps.
>> >
>> > Tony
>>
>>      The Errata document specifically mentions that the workaround is
>> needed only for
>> 3430 ES1.0 or earlier. I had actually tested on the ES2.0. [Now that
>> you have mentioned it,
>> I tested on 3630 and 4430 as well]
>> Let me know if you need more test results or information.
>
> Uhh. The old code does this for all omaps. I rather trust the existing
> than TI documentation. What about 2420 and 2430?
>

I don't have OMAP2 boards to test, unfortunately.
I felt that the code didn't get updated with respect to the later
versions of the silicon where the h/w defect
is no longer seen (atleast, according to the errata specifications I have)

No driver is currently using omap_stop_dma_chain_transfers in the
tree, as far as I checked. So
that makes it somewhat less risky than it seems.
You can make a call on that.

Regards,
Venkat.
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux