From: hdegoede@redhat.com (Hans de Goede)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 05/15] musb: Do not use musb_read[b|w] / _write[b|w] wrappers in generic fifo functions
Date: Tue, 10 Mar 2015 09:56:52 +0100 [thread overview]
Message-ID: <54FEB1D4.3080700@redhat.com> (raw)
In-Reply-To: <11429972.krcjty7oKd@wuerfel>
Hi,
On 10-03-15 09:50, Arnd Bergmann wrote:
> On Tuesday 10 March 2015 08:43:22 Hans de Goede wrote:
>> On 09-03-15 22:50, Arnd Bergmann wrote:
>>> On Monday 09 March 2015 21:40:18 Hans de Goede wrote:
>>>> The generic fifo functions already use non wrapped accesses in various
>>>> cases through the iowrite#_rep functions, and all platforms which override
>>>> the default musb_read[b|w] / _write[b|w] functions also provide their own
>>>> fifo access functions, so we can safely drop the unnecessary indirection
>>>> from the fifo access functions.
>>>>
>>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>>>
>>>
>>> The patch looks reasonably, but the description seem misleading.
>>> I believe the real reason why it's ok to use __raw_writew for the
>>> FIFO is that a FIFO by definition is using CPU endian access for
>>> copying byte streams from memory, which is unlike any other MMIO
>>> register that requires fixed-endian accessors.
>>
>> I'm not sure that that is the case here, this fifo allows reading
>> 4 bytes at a time using 32 bit word access, so endianness may come
>> into play. This patch is safe however since all existing users of
>> the generic fifo_read / write helpers which this patch touches, are
>> also using the generic musb_read[b|w] / _write[b|w] functions which
>> are just __raw_foo wrappers, so there is no functional change, which
>> is what the commit message tries to say.
>
> This probably means that the generic musb helpers are not safe to use
> on big-endian ARM systems (but may work on MIPS). The only one currently
> not using the generic helpers is blackfin, which is fixed to little
> endian.
>
>> Note that sunxi needs this function because of the register address
>> translation the sunxi_musb_readb / writeb wrappers are doing which
>> does not know how to deal with fifo data, and besides that it should
>> make the generic read / write fifo helpers somewhat faster by removing
>> an indirect function call.
>
> Your sunxi_musb_readw/writew functions however also are endian-safe
> and seem to get this part right, unlike all other platforms that use
> the generic __raw_*() accessors. With this patch applied, it should
> actually work fine, and it would work on other platforms as well
> if we change all __raw_*() calls outside of musb_default_write_fifo()
> and musb_default_read_fifo() to use *_relaxed() instead.
I think that that change falls outside of the scope of this patchset.
I agree that it would be probably a good idea to get rid of the
__raw_foo usage in musb, which is why I've used the non __raw
versions in the sunxi glue, but as said I believe this falls outside
of the scope of this patchset. All my preparation patches for adding
sunxi support carefully do not make any functional changes, as I
do not want to cause regressions on hardware which I cannot test.
Regards,
Hans
WARNING: multiple messages have this Message-ID (diff)
From: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org>,
Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>,
Maxime Ripard
<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
Roman Byshko <rbyshko-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: [PATCH 05/15] musb: Do not use musb_read[b|w] / _write[b|w] wrappers in generic fifo functions
Date: Tue, 10 Mar 2015 09:56:52 +0100 [thread overview]
Message-ID: <54FEB1D4.3080700@redhat.com> (raw)
In-Reply-To: <11429972.krcjty7oKd@wuerfel>
Hi,
On 10-03-15 09:50, Arnd Bergmann wrote:
> On Tuesday 10 March 2015 08:43:22 Hans de Goede wrote:
>> On 09-03-15 22:50, Arnd Bergmann wrote:
>>> On Monday 09 March 2015 21:40:18 Hans de Goede wrote:
>>>> The generic fifo functions already use non wrapped accesses in various
>>>> cases through the iowrite#_rep functions, and all platforms which override
>>>> the default musb_read[b|w] / _write[b|w] functions also provide their own
>>>> fifo access functions, so we can safely drop the unnecessary indirection
>>>> from the fifo access functions.
>>>>
>>>> Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
>>>>
>>>
>>> The patch looks reasonably, but the description seem misleading.
>>> I believe the real reason why it's ok to use __raw_writew for the
>>> FIFO is that a FIFO by definition is using CPU endian access for
>>> copying byte streams from memory, which is unlike any other MMIO
>>> register that requires fixed-endian accessors.
>>
>> I'm not sure that that is the case here, this fifo allows reading
>> 4 bytes at a time using 32 bit word access, so endianness may come
>> into play. This patch is safe however since all existing users of
>> the generic fifo_read / write helpers which this patch touches, are
>> also using the generic musb_read[b|w] / _write[b|w] functions which
>> are just __raw_foo wrappers, so there is no functional change, which
>> is what the commit message tries to say.
>
> This probably means that the generic musb helpers are not safe to use
> on big-endian ARM systems (but may work on MIPS). The only one currently
> not using the generic helpers is blackfin, which is fixed to little
> endian.
>
>> Note that sunxi needs this function because of the register address
>> translation the sunxi_musb_readb / writeb wrappers are doing which
>> does not know how to deal with fifo data, and besides that it should
>> make the generic read / write fifo helpers somewhat faster by removing
>> an indirect function call.
>
> Your sunxi_musb_readw/writew functions however also are endian-safe
> and seem to get this part right, unlike all other platforms that use
> the generic __raw_*() accessors. With this patch applied, it should
> actually work fine, and it would work on other platforms as well
> if we change all __raw_*() calls outside of musb_default_write_fifo()
> and musb_default_read_fifo() to use *_relaxed() instead.
I think that that change falls outside of the scope of this patchset.
I agree that it would be probably a good idea to get rid of the
__raw_foo usage in musb, which is why I've used the non __raw
versions in the sunxi glue, but as said I believe this falls outside
of the scope of this patchset. All my preparation patches for adding
sunxi support carefully do not make any functional changes, as I
do not want to cause regressions on hardware which I cannot test.
Regards,
Hans
next prev parent reply other threads:[~2015-03-10 8:56 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-09 20:40 [PATCH 00/15] musb: Add support for the Allwinner sunxi musb controller Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 01/15] ARM: sunxi: Add register bit definitions for SRAM mapping syscon Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 02/15] phy-sun4i-usb: Add a helper function to update the iscr register Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 21:47 ` Arnd Bergmann
2015-03-09 21:47 ` Arnd Bergmann
2015-03-10 8:04 ` Hans de Goede
2015-03-10 8:04 ` Hans de Goede
2015-03-10 8:57 ` Arnd Bergmann
2015-03-10 8:57 ` Arnd Bergmann
2015-03-10 10:13 ` Hans de Goede
2015-03-10 10:13 ` Hans de Goede
2015-03-10 10:53 ` Kishon Vijay Abraham I
2015-03-10 10:53 ` Kishon Vijay Abraham I
2015-03-10 11:03 ` Hans de Goede
2015-03-10 11:03 ` Hans de Goede
2015-03-11 9:13 ` Kishon Vijay Abraham I
2015-03-11 9:13 ` Kishon Vijay Abraham I
2015-03-11 11:39 ` Hans de Goede
2015-03-11 11:39 ` Hans de Goede
2015-03-11 12:50 ` Kishon Vijay Abraham I
2015-03-11 12:50 ` Kishon Vijay Abraham I
2015-03-11 13:03 ` Hans de Goede
2015-03-11 13:03 ` Hans de Goede
2015-03-11 13:07 ` Kishon Vijay Abraham I
2015-03-11 13:07 ` Kishon Vijay Abraham I
2015-03-11 14:44 ` Hans de Goede
2015-03-11 14:44 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 03/15] musb: Make musb_write_rxfun* and musb_write_rxhub* work like their tx versions Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 04/15] musb: Make busctl_offset an io-op rather then a define Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 05/15] musb: Do not use musb_read[b|w] / _write[b|w] wrappers in generic fifo functions Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 21:50 ` Arnd Bergmann
2015-03-09 21:50 ` Arnd Bergmann
2015-03-10 7:43 ` Hans de Goede
2015-03-10 7:43 ` Hans de Goede
2015-03-10 8:50 ` Arnd Bergmann
2015-03-10 8:50 ` Arnd Bergmann
2015-03-10 8:56 ` Hans de Goede [this message]
2015-03-10 8:56 ` Hans de Goede
2015-03-10 13:43 ` Arnd Bergmann
2015-03-10 13:43 ` Arnd Bergmann
2015-03-09 20:40 ` [PATCH 06/15] musb: Fix platform code being unable to override ep access ops Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 07/15] musb: Add support for the Allwinner sunxi musb controller Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 08/15] ARM: dts: sunxi: Add syscon node for controlling SRAM mapping Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 09/15] ARM: dts: sun4i: Add USB Dual Role Controller Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 23:31 ` [linux-sunxi] " Julian Calaby
2015-03-09 23:31 ` Julian Calaby
2015-03-10 9:10 ` [linux-sunxi] " Hans de Goede
2015-03-10 9:10 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 10/15] ARM: dts: sun5i: " Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 11/15] ARM: dts: sun7i: " Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 12/15] ARM: dts: sun4i: Enable USB DRC on Chuwi V7 CW0825 Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-10 15:07 ` Maxime Ripard
2015-03-10 15:07 ` Maxime Ripard
2015-03-10 15:23 ` Hans de Goede
2015-03-10 15:23 ` Hans de Goede
2015-03-10 18:17 ` Maxime Ripard
2015-03-10 18:17 ` Maxime Ripard
2015-03-09 20:40 ` [PATCH 13/15] ARM: dts: sun5i: Enable USB DRC on UTOO P66 Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 14/15] ARM: dts: sun7i: Enable USB DRC on Cubietruck Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 20:40 ` [PATCH 15/15] ARM: dts: sun7i: Enable USB DRC on A20-OLinuxIno-Lime Hans de Goede
2015-03-09 20:40 ` Hans de Goede
2015-03-09 21:44 ` [PATCH 00/15] musb: Add support for the Allwinner sunxi musb controller Arnd Bergmann
2015-03-09 21:44 ` Arnd Bergmann
2015-03-10 1:46 ` Chen-Yu Tsai
2015-03-10 1:46 ` Chen-Yu Tsai
2015-03-10 7:38 ` Hans de Goede
2015-03-10 7:38 ` Hans de Goede
2015-03-10 8:31 ` Arnd Bergmann
2015-03-10 8:31 ` Arnd Bergmann
2015-03-10 17:41 ` Maxime Ripard
2015-03-10 17:41 ` Maxime Ripard
2015-03-10 22:35 ` Hans de Goede
2015-03-10 22:35 ` Hans de Goede
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=54FEB1D4.3080700@redhat.com \
--to=hdegoede@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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.