Message ID | 20231219130230.32584-2-petre.rodan@subdimension.ro (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | iio: pressure: changes to mprls0025pa | expand |
On Tue, 19 Dec 2023 15:02:20 +0200 Petre Rodan <petre.rodan@subdimension.ro> wrote: > ChangeLog The whole patch description describes changes, so no need for a Changelog heading. > - add honeywell,pressure-triplet property that autoconfigures pmin, pmax > just like the hsc030pa sensor driver Why? Needs an explanation of why this binding is better and easier to use + how backwards compatibility is maintained. > - add support for spi-based sensors > Two things, two patches. > Datasheet: It's a formal tag, so no line break (Even if checkpatch complains!) > https://prod-edam.honeywell.com/content/dam/honeywell-edam/sps/siot/en-us/products/sensors/pressure-sensors/board-mount-pressure-sensors/micropressure-mpr-series/documents/sps-siot-mpr-series-datasheet-32332628-ciid-172626.pdf > Signed-off-by: Petre Rodan <petre.rodan@subdimension.ro> > --- > .../iio/pressure/honeywell,mprls0025pa.yaml | 60 ++++++++++++++++--- > 1 file changed, 52 insertions(+), 8 deletions(-) > > diff --git a/Documentation/devicetree/bindings/iio/pressure/honeywell,mprls0025pa.yaml b/Documentation/devicetree/bindings/iio/pressure/honeywell,mprls0025pa.yaml > index d9e903fbfd99..7c4be2dec174 100644 > --- a/Documentation/devicetree/bindings/iio/pressure/honeywell,mprls0025pa.yaml > +++ b/Documentation/devicetree/bindings/iio/pressure/honeywell,mprls0025pa.yaml > @@ -53,33 +53,59 @@ properties: > honeywell,pmin-pascal: > description: > Minimum pressure value the sensor can measure in pascal. > + To be specified only if honeywell,pressure-triplet is set to "NA". That just added a backwards compatibility break. It would be fine if there was a default: NA for honeywell,pressure-triplet or a check that either one or the other was supplied (which I'd prefer). Thus old bindings will work and new ones also supported. > > honeywell,pmax-pascal: > description: > Maximum pressure value the sensor can measure in pascal. > + To be specified only if honeywell,pressure-triplet is set to "NA". > > honeywell,transfer-function: > description: | > - Transfer function which defines the range of valid values delivered by the > - sensor. > + Transfer function which defines the range of valid values delivered by > + the sensor. > 1 - A, 10% to 90% of 2^24 (1677722 .. 15099494) > 2 - B, 2.5% to 22.5% of 2^24 (419430 .. 3774874) > 3 - C, 20% to 80% of 2^24 (3355443 .. 13421773) > + enum: [1, 2, 3] > $ref: /schemas/types.yaml#/definitions/uint32 > > + honeywell,pressure-triplet: > + description: | > + Case-sensitive five character string that defines pressure range, unit > + and type as part of the device nomenclature. In the unlikely case of a > + custom chip, set to "NA" and provide pmin-pascal and pmax-pascal. Should not need to set to NA, just don't provide it. > + enum: [0001BA, 01.6BA, 02.5BA, 0060MG, 0100MG, 0160MG, 0250MG, 0400MG, > + 0600MG, 0001BG, 01.6BG, 02.5BG, 0100KA, 0160KA, 0250KA, 0006KG, > + 0010KG, 0016KG, 0025KG, 0040KG, 0060KG, 0100KG, 0160KG, 0250KG, > + 0015PA, 0025PA, 0030PA, 0001PG, 0005PG, 0015PG, 0030PG, 0300YG, > + NA] > + $ref: /schemas/types.yaml#/definitions/string > + > + spi-max-frequency: > + maximum: 800000 > + > vdd-supply: > description: provide VDD power to the sensor. > > required: > - compatible > - reg > - - honeywell,pmin-pascal > - - honeywell,pmax-pascal > + - honeywell,pressure-triplet > - honeywell,transfer-function > - - vdd-supply > > additionalProperties: false > > +dependentSchemas: > + honeywell,pmin-pascal: > + properties: > + honeywell,pressure-triplet: > + const: NA > + honeywell,pmax-pascal: > + properties: > + honeywell,pressure-triplet: > + const: NA > + > examples: > - | > #include <dt-bindings/gpio/gpio.h> > @@ -93,10 +119,28 @@ examples: > reg = <0x18>; > reset-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>; > interrupt-parent = <&gpio3>; > - interrupts = <21 IRQ_TYPE_EDGE_FALLING>; > - honeywell,pmin-pascal = <0>; > - honeywell,pmax-pascal = <172369>; > + interrupts = <21 IRQ_TYPE_EDGE_RISING>; > + > + honeywell,pressure-triplet = "0025PA"; > honeywell,transfer-function = <1>; > vdd-supply = <&vcc_3v3>; > }; > }; > + - | > + spi { > + #address-cells = <1>; > + #size-cells = <0>; > + > + pressure@0 { > + compatible = "honeywell,mprls0025pa"; > + reg = <0>; > + spi-max-frequency = <800000>; > + reset-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>; > + interrupt-parent = <&gpio0>; > + interrupts = <30 IRQ_TYPE_EDGE_RISING>; > + > + honeywell,pressure-triplet = "0015PA"; > + honeywell,transfer-function = <1>; > + }; > + }; > +...
hi Jonathan, On Wed, Dec 20, 2023 at 03:16:45PM +0000, Jonathan Cameron wrote: > On Tue, 19 Dec 2023 15:02:20 +0200 > Petre Rodan <petre.rodan@subdimension.ro> wrote: > > honeywell,pmin-pascal: > > description: > > Minimum pressure value the sensor can measure in pascal. > > + To be specified only if honeywell,pressure-triplet is set to "NA". > That just added a backwards compatibility break. It would be fine > if there was a default: NA for honeywell,pressure-triplet or a check that either > one or the other was supplied (which I'd prefer). Thus old bindings will work > and new ones also supported. ok, I see your reasoning. but in this second scenario that you prefer how can we propery define the 'required:' block? an equivalent to required: - compatible - reg - (honeywell,pmin-pascal && honeywell,pmax-pascal) || honeywell,pressure-triplet - honeywell,transfer-function thanks, peter
On Wed, 20 Dec 2023 19:25:25 +0200 Petre Rodan <petre.rodan@subdimension.ro> wrote: > hi Jonathan, > > On Wed, Dec 20, 2023 at 03:16:45PM +0000, Jonathan Cameron wrote: > > On Tue, 19 Dec 2023 15:02:20 +0200 > > Petre Rodan <petre.rodan@subdimension.ro> wrote: > > > honeywell,pmin-pascal: > > > description: > > > Minimum pressure value the sensor can measure in pascal. > > > + To be specified only if honeywell,pressure-triplet is set to "NA". > > That just added a backwards compatibility break. It would be fine > > if there was a default: NA for honeywell,pressure-triplet or a check that either > > one or the other was supplied (which I'd prefer). Thus old bindings will work > > and new ones also supported. > > ok, I see your reasoning. but in this second scenario that you prefer how can we > propery define the 'required:' block? an equivalent to > > required: > - compatible > - reg > - (honeywell,pmin-pascal && honeywell,pmax-pascal) || honeywell,pressure-triplet > - honeywell,transfer-function Yes, it would end up something like that. There are exclusive or examples in tree. I think something like dac/adi,ad3552r.yaml should work. oneOf: - required: - honeywell,pmin-pascal - honeywell,pmax-pascal - required: - honeywell,pressure-triplet but you will want to try all the cases to make sure that works (my ability to figure these ones out is tricky). + you ideally want to exclude them all being set which is fiddlier. Some similar examples but they are based on a value in the property. I'm not sure how you check for it just being defined. Something along lines of. allOf: - if: properties: honeywell,pressure-triplet then: properties: honeywell,pmin-pascal: false honeywell,pmax-pascal: false Might work? I always end up trawling the kernel to find a similar example for cases but can't find anything closer right now. Jonathan > > > thanks, > peter
On Thu, Dec 21, 2023 at 11:04:17AM +0000, Jonathan Cameron wrote: > On Wed, 20 Dec 2023 19:25:25 +0200 > Petre Rodan <petre.rodan@subdimension.ro> wrote: > > > hi Jonathan, > > > > On Wed, Dec 20, 2023 at 03:16:45PM +0000, Jonathan Cameron wrote: > > > On Tue, 19 Dec 2023 15:02:20 +0200 > > > Petre Rodan <petre.rodan@subdimension.ro> wrote: > > > > honeywell,pmin-pascal: > > > > description: > > > > Minimum pressure value the sensor can measure in pascal. > > > > + To be specified only if honeywell,pressure-triplet is set to "NA". > > > That just added a backwards compatibility break. It would be fine > > > if there was a default: NA for honeywell,pressure-triplet or a check that either > > > one or the other was supplied (which I'd prefer). Thus old bindings will work > > > and new ones also supported. > > > > ok, I see your reasoning. but in this second scenario that you prefer how can we > > propery define the 'required:' block? an equivalent to > > > > required: > > - compatible > > - reg > > - (honeywell,pmin-pascal && honeywell,pmax-pascal) || honeywell,pressure-triplet > > - honeywell,transfer-function > > Yes, it would end up something like that. There are exclusive or examples in tree. > I think something like dac/adi,ad3552r.yaml > should work. > > oneOf: > - required: > - honeywell,pmin-pascal > - honeywell,pmax-pascal > - required: > - honeywell,pressure-triplet > > but you will want to try all the cases to make sure that works (my ability to > figure these ones out is tricky). > > + you ideally want to exclude them all being set which is fiddlier. > > Some similar examples but they are based on a value in the property. I'm not > sure how you check for it just being defined. > > Something along lines of. > > allOf: > - if: > properties: > honeywell,pressure-triplet > then: > properties: > honeywell,pmin-pascal: false > honeywell,pmax-pascal: false > > Might work? I always end up trawling the kernel to find a similar example for cases but > can't find anything closer right now. I hate to admit it, but I'm not great at expressing these in the minimum forms either, but I think you're missing a "required" from here, in place of the "properties": allOf: - if: required: - honeywell,pressure-triplet then: properties: honeywell,pmin-pascal: false honeywell,pmax-pascal: false Cheers, Conor.
hello Conor, On Fri, Dec 22, 2023 at 03:27:36PM +0000, Conor Dooley wrote: > > > - (honeywell,pmin-pascal && honeywell,pmax-pascal) || honeywell,pressure-triplet > > Yes, it would end up something like that. There are exclusive or examples in tree. > > oneOf: > > - required: > > - honeywell,pmin-pascal > > - honeywell,pmax-pascal > > - required: > > - honeywell,pressure-triplet > > > > but you will want to try all the cases to make sure that works (my ability to > > figure these ones out is tricky). > > > > + you ideally want to exclude them all being set which is fiddlier. > > > > Some similar examples but they are based on a value in the property. I'm not > > sure how you check for it just being defined. > > > > Something along lines of. > > > > allOf: > > - if: > > properties: > > honeywell,pressure-triplet > > then: > > properties: > > honeywell,pmin-pascal: false > > honeywell,pmax-pascal: false > > > > Might work? I always end up trawling the kernel to find a similar example for cases but > > can't find anything closer right now. > > I hate to admit it, but I'm not great at expressing these in the minimum > forms either, but I think you're missing a "required" from here, in place > of the "properties": > allOf: > - if: > required: > - honeywell,pressure-triplet > then: > properties: > honeywell,pmin-pascal: false > honeywell,pmax-pascal: false thank you both for the above ruleset, it works like magic. I spent hours trying to figure out the proper syntax but never got it right. Merry Christmas! peter
diff --git a/Documentation/devicetree/bindings/iio/pressure/honeywell,mprls0025pa.yaml b/Documentation/devicetree/bindings/iio/pressure/honeywell,mprls0025pa.yaml index d9e903fbfd99..7c4be2dec174 100644 --- a/Documentation/devicetree/bindings/iio/pressure/honeywell,mprls0025pa.yaml +++ b/Documentation/devicetree/bindings/iio/pressure/honeywell,mprls0025pa.yaml @@ -53,33 +53,59 @@ properties: honeywell,pmin-pascal: description: Minimum pressure value the sensor can measure in pascal. + To be specified only if honeywell,pressure-triplet is set to "NA". honeywell,pmax-pascal: description: Maximum pressure value the sensor can measure in pascal. + To be specified only if honeywell,pressure-triplet is set to "NA". honeywell,transfer-function: description: | - Transfer function which defines the range of valid values delivered by the - sensor. + Transfer function which defines the range of valid values delivered by + the sensor. 1 - A, 10% to 90% of 2^24 (1677722 .. 15099494) 2 - B, 2.5% to 22.5% of 2^24 (419430 .. 3774874) 3 - C, 20% to 80% of 2^24 (3355443 .. 13421773) + enum: [1, 2, 3] $ref: /schemas/types.yaml#/definitions/uint32 + honeywell,pressure-triplet: + description: | + Case-sensitive five character string that defines pressure range, unit + and type as part of the device nomenclature. In the unlikely case of a + custom chip, set to "NA" and provide pmin-pascal and pmax-pascal. + enum: [0001BA, 01.6BA, 02.5BA, 0060MG, 0100MG, 0160MG, 0250MG, 0400MG, + 0600MG, 0001BG, 01.6BG, 02.5BG, 0100KA, 0160KA, 0250KA, 0006KG, + 0010KG, 0016KG, 0025KG, 0040KG, 0060KG, 0100KG, 0160KG, 0250KG, + 0015PA, 0025PA, 0030PA, 0001PG, 0005PG, 0015PG, 0030PG, 0300YG, + NA] + $ref: /schemas/types.yaml#/definitions/string + + spi-max-frequency: + maximum: 800000 + vdd-supply: description: provide VDD power to the sensor. required: - compatible - reg - - honeywell,pmin-pascal - - honeywell,pmax-pascal + - honeywell,pressure-triplet - honeywell,transfer-function - - vdd-supply additionalProperties: false +dependentSchemas: + honeywell,pmin-pascal: + properties: + honeywell,pressure-triplet: + const: NA + honeywell,pmax-pascal: + properties: + honeywell,pressure-triplet: + const: NA + examples: - | #include <dt-bindings/gpio/gpio.h> @@ -93,10 +119,28 @@ examples: reg = <0x18>; reset-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>; interrupt-parent = <&gpio3>; - interrupts = <21 IRQ_TYPE_EDGE_FALLING>; - honeywell,pmin-pascal = <0>; - honeywell,pmax-pascal = <172369>; + interrupts = <21 IRQ_TYPE_EDGE_RISING>; + + honeywell,pressure-triplet = "0025PA"; honeywell,transfer-function = <1>; vdd-supply = <&vcc_3v3>; }; }; + - | + spi { + #address-cells = <1>; + #size-cells = <0>; + + pressure@0 { + compatible = "honeywell,mprls0025pa"; + reg = <0>; + spi-max-frequency = <800000>; + reset-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>; + interrupt-parent = <&gpio0>; + interrupts = <30 IRQ_TYPE_EDGE_RISING>; + + honeywell,pressure-triplet = "0015PA"; + honeywell,transfer-function = <1>; + }; + }; +...
ChangeLog - add honeywell,pressure-triplet property that autoconfigures pmin, pmax just like the hsc030pa sensor driver - add support for spi-based sensors Datasheet: https://prod-edam.honeywell.com/content/dam/honeywell-edam/sps/siot/en-us/products/sensors/pressure-sensors/board-mount-pressure-sensors/micropressure-mpr-series/documents/sps-siot-mpr-series-datasheet-32332628-ciid-172626.pdf Signed-off-by: Petre Rodan <petre.rodan@subdimension.ro> --- .../iio/pressure/honeywell,mprls0025pa.yaml | 60 ++++++++++++++++--- 1 file changed, 52 insertions(+), 8 deletions(-)