linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime-R63rPqgGiG5yDzI6CaY1VQ@public.gmane.org>
To: Sam Ravnborg <sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
Cc: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Thierry Reding
	<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Alexandre Courbot
	<acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	Andrzej Hajda <a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
	Brian Masney <masneyb-1iNe0GrtECGEi8DpZVb4nw@public.gmane.org>,
	Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	Douglas Anderson
	<dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	Guido Gunther <agx-wGvLLbajjwFAfugRpC6u6w@public.gmane.org>,
	Heiko Schocher <hs-ynQEQJNshbs@public.gmane.org>,
	Nikolaus Schaller <hns-xXXSsgcRVICgSpxsJD1C4w@public.gmane.org>,
	Hoegeun Kwon
	<hoegeun.kwon-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
	Jagan Teki
	<jagan-dyjBcgdgk7Pe9wHmmfpqLFaTQe2KTcn/@public.gmane.org>,
	Jerry Han
	<hanxu5-dyavHbARFqWrZjcNGxgArdPArS5jOdiE2SarAXORi/o@public.gmane.org>,
	Jonathan Bakker <xc-racer2-kt+e9JA1QaI@public.gmane.org>,
	Laurent Pinchart
	<laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
	Lin Huang <hl-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	Linus Walleij
	<linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Marco Fr
Subject: Re: [PATCH v1 02/36] dt-bindings: spi: support non-spi bindings as SPI slaves
Date: Tue, 17 Mar 2020 10:02:44 +0100	[thread overview]
Message-ID: <20200317090244.jmucfw5pkxzrce7e@gilmour.lan> (raw)
In-Reply-To: <20200316214346.GA23637-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 7047 bytes --]

Hi,

On Mon, Mar 16, 2020 at 10:43:46PM +0100, Sam Ravnborg wrote:
> On Mon, Mar 16, 2020 at 09:48:50PM +0100, Maxime Ripard wrote:
> > Hi Sam,
> >
> > On Sun, Mar 15, 2020 at 02:43:42PM +0100, Sam Ravnborg wrote:
> > > Independent bindings can be SPI slaves which for example is
> > > the case for several panel bindings.
> > >
> > > Move SPI slave properties to spi-slave.yaml so the independent
> > > SPI slave bindings can include spi-slave.yaml rather than
> > > duplicating the properties.
> > >
> > > Signed-off-by: Sam Ravnborg <sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
> > > Cc: Maxime Ripard <maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
> > > Cc: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> > > Cc: Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> > > Cc: linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> > > ---
> > >  .../bindings/spi/spi-controller.yaml          | 63 +-------------
> > >  .../devicetree/bindings/spi/spi-slave.yaml    | 83 +++++++++++++++++++
> > >  2 files changed, 86 insertions(+), 60 deletions(-)
> > >  create mode 100644 Documentation/devicetree/bindings/spi/spi-slave.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/spi/spi-controller.yaml b/Documentation/devicetree/bindings/spi/spi-controller.yaml
> > > index 1e0ca6ccf64b..99531c8d10dd 100644
> > > --- a/Documentation/devicetree/bindings/spi/spi-controller.yaml
> > > +++ b/Documentation/devicetree/bindings/spi/spi-controller.yaml
> > > @@ -67,71 +67,14 @@ patternProperties:
> > >    "^.*@[0-9a-f]+$":
> > >      type: object
> > >
> > > +    allOf:
> > > +      - $ref: spi-slave.yaml#
> > > +
> > >      properties:
> > >        compatible:
> > >          description:
> > >            Compatible of the SPI device.
> > >
> > > -      reg:
> > > -        minimum: 0
> > > -        maximum: 256
> > > -        description:
> > > -          Chip select used by the device.
> > > -
> > > -      spi-3wire:
> > > -        $ref: /schemas/types.yaml#/definitions/flag
> > > -        description:
> > > -          The device requires 3-wire mode.
> > > -
> > > -      spi-cpha:
> > > -        $ref: /schemas/types.yaml#/definitions/flag
> > > -        description:
> > > -          The device requires shifted clock phase (CPHA) mode.
> > > -
> > > -      spi-cpol:
> > > -        $ref: /schemas/types.yaml#/definitions/flag
> > > -        description:
> > > -          The device requires inverse clock polarity (CPOL) mode.
> > > -
> > > -      spi-cs-high:
> > > -        $ref: /schemas/types.yaml#/definitions/flag
> > > -        description:
> > > -          The device requires the chip select active high.
> > > -
> > > -      spi-lsb-first:
> > > -        $ref: /schemas/types.yaml#/definitions/flag
> > > -        description:
> > > -          The device requires the LSB first mode.
> > > -
> > > -      spi-max-frequency:
> > > -        $ref: /schemas/types.yaml#/definitions/uint32
> > > -        description:
> > > -          Maximum SPI clocking speed of the device in Hz.
> > > -
> > > -      spi-rx-bus-width:
> > > -        allOf:
> > > -          - $ref: /schemas/types.yaml#/definitions/uint32
> > > -          - enum: [ 1, 2, 4, 8 ]
> > > -          - default: 1
> > > -        description:
> > > -          Bus width to the SPI bus used for MISO.
> > > -
> > > -      spi-rx-delay-us:
> > > -        description:
> > > -          Delay, in microseconds, after a read transfer.
> > > -
> > > -      spi-tx-bus-width:
> > > -        allOf:
> > > -          - $ref: /schemas/types.yaml#/definitions/uint32
> > > -          - enum: [ 1, 2, 4, 8 ]
> > > -          - default: 1
> > > -        description:
> > > -          Bus width to the SPI bus used for MOSI.
> > > -
> > > -      spi-tx-delay-us:
> > > -        description:
> > > -          Delay, in microseconds, after a write transfer.
> > > -
> >
> > I can see what you're trying to do, but you don't really need to.
> >
> > All the SPI devices will be declared under a spi controller node that
> > will validate its child nodes (and thus the devices) already.
>
> This was the missing piece - thanks.
> And as Mark put it "why is this suddenly an issue"?
> Turns out this is already properly handled and I made up an issue.
> Maybe Mark tried to explian it to me already...

Yeah, the schemas multi-layering thing is pretty difficult to get used
to :)

> >
> > Doing it this way would actually make all the checks happen twice,
> > once as part of the SPI controller, once as part of the SPI device
> > binding, without any good reason.
>
> I had focus on validating the example in the binding
> file and not the full picture.
>
> One thing I do not see properly addressed, but maybe I just miss it.
> What triggers that we catch properties that are not supposed to be
> present?
>
> If we see a unsupported property "foobar":
>
> spi {
>     ...
>     panel {
>        ....
>        foobar = <1>;
>     };
> };
>
> somewhere in a SPI slave binding we should catch this.
> If for no other reasons that it could be a simple spelling mistake
> that otherwise could go undetected for a long time.
> But maybe this is really not feasible to do?

So you have multiple things here you can do.

Like I said, the schemas are all run as some kind of layers, and each
schema must validate, so you'll want to make a schema that will
validate only what's it supposed to be validating.

Let's use your SPI panel as an example. The SPI controller schema has
a description of what a controller is supposed to look like, and the
properties that are useful to that controller in the devices (things
like the chip-select number, phase settings, etc).

However, at the controller level, you have no idea what devices are
connected, and thus you cannot limit the number of properties a child
is going to have.

The second layer that comes in is the device binding itself. Here,
you'll know what the device itself needs, but you don't really care
about the SPI controller setting itself, since you could have pretty
much each combination in various DTs.

The main property to restrict the allowed properties is
additionalProperties, and setting it to false will raise an error for
each property encountered that isn't part of the *current*
schema. This means that we can't set it for the spi controller
binding, and we would need to duplicate the list of all the generic
SPI properties in each and every binding to avoid spurious error
messages: this is not really ideal, but some (early) schemas are doing
this.

The next spec of the schema language introduces a new property though
that is unevaluatedProperties, which works pretty much like
additionalProperties, but will emit an error only if no schema defines
it. Like I said, the library implementing the schema validation logic
doesn't implement that new spec yet, but the tools allow that property
to be set (but it's ignored). It would be best to simply use
unevaluatedProperties in your panel patch, and when the tools will be
updated you'll get the behaviour you want.

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  parent reply	other threads:[~2020-03-17  9:02 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-15 13:43 [PATCH v1 0/36] dt-bindings: display: convert remaning panel bindings to DT Schema Sam Ravnborg
     [not found] ` <20200315134416.16527-1-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-15 13:43   ` [PATCH v1 01/36] dt-bindings: display: add te-gpios to panel-common Sam Ravnborg
2020-03-15 13:43   ` [PATCH v1 02/36] dt-bindings: spi: support non-spi bindings as SPI slaves Sam Ravnborg
     [not found]     ` <20200315134416.16527-3-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-15 16:24       ` Linus Walleij
2020-03-16 12:02       ` Mark Brown
     [not found]         ` <20200316120239.GC5010-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2020-03-16 13:28           ` Sam Ravnborg
     [not found]             ` <20200316132844.GA22822-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-16 16:35               ` Mark Brown
     [not found]                 ` <20200316163538.GJ5010-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2020-03-16 18:57                   ` Sam Ravnborg
     [not found]                     ` <20200316185733.GA18307-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-16 20:14                       ` Mark Brown
2020-03-16 20:48       ` Maxime Ripard
     [not found]         ` <20200316204850.gggeyjulgiy53i7x-2DbqMqoCcjvhXIiyNabO3w@public.gmane.org>
2020-03-16 21:43           ` Sam Ravnborg
     [not found]             ` <20200316214346.GA23637-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-17  9:02               ` Maxime Ripard [this message]
2020-03-17 11:39               ` Mark Brown
2020-03-15 13:43   ` [PATCH v1 03/36] dt-bindings: display: convert samsung,s6e63m0 to DT Schema Sam Ravnborg
     [not found]     ` <20200315134416.16527-4-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-19  2:47       ` Rob Herring
2020-03-15 13:43   ` [PATCH v1 04/36] dt-bindings: display: convert arm,versatile-tft-panel " Sam Ravnborg
     [not found]     ` <20200315134416.16527-5-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-15 16:25       ` Linus Walleij
2020-03-19  2:48       ` Rob Herring
2020-03-15 13:43   ` [PATCH v1 05/36] dt-bindings: display: convert boe,himax8279d " Sam Ravnborg
2020-03-15 13:43   ` [PATCH v1 06/36] dt-bindings: display: convert ilitek,ili9322 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-7-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-15 18:54       ` Linus Walleij
     [not found]         ` <CACRpkdYVrTBKxuHSGpd9=03oD4=JVxzJf8fOcQ8uu5eRt9PgAg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2020-03-15 19:24           ` Sam Ravnborg
2020-03-15 13:43   ` [PATCH v1 07/36] dt-bindings: display: convert ilitek,ili9881c " Sam Ravnborg
     [not found]     ` <20200315134416.16527-8-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-18 22:06       ` Rob Herring
2020-03-15 13:43   ` [PATCH v1 08/36] dt-bindings: display: convert feiyang,fy07024di26a30d " Sam Ravnborg
     [not found]     ` <20200315134416.16527-9-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-18 10:46       ` Jagan Teki
     [not found]         ` <CAMty3ZD2kuD0nwWXDAD6R58Z2GFy1Ap7HfnEtYqwARQqs0nMfQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2020-03-18 11:00           ` Sam Ravnborg
2020-03-15 13:43   ` [PATCH v1 09/36] dt-bindings: display: convert innolux,p079zca " Sam Ravnborg
2020-03-15 13:43   ` [PATCH v1 10/36] dt-bindings: display: convert innolux,p097pfg " Sam Ravnborg
2020-03-15 13:43   ` [PATCH v1 11/36] dt-bindings: display: convert innolux,p120zdg-bf1 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-12-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-16 20:41       ` Doug Anderson
2020-03-15 13:43   ` [PATCH v1 12/36] dt-bindings: display: convert jdi,lt070me05000 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-13-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-16  8:59       ` Vinay Simha B N
2020-03-19  2:53       ` Rob Herring
2020-03-15 13:43   ` [PATCH v1 13/36] dt-bindings: display: convert kingdisplay,kd035g6-54nt " Sam Ravnborg
2020-03-15 13:43   ` [PATCH v1 14/36] dt-bindings: display: convert kingdisplay,kd097d04 " Sam Ravnborg
2020-03-15 13:43   ` [PATCH v1 15/36] dt-bindings: display: convert simple lg panels " Sam Ravnborg
     [not found]     ` <20200315134416.16527-16-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-15 23:32       ` Brian Masney
2020-03-15 13:43   ` [PATCH v1 16/36] dt-bindings: display: convert lg,lg4573 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-17-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-16  4:56       ` Heiko Schocher
2020-03-19  2:56       ` Rob Herring
2020-03-15 13:43   ` [PATCH v1 17/36] dt-bindings: display: convert osddisplays,osd101t2587-53ts " Sam Ravnborg
     [not found]     ` <20200315134416.16527-18-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-16  7:51       ` Tomi Valkeinen
2020-03-15 13:43   ` [PATCH v1 18/36] dt-bindings: display: convert raydium,rm67191 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-19-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-19  2:58       ` Rob Herring
2020-03-19  3:22         ` Rob Herring
2020-03-15 13:43   ` [PATCH v1 19/36] dt-bindings: display: convert rocktech,jh057n00900 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-20-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-15 17:58       ` Guido Günther
2020-03-15 13:44   ` [PATCH v1 20/36] dt-bindings: display: convert samsung AMOLED " Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 21/36] dt-bindings: display: convert samsung,s6d16d0 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-22-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-15 18:56       ` Linus Walleij
2020-03-15 13:44   ` [PATCH v1 22/36] dt-bindings: display: convert samsung,ld9040 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-23-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-19  3:01       ` Rob Herring
2020-03-15 13:44   ` [PATCH v1 23/36] dt-bindings: display: convert samsung,s6e8aa0 " Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 24/36] dt-bindings: display: convert toppoly panels " Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 25/36] dt-bindings: display: convert startek,startek-kd050c " Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 26/36] dt-bindings: display: convert sony,acx565akm " Sam Ravnborg
     [not found]     ` <20200315134416.16527-27-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-17  6:23       ` Tomi Valkeinen
2020-03-19  3:03       ` Rob Herring
2020-03-15 13:44   ` [PATCH v1 27/36] dt-bindings: display: convert sitronix,st7701 " Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 28/36] dt-bindings: display: convert sitronix,st7789v " Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 29/36] dt-bindings: display: drop unused simple-panel.txt Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 30/36] dt-bindings: display: convert sharp,ls043t1le01 to DT Schema Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 31/36] dt-bindings: display: convert sharp,lq101r1sx01 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-32-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-19  3:19       ` Rob Herring
2020-03-15 13:44   ` [PATCH v1 32/36] dt-bindings: display: convert sharp,ls037v7dw01 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-33-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-19  3:07       ` Rob Herring
2020-03-29 19:03         ` Sam Ravnborg
2020-03-31 17:20           ` Rob Herring
2020-03-31 19:13             ` Sam Ravnborg
2020-03-31 20:57               ` Rob Herring
2020-03-15 13:44   ` [PATCH v1 33/36] dt-bindings: display: convert sharp,lq150x1lg11 " Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 34/36] dt-bindings: display: convert seiko,43wvf1g " Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 35/36] dt-bindings: display: convert lgphilips,lb035q02 " Sam Ravnborg
     [not found]     ` <20200315134416.16527-36-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-16  7:57       ` Tomi Valkeinen
     [not found]         ` <a73da9d3-43b2-3ce7-85e9-8135dbf48e98-l0cyMroinI0@public.gmane.org>
2020-03-16  8:26           ` Sam Ravnborg
     [not found]             ` <20200316082607.GA18510-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-16  8:42               ` Tomi Valkeinen
     [not found]                 ` <a634d733-4b88-9d5a-09a1-c9551d8a077a-l0cyMroinI0@public.gmane.org>
2020-03-16  8:53                   ` Sam Ravnborg
     [not found]                     ` <20200316085311.GA19201-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-16  9:11                       ` Tomi Valkeinen
     [not found]                         ` <3bf96f0e-90a8-1513-800f-0168d912fd9f-l0cyMroinI0@public.gmane.org>
2020-03-17  6:45                           ` Sam Ravnborg
2020-03-15 13:44   ` [PATCH v1 36/36] dt-bindings: display: convert olimex,lcd-olinuxino " Sam Ravnborg
     [not found]     ` <20200315134416.16527-37-sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2020-03-19  3:11       ` Rob Herring
2020-03-19  3:25   ` [PATCH v1 0/36] dt-bindings: display: convert remaning panel bindings " Rob Herring
2020-03-19  6:42     ` Sam Ravnborg

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=20200317090244.jmucfw5pkxzrce7e@gilmour.lan \
    --to=maxime-r63rpqggig5ydzi6cay1vq@public.gmane.org \
    --cc=a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=agx-wGvLLbajjwFAfugRpC6u6w@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=hanxu5-dyavHbARFqWrZjcNGxgArdPArS5jOdiE2SarAXORi/o@public.gmane.org \
    --cc=hl-TNX95d0MmH7DzftRWevZcw@public.gmane.org \
    --cc=hns-xXXSsgcRVICgSpxsJD1C4w@public.gmane.org \
    --cc=hoegeun.kwon-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=hs-ynQEQJNshbs@public.gmane.org \
    --cc=jagan-dyjBcgdgk7Pe9wHmmfpqLFaTQe2KTcn/@public.gmane.org \
    --cc=laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \
    --cc=linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=masneyb-1iNe0GrtECGEi8DpZVb4nw@public.gmane.org \
    --cc=robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org \
    --cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=xc-racer2-kt+e9JA1QaI@public.gmane.org \
    --cc=zyw-TNX95d0MmH7DzftRWevZcw@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).