From: Marek Vasut <marek.vasut@gmail.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: masonccyang@mxic.com.tw,
Boris Brezillon <boris.brezillon@bootlin.com>,
Mark Brown <broonie@kernel.org>,
Geert Uytterhoeven <geert+renesas@glider.be>,
Simon Horman <horms@verge.net.au>,
juliensu@mxic.com.tw,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux-Renesas <linux-renesas-soc@vger.kernel.org>,
linux-spi <linux-spi@vger.kernel.org>,
zhengxunli@mxic.com.tw
Subject: Re: [PATCH v2 1/2] spi: Add Renesas R-Car Gen3 RPC SPI controller driver
Date: Wed, 5 Dec 2018 14:24:40 +0100 [thread overview]
Message-ID: <8e667f91-70bd-795c-094f-23c919c3802c@gmail.com> (raw)
In-Reply-To: <CAMuHMdV-Ca5sderSKmdbtovKrd-Z7piwVZbwDtB6vVXPa8Q5AA@mail.gmail.com>
On 12/05/2018 02:15 PM, Geert Uytterhoeven wrote:
> Hi Marek,
Hi,
> On Wed, Dec 5, 2018 at 1:57 PM Marek Vasut <marek.vasut@gmail.com> wrote:
>> On 12/05/2018 08:44 AM, masonccyang@mxic.com.tw wrote:
>>>> "Marek Vasut" <marek.vasut@gmail.com>
>>>> 2018/12/05 上午 10:04
>>>> On 12/03/2018 10:18 AM, Mason Yang wrote:
>>>>> Add a driver for Renesas R-Car Gen3 RPC SPI controller.
>>>>>
>>>>> Signed-off-by: Mason Yang <masonccyang@mxic.com.tw>
>
>>>>> +static void rpc_spi_hw_init(struct rpc_spi *rpc)
>>>>> +{
>>>>> + /*
>>>>> + * NOTE: The 0x260 are undocumented bits, but they must be set.
>>>>> + * RPC_PHYCNT_STRTIM is strobe timing adjustment bit,
>>>>> + * 0x0 : the delay is biggest,
>>>>> + * 0x1 : the delay is 2nd biggest,
>>>>> + * 0x3 or 0x6 is a recommended value.
>>>>> + */
>>>>
>>>> Doesn't this vary by SoC ? I think H3 ES1.0 had different value here,
>>>> but I might be wrong.
>>>
>>> I check the Renesas bare-metal code, mini_monitor v4.01.
>>> It set 0x03 or 0x0 and I test them w/ 0x0, 0x3 and 0x6 are all OK.
>>
>> Shouldn't this somehow use the soc_device_match() then and configure it
>> accordingly for various chips ? Like eg. the r8a7795-cpg-mssr driver does.
>
> Please don't use soc_device_match() for per-SoC configuration, if
> you already have of_device_id.data.
I mean, the value is different on H3 ES1 and ES2 iirc, that's what
soc_device_match() is for, right ?
> BTW, this drivers support r8a7795 only (for now), as per the compatible
> value.
77995
>>>>> +#ifdef CONFIG_RESET_CONTROLLER
>>>>
>>>> Just make the driver depend on reset controller.
>>>
>>> ?
>>> please refer to
>>> https://github.com/torvalds/linux/blob/master/drivers/clk/renesas/renesas-cpg-mssr.c
>>>
>>> line 124 ~ 126
>>
>> This seems like a stopgap measure for systems which do not have a reset
>> api compatible controller. Geert ?
>
> So far CONFIG_RESET_CONTROLLER is optional.
My understanding is that for this IP, it can well be mandatory, since
all the chips have a reset wired to the IP internally.
>>>>> +static int rpc_spi_io_xfer(struct rpc_spi *rpc,
>>>>> + const void *tx_buf, void *rx_buf)
>>>>> +{
>>>>> + u32 smenr, smcr, data, pos = 0;
>>>>> + int ret = 0;
>>>>> +
>>>>> + regmap_write(rpc->regmap, RPC_CMNCR, RPC_CMNCR_MD | RPC_CMNCR_SFDE |
>>>>> + RPC_CMNCR_MOIIO_HIZ | RPC_CMNCR_IOFV_HIZ |
>>>>> + RPC_CMNCR_BSZ(0));
>>>>> + regmap_write(rpc->regmap, RPC_SMDRENR, 0x0);
>>>>> + regmap_write(rpc->regmap, RPC_SMCMR, rpc->cmd);
>>>>> + regmap_write(rpc->regmap, RPC_SMDMCR, rpc->dummy);
>>>>> + regmap_write(rpc->regmap, RPC_SMADR, rpc->addr);
>>>>> +
>>>>> + if (tx_buf) {
>>>>> + smenr = rpc->smenr;
>>>>> +
>>>>> + while (pos < rpc->xferlen) {
>>>>> + u32 nbytes = rpc->xferlen - pos;
>>>>> +
>>>>> + regmap_write(rpc->regmap, RPC_SMWDR0,
>>>>> + *(u32 *)(tx_buf + pos));
>>>>
>>>> *(u32 *) cast is probably not needed , fix casts globally.
>>>
>>> It must have it!
>>
>> Why ?
>
> Else you get a compiler warning, as tx_bug is void *.
Don't you need some get_unaligned() in that case ? txbuf+pos can well be
unaligned if it's void * .
>>>>> +#ifdef CONFIG_PM_SLEEP
>>>>> +static int rpc_spi_suspend(struct device *dev)
>>>>> +{
>>>>> + struct platform_device *pdev = to_platform_device(dev);
>>>>> + struct spi_master *master = platform_get_drvdata(pdev);
>>>>> +
>>>>> + return spi_master_suspend(master);
>>>>
>>>> Won't the SPI NOR lose state across suspend ? Is that a problem ?
>>>
>>> I don't think so.
>>> Because when the device is not in operation and CS# is high,
>>> it is put in stand-by mode.
>>
>> Is the power to the SPI NOR retained ?
>
> Not if PSCI system suspend turns of power to the SoC.
And is that a problem ?
--
Best regards,
Marek Vasut
next prev parent reply other threads:[~2018-12-05 13:24 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-03 9:18 [PATCH v2 0/2] spi: Add Renesas R-Car Gen3 RPC SPI driver Mason Yang
2018-12-03 9:18 ` [PATCH v2 1/2] spi: Add Renesas R-Car Gen3 RPC SPI controller driver Mason Yang
2018-12-04 18:43 ` Marek Vasut
[not found] ` <OF0ED3C578.141B72CA-ON4825835A.0025CA62-4825835A.002A7BDF@mxic.com.tw>
2018-12-05 9:11 ` Geert Uytterhoeven
2018-12-05 12:35 ` Marek Vasut
2018-12-05 12:49 ` Marek Vasut
2018-12-05 13:15 ` Geert Uytterhoeven
2018-12-05 13:24 ` Marek Vasut [this message]
2018-12-05 13:31 ` Geert Uytterhoeven
2018-12-05 13:34 ` Marek Vasut
[not found] ` <OFC9FB54F8.34B3A8B7-ON4825835B.00267480-4825835B.0029455C@mxic.com.tw>
2018-12-06 9:02 ` Marek Vasut
[not found] ` <OF0CE74C5C.20959BA6-ON4825835C.0026C7BC-4825835C.0028B3A4@mxic.com.tw>
2018-12-07 12:01 ` Marek Vasut
2018-12-06 9:12 ` Geert Uytterhoeven
2018-12-06 9:14 ` Marek Vasut
2018-12-05 9:06 ` Geert Uytterhoeven
[not found] ` <OFE69673FB.D4270C56-ON4825835B.001C7201-4825835B.00209DC7@mxic.com.tw>
2018-12-06 8:56 ` Marek Vasut
[not found] ` <OF62002C8B.5D0A4315-ON4825835B.0031F545-4825835B.003310A3@mxic.com.tw>
2018-12-06 9:19 ` Marek Vasut
2018-12-07 18:17 ` Sergei Shtylyov
2018-12-07 18:23 ` Marek Vasut
[not found] ` <OF1EDC1518.914B7F08-ON48258360.0022FD71-48258360.0033D3DE@mxic.com.tw>
2018-12-11 16:46 ` Sergei Shtylyov
[not found] ` <OF719DFBAE.D0F9F117-ON4825836A.0039EEA3-4825836A.003B28D8@mxic.com.tw>
2018-12-22 14:20 ` Sergei Shtylyov
2018-12-03 9:18 ` [PATCH v2 2/2] dt-binding: spi: Document Renesas R-Car Gen3 RPC controller bindings Mason Yang
2018-12-04 18:19 ` Marek Vasut
[not found] ` <OF71F19EC8.23C369C1-ON4825835A.002EB699-4825835A.002F949D@mxic.com.tw>
2018-12-05 12:53 ` Marek Vasut
2018-12-05 18:56 ` Sergei Shtylyov
2018-12-05 21:55 ` Marek Vasut
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=8e667f91-70bd-795c-094f-23c919c3802c@gmail.com \
--to=marek.vasut@gmail.com \
--cc=boris.brezillon@bootlin.com \
--cc=broonie@kernel.org \
--cc=geert+renesas@glider.be \
--cc=geert@linux-m68k.org \
--cc=horms@verge.net.au \
--cc=juliensu@mxic.com.tw \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=masonccyang@mxic.com.tw \
--cc=zhengxunli@mxic.com.tw \
/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;
as well as URLs for NNTP newsgroup(s).