Message ID | 20230428121524.2125832-7-valentin.caron@foss.st.com |
---|---|
State | New |
Headers | show |
Series | spi: stm32: add spi slave mode | expand |
On Fri, Apr 28, 2023 at 02:15:23PM +0200, Valentin Caron wrote: > This property is used to enable and configure stm32h7 SPI controller to > handle underrun that could appear in slave mode. > > Signed-off-by: Valentin Caron <valentin.caron@foss.st.com> > --- > .../devicetree/bindings/spi/st,stm32-spi.yaml | 8 ++++++++ > MAINTAINERS | 1 + > include/dt-bindings/spi/spi-stm32.h | 15 +++++++++++++++ > 3 files changed, 24 insertions(+) > create mode 100644 include/dt-bindings/spi/spi-stm32.h > > diff --git a/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml b/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml > index 1d26fa2658c5..e946ea71a247 100644 > --- a/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml > +++ b/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml > @@ -28,6 +28,7 @@ allOf: > properties: > st,spi-midi-ns: false > spi-slave: false > + st,spi-slave-underrun: false > > properties: > "#address-cells": true > @@ -70,6 +71,13 @@ properties: > In case of spi-slave defined, if <0>, indicate that SS should be > detected via the dedicated HW pin > > + st,spi-slave-underrun: > + $ref: /schemas/types.yaml#/definitions/uint32-array > + description: > + First parameter enables and selects slave underrun reaction. > + Refer to "dt-bindings/spi/spi-stm32.h" for the supported values. > + Second parameter is the pattern in case of SPI_SEND_PATTERN mode. So, max 2 cells? Then: minItems: 1 maxItems: 2 Though I don't really think this belongs in DT. The driver implementing the SPI slave function defines all the rest of the protocol the slave implements. Why not this little bit? Perhaps there is no way for a SPI slave driver to tell the SPI controller which controller specific mode to use, so you abuse DT to configure the SPI controller. Also, with a controller specific response, then the slave driver is coupled to that SPI controller which isn't great either. Rob
On 4/28/23 23:56, Rob Herring wrote: > On Fri, Apr 28, 2023 at 02:15:23PM +0200, Valentin Caron wrote: >> This property is used to enable and configure stm32h7 SPI controller to >> handle underrun that could appear in slave mode. >> >> Signed-off-by: Valentin Caron <valentin.caron@foss.st.com> >> --- >> .../devicetree/bindings/spi/st,stm32-spi.yaml | 8 ++++++++ >> MAINTAINERS | 1 + >> include/dt-bindings/spi/spi-stm32.h | 15 +++++++++++++++ >> 3 files changed, 24 insertions(+) >> create mode 100644 include/dt-bindings/spi/spi-stm32.h >> >> diff --git a/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml b/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml >> index 1d26fa2658c5..e946ea71a247 100644 >> --- a/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml >> +++ b/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml >> @@ -28,6 +28,7 @@ allOf: >> properties: >> st,spi-midi-ns: false >> spi-slave: false >> + st,spi-slave-underrun: false >> >> properties: >> "#address-cells": true >> @@ -70,6 +71,13 @@ properties: >> In case of spi-slave defined, if <0>, indicate that SS should be >> detected via the dedicated HW pin >> >> + st,spi-slave-underrun: >> + $ref: /schemas/types.yaml#/definitions/uint32-array >> + description: >> + First parameter enables and selects slave underrun reaction. >> + Refer to "dt-bindings/spi/spi-stm32.h" for the supported values. >> + Second parameter is the pattern in case of SPI_SEND_PATTERN mode. > So, max 2 cells? Then: > > minItems: 1 > maxItems: 2 > > Though I don't really think this belongs in DT. The driver implementing > the SPI slave function defines all the rest of the protocol the slave > implements. Why not this little bit? Perhaps there is no way for a SPI > slave driver to tell the SPI controller which controller specific mode > to use, so you abuse DT to configure the SPI controller. Also, with a > controller specific response, then the slave driver is coupled to that > SPI controller which isn't great either. > > Rob I basically made this DT property to configure the controler and doesn't give attention to the fact that this parameter can came from framework. I will not rework this functionality, but simply let it down as we has no demands on it. Thanks for all your remarks, Valentin
diff --git a/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml b/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml index 1d26fa2658c5..e946ea71a247 100644 --- a/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml +++ b/Documentation/devicetree/bindings/spi/st,stm32-spi.yaml @@ -28,6 +28,7 @@ allOf: properties: st,spi-midi-ns: false spi-slave: false + st,spi-slave-underrun: false properties: "#address-cells": true @@ -70,6 +71,13 @@ properties: In case of spi-slave defined, if <0>, indicate that SS should be detected via the dedicated HW pin + st,spi-slave-underrun: + $ref: /schemas/types.yaml#/definitions/uint32-array + description: + First parameter enables and selects slave underrun reaction. + Refer to "dt-bindings/spi/spi-stm32.h" for the supported values. + Second parameter is the pattern in case of SPI_SEND_PATTERN mode. + patternProperties: "^[a-zA-Z][a-zA-Z0-9,+\\-._]{0,63}@[0-9a-f]+$": type: object diff --git a/MAINTAINERS b/MAINTAINERS index 007a9cdb9cc8..9dcf861834fd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -19790,6 +19790,7 @@ M: Alain Volmat <alain.volmat@foss.st.com> L: linux-spi@vger.kernel.org S: Maintained F: drivers/spi/spi-stm32.c +F: include/dt-bindings/spi/spi-stm32.h ST STPDDC60 DRIVER M: Daniel Nilsson <daniel.nilsson@flex.com> diff --git a/include/dt-bindings/spi/spi-stm32.h b/include/dt-bindings/spi/spi-stm32.h new file mode 100644 index 000000000000..260109fd1631 --- /dev/null +++ b/include/dt-bindings/spi/spi-stm32.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause) */ +/* + * This header provides constants for STM32_SPI bindings. + */ + +#ifndef _DT_BINDINGS_SPI_SPI_STM32_H +#define _DT_BINDINGS_SPI_SPI_STM32_H + +/* st,spi-slave-underrun first parameter */ +#define SPI_NO_ACTION 0 +#define SPI_SEND_PATTERN 1 +#define SPI_REPEAT_LAST_RECEIVED_DATA 2 +#define SPI_REPEAT_LAST_TRANSMITTED_DATA 3 + +#endif
This property is used to enable and configure stm32h7 SPI controller to handle underrun that could appear in slave mode. Signed-off-by: Valentin Caron <valentin.caron@foss.st.com> --- .../devicetree/bindings/spi/st,stm32-spi.yaml | 8 ++++++++ MAINTAINERS | 1 + include/dt-bindings/spi/spi-stm32.h | 15 +++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 include/dt-bindings/spi/spi-stm32.h