Message ID | cb8f2ba0ff39951aeada479ed3895d19c9f72617.1680162377.git.quic_varada@quicinc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Enable IPQ9754 USB | expand |
On Thu, 30 Mar 2023 at 11:42, Varadarajan Narayanan <quic_varada@quicinc.com> wrote: > > Document the IPQ9574 dwc3 compatible. > > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com> > --- > Changes in v5: > - Restore removed constraints > > Changes in v4: > - Update other relevant sections > - Remove constraints not applicable to IPQ9574 > --- > Documentation/devicetree/bindings/usb/qcom,dwc3.yaml | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml > index a2aabda..8def6a3 100644 > --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml > +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml > @@ -17,6 +17,7 @@ properties: > - qcom,ipq6018-dwc3 > - qcom,ipq8064-dwc3 > - qcom,ipq8074-dwc3 > + - qcom,ipq9574-dwc3 > - qcom,msm8953-dwc3 > - qcom,msm8994-dwc3 > - qcom,msm8996-dwc3 > @@ -242,6 +243,24 @@ allOf: > compatible: > contains: > enum: > + - qcom,ipq9574-dwc3 > + then: > + properties: > + clocks: > + maxItems: 5 > + clock-names: > + items: > + - const: sys_noc_axi > + - const: anoc_axi > + - const: master > + - const: sleep > + - const: mock_utmi Is there any chance of using clock names that are close to the names used by existing platforms? I think this fits into the third 'if' bucket: cfg_noc = sys_noc_axi core = master iface = anoc_axi sleep = sleep mock_utmi = mock_utmi > + > + - if: > + properties: > + compatible: > + contains: > + enum: > - qcom,msm8994-dwc3 > - qcom,qcs404-dwc3 > then: > -- > 2.7.4 >
On Thu, 30 Mar 2023 14:10:45 +0530, Varadarajan Narayanan wrote: > Document the IPQ9574 dwc3 compatible. > > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com> > --- > Changes in v5: > - Restore removed constraints > > Changes in v4: > - Update other relevant sections > - Remove constraints not applicable to IPQ9574 > --- > Documentation/devicetree/bindings/usb/qcom,dwc3.yaml | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > Running 'make dtbs_check' with the schema in this patch gives the following warnings. Consider if they are expected or the schema is incorrect. These may not be new warnings. Note that it is not yet a requirement to have 0 warnings for dtbs_check. This will change in the future. Full log is available here: https://patchwork.ozlabs.org/project/devicetree-bindings/patch/cb8f2ba0ff39951aeada479ed3895d19c9f72617.1680162377.git.quic_varada@quicinc.com usb2@60f8800: clock-names:0: 'core' was expected arch/arm/boot/dts/qcom-ipq4018-ap120c-ac-bit.dtb arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dtb arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c1.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c3.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1-c1.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1-c2.dtb usb2@60f8800: 'dwc3@6000000' does not match any of the regexes: '^usb@[0-9a-f]+$', 'pinctrl-[0-9]+' arch/arm/boot/dts/qcom-ipq4018-ap120c-ac-bit.dtb arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dtb arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c1.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c3.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1-c1.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1-c2.dtb usb2@60f8800: 'interrupt-names' is a required property arch/arm/boot/dts/qcom-ipq4018-ap120c-ac-bit.dtb arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dtb arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtb usb2@60f8800: 'oneOf' conditional failed, one must be fixed: arch/arm/boot/dts/qcom-ipq4018-ap120c-ac-bit.dtb arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dtb arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtb usb2@60f8800: 'power-domains' is a required property arch/arm/boot/dts/qcom-ipq4018-ap120c-ac-bit.dtb arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dtb arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtb usb3@100f8800: 'dwc3@10000000', 'reset-names' do not match any of the regexes: '^usb@[0-9a-f]+$', 'pinctrl-[0-9]+' arch/arm/boot/dts/qcom-ipq8064-ap148.dtb arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb usb3@110f8800: 'dwc3@11000000', 'reset-names' do not match any of the regexes: '^usb@[0-9a-f]+$', 'pinctrl-[0-9]+' arch/arm/boot/dts/qcom-ipq8064-ap148.dtb arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb usb3@110f8800: 'interrupt-names' is a required property arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb usb3@110f8800: 'oneOf' conditional failed, one must be fixed: arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb usb3@110f8800: 'power-domains' is a required property arch/arm/boot/dts/qcom-ipq8064-rb3011.dtb usb3@8af8800: 'dwc3@8a00000' does not match any of the regexes: '^usb@[0-9a-f]+$', 'pinctrl-[0-9]+' arch/arm/boot/dts/qcom-ipq4018-ap120c-ac-bit.dtb arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dtb arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c1.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c3.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1-c1.dtb arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1-c2.dtb usb3@8af8800: 'interrupt-names' is a required property arch/arm/boot/dts/qcom-ipq4018-ap120c-ac-bit.dtb arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dtb arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtb usb3@8af8800: 'oneOf' conditional failed, one must be fixed: arch/arm/boot/dts/qcom-ipq4018-ap120c-ac-bit.dtb arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dtb arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtb usb3@8af8800: 'power-domains' is a required property arch/arm/boot/dts/qcom-ipq4018-ap120c-ac-bit.dtb arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dtb arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtb usb@4ef8800: 'interrupt-names' is a required property arch/arm64/boot/dts/qcom/sm6125-sony-xperia-seine-pdx201.dtb usb@4ef8800: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/sm6125-sony-xperia-seine-pdx201.dtb usb@4ef8800: usb@4e00000: Unevaluated properties are not allowed ('extcon' was unexpected) arch/arm64/boot/dts/qcom/sm6125-sony-xperia-seine-pdx201.dtb usb@6af8800: 'extcon' does not match any of the regexes: '^usb@[0-9a-f]+$', 'pinctrl-[0-9]+' arch/arm64/boot/dts/qcom/apq8096-db820c.dtb arch/arm64/boot/dts/qcom/msm8996pro-xiaomi-natrium.dtb arch/arm64/boot/dts/qcom/msm8996pro-xiaomi-scorpio.dtb arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dtb usb@6af8800: usb@6a00000: Unevaluated properties are not allowed ('extcon' was unexpected) arch/arm64/boot/dts/qcom/apq8096-db820c.dtb arch/arm64/boot/dts/qcom/msm8996pro-xiaomi-natrium.dtb arch/arm64/boot/dts/qcom/msm8996pro-xiaomi-scorpio.dtb arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-dora.dtb arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-kagura.dtb arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-keyaki.dtb arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dtb usb@70f8800: 'interrupt-names' is a required property arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb usb@70f8800: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb usb@70f8800: 'power-domains' is a required property arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb usb@70f8800: usb@7000000: Unevaluated properties are not allowed ('phy_mode' was unexpected) arch/arm64/boot/dts/qcom/msm8953-motorola-potter.dtb arch/arm64/boot/dts/qcom/msm8953-xiaomi-daisy.dtb arch/arm64/boot/dts/qcom/msm8953-xiaomi-mido.dtb arch/arm64/boot/dts/qcom/msm8953-xiaomi-tissot.dtb arch/arm64/boot/dts/qcom/msm8953-xiaomi-vince.dtb arch/arm64/boot/dts/qcom/sdm450-motorola-ali.dtb arch/arm64/boot/dts/qcom/sdm632-fairphone-fp3.dtb arch/arm64/boot/dts/qcom/sdm632-motorola-ocean.dtb usb@7678800: 'interrupt-names' is a required property arch/arm64/boot/dts/qcom/qcs404-evb-1000.dtb arch/arm64/boot/dts/qcom/qcs404-evb-4000.dtb usb@7678800: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/qcs404-evb-1000.dtb arch/arm64/boot/dts/qcom/qcs404-evb-4000.dtb usb@7678800: 'power-domains' is a required property arch/arm64/boot/dts/qcom/qcs404-evb-1000.dtb arch/arm64/boot/dts/qcom/qcs404-evb-4000.dtb usb@76f8800: 'extcon' does not match any of the regexes: '^usb@[0-9a-f]+$', 'pinctrl-[0-9]+' arch/arm64/boot/dts/qcom/apq8096-db820c.dtb usb@76f8800: 'interrupt-names' is a required property arch/arm64/boot/dts/qcom/apq8096-db820c.dtb usb@76f8800: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/apq8096-db820c.dtb usb@76f8800: usb@7600000: Unevaluated properties are not allowed ('extcon' was unexpected) arch/arm64/boot/dts/qcom/apq8096-db820c.dtb usb@79b8800: 'interrupt-names' is a required property arch/arm64/boot/dts/qcom/qcs404-evb-1000.dtb arch/arm64/boot/dts/qcom/qcs404-evb-4000.dtb usb@79b8800: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/qcs404-evb-1000.dtb arch/arm64/boot/dts/qcom/qcs404-evb-4000.dtb usb@79b8800: 'power-domains' is a required property arch/arm64/boot/dts/qcom/qcs404-evb-1000.dtb arch/arm64/boot/dts/qcom/qcs404-evb-4000.dtb usb@8af8800: assigned-clock-rates: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb arch/arm64/boot/dts/qcom/ipq8074-hk01.dtb arch/arm64/boot/dts/qcom/ipq8074-hk10-c1.dtb arch/arm64/boot/dts/qcom/ipq8074-hk10-c2.dtb usb@8af8800: assigned-clocks: [[4, 124], [4, 125], [4, 126]] is too long arch/arm64/boot/dts/qcom/ipq8074-hk01.dtb arch/arm64/boot/dts/qcom/ipq8074-hk10-c1.dtb arch/arm64/boot/dts/qcom/ipq8074-hk10-c2.dtb usb@8af8800: assigned-clocks: [[9, 186], [9, 158], [9, 159]] is too long arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb usb@8af8800: 'interrupt-names' is a required property arch/arm64/boot/dts/qcom/ipq8074-hk01.dtb usb@8af8800: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/ipq8074-hk01.dtb usb@8cf8800: assigned-clock-rates: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/ipq8074-hk01.dtb arch/arm64/boot/dts/qcom/ipq8074-hk10-c1.dtb arch/arm64/boot/dts/qcom/ipq8074-hk10-c2.dtb usb@8cf8800: assigned-clocks: [[4, 131], [4, 132], [4, 133]] is too long arch/arm64/boot/dts/qcom/ipq8074-hk01.dtb arch/arm64/boot/dts/qcom/ipq8074-hk10-c1.dtb arch/arm64/boot/dts/qcom/ipq8074-hk10-c2.dtb usb@8cf8800: 'interrupt-names' is a required property arch/arm64/boot/dts/qcom/ipq8074-hk01.dtb usb@8cf8800: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/ipq8074-hk01.dtb usb@a6f8800: 'dr_mode' does not match any of the regexes: '^usb@[0-9a-f]+$', 'pinctrl-[0-9]+' arch/arm64/boot/dts/qcom/sm8350-microsoft-surface-duo2.dtb usb@a6f8800: 'dwc3@a600000' does not match any of the regexes: '^usb@[0-9a-f]+$', 'pinctrl-[0-9]+' arch/arm/boot/dts/qcom-sdx55-mtp.dtb arch/arm/boot/dts/qcom-sdx55-t55.dtb arch/arm/boot/dts/qcom-sdx55-telit-fn980-tlb.dtb usb@a6f8800: usb@a600000: Unevaluated properties are not allowed ('maximum-spped' was unexpected) arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish.dtb usb@a8f8800: assigned-clock-rates: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges-kirin.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dtb arch/arm64/boot/dts/qcom/sdm636-sony-xperia-ganges-mermaid.dtb arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dtb usb@a8f8800: assigned-clocks: [[34, 92], [34, 91], [35, 64]] is too long arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges-kirin.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dtb arch/arm64/boot/dts/qcom/sdm636-sony-xperia-ganges-mermaid.dtb arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dtb usb@a8f8800: usb@a800000: Unevaluated properties are not allowed ('extcon' was unexpected) arch/arm64/boot/dts/qcom/msm8998-fxtec-pro1.dtb arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-lilac.dtb arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-maple.dtb arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-poplar.dtb arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges-kirin.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dtb arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dtb usb@c2f8800: clock-names:2: 'iface' was expected arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges-kirin.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dtb arch/arm64/boot/dts/qcom/sdm636-sony-xperia-ganges-mermaid.dtb arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dtb usb@c2f8800: clock-names: ['cfg_noc', 'core', 'mock_utmi', 'sleep'] is too short arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges-kirin.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dtb arch/arm64/boot/dts/qcom/sdm636-sony-xperia-ganges-mermaid.dtb arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dtb usb@c2f8800: clocks: [[34, 48], [34, 88], [34, 89], [34, 90]] is too short arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges-kirin.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dtb arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dtb arch/arm64/boot/dts/qcom/sdm636-sony-xperia-ganges-mermaid.dtb arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dtb usb@c2f8800: 'power-domains' is a required property arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dtb usb@f92f8800: 'interrupt-names' is a required property arch/arm64/boot/dts/qcom/apq8094-sony-xperia-kitakami-karin_windy.dtb arch/arm64/boot/dts/qcom/msm8992-lg-bullhead-rev-101.dtb arch/arm64/boot/dts/qcom/msm8992-lg-bullhead-rev-10.dtb arch/arm64/boot/dts/qcom/msm8992-msft-lumia-octagon-talkman.dtb arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dtb arch/arm64/boot/dts/qcom/msm8994-huawei-angler-rev-101.dtb arch/arm64/boot/dts/qcom/msm8994-msft-lumia-octagon-cityman.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-ivy.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-karin.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-satsuki.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-sumire.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-suzuran.dtb usb@f92f8800: 'oneOf' conditional failed, one must be fixed: arch/arm64/boot/dts/qcom/apq8094-sony-xperia-kitakami-karin_windy.dtb arch/arm64/boot/dts/qcom/msm8992-lg-bullhead-rev-101.dtb arch/arm64/boot/dts/qcom/msm8992-lg-bullhead-rev-10.dtb arch/arm64/boot/dts/qcom/msm8992-msft-lumia-octagon-talkman.dtb arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dtb arch/arm64/boot/dts/qcom/msm8994-huawei-angler-rev-101.dtb arch/arm64/boot/dts/qcom/msm8994-msft-lumia-octagon-cityman.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-ivy.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-karin.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-satsuki.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-sumire.dtb arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-suzuran.dtb
diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml index a2aabda..8def6a3 100644 --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml @@ -17,6 +17,7 @@ properties: - qcom,ipq6018-dwc3 - qcom,ipq8064-dwc3 - qcom,ipq8074-dwc3 + - qcom,ipq9574-dwc3 - qcom,msm8953-dwc3 - qcom,msm8994-dwc3 - qcom,msm8996-dwc3 @@ -242,6 +243,24 @@ allOf: compatible: contains: enum: + - qcom,ipq9574-dwc3 + then: + properties: + clocks: + maxItems: 5 + clock-names: + items: + - const: sys_noc_axi + - const: anoc_axi + - const: master + - const: sleep + - const: mock_utmi + + - if: + properties: + compatible: + contains: + enum: - qcom,msm8994-dwc3 - qcom,qcs404-dwc3 then:
Document the IPQ9574 dwc3 compatible. Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com> --- Changes in v5: - Restore removed constraints Changes in v4: - Update other relevant sections - Remove constraints not applicable to IPQ9574 --- Documentation/devicetree/bindings/usb/qcom,dwc3.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)