From: Alistair Popple <alistair@popple.id.au>
To: Joel Stanley <joel@jms.id.au>
Cc: devicetree@vger.kernel.org, Andrew Jeffery <andrew@aj.id.au>,
Greg KH <gregkh@linuxfoundation.org>,
Eddie James <eajames@linux.ibm.com>,
linux-kernel@vger.kernel.org,
Steven Rostedt <rostedt@goodmis.org>,
Rob Herring <robh+dt@kernel.org>, Jeremy Kerr <jk@ozlabs.org>,
Ingo Molnar <mingo@redhat.com>,
linux-arm-kernel@lists.infradead.org, linux-fsi@lists.ozlabs.org
Subject: Re: [PATCH v2 11/11] fsi: aspeed: Fix OPB0 byte order register values
Date: Fri, 08 Nov 2019 20:31:12 +1100 [thread overview]
Message-ID: <1856299.kAykGyoYJU@townsend> (raw)
In-Reply-To: <20191108051945.7109-12-joel@jms.id.au>
OPB data mirroring is pretty special, glad someone has figured it out and made
some artwork in the process.
Acked-by: Alistair Popple <alistair@popple.id.au>
On Friday, 8 November 2019 4:19:45 PM AEDT Joel Stanley wrote:
> From: Andrew Jeffery <andrew@aj.id.au>
>
> The data byte order selection registers in the APB2OPB primarily expose some
> internal plumbing necessary to get correct write accesses onto the OPB.
> OPB write cycles require "data mirroring" across the 32-bit data bus to
> support variable data width slaves that don't implement "byte enables".
> For slaves that do implement byte enables the master can signal which
> bytes on the data bus the slave should consider valid.
>
> The data mirroring behaviour is specified by the following table:
>
> +-----------------+----------+-----------------------------------+
> | | | 32-bit Data Bus |
> +---------+-------+----------+---------+---------+-------+-------+
> | | | | | | | |
> | ABus | Mn_BE | Request | Dbus | Dbus | Dbus | Dbus |
> | (30:31) | (0:3) | Transfer | 0:7 | 8:15 | 16:23 | 24:31 |
> | | | Size | byte0 | byte1 | byte2 | byte3 |
> +---------+-------+----------+---------+---------+-------+-------+
> | 00 | 1111 | fullword | byte0 | byte1 | byte2 | byte3 |
> +---------+-------+----------+---------+---------+-------+-------+
> | 00 | 1110 | halfword | byte0 | byte1 | byte2 | |
> +---------+-------+----------+---------+---------+-------+-------+
> | 01 | 0111 | byte | _byte1_ | byte1 | byte2 | byte3 |
> +---------+-------+----------+---------+---------+-------+-------+
> | 00 | 1100 | halfword | byte0 | byte1 | | |
> +---------+-------+----------+---------+---------+-------+-------+
> | 01 | 0110 | byte | _byte1_ | byte1 | byte2 | |
> +---------+-------+----------+---------+---------+-------+-------+
> | 10 | 0011 | halfword | _byte2_ | _byte3_ | byte2 | byte3 |
> +---------+-------+----------+---------+---------+-------+-------+
> | 00 | 1000 | byte | byte0 | | | |
> +---------+-------+----------+---------+---------+-------+-------+
> | 01 | 0100 | byte | _byte1_ | byte1 | | |
> +---------+-------+----------+---------+---------+-------+-------+
> | 10 | 0010 | byte | _byte2_ | | byte2 | |
> +---------+-------+----------+---------+---------+-------+-------+
> | 11 | 0001 | byte | _byte3_ | _byte3_ | | byte3 |
> +---------+-------+----------+---------+---------+-------+-------+
>
> Mirrored data values are highlighted by underscores in the Dbus columns.
> The values in the ABus and Request Transfer Size columns correspond to
> values in the field names listed in the write data order select register
> descriptions.
>
> Similar configuration registers are exposed for reads which enables the
> secondary purpose of configuring hardware endian conversions. It appears the
> data bus byte order is switched around in hardware so set the registers such
> that we can access the correct values for all widths. The values were
> determined by experimentation on hardware against fixed CFAM register
> values to configure the read data order, then in combination with the
> table above and the register layout documentation in the AST2600
> datasheet performing write/read cycles to configure the write data order
> registers.
>
> Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
> Signed-off-by: Joel Stanley <joel@jms.id.au>
> ---
> drivers/fsi/fsi-master-aspeed.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/fsi/fsi-master-aspeed.c b/drivers/fsi/fsi-master-
aspeed.c
> index 95e226ac78b9..f49742b310c2 100644
> --- a/drivers/fsi/fsi-master-aspeed.c
> +++ b/drivers/fsi/fsi-master-aspeed.c
> @@ -459,11 +459,11 @@ static int fsi_master_aspeed_probe(struct
platform_device *pdev)
> writel(fsi_base, aspeed->base + OPB_FSI_BASE);
>
> /* Set read data order */
> - writel(0x0011bb1b, aspeed->base + OPB0_READ_ORDER1);
> + writel(0x00030b1b, aspeed->base + OPB0_READ_ORDER1);
>
> /* Set write data order */
> - writel(0x0011bb1b, aspeed->base + OPB0_WRITE_ORDER1);
> - writel(0xffaa5500, aspeed->base + OPB0_WRITE_ORDER2);
> + writel(0x0011101b, aspeed->base + OPB0_WRITE_ORDER1);
> + writel(0x0c330f3f, aspeed->base + OPB0_WRITE_ORDER2);
>
> /*
> * Select OPB0 for all operations.
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
prev parent reply other threads:[~2019-11-08 9:37 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-08 5:19 [PATCH v2 00/11] fsi: Patches for 5.5 Joel Stanley
2019-11-08 5:19 ` [PATCH v2 01/11] fsi: Add fsi-master class Joel Stanley
2019-11-08 9:17 ` Alistair Popple
2019-11-08 5:19 ` [PATCH v2 02/11] fsi: Move master attributes to " Joel Stanley
2019-11-08 9:18 ` Alistair Popple
2019-11-08 5:19 ` [PATCH v2 03/11] ABI: Update FSI path documentation Joel Stanley
2019-11-08 9:27 ` Alistair Popple
2019-11-08 5:19 ` [PATCH v2 04/11] trace: fsi: Print transfer size unsigned Joel Stanley
2019-11-08 9:21 ` Alistair Popple
2019-11-08 5:19 ` [PATCH v2 05/11] fsi: core: Fix small accesses and unaligned offsets via sysfs Joel Stanley
2019-11-08 5:19 ` [PATCH v2 06/11] fsi: fsi_master_class can be static Joel Stanley
2019-11-08 5:19 ` [PATCH v2 07/11] fsi: Move defines to common header Joel Stanley
2019-11-08 5:19 ` [PATCH v2 08/11] dt-bindings: fsi: Add description of FSI master Joel Stanley
2019-11-08 9:23 ` Alistair Popple
2019-11-08 10:28 ` Greg KH
2019-11-08 5:19 ` [PATCH v2 09/11] fsi: Add ast2600 master driver Joel Stanley
2019-11-08 9:29 ` Alistair Popple
2019-11-08 5:19 ` [PATCH v2 10/11] fsi: aspeed: Add trace points Joel Stanley
2019-11-08 5:19 ` [PATCH v2 11/11] fsi: aspeed: Fix OPB0 byte order register values Joel Stanley
2019-11-08 9:31 ` Alistair Popple [this message]
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=1856299.kAykGyoYJU@townsend \
--to=alistair@popple.id.au \
--cc=andrew@aj.id.au \
--cc=devicetree@vger.kernel.org \
--cc=eajames@linux.ibm.com \
--cc=gregkh@linuxfoundation.org \
--cc=jk@ozlabs.org \
--cc=joel@jms.id.au \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-fsi@lists.ozlabs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=robh+dt@kernel.org \
--cc=rostedt@goodmis.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox