All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Porter <mporter-l0cyMroinI0@public.gmane.org>
To: Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
Cc: Linux DaVinci Kernel List
	<davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/@public.gmane.org>,
	Chris Ball <cjb-2X9k7bc8m7Mdnm+yROfE0A@public.gmane.org>,
	Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
	Linux Documentation List
	<linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Devicetree Discuss
	<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
	Mark Brown
	<broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>,
	Linux MMC List
	<linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Linux Kernel Mailing List
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	Dan Williams <djbw-b10kYP2dOMg@public.gmane.org>,
	Linux SPI Devel List
	<spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	Linux OMAP List
	<linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Linux ARM Kernel List
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [RFC PATCH 10/13] spi: omap2-mcspi: dma_request_slave_channel() support for DT platforms
Date: Fri, 21 Sep 2012 14:37:29 -0400	[thread overview]
Message-ID: <20120921183729.GI16522@beef> (raw)
In-Reply-To: <20120921154247.GZ28835-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>

On Fri, Sep 21, 2012 at 08:42:47AM -0700, Tony Lindgren wrote:
> * Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org> [120921 02:19]:
> > On Thursday 20 September 2012, Tony Lindgren wrote:
> > > >  /* use PIO for small transfers, avoiding DMA setup/teardown overhead and
> > > > @@ -798,14 +801,26 @@ static int omap2_mcspi_request_dma(struct spi_device *spi)
> > > >       dma_cap_zero(mask);
> > > >       dma_cap_set(DMA_SLAVE, mask);
> > > >       sig = mcspi_dma->dma_rx_sync_dev;
> > > > -     mcspi_dma->dma_rx = dma_request_channel(mask, omap_dma_filter_fn, &sig);
> > > > +     if (spi->dev.of_node)
> > > > +             mcspi_dma->dma_rx =
> > > > +                     dma_request_slave_channel(&master->dev,
> > > > +                                               mcspi_dma->dma_rx_ch_name);
> > > > +     else
> > > > +             mcspi_dma->dma_rx =
> > > > +                     dma_request_channel(mask, omap_dma_filter_fn, &sig);
> > > >       if (!mcspi_dma->dma_rx) {
> > > >               dev_err(&spi->dev, "no RX DMA engine channel for McSPI\n");
> > > >               return -EAGAIN;
> > > >       }
> > > >  
> > > 
> > > Hmm this does not look nice.. We should be able to somehow not to care about
> > > the configuration at the mcspi driver level.
> > 
> > I agree, but as far as I understand Vinod's plans, we would actually move
> > all drivers over to dma_request_slave_channel() when we have an interface
> > to register the lookup tables from platform code.
> > 
> > I think the above is ok for a transitional phase and we can remove the
> > fallback path when we have converted all platforms using this driver
> > to either use DT or move to the new style way of passing the channel
> > configuration.
> 
> Can't we come up with a version of dma_request_slave_channel that works
> both ways for now:
> 
> 	mcspi_dma->dma_rx =
> 		dma_request_slave_channel_compat(mask, omap_dma_filter_fn, &sig,
> 					&master->dev, mcspi_dma->dma_rx_ch_name);
> 	...			
> 
> Then it's just question of patching away two lines later on rather than
> having to add all this if else to all the drivers first, then patching
> it away again.

I think that something like that is workable with the implementation
simply checking for of_node to do the right thing.

-Matt

WARNING: multiple messages have this Message-ID (diff)
From: mporter@ti.com (Matt Porter)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 10/13] spi: omap2-mcspi: dma_request_slave_channel() support for DT platforms
Date: Fri, 21 Sep 2012 14:37:29 -0400	[thread overview]
Message-ID: <20120921183729.GI16522@beef> (raw)
In-Reply-To: <20120921154247.GZ28835@atomide.com>

On Fri, Sep 21, 2012 at 08:42:47AM -0700, Tony Lindgren wrote:
> * Arnd Bergmann <arnd@arndb.de> [120921 02:19]:
> > On Thursday 20 September 2012, Tony Lindgren wrote:
> > > >  /* use PIO for small transfers, avoiding DMA setup/teardown overhead and
> > > > @@ -798,14 +801,26 @@ static int omap2_mcspi_request_dma(struct spi_device *spi)
> > > >       dma_cap_zero(mask);
> > > >       dma_cap_set(DMA_SLAVE, mask);
> > > >       sig = mcspi_dma->dma_rx_sync_dev;
> > > > -     mcspi_dma->dma_rx = dma_request_channel(mask, omap_dma_filter_fn, &sig);
> > > > +     if (spi->dev.of_node)
> > > > +             mcspi_dma->dma_rx =
> > > > +                     dma_request_slave_channel(&master->dev,
> > > > +                                               mcspi_dma->dma_rx_ch_name);
> > > > +     else
> > > > +             mcspi_dma->dma_rx =
> > > > +                     dma_request_channel(mask, omap_dma_filter_fn, &sig);
> > > >       if (!mcspi_dma->dma_rx) {
> > > >               dev_err(&spi->dev, "no RX DMA engine channel for McSPI\n");
> > > >               return -EAGAIN;
> > > >       }
> > > >  
> > > 
> > > Hmm this does not look nice.. We should be able to somehow not to care about
> > > the configuration at the mcspi driver level.
> > 
> > I agree, but as far as I understand Vinod's plans, we would actually move
> > all drivers over to dma_request_slave_channel() when we have an interface
> > to register the lookup tables from platform code.
> > 
> > I think the above is ok for a transitional phase and we can remove the
> > fallback path when we have converted all platforms using this driver
> > to either use DT or move to the new style way of passing the channel
> > configuration.
> 
> Can't we come up with a version of dma_request_slave_channel that works
> both ways for now:
> 
> 	mcspi_dma->dma_rx =
> 		dma_request_slave_channel_compat(mask, omap_dma_filter_fn, &sig,
> 					&master->dev, mcspi_dma->dma_rx_ch_name);
> 	...			
> 
> Then it's just question of patching away two lines later on rather than
> having to add all this if else to all the drivers first, then patching
> it away again.

I think that something like that is workable with the implementation
simply checking for of_node to do the right thing.

-Matt

WARNING: multiple messages have this Message-ID (diff)
From: Matt Porter <mporter@ti.com>
To: Tony Lindgren <tony@atomide.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
	Linux DaVinci Kernel List 
	<davinci-linux-open-source@linux.davincidsp.com>,
	Linux OMAP List <linux-omap@vger.kernel.org>,
	Russell King <linux@arm.linux.org.uk>,
	Benoit Cousson <b-cousson@ti.com>,
	Linux Documentation List <linux-doc@vger.kernel.org>,
	Vinod Koul <vinod.koul@intel.com>,
	Linux MMC List <linux-mmc@vger.kernel.org>,
	Devicetree Discuss <devicetree-discuss@lists.ozlabs.org>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Rob Herring <rob.herring@calxeda.com>,
	Grant Likely <grant.likely@secretlab.ca>,
	Rob Landley <rob@landley.net>, Dan Williams <djbw@fb.com>,
	Linux SPI Devel List  <spi-devel-general@lists.sourceforge.net>,
	Chris Ball <cjb@laptop.org>,
	Linux ARM Kernel List <linux-arm-kernel@lists.infradead.org>
Subject: Re: [RFC PATCH 10/13] spi: omap2-mcspi: dma_request_slave_channel() support for DT platforms
Date: Fri, 21 Sep 2012 14:37:29 -0400	[thread overview]
Message-ID: <20120921183729.GI16522@beef> (raw)
In-Reply-To: <20120921154247.GZ28835@atomide.com>

On Fri, Sep 21, 2012 at 08:42:47AM -0700, Tony Lindgren wrote:
> * Arnd Bergmann <arnd@arndb.de> [120921 02:19]:
> > On Thursday 20 September 2012, Tony Lindgren wrote:
> > > >  /* use PIO for small transfers, avoiding DMA setup/teardown overhead and
> > > > @@ -798,14 +801,26 @@ static int omap2_mcspi_request_dma(struct spi_device *spi)
> > > >       dma_cap_zero(mask);
> > > >       dma_cap_set(DMA_SLAVE, mask);
> > > >       sig = mcspi_dma->dma_rx_sync_dev;
> > > > -     mcspi_dma->dma_rx = dma_request_channel(mask, omap_dma_filter_fn, &sig);
> > > > +     if (spi->dev.of_node)
> > > > +             mcspi_dma->dma_rx =
> > > > +                     dma_request_slave_channel(&master->dev,
> > > > +                                               mcspi_dma->dma_rx_ch_name);
> > > > +     else
> > > > +             mcspi_dma->dma_rx =
> > > > +                     dma_request_channel(mask, omap_dma_filter_fn, &sig);
> > > >       if (!mcspi_dma->dma_rx) {
> > > >               dev_err(&spi->dev, "no RX DMA engine channel for McSPI\n");
> > > >               return -EAGAIN;
> > > >       }
> > > >  
> > > 
> > > Hmm this does not look nice.. We should be able to somehow not to care about
> > > the configuration at the mcspi driver level.
> > 
> > I agree, but as far as I understand Vinod's plans, we would actually move
> > all drivers over to dma_request_slave_channel() when we have an interface
> > to register the lookup tables from platform code.
> > 
> > I think the above is ok for a transitional phase and we can remove the
> > fallback path when we have converted all platforms using this driver
> > to either use DT or move to the new style way of passing the channel
> > configuration.
> 
> Can't we come up with a version of dma_request_slave_channel that works
> both ways for now:
> 
> 	mcspi_dma->dma_rx =
> 		dma_request_slave_channel_compat(mask, omap_dma_filter_fn, &sig,
> 					&master->dev, mcspi_dma->dma_rx_ch_name);
> 	...			
> 
> Then it's just question of patching away two lines later on rather than
> having to add all this if else to all the drivers first, then patching
> it away again.

I think that something like that is workable with the implementation
simply checking for of_node to do the right thing.

-Matt

  parent reply	other threads:[~2012-09-21 18:37 UTC|newest]

Thread overview: 153+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-20 14:43 [RFC PATCH 00/13] DMA Engine support for AM33xx Matt Porter
2012-09-20 14:43 ` Matt Porter
2012-09-20 14:43 ` Matt Porter
     [not found] ` <1348152226-13588-1-git-send-email-mporter-l0cyMroinI0@public.gmane.org>
2012-09-20 14:43   ` [RFC PATCH 01/13] ARM: davinci: move private EDMA API to arm/common Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
     [not found]     ` <1348152226-13588-2-git-send-email-mporter-l0cyMroinI0@public.gmane.org>
2012-09-21  7:10       ` Hebbar, Gururaja
2012-09-21  7:10         ` Hebbar, Gururaja
2012-09-21  7:10         ` Hebbar, Gururaja
2012-09-21 18:24         ` Matt Porter
2012-09-21 18:24           ` Matt Porter
2012-09-21 18:24           ` Matt Porter
2012-09-21 18:24           ` Matt Porter
2012-09-21  9:29     ` Russell King - ARM Linux
2012-09-21  9:29       ` Russell King - ARM Linux
     [not found]       ` <20120921092923.GA31374-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2012-09-21  9:33         ` Hebbar, Gururaja
2012-09-21  9:33           ` Hebbar, Gururaja
2012-09-21  9:33           ` Hebbar, Gururaja
2012-09-21  9:33           ` Hebbar, Gururaja
2012-09-21  9:42           ` Russell King - ARM Linux
2012-09-21  9:42             ` Russell King - ARM Linux
     [not found]             ` <20120921094205.GC31374-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2012-09-21 18:34               ` Matt Porter
2012-09-21 18:34                 ` Matt Porter
2012-09-21 18:34                 ` Matt Porter
2012-09-21 18:50                 ` Russell King - ARM Linux
2012-09-21 18:50                   ` Russell King - ARM Linux
2012-09-24  2:44     ` Hebbar, Gururaja
2012-09-24  2:44       ` Hebbar, Gururaja
2012-09-20 14:43   ` [RFC PATCH 02/13] ARM: edma: remove unused transfer controller handlers Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43   ` [RFC PATCH 03/13] ARM: edma: add DT and runtime PM support for AM335x Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
     [not found]     ` <1348152226-13588-4-git-send-email-mporter-l0cyMroinI0@public.gmane.org>
2012-09-21  8:53       ` Hebbar, Gururaja
2012-09-21  8:53         ` Hebbar, Gururaja
2012-09-21  8:53         ` Hebbar, Gururaja
2012-10-09 18:58         ` Matt Porter
2012-10-09 18:58           ` Matt Porter
2012-10-09 18:58           ` Matt Porter
2012-10-09 18:58           ` Matt Porter
2012-09-20 14:43   ` [RFC PATCH 04/13] dmaengine: edma: enable build " Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43   ` [RFC PATCH 05/13] dma: Add TI EDMA device tree binding Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
     [not found]     ` <1348152226-13588-6-git-send-email-mporter-l0cyMroinI0@public.gmane.org>
2012-09-21  8:45       ` Hebbar, Gururaja
2012-09-21  8:45         ` Hebbar, Gururaja
2012-09-21  8:45         ` Hebbar, Gururaja
2012-09-21 18:23         ` Matt Porter
2012-09-21 18:23           ` Matt Porter
2012-09-21 18:23           ` Matt Porter
2012-09-21 18:23           ` Matt Porter
2012-09-20 14:43   ` [RFC PATCH 06/13] ARM: omap: add hsmmc am33xx specific init Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43   ` [RFC PATCH 07/13] mmc: omap_hsmmc: dma_request_slave_channel() support for DT platforms Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 22:16     ` Tony Lindgren
2012-09-20 22:16       ` Tony Lindgren
2012-09-20 14:43   ` [RFC PATCH 08/13] mmc: omap_hsmmc: limit max_segs with the EDMA DMAC Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-21 17:15     ` S, Venkatraman
2012-09-21 17:15       ` S, Venkatraman
2012-09-21 17:15       ` S, Venkatraman
2012-09-21 17:15       ` S, Venkatraman
     [not found]       ` <CANfBPZ81anOy8fWgKM1PgCtB4V2pEp2x1Qi4x1uPsq7QieMN5g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-21 17:17         ` S, Venkatraman
2012-09-21 17:17           ` S, Venkatraman
2012-09-21 17:17           ` S, Venkatraman
2012-09-21 17:18           ` Felipe Balbi
2012-09-21 17:18             ` Felipe Balbi
2012-09-21 17:18             ` Felipe Balbi
2012-09-21 17:18             ` Felipe Balbi
     [not found]             ` <20120921171840.GB10409-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-09-21 17:33               ` S, Venkatraman
2012-09-21 17:33                 ` S, Venkatraman
2012-09-21 17:33                 ` S, Venkatraman
2012-09-21 18:54             ` Matt Porter
2012-09-21 18:54               ` Matt Porter
2012-09-21 18:54               ` Matt Porter
2012-09-21 18:54               ` Matt Porter
2012-09-21 18:42           ` Matt Porter
2012-09-21 18:42             ` Matt Porter
2012-09-21 18:42             ` Matt Porter
2012-09-21 18:42             ` Matt Porter
2012-09-21 18:47       ` Russell King - ARM Linux
2012-09-21 18:47         ` Russell King - ARM Linux
     [not found]         ` <20120921184721.GD31374-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2012-09-21 19:03           ` Matt Porter
2012-09-21 19:03             ` Matt Porter
2012-09-21 19:03             ` Matt Porter
2012-09-27  9:41         ` Vinod Koul
2012-09-27  9:41           ` Vinod Koul
2012-10-01 16:39           ` Matt Porter
2012-10-01 16:39             ` Matt Porter
2012-10-01 16:39             ` Matt Porter
2012-10-01 16:39             ` Matt Porter
2012-10-02 12:03             ` Vinod Koul
2012-10-02 12:03               ` Vinod Koul
2012-10-02 12:03               ` Vinod Koul
2012-09-20 14:43   ` [RFC PATCH 09/13] mmc: omap_hsmmc: add generic DMA request support to the DT binding Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43   ` [RFC PATCH 10/13] spi: omap2-mcspi: dma_request_slave_channel() support for DT platforms Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 22:09     ` Tony Lindgren
2012-09-20 22:09       ` Tony Lindgren
2012-09-21  8:16       ` Arnd Bergmann
2012-09-21  8:16         ` Arnd Bergmann
2012-09-21 15:42         ` Tony Lindgren
2012-09-21 15:42           ` Tony Lindgren
     [not found]           ` <20120921154247.GZ28835-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2012-09-21 18:37             ` Matt Porter [this message]
2012-09-21 18:37               ` Matt Porter
2012-09-21 18:37               ` Matt Porter
2012-09-27  9:36               ` Vinod Koul
2012-09-27  9:36                 ` Vinod Koul
2012-10-01 16:37                 ` Matt Porter
2012-10-01 16:37                   ` Matt Porter
2012-09-20 14:43   ` [RFC PATCH 11/13] spi: omap2-mcspi: add generic DMA request support to the DT binding Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43   ` [RFC PATCH 12/13] ARM: dts: add am33xx EDMA support Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43   ` [RFC PATCH 13/13] Documentation: add schedule for removing private EDMA API Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 14:43     ` Matt Porter
2012-09-20 15:58     ` Mark Brown
2012-09-20 15:58       ` Mark Brown
2012-09-20 16:05       ` Matt Porter
2012-09-20 16:05         ` Matt Porter
2012-09-21  8:27   ` [RFC PATCH 00/13] DMA Engine support for AM33xx Hebbar, Gururaja
2012-09-21  8:27     ` Hebbar, Gururaja
2012-09-21  8:27     ` Hebbar, Gururaja
2012-09-21 18:22     ` Matt Porter
2012-09-21 18:22       ` Matt Porter
2012-09-21 18:22       ` Matt Porter
2012-09-21 18:22       ` Matt Porter
2012-09-24 11:26       ` Hebbar, Gururaja
2012-09-24 11:26         ` Hebbar, Gururaja
2012-09-24 11:26         ` Hebbar, Gururaja
2012-09-24 11:26         ` Hebbar, Gururaja
2012-09-24 12:05         ` Matt Porter
2012-09-24 12:05           ` Matt Porter
2012-09-26  8:26       ` Hebbar, Gururaja
2012-09-26  8:26         ` Hebbar, Gururaja
2012-09-26  8:26         ` Hebbar, Gururaja
2012-09-26  8:26         ` Hebbar, Gururaja
2012-09-26 13:01         ` Matt Porter
2012-09-26 13:01           ` Matt Porter
2012-09-26 13:01           ` Matt Porter

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=20120921183729.GI16522@beef \
    --to=mporter-l0cymroini0@public.gmane.org \
    --cc=broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org \
    --cc=cjb-2X9k7bc8m7Mdnm+yROfE0A@public.gmane.org \
    --cc=davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=djbw-b10kYP2dOMg@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
    --cc=linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
    --cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org \
    --cc=vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.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.