All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ira Snyder <iws@ovro.caltech.edu>
To: Matt Sealey <matt@genesi-usa.com>
Cc: PowerPC dev list <linuxppc-dev@ozlabs.org>
Subject: Re: PCI reading without endian conversion
Date: Fri, 20 Feb 2009 11:11:09 -0800	[thread overview]
Message-ID: <20090220191108.GA21163@ovro.caltech.edu> (raw)
In-Reply-To: <b5e2fc790902201057of113946yea9ccc7405e31926@mail.gmail.com>

On Fri, Feb 20, 2009 at 12:57:36PM -0600, Matt Sealey wrote:
> Hi guys,
> 
> What's the correct way to read from PCI address space (basically it's
> guaranteed to be non-coherent memory bar) without flipping bits like
> ioread32() does?
> 
> I need to be able to copy a bank of registers from PCI address space
> into a temporary buffer so I can compare them in userspace through
> UIO. Because of the flipping and the difference between the original
> kernel driver (which used ioread32() and therefore "saw" big endian)
> and the userspace app (which has a direct view of the PCI space, and
> therefore "sees" little endian) I decided to give userspace an
> absolutely consistent little-endian view seeing as this may get ported
> to ARM in the coming months.
> 
> I want to put as little code in there as possible and not laboriously
> manually flip from my ioread32() big endian values to little endian
> again (waste of time and code) if I can help it. Being able to read
> the raw value would help a lot, and if I need to do calculations on a
> small portion of the data then I can do the flips manually then (using
> le32_to_cpu and cpu_to_le32 which will be a noop on ARM), reducing the
> amount of porting I need to do in both kernel and userspace alike.
> 
> So, is there something like a direct ioread32le() or so, which will
> not change behaviour across architectures, is present on ARM and PPC,
> and will handle both PCI address space, and "normal" "ioremapped"
> memory?
> 

I'm pretty sure memcpy_fromio() and memcpy_toio() will get you what you
want. They don't change byte ordering.

Ira

  reply	other threads:[~2009-02-20 19:11 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-20 18:57 PCI reading without endian conversion Matt Sealey
2009-02-20 19:11 ` Ira Snyder [this message]
2009-02-20 20:05   ` Matt Sealey
2009-02-20 21:07     ` Ira Snyder
2009-02-20 21:56       ` Matt Sealey
2009-02-20 23:50         ` Ira Snyder
2009-02-21  4:33           ` Benjamin Herrenschmidt
2009-02-23 10:37           ` Geert Uytterhoeven
2009-02-20 22:37 ` Benjamin Herrenschmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090220191108.GA21163@ovro.caltech.edu \
    --to=iws@ovro.caltech.edu \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=matt@genesi-usa.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.