From: Alexandru Gagniuc <alex.g@adaptrum.com>
To: Marek Vasut <marek.vasut@gmail.com>,
linux-snps-arc@lists.infradead.org, linux-kernel@vger.kernel.org
Cc: David Woodhouse <dwmw2@infradead.org>,
Brian Norris <computersforpeace@gmail.com>,
Boris Brezillon <boris.brezillon@free-electrons.com>,
Richard Weinberger <richard@nod.at>,
Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
linux-mtd@lists.infradead.org, devicetree@vger.kernel.org
Subject: Re: [PATCH 4/5] mtd: spi-nor: Add driver for Adaptrum Anarion QSPI controller
Date: Mon, 31 Jul 2017 13:54:58 -0700 [thread overview]
Message-ID: <63953f85-795e-20a2-04aa-4d486db608cc@adaptrum.com> (raw)
In-Reply-To: <135fdf95-1029-2d34-2802-1283a73588e5@gmail.com>
Hi Marek,
Me again!
On 07/29/2017 02:34 AM, Marek Vasut wrote:
> On 07/29/2017 12:07 AM, Alexandru Gagniuc wrote:
>> +static void aspi_drain_fifo(struct anarion_qspi *aspi, uint8_t *buf, size_t len)
>> +{
>> + uint32_t data;
>
> Is this stuff below something like ioread32_rep() ?
>
[snip]
>> + aspi_write_reg(spi, ASPI_REG_BYTE_COUNT, sizeof(uint32_t));
>> + while (len >= 4) {
>> + memcpy(&data, buf, sizeof(data));
>> + aspi_write_reg(spi, ASPI_REG_DATA1, data);
>
> iowrite32_rep ?
>
>> + buf += 4;
>> + len -= 4;
>> + }
I looked at using io(read|write)32_rep in these two places, and I've run
into some issues.
First, I'm seeing unaligned MMIO accesses, which are not supported on
ARC. Note that 'buf' has an alignment of 1, while the register requires
an alignment of 4. The memcpy() in-between takes care of that, which was
the original intent.
Other than that, we still need to break off the tail because we need to
update ASPI_REG_BYTE_COUNT before writing/reading any more data from the
FIFO. We have to keep track of the remainder, so we're not really saving
any SLOC.
I'd like to keep the original version as I find it to be much more
symmetrical and readable.
Thanks,
Alex
>> +
>> + if (len) {
>> + aspi_write_reg(spi, ASPI_REG_BYTE_COUNT, len);
>> + memcpy(&data, buf, len);
>> + aspi_write_reg(spi, ASPI_REG_DATA1, data);
>> + }
>> +}
Exhibit A: aspi_seed_fifo with writesl()
static void aspi_seed_fifo(struct anarion_qspi *spi,
const uint8_t *buf, size_t len)
{
uint32_t data;
void __iomem *data_reg = (void *)(spi->regbase + ASPI_REG_DATA1);
aspi_write_reg(spi, ASPI_REG_BYTE_COUNT, sizeof(uint32_t));
writesl(data_reg, buf, len / 4);
buf += len & ~0x03;
len &= 0x03;
if (len) {
aspi_write_reg(spi, ASPI_REG_BYTE_COUNT, len);
memcpy(&data, buf, len);
aspi_write_reg(spi, ASPI_REG_DATA1, data);
}
}
next prev parent reply other threads:[~2017-07-31 20:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20170728220707.13960-1-alex.g@adaptrum.com>
2017-07-28 22:07 ` [PATCH 4/5] mtd: spi-nor: Add driver for Adaptrum Anarion QSPI controller Alexandru Gagniuc
2017-07-29 9:34 ` Marek Vasut
2017-07-31 17:17 ` Alexandru Gagniuc
2017-07-31 21:33 ` Marek Vasut
2017-07-31 22:20 ` Alexandru Gagniuc
2017-07-31 22:43 ` Marek Vasut
2017-07-31 22:59 ` Alexandru Gagniuc
2017-08-04 20:14 ` [PATCH v2 6/7] " Alexandru Gagniuc
2017-08-04 20:14 ` [PATCH v2 7/7] dt-bindings: Add documentation for adaptrum, anarion-quadspi Alexandru Gagniuc
2017-07-31 20:54 ` Alexandru Gagniuc [this message]
2017-07-31 21:35 ` [PATCH 4/5] mtd: spi-nor: Add driver for Adaptrum Anarion QSPI controller Marek Vasut
2017-07-29 19:03 ` kbuild test robot
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=63953f85-795e-20a2-04aa-4d486db608cc@adaptrum.com \
--to=alex.g@adaptrum.com \
--cc=boris.brezillon@free-electrons.com \
--cc=computersforpeace@gmail.com \
--cc=cyrille.pitchen@wedev4u.fr \
--cc=devicetree@vger.kernel.org \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-snps-arc@lists.infradead.org \
--cc=marek.vasut@gmail.com \
--cc=mark.rutland@arm.com \
--cc=richard@nod.at \
--cc=robh+dt@kernel.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