public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
* Problems with 2430 NAND prefetch engine
@ 2008-04-09  0:33 Juha Kuikka
  2008-04-11 19:22 ` Tony Lindgren
  0 siblings, 1 reply; 5+ messages in thread
From: Juha Kuikka @ 2008-04-09  0:33 UTC (permalink / raw)
  To: linux-omap

Hi,

I am trying to use the NAND prefetch engine to speed up NAND access.

In GPMC CS0 is the NAND chip. GPMC_CONFIG7_0 is set to 0x0000084c by
u-boot. Hence the address for this CS should be 0x0C000000.
Documentation indicates that the FIFO should be accessible in any
associated chip-select region after the engine has been enabled.

In linux I use ioremap() to map 0x0C000000 and use the returned
pointer to access the prefetch engine FIFO.

Prefetch engine is configured and started.
I get FIFOEVENT interrupt from it and try to read the fifo by using
this ioremap's pointer but kernel crashes with:

Unhandled fault: external abort on non-linefetch (0x008) at 0xc4854000
0xc4854000 corresponds to the pointer ioremap() returned.

Apparently I miss something either in HW or kernel but I cannot think
of anything.
Conventional access to the NAND chip through COMMAND/ADDRESS/DATA
registers works ok.
Any ideas would be appreciated.

 - Juha

-- 
Madness takes it's toll. Please have exact change.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Problems with 2430 NAND prefetch engine
  2008-04-09  0:33 Problems with 2430 NAND prefetch engine Juha Kuikka
@ 2008-04-11 19:22 ` Tony Lindgren
  2008-04-11 21:10   ` Juha Kuikka
  0 siblings, 1 reply; 5+ messages in thread
From: Tony Lindgren @ 2008-04-11 19:22 UTC (permalink / raw)
  To: Juha Kuikka; +Cc: linux-omap

* Juha Kuikka <juha.kuikka@gmail.com> [080408 17:33]:
> Hi,
> 
> I am trying to use the NAND prefetch engine to speed up NAND access.
> 
> In GPMC CS0 is the NAND chip. GPMC_CONFIG7_0 is set to 0x0000084c by
> u-boot. Hence the address for this CS should be 0x0C000000.
> Documentation indicates that the FIFO should be accessible in any
> associated chip-select region after the engine has been enabled.
> 
> In linux I use ioremap() to map 0x0C000000 and use the returned
> pointer to access the prefetch engine FIFO.
> 
> Prefetch engine is configured and started.
> I get FIFOEVENT interrupt from it and try to read the fifo by using
> this ioremap's pointer but kernel crashes with:
> 
> Unhandled fault: external abort on non-linefetch (0x008) at 0xc4854000
> 0xc4854000 corresponds to the pointer ioremap() returned.
>
> Apparently I miss something either in HW or kernel but I cannot think
> of anything.
> Conventional access to the NAND chip through COMMAND/ADDRESS/DATA
> registers works ok.
> Any ideas would be appreciated.

Are you sure you have all the needed clocks on at this point? At least
gpmc_fck should be checked. Of course if access to gpmc works in
general, this is not the problem.

Tony

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Problems with 2430 NAND prefetch engine
  2008-04-11 19:22 ` Tony Lindgren
@ 2008-04-11 21:10   ` Juha Kuikka
  2008-04-13 12:22     ` Choraria, Rohit
  0 siblings, 1 reply; 5+ messages in thread
From: Juha Kuikka @ 2008-04-11 21:10 UTC (permalink / raw)
  To: Tony Lindgren; +Cc: linux-omap

On Fri, Apr 11, 2008 at 12:22 PM, Tony Lindgren <tony@atomide.com> wrote:
> * Juha Kuikka <juha.kuikka@gmail.com> [080408 17:33]:
> > Hi,
>  >
>  > I am trying to use the NAND prefetch engine to speed up NAND access.
>  >
>  > In GPMC CS0 is the NAND chip. GPMC_CONFIG7_0 is set to 0x0000084c by
>  > u-boot. Hence the address for this CS should be 0x0C000000.
>  > Documentation indicates that the FIFO should be accessible in any
>  > associated chip-select region after the engine has been enabled.
>  >
>  > In linux I use ioremap() to map 0x0C000000 and use the returned
>  > pointer to access the prefetch engine FIFO.
>  >
>  > Prefetch engine is configured and started.
>  > I get FIFOEVENT interrupt from it and try to read the fifo by using
>  > this ioremap's pointer but kernel crashes with:
>  >
>  > Unhandled fault: external abort on non-linefetch (0x008) at 0xc4854000
>  > 0xc4854000 corresponds to the pointer ioremap() returned.
>  >
>  > Apparently I miss something either in HW or kernel but I cannot think
>  > of anything.
>  > Conventional access to the NAND chip through COMMAND/ADDRESS/DATA
>  > registers works ok.
>  > Any ideas would be appreciated.
>
>  Are you sure you have all the needed clocks on at this point? At least
>  gpmc_fck should be checked. Of course if access to gpmc works in
>  general, this is not the problem.

Yes, GPMC access without prefetch engine works fine so clocks are on.

I was able to solve this problem though. U-boot configured CS0 mapping
to be 128MB. If I change this to 64MB it works.
Very strange indeed.

 / Juha


-- 
Madness takes it's toll. Please have exact change.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: Problems with 2430 NAND prefetch engine
  2008-04-11 21:10   ` Juha Kuikka
@ 2008-04-13 12:22     ` Choraria, Rohit
  2008-04-13 19:18       ` Juha Kuikka
  0 siblings, 1 reply; 5+ messages in thread
From: Choraria, Rohit @ 2008-04-13 12:22 UTC (permalink / raw)
  To: Juha Kuikka, Tony Lindgren; +Cc: linux-omap

> Yes, GPMC access without prefetch engine works fine so clocks are on.
> 
> I was able to solve this problem though. U-boot configured CS0 mapping
> to be 128MB. If I change this to 64MB it works.
> Very strange indeed.
> 

Normally this sort of problem would happen if the start address for the NAND map is not aligned to 128MB boundary. 

Regards,
Rohit

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Problems with 2430 NAND prefetch engine
  2008-04-13 12:22     ` Choraria, Rohit
@ 2008-04-13 19:18       ` Juha Kuikka
  0 siblings, 0 replies; 5+ messages in thread
From: Juha Kuikka @ 2008-04-13 19:18 UTC (permalink / raw)
  To: Choraria, Rohit; +Cc: Tony Lindgren, linux-omap

On Sun, Apr 13, 2008 at 5:22 AM, Choraria, Rohit <rohitkc@ti.com> wrote:
> > Yes, GPMC access without prefetch engine works fine so clocks are on.
>  >
>  > I was able to solve this problem though. U-boot configured CS0 mapping
>  > to be 128MB. If I change this to 64MB it works.
>  > Very strange indeed.
>  >
>
>  Normally this sort of problem would happen if the start address for the NAND map is not aligned to 128MB boundary.

Of course. I seem to have missed that completely. Thanks for the pointer.

 - Juha


-- 
Madness takes it's toll. Please have exact change.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-04-13 19:18 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-09  0:33 Problems with 2430 NAND prefetch engine Juha Kuikka
2008-04-11 19:22 ` Tony Lindgren
2008-04-11 21:10   ` Juha Kuikka
2008-04-13 12:22     ` Choraria, Rohit
2008-04-13 19:18       ` Juha Kuikka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox