From: Angus Clark <angus.clark@st.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: Angus CLARK <angus.clark@st.com>,
Lee Jones <lee.jones@linaro.org>,
linus.walleij@linaro.org, linux-kernel@vger.kernel.org,
linux-mtd@lists.infradead.org, dwmw2@infradead.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 08/36] mtd: devices: Provide header for shared OPCODEs and SFDP commands
Date: Fri, 13 Dec 2013 15:46:03 +0000 [thread overview]
Message-ID: <52AB2BBB.8090900@st.com> (raw)
In-Reply-To: <20131210222308.GG27149@ld-irv-0074.broadcom.com>
On 12/10/2013 10:23 PM, Brian Norris wrote:
> On Tue, Dec 10, 2013 at 01:48:49PM -0800, Brian Norris wrote:
>> It doesn't look to me like the dual/quad bitfields are laid out very
>> usefully. Can't they be divided so that their bit position is more
>> meaningful?
[...]
> I realized you are packing these tight because you're using them as
> combinable (bitwise OR) flags (hence the name FLASH_FLAG_*, duh!). So
> while my scheme is nicer for representing a single opcode w.r.t.
> controller requirements, it is not able to represent the exact opcodes
> supported by a particular flash. Hence, this is not the right place for
> it.
There is certainly scope to compact the opcode representation...
> But I don't want to imitate your flags in any generic framework; we need
> a method (that doesn't involve too many extra tables like in your
> driver; or that supports these tables generically, to share with other
> drivers) to map the "supported opcodes" flags to useful properties that
> the controller/driver can examine.
I believe a key function of any spi-nor framework should be to determine which
fundamental modes of operation are supported by the device (e.g. READ_1_1_2,
READ_1_2_2, READ_1_1_4, READ_1_4_4 etc) and how they are driven (i.e. opcode,
number of mode bits, number of dummy cycles). A second stage would be to
configure the best read, write, erase configurations based on the combined
capabilities of the device and the H/W controller.
However, it is not obvious how best to achieve this functionality. Given the
amount of information that needs to be represented, a static table is not going
to be popular. The current approach in st_spi_fsm assumes some default
configurations for supported modes, with the option to override with
device/family-specific configurations. To be honest, it is rather ugly, and the
result of historic evolutions rather than a clean design!
> Is it possible, for instance, to describe a range of opcodes supported
> using patterns? Like "this flash supports opcodes for 1-4 data pins and
> 1-2 address pins"? Or am I being too idealistic, and most flash really
> support a totally arbitrary combination of opcodes?
Yes, I am afraid so. For example, the mx25l12836e supports READ_1_1_2(0x3b) and
READ_1_1_4(0x6b), whereas the mx25l12845e supports READ_1_2_2(0xbb) and
READ_1_4_4(0xeb).
Cheers,
Angus
WARNING: multiple messages have this Message-ID (diff)
From: angus.clark@st.com (Angus Clark)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 08/36] mtd: devices: Provide header for shared OPCODEs and SFDP commands
Date: Fri, 13 Dec 2013 15:46:03 +0000 [thread overview]
Message-ID: <52AB2BBB.8090900@st.com> (raw)
In-Reply-To: <20131210222308.GG27149@ld-irv-0074.broadcom.com>
On 12/10/2013 10:23 PM, Brian Norris wrote:
> On Tue, Dec 10, 2013 at 01:48:49PM -0800, Brian Norris wrote:
>> It doesn't look to me like the dual/quad bitfields are laid out very
>> usefully. Can't they be divided so that their bit position is more
>> meaningful?
[...]
> I realized you are packing these tight because you're using them as
> combinable (bitwise OR) flags (hence the name FLASH_FLAG_*, duh!). So
> while my scheme is nicer for representing a single opcode w.r.t.
> controller requirements, it is not able to represent the exact opcodes
> supported by a particular flash. Hence, this is not the right place for
> it.
There is certainly scope to compact the opcode representation...
> But I don't want to imitate your flags in any generic framework; we need
> a method (that doesn't involve too many extra tables like in your
> driver; or that supports these tables generically, to share with other
> drivers) to map the "supported opcodes" flags to useful properties that
> the controller/driver can examine.
I believe a key function of any spi-nor framework should be to determine which
fundamental modes of operation are supported by the device (e.g. READ_1_1_2,
READ_1_2_2, READ_1_1_4, READ_1_4_4 etc) and how they are driven (i.e. opcode,
number of mode bits, number of dummy cycles). A second stage would be to
configure the best read, write, erase configurations based on the combined
capabilities of the device and the H/W controller.
However, it is not obvious how best to achieve this functionality. Given the
amount of information that needs to be represented, a static table is not going
to be popular. The current approach in st_spi_fsm assumes some default
configurations for supported modes, with the option to override with
device/family-specific configurations. To be honest, it is rather ugly, and the
result of historic evolutions rather than a clean design!
> Is it possible, for instance, to describe a range of opcodes supported
> using patterns? Like "this flash supports opcodes for 1-4 data pins and
> 1-2 address pins"? Or am I being too idealistic, and most flash really
> support a totally arbitrary combination of opcodes?
Yes, I am afraid so. For example, the mx25l12836e supports READ_1_1_2(0x3b) and
READ_1_1_4(0x6b), whereas the mx25l12845e supports READ_1_2_2(0xbb) and
READ_1_4_4(0xeb).
Cheers,
Angus
WARNING: multiple messages have this Message-ID (diff)
From: Angus Clark <angus.clark@st.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: Lee Jones <lee.jones@linaro.org>, <linus.walleij@linaro.org>,
<linux-kernel@vger.kernel.org>, <linux-mtd@lists.infradead.org>,
<dwmw2@infradead.org>, <linux-arm-kernel@lists.infradead.org>,
Angus CLARK <angus.clark@st.com>
Subject: Re: [PATCH v3 08/36] mtd: devices: Provide header for shared OPCODEs and SFDP commands
Date: Fri, 13 Dec 2013 15:46:03 +0000 [thread overview]
Message-ID: <52AB2BBB.8090900@st.com> (raw)
In-Reply-To: <20131210222308.GG27149@ld-irv-0074.broadcom.com>
On 12/10/2013 10:23 PM, Brian Norris wrote:
> On Tue, Dec 10, 2013 at 01:48:49PM -0800, Brian Norris wrote:
>> It doesn't look to me like the dual/quad bitfields are laid out very
>> usefully. Can't they be divided so that their bit position is more
>> meaningful?
[...]
> I realized you are packing these tight because you're using them as
> combinable (bitwise OR) flags (hence the name FLASH_FLAG_*, duh!). So
> while my scheme is nicer for representing a single opcode w.r.t.
> controller requirements, it is not able to represent the exact opcodes
> supported by a particular flash. Hence, this is not the right place for
> it.
There is certainly scope to compact the opcode representation...
> But I don't want to imitate your flags in any generic framework; we need
> a method (that doesn't involve too many extra tables like in your
> driver; or that supports these tables generically, to share with other
> drivers) to map the "supported opcodes" flags to useful properties that
> the controller/driver can examine.
I believe a key function of any spi-nor framework should be to determine which
fundamental modes of operation are supported by the device (e.g. READ_1_1_2,
READ_1_2_2, READ_1_1_4, READ_1_4_4 etc) and how they are driven (i.e. opcode,
number of mode bits, number of dummy cycles). A second stage would be to
configure the best read, write, erase configurations based on the combined
capabilities of the device and the H/W controller.
However, it is not obvious how best to achieve this functionality. Given the
amount of information that needs to be represented, a static table is not going
to be popular. The current approach in st_spi_fsm assumes some default
configurations for supported modes, with the option to override with
device/family-specific configurations. To be honest, it is rather ugly, and the
result of historic evolutions rather than a clean design!
> Is it possible, for instance, to describe a range of opcodes supported
> using patterns? Like "this flash supports opcodes for 1-4 data pins and
> 1-2 address pins"? Or am I being too idealistic, and most flash really
> support a totally arbitrary combination of opcodes?
Yes, I am afraid so. For example, the mx25l12836e supports READ_1_1_2(0x3b) and
READ_1_1_4(0x6b), whereas the mx25l12845e supports READ_1_2_2(0xbb) and
READ_1_4_4(0xeb).
Cheers,
Angus
next prev parent reply other threads:[~2013-12-13 15:46 UTC|newest]
Thread overview: 237+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-29 12:18 [PATCH v3 00/36] mtd: st_spi_fsm: Add new driver Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` [PATCH v3 01/36] mtd: st_spi_fsm: Allocate resources and register with MTD framework Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-12-02 13:52 ` srinivas kandagatla
2013-12-02 13:52 ` srinivas kandagatla
2013-12-02 13:52 ` srinivas kandagatla
2013-12-10 18:47 ` Brian Norris
2013-12-10 18:47 ` Brian Norris
2013-12-10 18:47 ` Brian Norris
2013-12-10 20:46 ` Brian Norris
2013-12-10 20:46 ` Brian Norris
2013-12-10 20:46 ` Brian Norris
2013-12-11 8:48 ` Lee Jones
2013-12-11 8:48 ` Lee Jones
2013-12-11 8:48 ` Lee Jones
2013-12-11 9:37 ` Angus Clark
2013-12-11 9:37 ` Angus Clark
2013-12-11 9:37 ` Angus Clark
2013-12-11 18:01 ` Brian Norris
2013-12-11 18:01 ` Brian Norris
2013-12-11 18:01 ` Brian Norris
2013-11-29 12:18 ` [PATCH v3 02/36] mtd: st_spi_fsm: Supply all register address and bit logic defines Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` [PATCH v3 03/36] mtd: st_spi_fsm: Initialise and configure the FSM for normal working conditions Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-12-10 19:01 ` Brian Norris
2013-12-10 19:01 ` Brian Norris
2013-12-10 19:01 ` Brian Norris
2013-12-10 20:08 ` Brian Norris
2013-12-10 20:08 ` Brian Norris
2013-12-10 20:08 ` Brian Norris
2013-11-29 12:18 ` [PATCH v3 04/36] mtd: st_spi_fsm: Supply framework for device requests Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-12-10 20:19 ` Brian Norris
2013-12-10 20:19 ` Brian Norris
2013-12-10 20:19 ` Brian Norris
2013-12-13 14:35 ` Angus Clark
2013-12-13 14:35 ` Angus Clark
2013-12-13 14:35 ` Angus Clark
2013-11-29 12:18 ` [PATCH v3 05/36] mtd: st_spi_fsm: Supply a method to read from the FSM's FIFO Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` [PATCH v3 06/36] mtd: st_spi_fsm: Supply defines for the possible flash command opcodes Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` [PATCH v3 07/36] mtd: st_spi_fsm: Add support for JEDEC ID extraction Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` [PATCH v3 08/36] mtd: devices: Provide header for shared OPCODEs and SFDP commands Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-12-10 21:48 ` Brian Norris
2013-12-10 21:48 ` Brian Norris
2013-12-10 21:48 ` Brian Norris
2013-12-10 22:23 ` Brian Norris
2013-12-10 22:23 ` Brian Norris
2013-12-10 22:23 ` Brian Norris
2013-12-13 15:46 ` Angus Clark [this message]
2013-12-13 15:46 ` Angus Clark
2013-12-13 15:46 ` Angus Clark
2013-12-13 15:06 ` Angus Clark
2013-12-13 15:06 ` Angus Clark
2013-12-13 15:06 ` Angus Clark
2013-11-29 12:18 ` [PATCH v3 09/36] mtd: st_spi_fsm: Provide device look-up table Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-12-10 22:03 ` Brian Norris
2013-12-10 22:03 ` Brian Norris
2013-12-10 22:03 ` Brian Norris
2013-12-17 9:17 ` Angus Clark
2013-12-17 9:17 ` Angus Clark
2013-12-17 9:17 ` Angus Clark
2014-01-07 16:11 ` Lee Jones
2014-01-07 16:11 ` Lee Jones
2014-01-07 16:11 ` Lee Jones
2013-11-29 12:18 ` [PATCH v3 10/36] mtd: st_spi_fsm: Dynamically setup flash device based on JEDEC ID Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:18 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 11/36] mtd: st_spi_fsm: Search for preferred FSM message sequence configurations Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-11 1:06 ` Brian Norris
2013-12-11 1:06 ` Brian Norris
2013-12-11 1:06 ` Brian Norris
2013-12-17 9:57 ` Angus Clark
2013-12-17 9:57 ` Angus Clark
2013-12-17 9:57 ` Angus Clark
2013-12-17 10:46 ` Lee Jones
2013-12-17 10:46 ` Lee Jones
2013-12-17 10:46 ` Lee Jones
2013-12-17 10:56 ` Angus Clark
2013-12-17 10:56 ` Angus Clark
2013-12-17 10:56 ` Angus Clark
2013-11-29 12:19 ` [PATCH v3 12/36] mtd: st_spi_fsm: Fetch platform specific configurations Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 13/36] mtd: st_spi_fsm: Prepare the read/write FSM message sequence(s) Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 14/36] mtd: st_spi_fsm: Add device-tree binding documentation Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 19:07 ` Linus Walleij
2013-11-29 19:07 ` Linus Walleij
2013-11-29 19:07 ` Linus Walleij
2013-11-29 19:07 ` Linus Walleij
2013-12-02 11:03 ` Lee Jones
2013-12-02 11:03 ` Lee Jones
2013-12-02 11:03 ` Lee Jones
2013-12-03 10:23 ` Linus Walleij
2013-12-03 10:23 ` Linus Walleij
2013-12-03 10:23 ` Linus Walleij
2013-12-03 10:23 ` Linus Walleij
2013-12-03 11:31 ` Lee Jones
2013-12-03 11:31 ` Lee Jones
2013-12-03 11:31 ` Lee Jones
2013-12-03 11:31 ` Lee Jones
2013-12-03 12:22 ` Linus Walleij
2013-12-03 12:22 ` Linus Walleij
2013-12-03 12:22 ` Linus Walleij
2013-12-03 12:22 ` Linus Walleij
2013-12-03 12:31 ` Lee Jones
2013-12-03 12:31 ` Lee Jones
2013-12-03 12:31 ` Lee Jones
2013-12-03 12:31 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 15/36] mtd: st_spi_fsm: Fetch boot-device from mode pins Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-11 1:27 ` Brian Norris
2013-12-11 1:27 ` Brian Norris
2013-12-11 1:27 ` Brian Norris
2013-11-29 12:19 ` [PATCH v3 16/36] mtd: st_spi_fsm: Provide the erase one sector sequence Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 17/36] mtd: st_spi_fsm: Provide the sequence for enabling 32bit addressing mode Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 18/36] mtd: st_spi_fsm: Prepare read/write sequences according to configuration Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 19/36] mtd: st_spi_fsm: Add a check to if the chip can handle an SoC reset Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 20/36] mtd: st_spi_fsm: Provide a method to put the chip into 32bit addressing mode Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-11 1:49 ` Brian Norris
2013-12-11 1:49 ` Brian Norris
2013-12-11 1:49 ` Brian Norris
2013-11-29 12:19 ` [PATCH v3 21/36] mtd: st_spi_fsm: Update the flash Volatile Configuration Register Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 22/36] mtd: st_spi_fsm: Provide the default read/write configurations Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-11 1:37 ` Brian Norris
2013-12-11 1:37 ` Brian Norris
2013-12-11 1:37 ` Brian Norris
2013-11-29 12:19 ` [PATCH v3 23/36] mtd: st_spi_fsm: Supply the N25Qxxx specific read configurations Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 24/36] mtd: st_spi_fsm: Supply the N25Qxxx chip specific configuration call-back Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-11 2:33 ` Brian Norris
2013-12-11 2:33 ` Brian Norris
2013-12-11 2:33 ` Brian Norris
2013-11-29 12:19 ` [PATCH v3 25/36] mtd: st_spi_fsm: Prepare default sequences for read/write/erase Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 26/36] mtd: st_spi_fsm: Add the ability to read from a Serial Flash device Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-11 2:09 ` Brian Norris
2013-12-11 2:09 ` Brian Norris
2013-12-11 2:09 ` Brian Norris
2013-11-29 12:19 ` [PATCH v3 27/36] mtd: st_spi_fsm: Write to Flash via the FSM FIFO Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 28/36] mtd: st_spi_fsm: Supply a busy wait for post-write status Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-11 2:13 ` Brian Norris
2013-12-11 2:13 ` Brian Norris
2013-12-11 2:13 ` Brian Norris
2013-11-29 12:19 ` [PATCH v3 29/36] mtd: st_spi_fsm: Add the ability to write to a Serial Flash device Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 30/36] mtd: st_spi_fsm: Erase partly or as a whole " Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-11 2:19 ` Brian Norris
2013-12-11 2:19 ` Brian Norris
2013-12-11 2:19 ` Brian Norris
2013-11-29 12:19 ` [PATCH v3 31/36] mtd: st_spi_fsm: Add the ability to read the FSM's status Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 32/36] mtd: st_spi_fsm: Add the ability to write to FSM's status register Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 33/36] mtd: st_spi_fsm: Supply the MX25xxx chip specific configuration call-back Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-11 2:25 ` Brian Norris
2013-12-11 2:25 ` Brian Norris
2013-12-11 2:25 ` Brian Norris
2013-11-29 12:19 ` [PATCH v3 34/36] mtd: st_spi_fsm: Supply the S25FLxxx " Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 35/36] mtd: st_spi_fsm: Supply the W25Qxxx " Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` [PATCH v3 36/36] ARM: STi: Add support for the FSM Serial Flash Controller Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-11-29 12:19 ` Lee Jones
2013-12-02 13:05 ` srinivas kandagatla
2013-12-02 13:05 ` srinivas kandagatla
2013-12-02 13:05 ` srinivas kandagatla
2013-12-02 13:20 ` Lee Jones
2013-12-02 13:20 ` Lee Jones
2013-12-02 13:20 ` Lee Jones
2013-12-02 13:26 ` srinivas kandagatla
2013-12-02 13:26 ` srinivas kandagatla
2013-12-02 13:26 ` srinivas kandagatla
2013-12-02 13:43 ` Lee Jones
2013-12-02 13:43 ` Lee Jones
2013-12-02 13:43 ` Lee Jones
2013-12-02 13:56 ` srinivas kandagatla
2013-12-02 13:56 ` srinivas kandagatla
2013-12-02 13:56 ` srinivas kandagatla
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=52AB2BBB.8090900@st.com \
--to=angus.clark@st.com \
--cc=computersforpeace@gmail.com \
--cc=dwmw2@infradead.org \
--cc=lee.jones@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
/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: link
Be 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.