public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot-Users] Burst I/O on PPC440GP
@ 2005-10-06 17:37 Gregg Nemas
  2005-10-06 20:07 ` Stefan Roese
  0 siblings, 1 reply; 4+ messages in thread
From: Gregg Nemas @ 2005-10-06 17:37 UTC (permalink / raw)
  To: u-boot

I am trying to perform I/O with a device attached to the external peripheral bus
on a PPC440GP embedded processor. I am able to address the device and read and
write to it, but I am only able to do non-burst I/O. Do I need to do something
special to enable burst transactions? I've programmed the EBC0_B5CR and
EBC0_B5AP device control registers appropriately to enable burst mode, but the
transactions are still single I/O.

I've been testing this by using the u-boot mw.l command. Do I need to use
PPC-specific instructions to perform burst I/O, or should an ordinary programmed
I/O (using 32-bit write operations) be automatically queued up and converted to
burst transactions?

The TLB I've added for the I/O region has the caching inhibit (I) and guarded
(G) bits set. Does caching or speculative access need to be enabled to allow
bursting? Even if I added a TLB entry, it wouldn't do me any good in Linux,
since it manages TLBs itself. So how would I do this from a Linux kernel driver?

Thanks.

Gregg

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

* [U-Boot-Users] Burst I/O on PPC440GP
  2005-10-06 17:37 [U-Boot-Users] Burst I/O on PPC440GP Gregg Nemas
@ 2005-10-06 20:07 ` Stefan Roese
  2005-10-06 20:40   ` [U-Boot-Users] " Gregg Nemas
  0 siblings, 1 reply; 4+ messages in thread
From: Stefan Roese @ 2005-10-06 20:07 UTC (permalink / raw)
  To: u-boot

Hi Gregg,

On Thursday 06 October 2005 19:37, Gregg Nemas wrote:
> I am trying to perform I/O with a device attached to the external
> peripheral bus on a PPC440GP embedded processor. I am able to address the
> device and read and write to it, but I am only able to do non-burst I/O. Do
> I need to do something special to enable burst transactions? I've
> programmed the EBC0_B5CR and EBC0_B5AP device control registers
> appropriately to enable burst mode, but the transactions are still single
> I/O.
>
> I've been testing this by using the u-boot mw.l command. Do I need to use
> PPC-specific instructions to perform burst I/O, or should an ordinary
> programmed I/O (using 32-bit write operations) be automatically queued up
> and converted to burst transactions?

Do you want to transfer bigger chunks of data? If yes, you may want to take a 
look at the dma controller of the 440gp. It definately is able to generate 
burst transactions and probably the ideal solution for your needs.

Another way to get burst transactions, is of course to use the cache, but I 
don't think that this is what you are looking for.

Best regards,
Stefan

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

* [U-Boot-Users] Re: Burst I/O on PPC440GP
  2005-10-06 20:07 ` Stefan Roese
@ 2005-10-06 20:40   ` Gregg Nemas
  2005-10-06 20:54     ` Chuck Gales
  0 siblings, 1 reply; 4+ messages in thread
From: Gregg Nemas @ 2005-10-06 20:40 UTC (permalink / raw)
  To: u-boot

Stefan Roese <sr <at> denx.de> writes:

> > I've been testing this by using the u-boot mw.l command. Do I need to use
> > PPC-specific instructions to perform burst I/O, or should an ordinary
> > programmed I/O (using 32-bit write operations) be automatically queued up
> > and converted to burst transactions?
> 
> Do you want to transfer bigger chunks of data? If yes, you may want to take a 
> look at the dma controller of the 440gp. It definately is able to generate 
> burst transactions and probably the ideal solution for your needs.

No, actually it will be relatively small transfers (16-128 bytes). I considered
using the DMA controller, but thought I would start out simple.

> Another way to get burst transactions, is of course to use the cache, but I 
> don't think that this is what you are looking for.

You say "of course", but it really isn't at all clear to me how this works. Why
does enabling the cache allow burst operations? You are right that it is not
what I would normally want to do for device I/O memory.

Thanks for your help.

Gregg

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

* [U-Boot-Users] Re: Burst I/O on PPC440GP
  2005-10-06 20:40   ` [U-Boot-Users] " Gregg Nemas
@ 2005-10-06 20:54     ` Chuck Gales
  0 siblings, 0 replies; 4+ messages in thread
From: Chuck Gales @ 2005-10-06 20:54 UTC (permalink / raw)
  To: u-boot

On 10/6/05, Gregg Nemas <gnemas@gmail.com> wrote:
> Stefan Roese <sr <at> denx.de> writes:
>
> > > I've been testing this by using the u-boot mw.l command. Do I need to use
> > > PPC-specific instructions to perform burst I/O, or should an ordinary
> > > programmed I/O (using 32-bit write operations) be automatically queued up
> > > and converted to burst transactions?
> >
> > Do you want to transfer bigger chunks of data? If yes, you may want to take a
> > look at the dma controller of the 440gp. It definately is able to generate
> > burst transactions and probably the ideal solution for your needs.
>
> No, actually it will be relatively small transfers (16-128 bytes). I considered
> using the DMA controller, but thought I would start out simple.
>
> > Another way to get burst transactions, is of course to use the cache, but I
> > don't think that this is what you are looking for.
>
> You say "of course", but it really isn't at all clear to me how this works. Why
> does enabling the cache allow burst operations? You are right that it is not
> what I would normally want to do for device I/O memory.
>
> Thanks for your help.
>
> Gregg
>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by:
> Power Architecture Resource Center: Free content, downloads, discussions,
> and more. http://solutions.newsforge.com/ibmarch.tmpl
> _______________________________________________
> U-Boot-Users mailing list
> U-Boot-Users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/u-boot-users
>
Gregg,
 With caching disabled, the CPU considers that your external device
needs to be updated with every memory write, since other devices may
also access the memory and need to have the correct data.  With
caching enabled, the CPU will store your writes internally until the
memory cache is flushed, which forces the writes to the external
device.  When flushing the cache (which is usually a relatively large
amount of data, the cache will use burst transactions to write the
data.  However, with caching enabled, there is the possibility that
the data in the external device is not in sync with what the CPU
thinks is there, so if other devices access the external device, they
will get the incorrect data.

Chuck

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

end of thread, other threads:[~2005-10-06 20:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-06 17:37 [U-Boot-Users] Burst I/O on PPC440GP Gregg Nemas
2005-10-06 20:07 ` Stefan Roese
2005-10-06 20:40   ` [U-Boot-Users] " Gregg Nemas
2005-10-06 20:54     ` Chuck Gales

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