From: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
To: Rhyland Klein <rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: Grant Likely
<grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>,
Laxman Dewangan
<ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
"spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org"
<spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>
Subject: Re: [RESEND] spi/tegra114: Correct support for cs_change
Date: Mon, 23 Sep 2013 13:58:27 -0600 [thread overview]
Message-ID: <52409D63.3020909@wwwdotorg.org> (raw)
In-Reply-To: <52409B1E.3030405-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
On 09/23/2013 01:48 PM, Rhyland Klein wrote:
> On 9/23/2013 2:51 PM, Stephen Warren wrote:
>> On 09/18/2013 12:17 PM, Rhyland Klein wrote:
>>> The tegra114 driver wasn't currently handling the cs_change functionality.
>>> It is meant to invert normal behavior, and we were only using it to possibly
>>> delay at the end of a transfer.
...
>>> diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
...
>>> @@ -717,7 +718,12 @@ static int tegra_spi_start_transfer_one(struct spi_device *spi,
>>> else if (req_mode == SPI_MODE_3)
>>> command1 |= SPI_CONTROL_MODE_3;
>>>
>>> - tegra_spi_writel(tspi, command1, SPI_COMMAND1);
>>> + if (tspi->cs_control) {
>>> + if (tspi->cs_control != spi)
>>> + tegra_spi_writel(tspi, command1, SPI_COMMAND1);
>>
>> Do you really need a separate write call there? The value of command1
>> isn't fully set up there (the CS bits are all set up immediately after),
>> so won't that glitch the CS lines in some cases?
>
> On our hardware (as far as I've seen), the CS line is normally low. We
I assume you meant "normally *active* low", not "normally low"?
> need to generate a falling-edge to trigger the beginning of a SPI
> transaction. Doing this write with the default value of SPI_COMMAND1
> causes a brief rise and fall of CS, giving us our falling-edge.
That sounds like exactly the glitch I was talking about.
Assuming CS isn't held constantly asserted (low), isn't CS de-asserted
(rises) at the end of transaction n-1, and re-asserted (falls) at the
start of transaction n? If so, I'm not sure why the setup for
transaction n needs to both de-assert and then re-assert it? It seems
like cs_control should be handled at the end of a transaction, not at
the start of the next one.
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Warren <swarren@wwwdotorg.org>
To: Rhyland Klein <rklein@nvidia.com>
Cc: Grant Likely <grant.likely@secretlab.ca>,
Laxman Dewangan <ldewangan@nvidia.com>,
"spi-devel-general@lists.sourceforge.net"
<spi-devel-general@lists.sourceforge.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
Simon Glass <sjg@chromium.org>, Olof Johansson <olof@lixom.net>
Subject: Re: [RESEND] spi/tegra114: Correct support for cs_change
Date: Mon, 23 Sep 2013 13:58:27 -0600 [thread overview]
Message-ID: <52409D63.3020909@wwwdotorg.org> (raw)
In-Reply-To: <52409B1E.3030405@nvidia.com>
On 09/23/2013 01:48 PM, Rhyland Klein wrote:
> On 9/23/2013 2:51 PM, Stephen Warren wrote:
>> On 09/18/2013 12:17 PM, Rhyland Klein wrote:
>>> The tegra114 driver wasn't currently handling the cs_change functionality.
>>> It is meant to invert normal behavior, and we were only using it to possibly
>>> delay at the end of a transfer.
...
>>> diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
...
>>> @@ -717,7 +718,12 @@ static int tegra_spi_start_transfer_one(struct spi_device *spi,
>>> else if (req_mode == SPI_MODE_3)
>>> command1 |= SPI_CONTROL_MODE_3;
>>>
>>> - tegra_spi_writel(tspi, command1, SPI_COMMAND1);
>>> + if (tspi->cs_control) {
>>> + if (tspi->cs_control != spi)
>>> + tegra_spi_writel(tspi, command1, SPI_COMMAND1);
>>
>> Do you really need a separate write call there? The value of command1
>> isn't fully set up there (the CS bits are all set up immediately after),
>> so won't that glitch the CS lines in some cases?
>
> On our hardware (as far as I've seen), the CS line is normally low. We
I assume you meant "normally *active* low", not "normally low"?
> need to generate a falling-edge to trigger the beginning of a SPI
> transaction. Doing this write with the default value of SPI_COMMAND1
> causes a brief rise and fall of CS, giving us our falling-edge.
That sounds like exactly the glitch I was talking about.
Assuming CS isn't held constantly asserted (low), isn't CS de-asserted
(rises) at the end of transaction n-1, and re-asserted (falls) at the
start of transaction n? If so, I'm not sure why the setup for
transaction n needs to both de-assert and then re-assert it? It seems
like cs_control should be handled at the end of a transaction, not at
the start of the next one.
next prev parent reply other threads:[~2013-09-23 19:58 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-18 18:17 [RESEND] spi/tegra114: Correct support for cs_change Rhyland Klein
2013-09-18 18:17 ` Rhyland Klein
2013-09-18 18:17 ` Rhyland Klein
[not found] ` <1379528245-6283-1-git-send-email-rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-09-23 18:51 ` Stephen Warren
2013-09-23 18:51 ` Stephen Warren
[not found] ` <52408DC8.3020407-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-09-23 19:48 ` Rhyland Klein
2013-09-23 19:48 ` Rhyland Klein
[not found] ` <52409B1E.3030405-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-09-23 19:58 ` Stephen Warren [this message]
2013-09-23 19:58 ` Stephen Warren
[not found] ` <52409D63.3020909-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-09-23 21:01 ` Rhyland Klein
2013-09-23 21:01 ` Rhyland Klein
[not found] ` <5240AC3A.9060206-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-09-23 21:14 ` Stephen Warren
2013-09-23 21:14 ` Stephen Warren
[not found] ` <5240AF20.8030301-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-09-23 22:23 ` Simon Glass
2013-09-23 22:24 ` Simon Glass
2013-09-23 22:24 ` Simon Glass
2013-09-23 23:08 ` Trent Piepho
2013-09-23 23:08 ` Trent Piepho
[not found] ` <CA+7tXiiNMwyQh9sCsW4Qkid9Tn8RTcQ-uUmNse+kK-PZro1pyQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-09-24 16:33 ` Rhyland Klein
2013-09-24 16:33 ` Rhyland Klein
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=52409D63.3020909@wwwdotorg.org \
--to=swarren-3lzwwm7+weoh9zmkesr00q@public.gmane.org \
--cc=grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \
--cc=ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
--cc=rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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.