From: Martin Sperl <kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
To: Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Michal Suchanek
<hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Maxime Ripard
<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
linux-sunxi <linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>,
Jonathan Corbet <corbet-T1hC0tSOHrs@public.gmane.org>,
linux-spi <linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-doc <linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Linux Kernel Mailing List
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH 2/3] spidev: Add DT binding example.
Date: Mon, 27 Apr 2015 16:14:31 +0200 [thread overview]
Message-ID: <553E4447.6080202@martin.sperl.org> (raw)
In-Reply-To: <20150427112539.GR22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
On 2015-04-27 13:25, Mark Brown wrote:
> On Mon, Apr 27, 2015 at 12:04:12PM +0200, Hans de Goede wrote:
>
>> Have you seen my mail about the raspberry pi use-case? Using dt-overlays
>> simply is not an acceptable answer there. There are legitimate use-cases
>> for a "generic spi bus" concept with the bus only being accessible via
>> spidev.
>
>> Blocking this use-case because you do not believe it is a valid use-case
>> is not going to help, this will just lead to the custom distros these
>> boards are shipping doing some ugly hack, which is not what we want
>> IMHO.
>
> I don't think you've fully considered your use case here. As I said in
> my reply to your earlier e-mail I think what you're looking for here is
> something like better UI around overlays. Registering a SPI bus without
> knowing what's connected to it doesn't allow generic maker style usage
> of the board, it's just as likely to hinder a user as help them. For
> example, if someone wants to use the SPI pins for another function such
> as GPIO they'll have to handle that (and may have problems with pin
> conflicts causing electrical issues if they do load up the DT with
> spidev in it). If someone has a SPI device they want to bind an in
> kernel driver to they'll have to handle that, if they want to use a GPIO
> to provide an additional chip select they'll have to handle that too.
>
> Note that the discussion here isn't about userspace drivers, it's about
> how the hardware is described.
Mark, maybe you are missing something of how this can get done on the
raspberry pi with devicetree (and overlays).
So here how the raspberry-foundation describes the devices in their
device-tree for spi:
dtsi:
spi0: spi@7e204000 {
compatible = "brcm,bcm2708-spi";
reg = <0x7e204000 0x1000>;
interrupts = <2 22>;
clocks = <&clk_spi>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
dts:
&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins>;
spidev@0{
compatible = "spidev";
reg = <0>; /* CE0 */
#address-cells = <1>;
#size-cells = <0>;
spi-max-frequency = <500000>;
};
spidev@1{
compatible = "spidev";
reg = <1>; /* CE1 */
#address-cells = <1>;
#size-cells = <0>;
spi-max-frequency = <500000>;
};
};
/ {
__overrides__ {
spi = <&spi0>,"status";
};
}
So you see that spi is disabled by default - the pins are
free to use for anything.
The firmware then integrates the overrrides into the device-tree
before loading the kernel.
So to enable spi in general you add the following to /boot/config.txt:
dtparam=spi=on
That gives you spi plus two "generic" spidev devices.
If you want to include a mcp2515 you add also the following:
dtoverlay=mcp2515-can0-overlay
and that loads also the overlay for the mcp2515 can module.
The corresponding mcp2515 overlay looks like this:
/ {
/* the spi config of the can-controller itself */
fragment@1 {
target = <&spi0>;
__overlay__ {
/* needed to avoid dtc warning */
#address-cells = <1>;
#size-cells = <0>;
can0: mcp2515@0 {
reg = <0>;
compatible = "microchip,mcp2515";
pinctrl-names = "default";
pinctrl-0 = <&can0_pins>;
spi-max-frequency = <10000000>;
interrupt-parent = <&gpio>;
interrupts = <25 0x2>;
clocks = <&can0_osc>;
};
};
};
};
(left out the unimportant stuff like clocks,
interrupt GPIOs,...)
All this implements:
* easy means to enable spi if requested by user
* by default includes spidev as the default device
* but this can get just as easily get overridden by another
devicetree to get specific devices onboarded using the
in kernel drivers - there are now something like 25+
overlays provided by the foundation that follow this
pattern...
This is really about describing the hardware in the best possible
ways and keeping the interface with the users simple by having
him only to edit /boot/config.txt.
Adding your own overlays is just as simple and also quite well
defined.
So coming from this perspective I believe that there is some
concern in the raspberry pi community, because the description
they provide is now specific to the HW and their intent and so
the loud "croaking" of spidev will irritate people even when
they have done everything the best they can.
OK, I admit, the spi-devices could be separate overlays if
one really wants to have them, but they can get disabled just
as easily (by a specific overlay) if only a single device is
needed.
The only thing that could possibly be better would be that
the user would define the "real" name of the device in the
device tree and spidev would bind to it if there is no driver
available (but that would require this "fallback" binding by
spidev in case of no driver).
Martin
P.s: note that by default the foundation still relies on the
very old spi driver, but there is an overlay to load
spi-bcm2835 instead - just add:
dtoverlay=spi-bcm2835-overlay
Which basically contains:
/ {
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708",
"brcm,bcm2709";
/* setting up compatiblity to allow loading the spi-bcm2835 driver */
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
compatible = "brcm,bcm2835-spi";
};
};
};
next prev parent reply other threads:[~2015-04-27 14:14 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1430034797.git.hramrach@gmail.com>
[not found] ` <cover.1430034797.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-24 10:50 ` [PATCH 2/3] spidev: Add DT binding example Michal Suchanek
[not found] ` <bb069283a5c2ccfbc05177f1ed41cabb1485796e.1430034797.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-04-26 10:32 ` Mark Brown
[not found] ` <20150426103257.GJ22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-26 10:54 ` Michal Suchanek
[not found] ` <CAOMqctR235uF+7kNGsLEGfrrAOQAYmw0pWgk6t8fZHNT7XsRuw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-26 11:01 ` Mark Brown
[not found] ` <20150426110144.GK22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-26 11:23 ` [linux-sunxi] " Hans de Goede
[not found] ` <553CCABA.3090504-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-04-26 11:56 ` [linux-sunxi] " Martin Sperl
[not found] ` <12F80B18-7418-430E-94F7-5A20C133BA9A-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2015-04-26 12:38 ` Michal Suchanek
[not found] ` <CAOMqctR8MZ_r6HHEBWhgxpUsTaV=M7DfmnJ_VxTqjWu4KMBSwA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-26 12:51 ` Maxime Ripard
2015-04-26 14:14 ` Michal Suchanek
[not found] ` <CAOMqctRbYoNG2c-5atBP3QvMKbEhOrAgxzK1QskA5k2TgHraFQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-26 14:33 ` Maxime Ripard
2015-04-26 14:40 ` Hans de Goede
2015-04-26 15:47 ` [linux-sunxi] " Maxime Ripard
2015-04-27 6:51 ` Michal Suchanek
[not found] ` <CAOMqctRQYsphKxaZXUae0KqAE5SnYZN5M3iPPGw_PKnnuh0W1Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-27 10:05 ` Maxime Ripard
[not found] ` <553CF8F2.6070204-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-04-27 10:10 ` Mark Brown
2015-04-27 14:28 ` [linux-sunxi] " Michal Suchanek
2015-04-27 15:13 ` Geert Uytterhoeven
[not found] ` <CAMuHMdXev+8B6SE=PFVruSJb9yC09BT0bMLponHOM2Os6rLMZA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-27 15:44 ` Michal Suchanek
2015-04-26 15:33 ` Michal Suchanek
[not found] ` <CAOMqctR5NiuZ2T3wYOpqu6Ez1yk7U9VoxDZHBT6uEqftRN_Z-g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-26 15:54 ` Maxime Ripard
2015-04-26 18:53 ` Michal Suchanek
[not found] ` <CAOMqctT1sC5PWLLXr0By_-5GaJK0nKoGOxHiwpaFZtBFmWkDbQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-27 10:04 ` [linux-sunxi] " Maxime Ripard
2015-04-27 11:18 ` Michal Suchanek
2015-04-27 10:46 ` [linux-sunxi] " Mark Brown
2015-04-27 9:36 ` Mark Brown
[not found] ` <20150427093618.GL22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-27 9:39 ` Michal Suchanek
2015-04-27 10:59 ` [linux-sunxi] " Mark Brown
2015-04-27 10:04 ` Hans de Goede
[not found] ` <553E099C.4070208-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-04-27 10:09 ` Hans de Goede
2015-04-27 11:25 ` Mark Brown
[not found] ` <20150427112539.GR22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-27 14:14 ` Martin Sperl [this message]
[not found] ` <553E4447.6080202-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2015-04-27 15:27 ` Mark Brown
2015-04-27 16:25 ` [linux-sunxi] " Martin Sperl
[not found] ` <CD7C1C3B-80B5-4627-94A4-2B83AAEC1DDB-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2015-04-27 17:59 ` Mark Brown
2015-04-27 10:16 ` [linux-sunxi] " Mark Brown
[not found] ` <20150427101601.GN22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-27 17:30 ` Maxime Ripard
2015-04-27 18:07 ` Mark Brown
[not found] ` <20150427180728.GW22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-28 12:15 ` Eric D.
[not found] ` <cd282abf-898a-4f01-90a6-8bf2db160b8e-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2015-04-28 12:52 ` [linux-sunxi] " Michal Suchanek
[not found] ` <CAOMqctRTFgnVEKDAx4roMcGOeGV35Dyz7oOsOa4jC-MKr9_xXg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-28 14:03 ` Eric D.
[not found] ` <28a25eda-bba0-4a2e-9890-b3d3bef7ac7e-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2015-04-28 14:11 ` [linux-sunxi] " Michal Suchanek
2015-04-28 14:12 ` Maxime Ripard
2015-04-28 14:35 ` Michal Suchanek
2015-04-28 14:16 ` Mark Brown
[not found] ` <20150428141630.GR22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-28 14:22 ` Michal Suchanek
[not found] ` <CAOMqctTNSgycy7K=ZMK9aaZGyybDT61e0Y6Fwf1jtoMbSVoNQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-28 17:17 ` Mark Brown
[not found] ` <20150428171738.GY22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-28 20:43 ` Michal Suchanek
[not found] ` <CAOMqctSEAd-WeBRLabvDugN04XaqY6Y1UyO9UPLaTW9ce7t_rQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-29 17:40 ` [linux-sunxi] " Mark Brown
[not found] ` <20150429174059.GQ22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-29 17:44 ` Michal Suchanek
[not found] ` <CAOMqctQmpYmD0J9=o6FVjJhXBc8b+oGd7cNh5aH_fmgE3vk5+A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-29 18:06 ` Mark Brown
[not found] ` <20150429180659.GT22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-04-29 18:37 ` Michal Suchanek
[not found] ` <CAOMqctSMeWvG6YsCFn5=wxS2nCBbMiiCKUNJh8oFsH1VZY4H-w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-29 18:56 ` Geert Uytterhoeven
[not found] ` <CAMuHMdXtL=-JWiXNbpwBEc+oMAVpBq1ShqZhFVKZRO_x9Xq4tA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-29 19:24 ` Michal Suchanek
[not found] ` <CAOMqctQD8+bJevuOWRNx6LFfD_QXLGeNLqmVUhfsSdPrxyv6bQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-30 14:03 ` Eric D.
2015-04-30 19:58 ` Mark Brown
[not found] ` <20150430195829.GG22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-05-03 9:01 ` Martin Sperl
[not found] ` <A92B1688-9A12-4462-BA02-AEEE197C0FF4-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2015-05-03 9:59 ` Mark Brown
[not found] ` <20150503095917.GQ22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-05-03 21:00 ` Martin Sperl
[not found] ` <A1FB2CDB-6735-46B2-BB74-80F1B2033E23-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2015-05-04 8:36 ` [linux-sunxi] " Michal Suchanek
2015-05-04 10:12 ` Mark Brown
[not found] ` <20150504101207.GR22845-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-05-04 10:42 ` Michal Suchanek
[not found] ` <CAOMqctQq=CLsXf-RCrtJq5H9skdO1y4mV9iM2pOk69+voMiS0g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-04 13:17 ` Mark Brown
2015-05-03 10:02 ` Geert Uytterhoeven
2015-05-12 14:27 ` Maxime Ripard
2015-05-12 14:52 ` Michal Suchanek
2015-05-12 16:06 ` Mark Brown
2015-04-26 11:26 ` Michal Suchanek
2015-04-25 19:21 ` [PATCH 3/3] ARM: sunxi: spi: use proper errno when message is too long Michal Suchanek
[not found] ` <4c27d44b2bdd759424ce4a4b2e8f6abf5d5a6735.1430034797.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-04-26 8:42 ` Maxime Ripard
2015-04-26 11:42 ` Michal Suchanek
[not found] ` <CAOMqctS3oXd5Wg7vu6xLtA6gDKgY0c9rHER48Grt7tnw53Zo1w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-26 12:54 ` Maxime Ripard
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=553E4447.6080202@martin.sperl.org \
--to=kernel-tqfnsx0mhmxhksadf0wuew@public.gmane.org \
--cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=corbet-T1hC0tSOHrs@public.gmane.org \
--cc=hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@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 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).