linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: jiri.prchal@aksignal.cz (Jiří Prchal)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: at91: at91sam9x5: sets NPCS0 (PA14) back to GPIO
Date: Fri, 25 Jul 2014 10:33:22 +0200	[thread overview]
Message-ID: <53D21652.7050808@aksignal.cz> (raw)
In-Reply-To: <20140725095319.16a8465c@bbrezillon>

I changed manually .config,
now it's there:
[    1.195312] spi spi0.0: gpio_request: 23
[    1.195312] spi spi0.1: gpio_request: 22
[    1.199218] spi spi0.2: gpio_request: 93
[    1.203125] spi spi0.3: gpio_request: 14

But still not working.

Dne 25.7.2014 v 09:53 Boris BREZILLON napsal(a):
> On Fri, 25 Jul 2014 08:14:40 +0200
> Ji?? Prchal <jiri.prchal@aksignal.cz> wrote:
>
>>
>>
>> Dne 24.7.2014 v 17:58 Boris BREZILLON napsal(a):
>>> On Thu, 24 Jul 2014 17:06:43 +0200
>>> Ji?? Prchal <jiri.prchal@aksignal.cz> wrote:
>>>
>>>> Hi,
>>>>
>>>> Dne 24.7.2014 v 16:26 Boris BREZILLON napsal(a):
>>>>> Hello Ji??,
>>>>>
>>>>> First of all, please try to use git format-patch when submitting a
>>>>> patch to any kernel mailing list.
>>>> Sorry for that.
>>>>>
>>>>> On Thu, 24 Jul 2014 15:38:24 +0200
>>>>> Ji?? Prchal <jiri.prchal@aksignal.cz> wrote:
>>>>>
>>>>>> After ROMBOOT tries boot from flash on SPI0 NPCS0, this NPCS0 (PA14) remains set to PERIPH_A.
>>>>>> Because of that, this pin is unusable to something else.
>>>>>> This patch sets it back to GPIO.
>>>>>
>>>>> The policy is to leave pins in an unknown state till some peripheral
>>>>> need them.
>>>>>
>>>>> What are you trying to use this pin for ?
>>>> For chip select, but #3. And when SPI communicate with cs0 (PA22), it goes down too (PA14), so 2 devices on bus were
>>>> selected.
>>>
>>> Are you using a 9x5ek board or a custom one, in the latter case could
>>> you paste your spi0 node definition ?
>> I'm using custom board. My spi node:
>> 			spi0: spi at f0000000 {
>> 				status = "okay";
>> 				cs-gpios = <&pioA 23 0
>> 					    &pioA 22 0
>> 					    &pioC 29 0
>> 					    &pioA 14 0>;
>>
>> 				fm25 at 0 {
>> 					compatible = "cypress,fm25";
>> 					spi-max-frequency = <40000000>;
>> 					reg = <0>;
>> 					pagesize = <256>;
>> 					size = <131072>;
>> 					address-width = <24>;
>> 				};
>> 				/* ADC */
>> 				spidev at 1 {
>> 					compatible = "spidev";
>> 					reg = <1>;
>> 					spi-max-frequency = <1000000>;
>> 				};
>> 				/* IO expander for busaddr */
>> 				spidev at 2 {
>> 					compatible = "spidev";
>> 					reg = <2>;
>> 					label = "busaddr";
>> 					spi-max-frequency = <10000000>;
>> 				};
>> 				/* audio codec */
>> 				codec: codec at 3 {
>> 					compatible = "ti,tlv320aic3x";
>> 					spi-max-frequency = <1000000>;
>> 					reg = <3>;
>> 				};
>> 			};
>>
>> This does not work without patch, because of 2 chips selected at one time because of PA14 is periph_a. Probably ROMBOOT
>> changes that.
>
> Yes, boot code stored in ROM probably mux PA14 to periph A function,
> but with your definition PA 14 should be set GPIO mode when the codec
> device is created.
>
> I don't see any obvious error in your definition, could you add a trace
> there [1] to see if the gpio is successfully requested ?
> Could you also paste the content of /sys/kernel/debug/gpio ?
>
>>>
>>>>> If you just want to use it as a chip select for an spi device, take a
>>>>> look at [1].
>>>> At [1] it's OK until as cs0 is for example PA22 and cs1 is PA14.
>>>
>>> If you want PA14 to control cs1 and PA22 to control cs0 (both
>>> configured as GPIOs), you'll have the following definition:
>>>
>>> cs-gpios = <&pioA 22 0>, <&pioA 14 0>, <0>, <0>;
>> See my node.
>>>
>>>>>
>>>>> Here the gpio is requested by the spi core when defining the cs-gpios
>>>>> property. The gpio controller then request the listed pins to the pin
>>>>> controller (pinctrl driver).
>>>> GPIO is not set in driver as GPIO, at least I didn't find it.
>>>
>>> Take a look at [1], which is set as the gpio_request_enable callback,
>>> called by pinctrl core when a gpio is requested.
>> But is this called from spi driver when requesting gpios as cs?
>
> Yes, it's part of the gpio_request process:
> gpio_request calls request method on at91 gpio_chip which in turn
> calls pinctrl_request_gpio which then calls the gpio_request_enable
> method I previously mentioned.
>
>
> Best Regards,
>
> Boris
>
> [1]http://lxr.free-electrons.com/source/drivers/spi/spi-atmel.c#L1031
>

  parent reply	other threads:[~2014-07-25  8:33 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-11 10:22 [PATCH] ARM: at91: at91sam9x5: add clocks for usb device Bo Shen
2014-07-11 10:47 ` Alexandre Belloni
2014-07-11 10:55   ` Jiří Prchal
2014-07-24 13:38 ` [PATCH] ARM: at91: at91sam9x5: sets NPCS0 (PA14) back to GPIO Jiří Prchal
2014-07-24 14:26   ` Boris BREZILLON
2014-07-24 15:06     ` Jiří Prchal
2014-07-24 15:58       ` Boris BREZILLON
2014-07-25  6:14         ` Jiří Prchal
2014-07-25  7:53           ` Boris BREZILLON
2014-07-25  8:27             ` Jiří Prchal
2014-07-25  8:45               ` Boris BREZILLON
2014-07-25  8:54                 ` Jiří Prchal
2014-07-25  9:01                   ` Boris BREZILLON
2014-07-25  9:13                     ` Jiří Prchal
2014-07-25  9:31                       ` Boris BREZILLON
2014-07-25 10:06                         ` Jiří Prchal
2014-07-25 10:18                           ` Boris BREZILLON
2014-07-25 10:32                             ` Jiří Prchal
2014-07-25 11:34                               ` Boris BREZILLON
2014-07-25  8:33             ` Jiří Prchal [this message]
2014-07-25  8:30           ` Alexandre Belloni
2014-07-25  8:36             ` Boris BREZILLON
2014-07-25  8:50               ` Alexandre Belloni
2014-07-25  8:37             ` Jiří Prchal
2014-07-25  8:54               ` Alexandre Belloni
2014-07-25  8:59                 ` Jiří Prchal
2014-07-25  9:02                   ` Alexandre Belloni
2014-07-25  9:10                   ` Boris BREZILLON
2014-07-25  9:40                     ` Jiří Prchal

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=53D21652.7050808@aksignal.cz \
    --to=jiri.prchal@aksignal.cz \
    --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 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).