* [PATCH 0/2] Match data improvements for mcp23s08 driver
@ 2023-09-02 9:09 Biju Das
2023-09-02 9:09 ` [PATCH 1/2] pinctrl: mcp23s08: Extend match support for OF tables Biju Das
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Biju Das @ 2023-09-02 9:09 UTC (permalink / raw)
To: Linus Walleij
Cc: Biju Das, linux-gpio, linux-kernel, Biju Das, Andy Shevchenko
This patch series aims to add match data improvements for mcp23s08 driver.
This patch series is only compile tested.
Biju Das (2):
pinctrl: mcp23s08: Extend match support for OF tables
pinctrl: mcp23s08: Simplify probe()
drivers/pinctrl/pinctrl-mcp23s08_i2c.c | 102 ++++++++++++-------------
1 file changed, 50 insertions(+), 52 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 1/2] pinctrl: mcp23s08: Extend match support for OF tables 2023-09-02 9:09 [PATCH 0/2] Match data improvements for mcp23s08 driver Biju Das @ 2023-09-02 9:09 ` Biju Das 2023-09-04 9:09 ` Andy Shevchenko 2023-09-02 9:09 ` [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() Biju Das 2023-09-04 9:14 ` [PATCH 0/2] Match data improvements for mcp23s08 driver Andy Shevchenko 2 siblings, 1 reply; 8+ messages in thread From: Biju Das @ 2023-09-02 9:09 UTC (permalink / raw) To: Linus Walleij Cc: Biju Das, linux-gpio, linux-kernel, Biju Das, Andy Shevchenko The driver has OF match table, still it uses ID lookup table for retrieving match data. Currently the driver is working on the assumption that a I2C device registered via OF will always match a legacy I2C device ID. The correct approach is to have an OF device ID table using of_device_match_data() if the devices are registered via OF. Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> --- drivers/pinctrl/pinctrl-mcp23s08_i2c.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/pinctrl/pinctrl-mcp23s08_i2c.c b/drivers/pinctrl/pinctrl-mcp23s08_i2c.c index 3dd1bd8e73eb..393d9b099cc5 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08_i2c.c +++ b/drivers/pinctrl/pinctrl-mcp23s08_i2c.c @@ -10,9 +10,8 @@ static int mcp230xx_probe(struct i2c_client *client) { - const struct i2c_device_id *id = i2c_client_get_device_id(client); struct device *dev = &client->dev; - unsigned int type = id->driver_data; + unsigned int type; struct mcp23s08 *mcp; int ret; @@ -20,6 +19,7 @@ static int mcp230xx_probe(struct i2c_client *client) if (!mcp) return -ENOMEM; + type = (uintptr_t)i2c_get_match_data(client); switch (type) { case MCP_TYPE_008: mcp->regmap = devm_regmap_init_i2c(client, &mcp23x08_regmap); -- 2.25.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] pinctrl: mcp23s08: Extend match support for OF tables 2023-09-02 9:09 ` [PATCH 1/2] pinctrl: mcp23s08: Extend match support for OF tables Biju Das @ 2023-09-04 9:09 ` Andy Shevchenko 0 siblings, 0 replies; 8+ messages in thread From: Andy Shevchenko @ 2023-09-04 9:09 UTC (permalink / raw) To: Biju Das; +Cc: Linus Walleij, linux-gpio, linux-kernel, Biju Das On Sat, Sep 02, 2023 at 10:09:36AM +0100, Biju Das wrote: > The driver has OF match table, still it uses ID lookup table for > retrieving match data. Currently the driver is working on the > assumption that a I2C device registered via OF will always match a > legacy I2C device ID. The correct approach is to have an OF device ID > table using of_device_match_data() if the devices are registered via OF. ... > - const struct i2c_device_id *id = i2c_client_get_device_id(client); > struct device *dev = &client->dev; > - unsigned int type = id->driver_data; > + unsigned int type; Now it's shorter than below line, so move it further. > struct mcp23s08 *mcp; > int ret; -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() 2023-09-02 9:09 [PATCH 0/2] Match data improvements for mcp23s08 driver Biju Das 2023-09-02 9:09 ` [PATCH 1/2] pinctrl: mcp23s08: Extend match support for OF tables Biju Das @ 2023-09-02 9:09 ` Biju Das 2023-09-04 9:12 ` Andy Shevchenko 2023-09-05 11:31 ` Dan Carpenter 2023-09-04 9:14 ` [PATCH 0/2] Match data improvements for mcp23s08 driver Andy Shevchenko 2 siblings, 2 replies; 8+ messages in thread From: Biju Das @ 2023-09-02 9:09 UTC (permalink / raw) To: Linus Walleij Cc: Biju Das, linux-gpio, linux-kernel, Biju Das, Andy Shevchenko Add struct mcp23s08_i2c_info and simplify probe() by replacing match data 'type' with 'struct mcp23s08_i2c_info'. While at it, replace dev_err()->dev_err_probe(). Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> --- drivers/pinctrl/pinctrl-mcp23s08_i2c.c | 102 ++++++++++++------------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/drivers/pinctrl/pinctrl-mcp23s08_i2c.c b/drivers/pinctrl/pinctrl-mcp23s08_i2c.c index 393d9b099cc5..61e92f68ec95 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08_i2c.c +++ b/drivers/pinctrl/pinctrl-mcp23s08_i2c.c @@ -8,10 +8,18 @@ #include "pinctrl-mcp23s08.h" +struct mcp23s08_i2c_info { + const struct regmap_config *regmap; + const char *label; + unsigned int type; + u16 ngpio; + bool reg_shift; +}; + static int mcp230xx_probe(struct i2c_client *client) { + const struct mcp23s08_i2c_info *info; struct device *dev = &client->dev; - unsigned int type; struct mcp23s08 *mcp; int ret; @@ -19,41 +27,22 @@ static int mcp230xx_probe(struct i2c_client *client) if (!mcp) return -ENOMEM; - type = (uintptr_t)i2c_get_match_data(client); - switch (type) { - case MCP_TYPE_008: - mcp->regmap = devm_regmap_init_i2c(client, &mcp23x08_regmap); - mcp->reg_shift = 0; - mcp->chip.ngpio = 8; - mcp->chip.label = "mcp23008"; - break; - - case MCP_TYPE_017: - mcp->regmap = devm_regmap_init_i2c(client, &mcp23x17_regmap); - mcp->reg_shift = 1; - mcp->chip.ngpio = 16; - mcp->chip.label = "mcp23017"; - break; - - case MCP_TYPE_018: - mcp->regmap = devm_regmap_init_i2c(client, &mcp23x17_regmap); - mcp->reg_shift = 1; - mcp->chip.ngpio = 16; - mcp->chip.label = "mcp23018"; - break; - - default: - dev_err(dev, "invalid device type (%d)\n", type); - return -EINVAL; - } + info = i2c_get_match_data(client); + if (!info) + return dev_err_probe(dev, -EINVAL, "invalid device type (%d)\n", + info->type); + mcp->reg_shift = info->reg_shift; + mcp->chip.ngpio = info->ngpio; + mcp->chip.label = info->label; + mcp->regmap = devm_regmap_init_i2c(client, info->regmap); if (IS_ERR(mcp->regmap)) return PTR_ERR(mcp->regmap); mcp->irq = client->irq; mcp->pinctrl_desc.name = "mcp23xxx-pinctrl"; - ret = mcp23s08_probe_one(mcp, dev, client->addr, type, -1); + ret = mcp23s08_probe_one(mcp, dev, client->addr, info->type, -1); if (ret) return ret; @@ -62,36 +51,45 @@ static int mcp230xx_probe(struct i2c_client *client) return 0; } +static const struct mcp23s08_i2c_info mcp23s08_i2c_0008 = { + .regmap = &mcp23x08_regmap, + .label = "mcp23008", + .type = MCP_TYPE_008, + .ngpio = 8, + .reg_shift = 0, +}; + +static const struct mcp23s08_i2c_info mcp23s08_i2c_0017 = { + .regmap = &mcp23x17_regmap, + .label = "mcp23017", + .type = MCP_TYPE_017, + .ngpio = 16, + .reg_shift = 1, +}; + +static const struct mcp23s08_i2c_info mcp23s08_i2c_0018 = { + .regmap = &mcp23x17_regmap, + .label = "mcp23018", + .type = MCP_TYPE_018, + .ngpio = 16, + .reg_shift = 1, +}; + static const struct i2c_device_id mcp230xx_id[] = { - { "mcp23008", MCP_TYPE_008 }, - { "mcp23017", MCP_TYPE_017 }, - { "mcp23018", MCP_TYPE_018 }, + { "mcp23008", (kernel_ulong_t)&mcp23s08_i2c_0008 }, + { "mcp23017", (kernel_ulong_t)&mcp23s08_i2c_0017 }, + { "mcp23018", (kernel_ulong_t)&mcp23s08_i2c_0018 }, { } }; MODULE_DEVICE_TABLE(i2c, mcp230xx_id); static const struct of_device_id mcp23s08_i2c_of_match[] = { - { - .compatible = "microchip,mcp23008", - .data = (void *) MCP_TYPE_008, - }, - { - .compatible = "microchip,mcp23017", - .data = (void *) MCP_TYPE_017, - }, - { - .compatible = "microchip,mcp23018", - .data = (void *) MCP_TYPE_018, - }, + { .compatible = "microchip,mcp23008", .data = &mcp23s08_i2c_0008 }, + { .compatible = "microchip,mcp23017", .data = &mcp23s08_i2c_0017 }, + { .compatible = "microchip,mcp23018", .data = &mcp23s08_i2c_0018 }, /* NOTE: The use of the mcp prefix is deprecated and will be removed. */ - { - .compatible = "mcp,mcp23008", - .data = (void *) MCP_TYPE_008, - }, - { - .compatible = "mcp,mcp23017", - .data = (void *) MCP_TYPE_017, - }, + { .compatible = "mcp,mcp23008", .data = &mcp23s08_i2c_0008 }, + { .compatible = "mcp,mcp23017", .data = &mcp23s08_i2c_0017 }, { } }; MODULE_DEVICE_TABLE(of, mcp23s08_i2c_of_match); -- 2.25.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() 2023-09-02 9:09 ` [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() Biju Das @ 2023-09-04 9:12 ` Andy Shevchenko 2023-09-05 11:31 ` Dan Carpenter 1 sibling, 0 replies; 8+ messages in thread From: Andy Shevchenko @ 2023-09-04 9:12 UTC (permalink / raw) To: Biju Das; +Cc: Linus Walleij, linux-gpio, linux-kernel, Biju Das On Sat, Sep 02, 2023 at 10:09:37AM +0100, Biju Das wrote: > Add struct mcp23s08_i2c_info and simplify probe() by replacing > match data 'type' with 'struct mcp23s08_i2c_info'. > > While at it, replace dev_err()->dev_err_probe(). '->' --> ' --> ' ... > + info = i2c_get_match_data(client); > + if (!info) > + return dev_err_probe(dev, -EINVAL, "invalid device type (%d)\n", > + info->type); Huh?! Please, think about it... -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() 2023-09-02 9:09 ` [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() Biju Das 2023-09-04 9:12 ` Andy Shevchenko @ 2023-09-05 11:31 ` Dan Carpenter 1 sibling, 0 replies; 8+ messages in thread From: Dan Carpenter @ 2023-09-05 11:31 UTC (permalink / raw) To: oe-kbuild, Biju Das, Linus Walleij Cc: lkp, oe-kbuild-all, Biju Das, linux-gpio, linux-kernel, Andy Shevchenko Hi Biju, kernel test robot noticed the following build warnings: https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Biju-Das/pinctrl-mcp23s08-Extend-match-support-for-OF-tables/20230902-171023 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel patch link: https://lore.kernel.org/r/20230902090937.32195-3-biju.das.jz%40bp.renesas.com patch subject: [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() config: i386-randconfig-141-20230902 (https://download.01.org/0day-ci/archive/20230903/202309030751.GQvtrZnS-lkp@intel.com/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce: (https://download.01.org/0day-ci/archive/20230903/202309030751.GQvtrZnS-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Reported-by: Dan Carpenter <dan.carpenter@linaro.org> | Closes: https://lore.kernel.org/r/202309030751.GQvtrZnS-lkp@intel.com/ smatch warnings: drivers/pinctrl/pinctrl-mcp23s08_i2c.c:33 mcp230xx_probe() error: we previously assumed 'info' could be null (see line 31) vim +/info +33 drivers/pinctrl/pinctrl-mcp23s08_i2c.c 8bb5811129f9e4 Uwe Kleine-König 2022-11-18 19 static int mcp230xx_probe(struct i2c_client *client) 0f04a81784fe3d Andy Shevchenko 2020-04-07 20 { b5f259f6fc5912 Biju Das 2023-09-02 21 const struct mcp23s08_i2c_info *info; 0f04a81784fe3d Andy Shevchenko 2020-04-07 22 struct device *dev = &client->dev; 0f04a81784fe3d Andy Shevchenko 2020-04-07 23 struct mcp23s08 *mcp; 0f04a81784fe3d Andy Shevchenko 2020-04-07 24 int ret; 0f04a81784fe3d Andy Shevchenko 2020-04-07 25 0f04a81784fe3d Andy Shevchenko 2020-04-07 26 mcp = devm_kzalloc(dev, sizeof(*mcp), GFP_KERNEL); 0f04a81784fe3d Andy Shevchenko 2020-04-07 27 if (!mcp) 0f04a81784fe3d Andy Shevchenko 2020-04-07 28 return -ENOMEM; 0f04a81784fe3d Andy Shevchenko 2020-04-07 29 b5f259f6fc5912 Biju Das 2023-09-02 30 info = i2c_get_match_data(client); b5f259f6fc5912 Biju Das 2023-09-02 @31 if (!info) b5f259f6fc5912 Biju Das 2023-09-02 32 return dev_err_probe(dev, -EINVAL, "invalid device type (%d)\n", b5f259f6fc5912 Biju Das 2023-09-02 @33 info->type); ^^^^^^^^^^ info is NULL. 0f04a81784fe3d Andy Shevchenko 2020-04-07 34 b5f259f6fc5912 Biju Das 2023-09-02 35 mcp->reg_shift = info->reg_shift; -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] Match data improvements for mcp23s08 driver 2023-09-02 9:09 [PATCH 0/2] Match data improvements for mcp23s08 driver Biju Das 2023-09-02 9:09 ` [PATCH 1/2] pinctrl: mcp23s08: Extend match support for OF tables Biju Das 2023-09-02 9:09 ` [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() Biju Das @ 2023-09-04 9:14 ` Andy Shevchenko 2 siblings, 0 replies; 8+ messages in thread From: Andy Shevchenko @ 2023-09-04 9:14 UTC (permalink / raw) To: Biju Das; +Cc: Linus Walleij, linux-gpio, linux-kernel, Biju Das On Sat, Sep 02, 2023 at 10:09:35AM +0100, Biju Das wrote: > This patch series aims to add match data improvements for mcp23s08 driver. > > This patch series is only compile tested. When driver has SPI and I2C parts, always take into account both of them. There is more work needed here. -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] pinctrl: mcp23s08: Simplify probe()
@ 2023-09-02 23:59 kernel test robot
0 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2023-09-02 23:59 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20230902090937.32195-3-biju.das.jz@bp.renesas.com>
References: <20230902090937.32195-3-biju.das.jz@bp.renesas.com>
TO: Biju Das <biju.das.jz@bp.renesas.com>
TO: Linus Walleij <linus.walleij@linaro.org>
CC: Biju Das <biju.das.jz@bp.renesas.com>
CC: linux-gpio@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Hi Biju,
kernel test robot noticed the following build warnings:
[auto build test WARNING on linusw-pinctrl/devel]
[also build test WARNING on linusw-pinctrl/for-next linus/master v6.5 next-20230831]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Biju-Das/pinctrl-mcp23s08-Extend-match-support-for-OF-tables/20230902-171023
base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
patch link: https://lore.kernel.org/r/20230902090937.32195-3-biju.das.jz%40bp.renesas.com
patch subject: [PATCH 2/2] pinctrl: mcp23s08: Simplify probe()
:::::: branch date: 15 hours ago
:::::: commit date: 15 hours ago
config: i386-randconfig-141-20230902 (https://download.01.org/0day-ci/archive/20230903/202309030751.GQvtrZnS-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20230903/202309030751.GQvtrZnS-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202309030751.GQvtrZnS-lkp@intel.com/
smatch warnings:
drivers/pinctrl/pinctrl-mcp23s08_i2c.c:33 mcp230xx_probe() error: we previously assumed 'info' could be null (see line 31)
vim +/info +33 drivers/pinctrl/pinctrl-mcp23s08_i2c.c
b5f259f6fc5912 Biju Das 2023-09-02 18
8bb5811129f9e4 Uwe Kleine-König 2022-11-18 19 static int mcp230xx_probe(struct i2c_client *client)
0f04a81784fe3d Andy Shevchenko 2020-04-07 20 {
b5f259f6fc5912 Biju Das 2023-09-02 21 const struct mcp23s08_i2c_info *info;
0f04a81784fe3d Andy Shevchenko 2020-04-07 22 struct device *dev = &client->dev;
0f04a81784fe3d Andy Shevchenko 2020-04-07 23 struct mcp23s08 *mcp;
0f04a81784fe3d Andy Shevchenko 2020-04-07 24 int ret;
0f04a81784fe3d Andy Shevchenko 2020-04-07 25
0f04a81784fe3d Andy Shevchenko 2020-04-07 26 mcp = devm_kzalloc(dev, sizeof(*mcp), GFP_KERNEL);
0f04a81784fe3d Andy Shevchenko 2020-04-07 27 if (!mcp)
0f04a81784fe3d Andy Shevchenko 2020-04-07 28 return -ENOMEM;
0f04a81784fe3d Andy Shevchenko 2020-04-07 29
b5f259f6fc5912 Biju Das 2023-09-02 30 info = i2c_get_match_data(client);
b5f259f6fc5912 Biju Das 2023-09-02 @31 if (!info)
b5f259f6fc5912 Biju Das 2023-09-02 32 return dev_err_probe(dev, -EINVAL, "invalid device type (%d)\n",
b5f259f6fc5912 Biju Das 2023-09-02 @33 info->type);
0f04a81784fe3d Andy Shevchenko 2020-04-07 34
b5f259f6fc5912 Biju Das 2023-09-02 35 mcp->reg_shift = info->reg_shift;
b5f259f6fc5912 Biju Das 2023-09-02 36 mcp->chip.ngpio = info->ngpio;
b5f259f6fc5912 Biju Das 2023-09-02 37 mcp->chip.label = info->label;
b5f259f6fc5912 Biju Das 2023-09-02 38 mcp->regmap = devm_regmap_init_i2c(client, info->regmap);
0f04a81784fe3d Andy Shevchenko 2020-04-07 39 if (IS_ERR(mcp->regmap))
0f04a81784fe3d Andy Shevchenko 2020-04-07 40 return PTR_ERR(mcp->regmap);
0f04a81784fe3d Andy Shevchenko 2020-04-07 41
0f04a81784fe3d Andy Shevchenko 2020-04-07 42 mcp->irq = client->irq;
0f04a81784fe3d Andy Shevchenko 2020-04-07 43 mcp->pinctrl_desc.name = "mcp23xxx-pinctrl";
0f04a81784fe3d Andy Shevchenko 2020-04-07 44
b5f259f6fc5912 Biju Das 2023-09-02 45 ret = mcp23s08_probe_one(mcp, dev, client->addr, info->type, -1);
0f04a81784fe3d Andy Shevchenko 2020-04-07 46 if (ret)
0f04a81784fe3d Andy Shevchenko 2020-04-07 47 return ret;
0f04a81784fe3d Andy Shevchenko 2020-04-07 48
0f04a81784fe3d Andy Shevchenko 2020-04-07 49 i2c_set_clientdata(client, mcp);
0f04a81784fe3d Andy Shevchenko 2020-04-07 50
0f04a81784fe3d Andy Shevchenko 2020-04-07 51 return 0;
0f04a81784fe3d Andy Shevchenko 2020-04-07 52 }
0f04a81784fe3d Andy Shevchenko 2020-04-07 53
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 8+ messages in threadend of thread, other threads:[~2023-09-05 16:20 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-09-02 9:09 [PATCH 0/2] Match data improvements for mcp23s08 driver Biju Das 2023-09-02 9:09 ` [PATCH 1/2] pinctrl: mcp23s08: Extend match support for OF tables Biju Das 2023-09-04 9:09 ` Andy Shevchenko 2023-09-02 9:09 ` [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() Biju Das 2023-09-04 9:12 ` Andy Shevchenko 2023-09-05 11:31 ` Dan Carpenter 2023-09-04 9:14 ` [PATCH 0/2] Match data improvements for mcp23s08 driver Andy Shevchenko -- strict thread matches above, loose matches on Subject: below -- 2023-09-02 23:59 [PATCH 2/2] pinctrl: mcp23s08: Simplify probe() kernel test robot
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.