From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> To: Alexandre Mergnat <amergnat@baylibre.com>, Fabien Parent <fabien.parent@linaro.org>, Alexandre Belloni <alexandre.belloni@bootlin.com>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Sean Wang <sean.wang@mediatek.com>, Mark Brown <broonie@kernel.org>, Matthias Brugger <matthias.bgg@gmail.com>, Lee Jones <lee@kernel.org>, Chen Zhong <chen.zhong@mediatek.com>, Alessandro Zummo <a.zummo@towertech.it>, Pavel Machek <pavel@ucw.cz>, Rob Herring <robh+dt@kernel.org>, Liam Girdwood <lgirdwood@gmail.com>, Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-input@vger.kernel.org, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>, Fabien Parent <fparent@baylibre.com>, linux-rtc@vger.kernel.org, Rob Herring <robh@kernel.org>, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, Mattijs Korpershoek <mkorpershoek@baylibre.com> Subject: Re: [PATCH v4 5/9] dt-bindings: soc: mediatek: convert pwrap documentation Date: Fri, 11 Nov 2022 15:55:29 +0100 [thread overview] Message-ID: <931bbdec-5155-9b26-0cfd-b29a5406d20b@linaro.org> (raw) In-Reply-To: <20221005-mt6357-support-v4-5-5d2bb58e6087@baylibre.com> On 08/11/2022 19:43, Alexandre Mergnat wrote: > - Convert soc/mediatek/pwrap.txt to soc/mediatek/mediatek,pwrap.yaml > - MT8365 SoC has 2 additional clock items and a yaml schema for its PMIC > - Remove pwrap.txt file > > Signed-off-by: Alexandre Mergnat <amergnat@baylibre.com> > --- > .../devicetree/bindings/leds/leds-mt6323.txt | 2 +- > Documentation/devicetree/bindings/mfd/mt6397.txt | 2 +- > .../bindings/soc/mediatek/mediatek,pwrap.yaml | 158 +++++++++++++++++++++ > .../devicetree/bindings/soc/mediatek/pwrap.txt | 75 ---------- > 4 files changed, 160 insertions(+), 77 deletions(-) > > diff --git a/Documentation/devicetree/bindings/leds/leds-mt6323.txt b/Documentation/devicetree/bindings/leds/leds-mt6323.txt > index 45bf9f7d85f3..73353692efa1 100644 > --- a/Documentation/devicetree/bindings/leds/leds-mt6323.txt > +++ b/Documentation/devicetree/bindings/leds/leds-mt6323.txt > @@ -9,7 +9,7 @@ MT6323 PMIC hardware. > For MT6323 MFD bindings see: > Documentation/devicetree/bindings/mfd/mt6397.txt > For MediaTek PMIC wrapper bindings see: > -Documentation/devicetree/bindings/soc/mediatek/pwrap.txt > +Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml > > Required properties: > - compatible : Must be "mediatek,mt6323-led" > diff --git a/Documentation/devicetree/bindings/mfd/mt6397.txt b/Documentation/devicetree/bindings/mfd/mt6397.txt > index 79aaf21af8e9..3bee4a42555d 100644 > --- a/Documentation/devicetree/bindings/mfd/mt6397.txt > +++ b/Documentation/devicetree/bindings/mfd/mt6397.txt > @@ -13,7 +13,7 @@ MT6397/MT6323 is a multifunction device with the following sub modules: > It is interfaced to host controller using SPI interface by a proprietary hardware > called PMIC wrapper or pwrap. MT6397/MT6323 MFD is a child device of pwrap. > See the following for pwarp node definitions: > -../soc/mediatek/pwrap.txt > +../soc/mediatek/mediatek,pwrap.yaml > > This document describes the binding for MFD device and its sub module. > > diff --git a/Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml b/Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml > new file mode 100644 > index 000000000000..fe83458b801a > --- /dev/null > +++ b/Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml > @@ -0,0 +1,158 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/soc/mediatek/mediatek,pwrap.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Mediatek PMIC Wrapper > + > +maintainers: > + - Alexandre Mergnat <amergnat@baylibre.com> > + > +description: | > + On MediaTek SoCs the PMIC is connected via SPI. The SPI master interface > + is not directly visible to the CPU, but only through the PMIC wrapper > + inside the SoC. The communication between the SoC and the PMIC can > + optionally be encrypted. Also a non standard Dual IO SPI mode can be > + used to increase speed. > + > + IP Pairing > + > + On MT8135 the pins of some SoC internal peripherals can be on the PMIC. > + The signals of these pins are routed over the SPI bus using the pwrap > + bridge. In the binding description below the properties needed for bridging > + are marked with "IP Pairing". These are optional on SoCs which do not support > + IP Pairing > + > +properties: > + compatible: > + oneOf: > + - items: > + - enum: > + - mediatek,mt2701-pwrap > + - mediatek,mt6765-pwrap > + - mediatek,mt6779-pwrap > + - mediatek,mt6797-pwrap > + - mediatek,mt6873-pwrap > + - mediatek,mt7622-pwrap > + - mediatek,mt8135-pwrap > + - mediatek,mt8173-pwrap > + - mediatek,mt8183-pwrap > + - mediatek,mt8188-pwrap Why no mt8195? > + - mediatek,mt8365-pwrap > + - mediatek,mt8516-pwrap > + - items: > + - enum: > + - mediatek,mt8186-pwrap > + - mediatek,mt8195-pwrap > + - const: syscon > + > + reg: > + minItems: 1 > + items: > + - description: PMIC wrapper registers (mandatory) Drop "(mandatory)" > + - description: IP pairing registers > + > + reg-names: > + minItems: 1 > + items: > + - const: pwrap > + - const: pwrap-bridge > + > + interrupts: > + maxItems: 1 > + description: IRQ for pwrap in SOC Drop description. > + > + clocks: true minItems:2 maxItems: 4 > + > + clock-names: true Ditto > + > + resets: > + minItems: 1 > + items: > + - description: PMIC wrapper reset > + - description: IP pairing reset > + > + reset-names: > + minItems: 1 > + items: > + - const: pwrap > + - const: pwrap-bridge > + > + pmic: > + type: object > + Required properties go here. > +allOf: > + - if: > + properties: > + compatible: > + contains: > + const: mediatek,mt8365-pwrap > + then: > + properties: > + pmic: > + $ref: /schemas/mfd/mediatek,mt6357.yaml# > + > + clocks: > + items: > + - description: SPI bus clock > + - description: Main module clock > + - description: System module clock > + - description: Timer module clock > + clock-names: > + items: > + - const: spi > + - const: wrap > + - const: sys > + - const: tmr > + else: > + properties: > + pmic: > + description: | > + List of child nodes that specify the regulators. This is not correct description. > + See ../../mfd/mt6397.txt for more details. > + > + clocks: > + items: > + - description: SPI bus clock > + - description: Main module clock > + clock-names: > + items: > + - const: spi > + - const: wrap > + > +required: > + - compatible > + - reg > + - reg-names > + - interrupts > + - clocks > + - clock-names > + > +additionalProperties: true This must be false. > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/irq.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/reset/mt8135-resets.h> > + > + soc { > + #address-cells = <2>; > + #size-cells = <2>; > + pwrap@1000f000 { > + compatible = "mediatek,mt8135-pwrap"; > + reg = <0 0x1000f000 0 0x1000>, <0 0x11017000 0 0x1000>; > + reg-names = "pwrap", "pwrap-bridge"; > + interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>; > + resets = <&infracfg MT8135_INFRA_PMIC_WRAP_RST>, > + <&pericfg MT8135_PERI_PWRAP_BRIDGE_SW_RST>; Align. > + reset-names = "pwrap", "pwrap-bridge"; > + clocks = <&clk26m>, <&clk26m>; > + clock-names = "spi", "wrap"; > + > + pmic { > + compatible = "mediatek,mt6397"; Messed up indentation. > + }; Best regards, Krzysztof
WARNING: multiple messages have this Message-ID (diff)
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> To: Alexandre Mergnat <amergnat@baylibre.com>, Fabien Parent <fabien.parent@linaro.org>, Alexandre Belloni <alexandre.belloni@bootlin.com>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Sean Wang <sean.wang@mediatek.com>, Mark Brown <broonie@kernel.org>, Matthias Brugger <matthias.bgg@gmail.com>, Lee Jones <lee@kernel.org>, Chen Zhong <chen.zhong@mediatek.com>, Alessandro Zummo <a.zummo@towertech.it>, Pavel Machek <pavel@ucw.cz>, Rob Herring <robh+dt@kernel.org>, Liam Girdwood <lgirdwood@gmail.com>, Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-input@vger.kernel.org, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>, Fabien Parent <fparent@baylibre.com>, linux-rtc@vger.kernel.org, Rob Herring <robh@kernel.org>, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, Mattijs Korpershoek <mkorpershoek@baylibre.com> Subject: Re: [PATCH v4 5/9] dt-bindings: soc: mediatek: convert pwrap documentation Date: Fri, 11 Nov 2022 15:55:29 +0100 [thread overview] Message-ID: <931bbdec-5155-9b26-0cfd-b29a5406d20b@linaro.org> (raw) In-Reply-To: <20221005-mt6357-support-v4-5-5d2bb58e6087@baylibre.com> On 08/11/2022 19:43, Alexandre Mergnat wrote: > - Convert soc/mediatek/pwrap.txt to soc/mediatek/mediatek,pwrap.yaml > - MT8365 SoC has 2 additional clock items and a yaml schema for its PMIC > - Remove pwrap.txt file > > Signed-off-by: Alexandre Mergnat <amergnat@baylibre.com> > --- > .../devicetree/bindings/leds/leds-mt6323.txt | 2 +- > Documentation/devicetree/bindings/mfd/mt6397.txt | 2 +- > .../bindings/soc/mediatek/mediatek,pwrap.yaml | 158 +++++++++++++++++++++ > .../devicetree/bindings/soc/mediatek/pwrap.txt | 75 ---------- > 4 files changed, 160 insertions(+), 77 deletions(-) > > diff --git a/Documentation/devicetree/bindings/leds/leds-mt6323.txt b/Documentation/devicetree/bindings/leds/leds-mt6323.txt > index 45bf9f7d85f3..73353692efa1 100644 > --- a/Documentation/devicetree/bindings/leds/leds-mt6323.txt > +++ b/Documentation/devicetree/bindings/leds/leds-mt6323.txt > @@ -9,7 +9,7 @@ MT6323 PMIC hardware. > For MT6323 MFD bindings see: > Documentation/devicetree/bindings/mfd/mt6397.txt > For MediaTek PMIC wrapper bindings see: > -Documentation/devicetree/bindings/soc/mediatek/pwrap.txt > +Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml > > Required properties: > - compatible : Must be "mediatek,mt6323-led" > diff --git a/Documentation/devicetree/bindings/mfd/mt6397.txt b/Documentation/devicetree/bindings/mfd/mt6397.txt > index 79aaf21af8e9..3bee4a42555d 100644 > --- a/Documentation/devicetree/bindings/mfd/mt6397.txt > +++ b/Documentation/devicetree/bindings/mfd/mt6397.txt > @@ -13,7 +13,7 @@ MT6397/MT6323 is a multifunction device with the following sub modules: > It is interfaced to host controller using SPI interface by a proprietary hardware > called PMIC wrapper or pwrap. MT6397/MT6323 MFD is a child device of pwrap. > See the following for pwarp node definitions: > -../soc/mediatek/pwrap.txt > +../soc/mediatek/mediatek,pwrap.yaml > > This document describes the binding for MFD device and its sub module. > > diff --git a/Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml b/Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml > new file mode 100644 > index 000000000000..fe83458b801a > --- /dev/null > +++ b/Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml > @@ -0,0 +1,158 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/soc/mediatek/mediatek,pwrap.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Mediatek PMIC Wrapper > + > +maintainers: > + - Alexandre Mergnat <amergnat@baylibre.com> > + > +description: | > + On MediaTek SoCs the PMIC is connected via SPI. The SPI master interface > + is not directly visible to the CPU, but only through the PMIC wrapper > + inside the SoC. The communication between the SoC and the PMIC can > + optionally be encrypted. Also a non standard Dual IO SPI mode can be > + used to increase speed. > + > + IP Pairing > + > + On MT8135 the pins of some SoC internal peripherals can be on the PMIC. > + The signals of these pins are routed over the SPI bus using the pwrap > + bridge. In the binding description below the properties needed for bridging > + are marked with "IP Pairing". These are optional on SoCs which do not support > + IP Pairing > + > +properties: > + compatible: > + oneOf: > + - items: > + - enum: > + - mediatek,mt2701-pwrap > + - mediatek,mt6765-pwrap > + - mediatek,mt6779-pwrap > + - mediatek,mt6797-pwrap > + - mediatek,mt6873-pwrap > + - mediatek,mt7622-pwrap > + - mediatek,mt8135-pwrap > + - mediatek,mt8173-pwrap > + - mediatek,mt8183-pwrap > + - mediatek,mt8188-pwrap Why no mt8195? > + - mediatek,mt8365-pwrap > + - mediatek,mt8516-pwrap > + - items: > + - enum: > + - mediatek,mt8186-pwrap > + - mediatek,mt8195-pwrap > + - const: syscon > + > + reg: > + minItems: 1 > + items: > + - description: PMIC wrapper registers (mandatory) Drop "(mandatory)" > + - description: IP pairing registers > + > + reg-names: > + minItems: 1 > + items: > + - const: pwrap > + - const: pwrap-bridge > + > + interrupts: > + maxItems: 1 > + description: IRQ for pwrap in SOC Drop description. > + > + clocks: true minItems:2 maxItems: 4 > + > + clock-names: true Ditto > + > + resets: > + minItems: 1 > + items: > + - description: PMIC wrapper reset > + - description: IP pairing reset > + > + reset-names: > + minItems: 1 > + items: > + - const: pwrap > + - const: pwrap-bridge > + > + pmic: > + type: object > + Required properties go here. > +allOf: > + - if: > + properties: > + compatible: > + contains: > + const: mediatek,mt8365-pwrap > + then: > + properties: > + pmic: > + $ref: /schemas/mfd/mediatek,mt6357.yaml# > + > + clocks: > + items: > + - description: SPI bus clock > + - description: Main module clock > + - description: System module clock > + - description: Timer module clock > + clock-names: > + items: > + - const: spi > + - const: wrap > + - const: sys > + - const: tmr > + else: > + properties: > + pmic: > + description: | > + List of child nodes that specify the regulators. This is not correct description. > + See ../../mfd/mt6397.txt for more details. > + > + clocks: > + items: > + - description: SPI bus clock > + - description: Main module clock > + clock-names: > + items: > + - const: spi > + - const: wrap > + > +required: > + - compatible > + - reg > + - reg-names > + - interrupts > + - clocks > + - clock-names > + > +additionalProperties: true This must be false. > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/irq.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/reset/mt8135-resets.h> > + > + soc { > + #address-cells = <2>; > + #size-cells = <2>; > + pwrap@1000f000 { > + compatible = "mediatek,mt8135-pwrap"; > + reg = <0 0x1000f000 0 0x1000>, <0 0x11017000 0 0x1000>; > + reg-names = "pwrap", "pwrap-bridge"; > + interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>; > + resets = <&infracfg MT8135_INFRA_PMIC_WRAP_RST>, > + <&pericfg MT8135_PERI_PWRAP_BRIDGE_SW_RST>; Align. > + reset-names = "pwrap", "pwrap-bridge"; > + clocks = <&clk26m>, <&clk26m>; > + clock-names = "spi", "wrap"; > + > + pmic { > + compatible = "mediatek,mt6397"; Messed up indentation. > + }; Best regards, Krzysztof _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-11-11 14:55 UTC|newest] Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-11-08 18:43 [PATCH v4 0/9] Add MediaTek MT6357 PMIC support Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat 2022-11-08 18:43 ` [PATCH v4 1/9] dt-bindings: input: mtk-pmic-keys: add binding for MT6357 PMIC Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat 2022-11-08 18:43 ` [PATCH v4 2/9] dt-bindings: rtc: mediatek: convert MT6397 rtc documentation Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat 2022-11-08 22:30 ` Rob Herring 2022-11-08 22:30 ` Rob Herring 2022-11-09 9:40 ` AngeloGioacchino Del Regno 2022-11-09 9:40 ` AngeloGioacchino Del Regno 2022-11-09 17:49 ` Alexandre Belloni 2022-11-09 17:49 ` Alexandre Belloni 2022-11-09 22:29 ` Rob Herring 2022-11-09 22:29 ` Rob Herring 2022-11-09 22:57 ` Alexandre Belloni 2022-11-09 22:57 ` Alexandre Belloni 2022-11-10 14:14 ` Krzysztof Kozlowski 2022-11-10 14:14 ` Krzysztof Kozlowski 2022-11-14 22:57 ` Alexandre Belloni 2022-11-14 22:57 ` Alexandre Belloni 2022-11-15 7:56 ` Krzysztof Kozlowski 2022-11-15 7:56 ` Krzysztof Kozlowski 2022-11-15 8:05 ` Alexandre Belloni 2022-11-15 8:05 ` Alexandre Belloni 2022-11-15 8:17 ` Krzysztof Kozlowski 2022-11-15 8:17 ` Krzysztof Kozlowski 2022-11-15 10:34 ` Alexandre Mergnat 2022-11-15 10:34 ` Alexandre Mergnat 2022-11-15 13:49 ` Krzysztof Kozlowski 2022-11-15 13:49 ` Krzysztof Kozlowski 2022-11-08 18:43 ` [PATCH v4 3/9] dt-bindings: regulator: Add binding schema for mt6357 regulators Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat 2022-11-11 14:45 ` Krzysztof Kozlowski 2022-11-11 14:45 ` Krzysztof Kozlowski 2022-11-08 18:43 ` [PATCH v4 4/9] dt-bindings: mfd: mediatek: Add bindings for MT6357 PMIC Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat 2022-11-08 22:30 ` Rob Herring 2022-11-08 22:30 ` Rob Herring 2022-11-11 14:51 ` Krzysztof Kozlowski 2022-11-11 14:51 ` Krzysztof Kozlowski 2022-11-08 18:43 ` [PATCH v4 5/9] dt-bindings: soc: mediatek: convert pwrap documentation Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat 2022-11-09 9:55 ` AngeloGioacchino Del Regno 2022-11-09 9:55 ` AngeloGioacchino Del Regno 2022-11-15 13:54 ` Alexandre Mergnat 2022-11-15 13:54 ` Alexandre Mergnat 2022-11-15 14:18 ` Krzysztof Kozlowski 2022-11-15 14:18 ` Krzysztof Kozlowski 2022-11-15 15:54 ` Alexandre Mergnat 2022-11-15 15:54 ` Alexandre Mergnat 2022-11-11 14:55 ` Krzysztof Kozlowski [this message] 2022-11-11 14:55 ` Krzysztof Kozlowski 2022-11-08 18:43 ` [PATCH v4 6/9] arm64: dts: mt6358: change node names Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat 2022-11-08 18:43 ` [PATCH v4 7/9] arm64: dts: mt8173: change node name Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat 2022-11-08 18:43 ` [PATCH v4 8/9] regulator: add mt6357 regulator Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat 2022-11-08 18:43 ` [PATCH v4 9/9] Input: mtk-pmic-keys: add MT6357 support Alexandre Mergnat 2022-11-08 18:43 ` Alexandre Mergnat
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=931bbdec-5155-9b26-0cfd-b29a5406d20b@linaro.org \ --to=krzysztof.kozlowski@linaro.org \ --cc=a.zummo@towertech.it \ --cc=alexandre.belloni@bootlin.com \ --cc=amergnat@baylibre.com \ --cc=angelogioacchino.delregno@collabora.com \ --cc=broonie@kernel.org \ --cc=chen.zhong@mediatek.com \ --cc=devicetree@vger.kernel.org \ --cc=dmitry.torokhov@gmail.com \ --cc=fabien.parent@linaro.org \ --cc=fparent@baylibre.com \ --cc=krzysztof.kozlowski+dt@linaro.org \ --cc=lee@kernel.org \ --cc=lgirdwood@gmail.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-input@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-leds@vger.kernel.org \ --cc=linux-mediatek@lists.infradead.org \ --cc=linux-rtc@vger.kernel.org \ --cc=matthias.bgg@gmail.com \ --cc=mkorpershoek@baylibre.com \ --cc=pavel@ucw.cz \ --cc=robh+dt@kernel.org \ --cc=robh@kernel.org \ --cc=sean.wang@mediatek.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.