[0/3] pwm: add support for NXPs high-side switch MC33XS2410

Message ID 20240228133236.748225-1-dima.fedrau@gmail.com
Headers
Series pwm: add support for NXPs high-side switch MC33XS2410 |

Message

Dimitri Fedrau Feb. 28, 2024, 1:32 p.m. UTC
  The MC33XS2410 is a four channel high-side switch. Featuring advanced
monitoring and control function, the device is operational from 3.0 V to
60 V. The device is controlled by SPI port for configuration.

Dimitri Fedrau (3):
  dt-bindings: pwm: add support for MC33XS2410
  pwm: add support for NXPs high-side switch MC33XS2410
  pwm: mc33xs2410: add support for direct inputs

 .../bindings/pwm/nxp,mc33xs2410.yaml          | 105 +++++
 drivers/pwm/Kconfig                           |  12 +
 drivers/pwm/Makefile                          |   1 +
 drivers/pwm/pwm-mc33xs2410.c                  | 418 ++++++++++++++++++
 4 files changed, 536 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/pwm/nxp,mc33xs2410.yaml
 create mode 100644 drivers/pwm/pwm-mc33xs2410.c
  

Comments

Krzysztof Kozlowski Feb. 28, 2024, 1:59 p.m. UTC | #1
On 28/02/2024 14:32, Dimitri Fedrau wrote:
> Adding documentation for MC33XS2410 pwm driver.

Driver as Linux driver? If so, please rephrase to describe hardware.

> 
> Signed-off-by: Dimitri Fedrau <dima.fedrau@gmail.com>
> ---
>  .../bindings/pwm/nxp,mc33xs2410.yaml          | 105 ++++++++++++++++++
>  1 file changed, 105 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/pwm/nxp,mc33xs2410.yaml
> 
> diff --git a/Documentation/devicetree/bindings/pwm/nxp,mc33xs2410.yaml b/Documentation/devicetree/bindings/pwm/nxp,mc33xs2410.yaml
> new file mode 100644
> index 000000000000..bd387dbe69be
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pwm/nxp,mc33xs2410.yaml
> @@ -0,0 +1,105 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/pwm/nxp,mc33xs2410.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: MC33XS2410 PWM driver

Driver as Linux driver? If so, please rephrase to describe hardware.

> +
> +maintainers:
> +  - Dimitri Fedrau <dima.fedrau@gmail.com>
> +
> +allOf:
> +  - $ref: pwm.yaml#
> +  - $ref: /schemas/spi/spi-peripheral-props.yaml#
> +
> +properties:
> +  compatible:
> +    const: nxp,mc33xs2410
> +
> +  reg:
> +    maxItems: 1
> +
> +  spi-max-frequency:
> +    maximum: 10000000
> +
> +  spi-cpha: true
> +
> +  spi-cs-setup-delay-ns:
> +    minimum: 100
> +    default: 100
> +
> +  spi-cs-hold-delay-ns:
> +    minimum: 10
> +    default: 10
> +
> +  spi-cs-inactive-delay-ns:
> +    minimum: 300
> +    default: 300
> +
> +  reset-gpios:
> +    description:
> +      GPIO connected to the active low reset pin.
> +    maxItems: 1
> +
> +  "#pwm-cells":
> +    const: 3
> +
> +  pwms:
> +    description:
> +      Direct inputs(di0-3) are used to directly turn-on or turn-off the
> +      outputs. The external PWM clock can be used if the internal clock
> +      doesn't meet timing requirements.

pwm is input for pwm?

> +    maxItems: 5
> +
> +  pwm-names:
> +    items:
> +      - const: di0
> +      - const: di1
> +      - const: di2
> +      - const: di3
> +      - const: ext_clk

Aren't these clocks?

> +
> +  vdd-supply:
> +    description:
> +      Logic supply voltage
> +
> +  vspi-supply:
> +    description:
> +      Supply voltage for SPI
> +
> +  vpwr-supply:
> +    description:
> +      Power switch supply
> +
> +  interrupts:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +
> +additionalProperties: false

Instead:
unevaluatedProperties: false

> +
> +examples:
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +    spi {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +       pwm@0 {
> +           compatible = "nxp,mc33xs2410";
> +           reg = <0x0>;
> +           spi-max-frequency = <4000000>;
> +           spi-cpha;
> +           spi-cs-setup-delay-ns = <100>;
> +           spi-cs-hold-delay-ns = <10>;
> +           spi-cs-inactive-delay-ns = <300>;
> +           reset-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
> +           #pwm-cells = <3>;

Make example complete, so provide all properties, like interrupts, pwms
and whatever you have in the binding.

Best regards,
Krzysztof
  
Krzysztof Kozlowski Feb. 29, 2024, 7:45 a.m. UTC | #2
On 28/02/2024 16:41, Dimitri Fedrau wrote:
>>> +    maxItems: 5
>>> +
>>> +  pwm-names:
>>> +    items:
>>> +      - const: di0
>>> +      - const: di1
>>> +      - const: di2
>>> +      - const: di3
>>> +      - const: ext_clk
>>
>> Aren't these clocks?
>>
> di0-3 are PWM input signals which are translated to output voltage "vpwr".
> ext_clk is described as PWM clock in the datasheet. Didn't used it, just
> mentioned it here for completeness.

Then it looks more like a clock, so clocks: property.

>>> +
>>> +  vdd-supply:
>>> +    description:
>>> +      Logic supply voltage
>>> +


Best regards,
Krzysztof