All of lore.kernel.org
 help / color / mirror / Atom feed
From: Angelo Dureghello <angelo@sysam.it>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Greg Ungerer <gerg@linux-m68k.org>,
	Logan Gunthorpe <logang@deltatee.com>,
	Arnd Bergmann <arnd@arndb.de>,
	linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] m68k: io: Fix io{read,write}{16,32}be() for Coldfire peripherals
Date: Mon, 3 Jun 2019 14:26:08 +0200	[thread overview]
Message-ID: <20190603122608.GA21347@jerusalem> (raw)
In-Reply-To: <20190429081937.7544-1-geert@linux-m68k.org>

Hi Greg (and all),

couldn't seen any follow up on this patch. I tested it and at least
for mcf5441x it works properly and solves all issues.

Do you think it may be accepted as an initial fix ?

Regards,
Angelo

On Mon, Apr 29, 2019 at 10:19:37AM +0200, Geert Uytterhoeven wrote:
> The generic definitions of mmio_{read,write}{16,32}be() in lib/iomap.c
> assume that the {read,write}[wl]() I/O accessors always use little
> endian accesses, and swap the result.
> 
> However, the Coldfire versions of the {read,write}[wl]() I/O accessors are
> special, in that they use native big endian instead of little endian for
> accesses to the on-SoC peripheral block, thus violating the assumption.
> 
> Fix this by providing our own variants, using the raw accessors,
> reinstating the old behavior.  This is fine on m68k, as no special
> barriers are needed, and also avoids swapping data twice.
> 
> Reported-by: Angelo Dureghello <angelo@sysam.it>
> Fixes: aecc787c06f4300f ("iomap: Use non-raw io functions for io{read|write}XXbe")
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> This can be reverted later, after this oddity of the Coldfire I/O
> support has been fixed, and drivers have been updated.
> ---
>  arch/m68k/include/asm/io.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/m68k/include/asm/io.h b/arch/m68k/include/asm/io.h
> index aabe6420ead2a599..d47e7384681ab1cd 100644
> --- a/arch/m68k/include/asm/io.h
> +++ b/arch/m68k/include/asm/io.h
> @@ -8,6 +8,12 @@
>  #include <asm/io_mm.h>
>  #endif
>  
> +#define mmio_read16be(addr)		__raw_readw(addr)
> +#define mmio_read32be(addr)		__raw_readl(addr)
> +
> +#define mmio_write16be(val, port)	__raw_writew((val), (port))
> +#define mmio_write32be(val, port)	__raw_writel((val), (port))
> +
>  #include <asm-generic/io.h>
>  
>  #endif /* _M68K_IO_H */
> -- 
> 2.17.1
> 

  parent reply	other threads:[~2019-06-03 12:26 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-29  8:19 [PATCH] m68k: io: Fix io{read,write}{16,32}be() for Coldfire peripherals Geert Uytterhoeven
2019-04-29 12:39 ` Arnd Bergmann
2019-05-11 10:55   ` Angelo Dureghello
2019-06-14 14:49   ` Geert Uytterhoeven
2019-06-17 20:23     ` Arnd Bergmann
2019-06-03 12:26 ` Angelo Dureghello [this message]
2019-06-04  7:18   ` Greg Ungerer
2019-06-04  7:34     ` Geert Uytterhoeven
2019-06-05 12:52       ` Greg Ungerer

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=20190603122608.GA21347@jerusalem \
    --to=angelo@sysam.it \
    --cc=arnd@arndb.de \
    --cc=geert@linux-m68k.org \
    --cc=gerg@linux-m68k.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=logang@deltatee.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.