Message ID | 20241003214315.638668-1-Frank.Li@nxp.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2,1/1] dt-bindings: interrupt-controller: fsl,ls-extirq: workaround wrong interrupt-map number | expand |
On Thu, Oct 03, 2024 at 05:43:15PM -0400, Frank Li wrote: > The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT > function to parser interrupt-map. So it doesn't consider '#address-size' > in parent interrupt controller, such as GIC. > > When dt-binding verify interrupt-map, item data matrix is spitted at > incorrect position. So cause below warning: > > arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb: interrupt-controller@14: > interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0], ... > is too short > > Reduce minItems and maxItems to workaround this warning for > 'fsl,ls1088a-extirq', 'fsl,ls2080a-extirq' and fsl,lx2160a-extirq. > Other keep the same restriction. > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > --- > Change from v1 to v2 > - remove duplicate function in commit message > - only reduce miniItems for after 1088a chips > - maxItems change to 9. Otherwise report too long. > --- > .../interrupt-controller/fsl,ls-extirq.yaml | 27 +++++++++++++++++-- > 1 file changed, 25 insertions(+), 2 deletions(-) > > diff --git a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > index 199b34fdbefc4..1bfced6ed620c 100644 > --- a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > +++ b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > @@ -82,14 +82,37 @@ allOf: > enum: > - fsl,ls1043a-extirq > - fsl,ls1046a-extirq > + then: > + properties: > + interrupt-map: > + minItems: 12 > + maxItems: 12 > + interrupt-map-mask: > + items: > + - const: 0xf > + - const: 0 > + > + - if: > + properties: > + compatible: > + contains: > + enum: > - fsl,ls1088a-extirq > - fsl,ls2080a-extirq > - fsl,lx2160a-extirq > +# The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT > +# function function to parser interrupt-map. So it doesn't consider Same issue as last time, double function. Please run scripts/checkpatch.pl and fix reported warnings. Then please run 'scripts/checkpatch.pl --strict' and (probably) fix more warnings. Some warnings can be ignored, especially from --strict run, but the code here looks like it needs a fix. Feel free to get in touch if the warning is not clear. > +# '#address-size' in parent interrupt controller, such as GIC. > +# > +# When dt-binding verify interrupt-map, item data matrix is spitted at > +# incorrect position. Reduce minItems and maxItems to workaround this > +# problem. > + > then: > properties: > interrupt-map: > - minItems: 12 > - maxItems: 12 > + minItems: 8 > + maxItems: 9 Are you sure it works? I see 12 items in fsl-ls1088a.dtsi. What's more, I do not see your errors/warnings at all. Best regards, Krzysztof
On Fri, Oct 04, 2024 at 08:43:23AM +0200, Krzysztof Kozlowski wrote: > On Thu, Oct 03, 2024 at 05:43:15PM -0400, Frank Li wrote: > > The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT > > function to parser interrupt-map. So it doesn't consider '#address-size' > > in parent interrupt controller, such as GIC. > > > > When dt-binding verify interrupt-map, item data matrix is spitted at > > incorrect position. So cause below warning: > > > > arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb: interrupt-controller@14: > > interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0], ... > > is too short > > > > Reduce minItems and maxItems to workaround this warning for > > 'fsl,ls1088a-extirq', 'fsl,ls2080a-extirq' and fsl,lx2160a-extirq. > > Other keep the same restriction. > > > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > > --- > > Change from v1 to v2 > > - remove duplicate function in commit message > > - only reduce miniItems for after 1088a chips > > - maxItems change to 9. Otherwise report too long. > > --- > > .../interrupt-controller/fsl,ls-extirq.yaml | 27 +++++++++++++++++-- > > 1 file changed, 25 insertions(+), 2 deletions(-) > > > > diff --git a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > > index 199b34fdbefc4..1bfced6ed620c 100644 > > --- a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > > +++ b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > > @@ -82,14 +82,37 @@ allOf: > > enum: > > - fsl,ls1043a-extirq > > - fsl,ls1046a-extirq > > + then: > > + properties: > > + interrupt-map: > > + minItems: 12 > > + maxItems: 12 > > + interrupt-map-mask: > > + items: > > + - const: 0xf > > + - const: 0 > > + > > + - if: > > + properties: > > + compatible: > > + contains: > > + enum: > > - fsl,ls1088a-extirq > > - fsl,ls2080a-extirq > > - fsl,lx2160a-extirq > > +# The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT > > +# function function to parser interrupt-map. So it doesn't consider > > Same issue as last time, double function. > > Please run scripts/checkpatch.pl and fix reported warnings. Then please > run 'scripts/checkpatch.pl --strict' and (probably) fix more warnings. > Some warnings can be ignored, especially from --strict run, but the code > here looks like it needs a fix. Feel free to get in touch if the warning > is not clear. Thanks, I forget add --strict this time. > > > > +# '#address-size' in parent interrupt controller, such as GIC. > > +# > > +# When dt-binding verify interrupt-map, item data matrix is spitted at > > +# incorrect position. Reduce minItems and maxItems to workaround this > > +# problem. > > + > > then: > > properties: > > interrupt-map: > > - minItems: 12 > > - maxItems: 12 > > + minItems: 8 > > + maxItems: 9 > > Are you sure it works? I see 12 items in fsl-ls1088a.dtsi. interrupt-map = <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, ... <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; Total 12*6 = 72 data. Normal each row should be 6 data. but when GIC have #address-size, <2>, dt-schemal split at at (6+2=8). "interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0]" So 72/8 = 9, I just realize it can divide to whole number. so minItems can be set 9 also. > > What's more, I do not see your errors/warnings at all. I using below command pip3 install git+https://github.com/devicetree-org/dt-schema.git@main ... Resolved https://github.com/devicetree-org/dt-schema.git to commit 0934678abc36614cd3c5165ca49ba78b881ee2fa make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8 CHECK_DTBS=y fsl-ls1088a-qds.dtb make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8 CHECK_DTBS=y fsl-ls1088a-qds.dtb SCHEMA Documentation/devicetree/bindings/processed-schema.json DTC [C] arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb: syscon@1f70000: interrupt-controller@14:interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0], [2, 4, 3, 0, 1, 0, 3, 4], [4, 0, 1, 0, 4, 4, 5, 0], [1, 0, 5, 4, 6, 0, 1, 0], [6, 4, 7, 0, 1, 0, 7, 4], [8, 0, 1, 0, 8, 4, 9, 0], [1, 0, 9, 4, 10, 0, 1, 0], [10, 4, 11, 0, 1, 0, 11, 4]] is too short from schema $id: http://devicetree.org/schemas/soc/fsl/fsl,layerscape-scfg.yaml# arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb: interrupt-controller@14: interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0], [2, 4, 3, 0, 1, 0, 3, 4], [4, 0, 1, 0, 4, 4, 5, 0], [1, 0, 5, 4, 6, 0, 1, 0], [6, 4, 7, 0, 1, 0, 7, 4], [8, 0, 1, 0, 8, 4, 9, 0], [1, 0, 9, 4, 10, 0, 1, 0], [10, 4, 11, 0, 1, 0, 11, 4]] is too short from schema $id: http://devicetree.org/schemas/interrupt-controller/fsl,ls-extirq.yaml# arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb: fsl-mc@80c000000: msi-parent:0: [16, 0] is too long from schema $id: http://devicetree.org/schemas/misc/fsl,qoriq-mc.yaml# Frank > > Best regards, > Krzysztof >
On Thu, Oct 03, 2024 at 05:43:15PM -0400, Frank Li wrote: > The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT > function to parser interrupt-map. So it doesn't consider '#address-size' > in parent interrupt controller, such as GIC. > > When dt-binding verify interrupt-map, item data matrix is spitted at > incorrect position. So cause below warning: > > arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb: interrupt-controller@14: > interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0], ... > is too short > > Reduce minItems and maxItems to workaround this warning for > 'fsl,ls1088a-extirq', 'fsl,ls2080a-extirq' and fsl,lx2160a-extirq. > Other keep the same restriction. > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > --- > Change from v1 to v2 > - remove duplicate function in commit message > - only reduce miniItems for after 1088a chips > - maxItems change to 9. Otherwise report too long. > --- > .../interrupt-controller/fsl,ls-extirq.yaml | 27 +++++++++++++++++-- > 1 file changed, 25 insertions(+), 2 deletions(-) > > diff --git a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > index 199b34fdbefc4..1bfced6ed620c 100644 > --- a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > +++ b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > @@ -82,14 +82,37 @@ allOf: > enum: > - fsl,ls1043a-extirq > - fsl,ls1046a-extirq > + then: > + properties: > + interrupt-map: > + minItems: 12 > + maxItems: 12 > + interrupt-map-mask: > + items: > + - const: 0xf > + - const: 0 > + > + - if: > + properties: > + compatible: > + contains: > + enum: > - fsl,ls1088a-extirq > - fsl,ls2080a-extirq > - fsl,lx2160a-extirq > +# The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT > +# function function to parser interrupt-map. So it doesn't consider > +# '#address-size' in parent interrupt controller, such as GIC. > +# > +# When dt-binding verify interrupt-map, item data matrix is spitted at > +# incorrect position. Reduce minItems and maxItems to workaround this > +# problem. > + > then: > properties: > interrupt-map: > - minItems: 12 > - maxItems: 12 > + minItems: 8 > + maxItems: 9 I think it is probably better to just not put in any constraints. It's never going to be parsed correctly. Rob
On 04/10/2024 17:36, Frank Li wrote: > On Fri, Oct 04, 2024 at 08:43:23AM +0200, Krzysztof Kozlowski wrote: >> On Thu, Oct 03, 2024 at 05:43:15PM -0400, Frank Li wrote: >>> The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT >>> function to parser interrupt-map. So it doesn't consider '#address-size' >>> in parent interrupt controller, such as GIC. >>> >>> When dt-binding verify interrupt-map, item data matrix is spitted at >>> incorrect position. So cause below warning: >>> >>> arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb: interrupt-controller@14: >>> interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0], ... >>> is too short >>> >>> Reduce minItems and maxItems to workaround this warning for >>> 'fsl,ls1088a-extirq', 'fsl,ls2080a-extirq' and fsl,lx2160a-extirq. >>> Other keep the same restriction. >>> >>> Signed-off-by: Frank Li <Frank.Li@nxp.com> >>> --- >>> Change from v1 to v2 >>> - remove duplicate function in commit message >>> - only reduce miniItems for after 1088a chips >>> - maxItems change to 9. Otherwise report too long. >>> --- >>> .../interrupt-controller/fsl,ls-extirq.yaml | 27 +++++++++++++++++-- >>> 1 file changed, 25 insertions(+), 2 deletions(-) >>> >>> diff --git a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml >>> index 199b34fdbefc4..1bfced6ed620c 100644 >>> --- a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml >>> +++ b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml >>> @@ -82,14 +82,37 @@ allOf: >>> enum: >>> - fsl,ls1043a-extirq >>> - fsl,ls1046a-extirq >>> + then: >>> + properties: >>> + interrupt-map: >>> + minItems: 12 >>> + maxItems: 12 >>> + interrupt-map-mask: >>> + items: >>> + - const: 0xf >>> + - const: 0 >>> + >>> + - if: >>> + properties: >>> + compatible: >>> + contains: >>> + enum: >>> - fsl,ls1088a-extirq >>> - fsl,ls2080a-extirq >>> - fsl,lx2160a-extirq >>> +# The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT >>> +# function function to parser interrupt-map. So it doesn't consider >> >> Same issue as last time, double function. >> >> Please run scripts/checkpatch.pl and fix reported warnings. Then please >> run 'scripts/checkpatch.pl --strict' and (probably) fix more warnings. >> Some warnings can be ignored, especially from --strict run, but the code >> here looks like it needs a fix. Feel free to get in touch if the warning >> is not clear. > > Thanks, I forget add --strict this time. > >> >> >>> +# '#address-size' in parent interrupt controller, such as GIC. >>> +# >>> +# When dt-binding verify interrupt-map, item data matrix is spitted at >>> +# incorrect position. Reduce minItems and maxItems to workaround this >>> +# problem. >>> + >>> then: >>> properties: >>> interrupt-map: >>> - minItems: 12 >>> - maxItems: 12 >>> + minItems: 8 >>> + maxItems: 9 >> >> Are you sure it works? I see 12 items in fsl-ls1088a.dtsi. > > interrupt-map = > <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, > <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, > ... > <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; > > Total 12*6 = 72 data. > > Normal each row should be 6 data. > > but when GIC have #address-size, <2>, dt-schemal split at at (6+2=8). > > "interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0]" > > So 72/8 = 9, I just realize it can divide to whole number. so minItems > can be set 9 also. I read it three times but I cannot parse it. I cannot translate above interrupt-map to anything meaningful, so it looks to me that not only address-cells is ignored but entire format is different from what the spec asks. This is not some ancient 15 year old code, but was added in 2019. You should not add fake constraints to a valid property, because what if other system implements this correctly? Best regards, Krzysztof
On 06/10/2024 15:30, Krzysztof Kozlowski wrote: > On 04/10/2024 17:36, Frank Li wrote: >> On Fri, Oct 04, 2024 at 08:43:23AM +0200, Krzysztof Kozlowski wrote: >>> On Thu, Oct 03, 2024 at 05:43:15PM -0400, Frank Li wrote: >>>> The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT >>>> function to parser interrupt-map. So it doesn't consider '#address-size' >>>> in parent interrupt controller, such as GIC. >>>> >>>> When dt-binding verify interrupt-map, item data matrix is spitted at >>>> incorrect position. So cause below warning: >>>> >>>> arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb: interrupt-controller@14: >>>> interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0], ... >>>> is too short >>>> >>>> Reduce minItems and maxItems to workaround this warning for >>>> 'fsl,ls1088a-extirq', 'fsl,ls2080a-extirq' and fsl,lx2160a-extirq. >>>> Other keep the same restriction. >>>> >>>> Signed-off-by: Frank Li <Frank.Li@nxp.com> >>>> --- >>>> Change from v1 to v2 >>>> - remove duplicate function in commit message >>>> - only reduce miniItems for after 1088a chips >>>> - maxItems change to 9. Otherwise report too long. >>>> --- >>>> .../interrupt-controller/fsl,ls-extirq.yaml | 27 +++++++++++++++++-- >>>> 1 file changed, 25 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml >>>> index 199b34fdbefc4..1bfced6ed620c 100644 >>>> --- a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml >>>> +++ b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml >>>> @@ -82,14 +82,37 @@ allOf: >>>> enum: >>>> - fsl,ls1043a-extirq >>>> - fsl,ls1046a-extirq >>>> + then: >>>> + properties: >>>> + interrupt-map: >>>> + minItems: 12 >>>> + maxItems: 12 >>>> + interrupt-map-mask: >>>> + items: >>>> + - const: 0xf >>>> + - const: 0 >>>> + >>>> + - if: >>>> + properties: >>>> + compatible: >>>> + contains: >>>> + enum: >>>> - fsl,ls1088a-extirq >>>> - fsl,ls2080a-extirq >>>> - fsl,lx2160a-extirq >>>> +# The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT >>>> +# function function to parser interrupt-map. So it doesn't consider >>> >>> Same issue as last time, double function. >>> >>> Please run scripts/checkpatch.pl and fix reported warnings. Then please >>> run 'scripts/checkpatch.pl --strict' and (probably) fix more warnings. >>> Some warnings can be ignored, especially from --strict run, but the code >>> here looks like it needs a fix. Feel free to get in touch if the warning >>> is not clear. >> >> Thanks, I forget add --strict this time. >> >>> >>> >>>> +# '#address-size' in parent interrupt controller, such as GIC. >>>> +# >>>> +# When dt-binding verify interrupt-map, item data matrix is spitted at >>>> +# incorrect position. Reduce minItems and maxItems to workaround this >>>> +# problem. >>>> + >>>> then: >>>> properties: >>>> interrupt-map: >>>> - minItems: 12 >>>> - maxItems: 12 >>>> + minItems: 8 >>>> + maxItems: 9 >>> >>> Are you sure it works? I see 12 items in fsl-ls1088a.dtsi. >> >> interrupt-map = >> <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, >> <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, >> ... >> <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; >> >> Total 12*6 = 72 data. >> >> Normal each row should be 6 data. >> >> but when GIC have #address-size, <2>, dt-schemal split at at (6+2=8). >> >> "interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0]" >> >> So 72/8 = 9, I just realize it can divide to whole number. so minItems >> can be set 9 also. > > I read it three times but I cannot parse it. > > I cannot translate above interrupt-map to anything meaningful, so it > looks to me that not only address-cells is ignored but entire format is > different from what the spec asks. > > This is not some ancient 15 year old code, but was added in 2019. > > You should not add fake constraints to a valid property, because what if > other system implements this correctly? I read now Rob's response: dropping constraints is also a way. Best regards, Krzysztof
diff --git a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml index 199b34fdbefc4..1bfced6ed620c 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml +++ b/Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml @@ -82,14 +82,37 @@ allOf: enum: - fsl,ls1043a-extirq - fsl,ls1046a-extirq + then: + properties: + interrupt-map: + minItems: 12 + maxItems: 12 + interrupt-map-mask: + items: + - const: 0xf + - const: 0 + + - if: + properties: + compatible: + contains: + enum: - fsl,ls1088a-extirq - fsl,ls2080a-extirq - fsl,lx2160a-extirq +# The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT +# function function to parser interrupt-map. So it doesn't consider +# '#address-size' in parent interrupt controller, such as GIC. +# +# When dt-binding verify interrupt-map, item data matrix is spitted at +# incorrect position. Reduce minItems and maxItems to workaround this +# problem. + then: properties: interrupt-map: - minItems: 12 - maxItems: 12 + minItems: 8 + maxItems: 9 interrupt-map-mask: items: - const: 0xf
The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT function to parser interrupt-map. So it doesn't consider '#address-size' in parent interrupt controller, such as GIC. When dt-binding verify interrupt-map, item data matrix is spitted at incorrect position. So cause below warning: arch/arm64/boot/dts/freescale/fsl-ls1088a-qds.dtb: interrupt-controller@14: interrupt-map: [[0, 0, 1, 0, 0, 4, 1, 0], [1, 0, 1, 4, 2, 0, 1, 0], ... is too short Reduce minItems and maxItems to workaround this warning for 'fsl,ls1088a-extirq', 'fsl,ls2080a-extirq' and fsl,lx2160a-extirq. Other keep the same restriction. Signed-off-by: Frank Li <Frank.Li@nxp.com> --- Change from v1 to v2 - remove duplicate function in commit message - only reduce miniItems for after 1088a chips - maxItems change to 9. Otherwise report too long. --- .../interrupt-controller/fsl,ls-extirq.yaml | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-)