[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250314210652.GA2300828-robh@kernel.org>
Date: Fri, 14 Mar 2025 16:06:52 -0500
From: Rob Herring <robh@...nel.org>
To: Maud Spierings <maudspierings@...ontroll.com>
Cc: Neil Armstrong <neil.armstrong@...aro.org>,
Jessica Zhang <quic_jesszhan@...cinc.com>,
Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>,
Maxime Ripard <mripard@...nel.org>,
Thomas Zimmermann <tzimmermann@...e.de>,
David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>,
Thierry Reding <thierry.reding@...il.com>,
Sam Ravnborg <sam@...nborg.org>, Liu Ying <victor.liu@....com>,
Shawn Guo <shawnguo@...nel.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>, Mark Brown <broonie@...nel.org>,
dri-devel@...ts.freedesktop.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, imx@...ts.linux.dev,
linux-arm-kernel@...ts.infradead.org, linux-spi@...r.kernel.org
Subject: Re: [PATCH v2 03/12] dt-bindings: connector: Add the GOcontroll
Moduline module slot bindings
On Wed, Feb 26, 2025 at 03:19:14PM +0100, Maud Spierings wrote:
> Add the bindings that describe a GOcontroll Moduline module slot. This
> slot provides all the interfaces to interface with a Moduline compatible
> IO module. The actual module is not reasonable to describe as it can be
> swapped at will, with this connector the driver will be able to probe
> for a module on boot.
>
> The connector consists of 2 parts, one part for interfacing with the SoC
> and main board, the other part has 13 IO channels for the module to
> interact with the outside world. The functions of these IO channels are
> determined by the type of module in the slot. The IO on the SoC side is
> as follows:
>
> - a 3v3 supply, this tends to be the logic level of the module and its
> microcontroller
> - a 5v0 supply, this can be used to power low power peripherals on the
> module
> - a 6v-8v supply, this can be used for high power peripherals on the
> module
> - a 6v-30v supply, this tends to be a dirty supply that comes from the
> controller supply after some circuit protection, or is the same as
> the 6v-8v supply.
> - an SPI bus which carries the communication between the SoC and the
> microcontroller on the module.
> - an I2C bus shared between the SoC and all module slots which can
> carry direct module-to-module communication.
> - a reset line
> - an interrupt line that indicates a clear to transmit signal
> - a sync line shared between the SoC and all module slots which could
> be used to synchronize modules for time sensitive IO spread across
> modules.
> - a SMBus alert line that is shared between the modules but is not
> connected to the SoC so that is ignored.
>
> A slot-number property is used to identify the physical location of a
> module slot. Without it, it would be impossible to identify which module
> to control if there are multiple of one type, to address the desired IO.
Is that for a person to identify slots or s/w? If just a person, we
generally use 'label' as in a sticker on the connector. If s/w, we
generally try to avoid made up indexing in DT though there are some
exceptions.
>
> Signed-off-by: Maud Spierings <maudspierings@...ontroll.com>
> ---
> .../connector/gocontroll,moduline-module-slot.yaml | 88 ++++++++++++++++++++++
> 1 file changed, 88 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/connector/gocontroll,moduline-module-slot.yaml b/Documentation/devicetree/bindings/connector/gocontroll,moduline-module-slot.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..a16ae2762d160180d5b163e20f5294235e65053b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/connector/gocontroll,moduline-module-slot.yaml
> @@ -0,0 +1,88 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/connector/gocontroll,moduline-module-slot.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: GOcontroll Moduline Module slot
> +
> +maintainers:
> + - Maud Spierings <maudspierings@...ontroll.com>
> +
> +description:
> + The GOcontroll Moduline module slot represents a connector that fullfills the
> + Moduline slot specification, and can thus house any IO module that is also
> + built to this spec.
> +
> +properties:
> + compatible:
> + const: gocontroll,moduline-module-slot
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + description: indicates readiness, high means busy.
> + maxItems: 1
> + reset-gpios:
> + description: resets the module, active low.
> + maxItems: 1
> + sync-gpios:
> + description: sync line between all module slots.
> + maxItems: 1
> +
> + vdd-supply:
> + description: low power 3v3 supply generally for the microcontroller.
> + vddp-supply:
> + description: medium power 5v0 supply for on module low power peripherals.
> + vddhpp-supply:
> + description: high power 6v-8v supply for on module high power peripherals.
> + power-supply:
> + description: high power 6v-30v supply for high power module circuits.
> +
> + i2c-bus:
> + description: i2c bus shared between module slots and the SoC
> + $ref: /schemas/types.yaml#/definitions/phandle
> +
> + slot-number:
> + description:
> + The number of the module slot representing the location of on the pcb.
> + This enables access to the modules based on slot location.
> + $ref: /schemas/types.yaml#/definitions/uint32
> +
> + spi-max-frequency: true
> +
> +required:
> + - compatible
> + - reg
> + - reset-gpios
> + - interrupts
> + - sync-gpios
> + - i2c-bus
> + - slot-number
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> + #include <dt-bindings/interrupt-controller/irq.h>
> +
> + spi {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + connector@0 {
I find this being a SPI device a bit strange. Is there a defined SPI
device that every slot is going to have? Or the connector has SPI
interface and *anything* could be attached on it?
> + reg = <0>;
> + compatible = "gocontroll,moduline-module-slot";
> + reset-gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
> + sync-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
> + interrupt-parent = <&gpio4>;
> + interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
> + vdd-supply = <®_3v3_per>;
> + vddp-supply = <®_5v0>;
> + vddhpp-supply = <®_6v4>;
> + i2c-bus = <&i2c2>;
> + slot-number = <1>;
> + };
> + };
>
> --
> 2.48.1
>
Powered by blists - more mailing lists