From: Takashi Iwai <tiwai@suse.de>
To: Mark Brown <broonie@kernel.org>
Cc: alsa-devel@alsa-project.org, Liam Girdwood <lgirdwood@gmail.com>
Subject: [PATCH 068/102] ASoC: da732x: Use SOC_ENUM_SINGLE_DECL()
Date: Tue, 18 Feb 2014 12:38:24 +0100 [thread overview]
Message-ID: <1392723517-12772-41-git-send-email-tiwai@suse.de> (raw)
In-Reply-To: <1392723517-12772-2-git-send-email-tiwai@suse.de>
Just replace with the helper macro. No functional change at all.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
sound/soc/codecs/da732x.c | 160 +++++++++++++++++++++-------------------------
1 file changed, 72 insertions(+), 88 deletions(-)
diff --git a/sound/soc/codecs/da732x.c b/sound/soc/codecs/da732x.c
index f295b6569910..3219fa1f3cf5 100644
--- a/sound/soc/codecs/da732x.c
+++ b/sound/soc/codecs/da732x.c
@@ -269,81 +269,65 @@ static const char *da732x_hpf_voice[] = {
"150Hz", "200Hz", "300Hz", "400Hz"
};
-static const struct soc_enum da732x_dac1_hpf_mode_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_DAC1_HPF, DA732X_HPF_MODE_SHIFT,
- DA732X_HPF_MODE_MAX, da732x_hpf_mode)
-};
-
-static const struct soc_enum da732x_dac2_hpf_mode_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_DAC2_HPF, DA732X_HPF_MODE_SHIFT,
- DA732X_HPF_MODE_MAX, da732x_hpf_mode)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_dac1_hpf_mode_enum,
+ DA732X_REG_DAC1_HPF, DA732X_HPF_MODE_SHIFT,
+ da732x_hpf_mode);
-static const struct soc_enum da732x_dac3_hpf_mode_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_DAC3_HPF, DA732X_HPF_MODE_SHIFT,
- DA732X_HPF_MODE_MAX, da732x_hpf_mode)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_dac2_hpf_mode_enum,
+ DA732X_REG_DAC2_HPF, DA732X_HPF_MODE_SHIFT,
+ da732x_hpf_mode);
-static const struct soc_enum da732x_adc1_hpf_mode_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_ADC1_HPF, DA732X_HPF_MODE_SHIFT,
- DA732X_HPF_MODE_MAX, da732x_hpf_mode)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_dac3_hpf_mode_enum,
+ DA732X_REG_DAC3_HPF, DA732X_HPF_MODE_SHIFT,
+ da732x_hpf_mode);
-static const struct soc_enum da732x_adc2_hpf_mode_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_ADC2_HPF, DA732X_HPF_MODE_SHIFT,
- DA732X_HPF_MODE_MAX, da732x_hpf_mode)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_adc1_hpf_mode_enum,
+ DA732X_REG_ADC1_HPF, DA732X_HPF_MODE_SHIFT,
+ da732x_hpf_mode);
-static const struct soc_enum da732x_dac1_hp_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_DAC1_HPF, DA732X_HPF_MUSIC_SHIFT,
- DA732X_HPF_MUSIC_MAX, da732x_hpf_music)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_adc2_hpf_mode_enum,
+ DA732X_REG_ADC2_HPF, DA732X_HPF_MODE_SHIFT,
+ da732x_hpf_mode);
-static const struct soc_enum da732x_dac2_hp_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_DAC2_HPF, DA732X_HPF_MUSIC_SHIFT,
- DA732X_HPF_MUSIC_MAX, da732x_hpf_music)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_dac1_hp_filter_enum,
+ DA732X_REG_DAC1_HPF, DA732X_HPF_MUSIC_SHIFT,
+ da732x_hpf_music);
-static const struct soc_enum da732x_dac3_hp_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_DAC3_HPF, DA732X_HPF_MUSIC_SHIFT,
- DA732X_HPF_MUSIC_MAX, da732x_hpf_music)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_dac2_hp_filter_enum,
+ DA732X_REG_DAC2_HPF, DA732X_HPF_MUSIC_SHIFT,
+ da732x_hpf_music);
-static const struct soc_enum da732x_adc1_hp_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_ADC1_HPF, DA732X_HPF_MUSIC_SHIFT,
- DA732X_HPF_MUSIC_MAX, da732x_hpf_music)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_dac3_hp_filter_enum,
+ DA732X_REG_DAC3_HPF, DA732X_HPF_MUSIC_SHIFT,
+ da732x_hpf_music);
-static const struct soc_enum da732x_adc2_hp_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_ADC2_HPF, DA732X_HPF_MUSIC_SHIFT,
- DA732X_HPF_MUSIC_MAX, da732x_hpf_music)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_adc1_hp_filter_enum,
+ DA732X_REG_ADC1_HPF, DA732X_HPF_MUSIC_SHIFT,
+ da732x_hpf_music);
-static const struct soc_enum da732x_dac1_voice_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_DAC1_HPF, DA732X_HPF_VOICE_SHIFT,
- DA732X_HPF_VOICE_MAX, da732x_hpf_voice)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_adc2_hp_filter_enum,
+ DA732X_REG_ADC2_HPF, DA732X_HPF_MUSIC_SHIFT,
+ da732x_hpf_music);
-static const struct soc_enum da732x_dac2_voice_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_DAC2_HPF, DA732X_HPF_VOICE_SHIFT,
- DA732X_HPF_VOICE_MAX, da732x_hpf_voice)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_dac1_voice_filter_enum,
+ DA732X_REG_DAC1_HPF, DA732X_HPF_VOICE_SHIFT,
+ da732x_hpf_voice);
-static const struct soc_enum da732x_dac3_voice_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_DAC3_HPF, DA732X_HPF_VOICE_SHIFT,
- DA732X_HPF_VOICE_MAX, da732x_hpf_voice)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_dac2_voice_filter_enum,
+ DA732X_REG_DAC2_HPF, DA732X_HPF_VOICE_SHIFT,
+ da732x_hpf_voice);
-static const struct soc_enum da732x_adc1_voice_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_ADC1_HPF, DA732X_HPF_VOICE_SHIFT,
- DA732X_HPF_VOICE_MAX, da732x_hpf_voice)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_dac3_voice_filter_enum,
+ DA732X_REG_DAC3_HPF, DA732X_HPF_VOICE_SHIFT,
+ da732x_hpf_voice);
-static const struct soc_enum da732x_adc2_voice_filter_enum[] = {
- SOC_ENUM_SINGLE(DA732X_REG_ADC2_HPF, DA732X_HPF_VOICE_SHIFT,
- DA732X_HPF_VOICE_MAX, da732x_hpf_voice)
-};
+static SOC_ENUM_SINGLE_DECL(da732x_adc1_voice_filter_enum,
+ DA732X_REG_ADC1_HPF, DA732X_HPF_VOICE_SHIFT,
+ da732x_hpf_voice);
+static SOC_ENUM_SINGLE_DECL(da732x_adc2_voice_filter_enum,
+ DA732X_REG_ADC2_HPF, DA732X_HPF_VOICE_SHIFT,
+ da732x_hpf_voice);
static int da732x_hpf_set(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
@@ -714,65 +698,65 @@ static const char *enable_text[] = {
};
/* ADC1LMUX */
-static const struct soc_enum adc1l_enum =
- SOC_ENUM_SINGLE(DA732X_REG_INP_MUX, DA732X_ADC1L_MUX_SEL_SHIFT,
- DA732X_ADCL_MUX_MAX, adcl_text);
+static SOC_ENUM_SINGLE_DECL(adc1l_enum,
+ DA732X_REG_INP_MUX, DA732X_ADC1L_MUX_SEL_SHIFT,
+ adcl_text);
static const struct snd_kcontrol_new adc1l_mux =
SOC_DAPM_ENUM("ADC Route", adc1l_enum);
/* ADC1RMUX */
-static const struct soc_enum adc1r_enum =
- SOC_ENUM_SINGLE(DA732X_REG_INP_MUX, DA732X_ADC1R_MUX_SEL_SHIFT,
- DA732X_ADCR_MUX_MAX, adcr_text);
+static SOC_ENUM_SINGLE_DECL(adc1r_enum,
+ DA732X_REG_INP_MUX, DA732X_ADC1R_MUX_SEL_SHIFT,
+ adcr_text);
static const struct snd_kcontrol_new adc1r_mux =
SOC_DAPM_ENUM("ADC Route", adc1r_enum);
/* ADC2LMUX */
-static const struct soc_enum adc2l_enum =
- SOC_ENUM_SINGLE(DA732X_REG_INP_MUX, DA732X_ADC2L_MUX_SEL_SHIFT,
- DA732X_ADCL_MUX_MAX, adcl_text);
+static SOC_ENUM_SINGLE_DECL(adc2l_enum,
+ DA732X_REG_INP_MUX, DA732X_ADC2L_MUX_SEL_SHIFT,
+ adcl_text);
static const struct snd_kcontrol_new adc2l_mux =
SOC_DAPM_ENUM("ADC Route", adc2l_enum);
/* ADC2RMUX */
-static const struct soc_enum adc2r_enum =
- SOC_ENUM_SINGLE(DA732X_REG_INP_MUX, DA732X_ADC2R_MUX_SEL_SHIFT,
- DA732X_ADCR_MUX_MAX, adcr_text);
+static SOC_ENUM_SINGLE_DECL(adc2r_enum,
+ DA732X_REG_INP_MUX, DA732X_ADC2R_MUX_SEL_SHIFT,
+ adcr_text);
static const struct snd_kcontrol_new adc2r_mux =
SOC_DAPM_ENUM("ADC Route", adc2r_enum);
-static const struct soc_enum da732x_hp_left_output =
- SOC_ENUM_SINGLE(DA732X_REG_HPL, DA732X_HP_OUT_DAC_EN_SHIFT,
- DA732X_DAC_EN_MAX, enable_text);
+static SOC_ENUM_SINGLE_DECL(da732x_hp_left_output,
+ DA732X_REG_HPL, DA732X_HP_OUT_DAC_EN_SHIFT,
+ enable_text);
static const struct snd_kcontrol_new hpl_mux =
SOC_DAPM_ENUM("HPL Switch", da732x_hp_left_output);
-static const struct soc_enum da732x_hp_right_output =
- SOC_ENUM_SINGLE(DA732X_REG_HPR, DA732X_HP_OUT_DAC_EN_SHIFT,
- DA732X_DAC_EN_MAX, enable_text);
+static SOC_ENUM_SINGLE_DECL(da732x_hp_right_output,
+ DA732X_REG_HPR, DA732X_HP_OUT_DAC_EN_SHIFT,
+ enable_text);
static const struct snd_kcontrol_new hpr_mux =
SOC_DAPM_ENUM("HPR Switch", da732x_hp_right_output);
-static const struct soc_enum da732x_speaker_output =
- SOC_ENUM_SINGLE(DA732X_REG_LIN3, DA732X_LOUT_DAC_EN_SHIFT,
- DA732X_DAC_EN_MAX, enable_text);
+static SOC_ENUM_SINGLE_DECL(da732x_speaker_output,
+ DA732X_REG_LIN3, DA732X_LOUT_DAC_EN_SHIFT,
+ enable_text);
static const struct snd_kcontrol_new spk_mux =
SOC_DAPM_ENUM("SPK Switch", da732x_speaker_output);
-static const struct soc_enum da732x_lout4_output =
- SOC_ENUM_SINGLE(DA732X_REG_LIN4, DA732X_LOUT_DAC_EN_SHIFT,
- DA732X_DAC_EN_MAX, enable_text);
+static SOC_ENUM_SINGLE_DECL(da732x_lout4_output,
+ DA732X_REG_LIN4, DA732X_LOUT_DAC_EN_SHIFT,
+ enable_text);
static const struct snd_kcontrol_new lout4_mux =
SOC_DAPM_ENUM("LOUT4 Switch", da732x_lout4_output);
-static const struct soc_enum da732x_lout2_output =
- SOC_ENUM_SINGLE(DA732X_REG_LIN2, DA732X_LOUT_DAC_EN_SHIFT,
- DA732X_DAC_EN_MAX, enable_text);
+static SOC_ENUM_SINGLE_DECL(da732x_lout2_output,
+ DA732X_REG_LIN2, DA732X_LOUT_DAC_EN_SHIFT,
+ enable_text);
static const struct snd_kcontrol_new lout2_mux =
SOC_DAPM_ENUM("LOUT2 Switch", da732x_lout2_output);
--
1.8.5.2
next prev parent reply other threads:[~2014-02-18 11:38 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-18 11:37 [PATCH 029/102] ASoC: adau1373: Use SOC_ENUM_SINGLE_DECL() Takashi Iwai
2014-02-18 11:37 ` [PATCH 030/102] ASoC: alc5623: " Takashi Iwai
2014-02-20 2:14 ` Mark Brown
2014-02-18 11:37 ` [PATCH 031/102] ASoC: cs42l52: " Takashi Iwai
2014-02-20 2:15 ` Mark Brown
2014-02-18 11:37 ` [PATCH 032/102] ASoC: da7210: " Takashi Iwai
2014-02-20 2:15 ` Mark Brown
2014-02-18 11:37 ` [PATCH 033/102] ASoC: da7213: " Takashi Iwai
2014-02-20 2:16 ` Mark Brown
2014-02-18 11:37 ` [PATCH 034/102] ASoC: da9055: " Takashi Iwai
2014-02-20 2:20 ` Mark Brown
2014-02-18 11:37 ` [PATCH 035/102] ASoC: lm4857: Use SOC_ENUM_SINGLE_EXT_DECL() Takashi Iwai
2014-02-20 2:23 ` Mark Brown
2014-02-18 11:37 ` [PATCH 036/102] ASoC: da9055: Use SOC_*_ENUM_SINGLE_DECL() Takashi Iwai
2014-02-20 2:25 ` Mark Brown
2014-02-18 11:37 ` [PATCH 037/102] ASoC: max98090: Use SOC_ENUM_SINGLE_DECL() Takashi Iwai
2014-02-20 2:27 ` Mark Brown
2014-02-18 11:37 ` [PATCH 038/102] ASoC: max98095: " Takashi Iwai
2014-02-20 2:27 ` Mark Brown
2014-02-18 11:37 ` [PATCH 039/102] ASoC: mc13783: " Takashi Iwai
2014-02-23 2:20 ` Mark Brown
2014-02-18 11:37 ` [PATCH 040/102] ASoC: stl5000: " Takashi Iwai
2014-02-23 2:21 ` Mark Brown
2014-02-18 11:37 ` [PATCH 041/102] ASoC: sn95031: " Takashi Iwai
2014-02-23 2:22 ` Mark Brown
2014-02-18 11:37 ` [PATCH 042/102] ASoC: stac9766: Use SOC_ENUM_{SINGLE|DOUBLE}_DECL() Takashi Iwai
2014-02-23 2:27 ` Mark Brown
2014-02-18 11:37 ` [PATCH 043/102] ASoC: tlv320aic26: Use SOC_ENUM_SINGLE_DECL() Takashi Iwai
2014-02-23 2:28 ` Mark Brown
2014-02-18 11:38 ` [PATCH 044/102] ASoC: twl4030: " Takashi Iwai
2014-02-23 2:29 ` Mark Brown
2014-02-18 11:38 ` [PATCH 045/102] ASoC: twl6040: " Takashi Iwai
2014-02-23 2:30 ` Mark Brown
2014-02-18 11:38 ` [PATCH 046/102] ASoC: uda1380: " Takashi Iwai
2014-02-23 2:31 ` Mark Brown
2014-02-18 11:38 ` [PATCH 047/102] ASoC: wl1273: Use SOC_ENUM_SINGLE_EXT_DECL() Takashi Iwai
2014-02-23 2:32 ` Mark Brown
2014-02-18 11:38 ` [PATCH 048/102] ASoC: wm2200: Use SOC_ENUM_SINGLE_DECL() Takashi Iwai
2014-02-23 2:33 ` Mark Brown
2014-02-18 11:38 ` [PATCH 049/102] ASoC: wm8523: " Takashi Iwai
2014-02-23 2:33 ` Mark Brown
2014-02-18 11:38 ` [PATCH 050/102] ASoC: wm8731: " Takashi Iwai
2014-02-23 2:34 ` Mark Brown
2014-02-18 11:38 ` [PATCH 051/102] ASoC: wm8737: " Takashi Iwai
2014-02-23 2:36 ` Mark Brown
2014-02-18 11:38 ` [PATCH 052/102] ASoC: wm8903: " Takashi Iwai
2014-02-23 2:36 ` Mark Brown
2014-02-18 11:38 ` [PATCH 053/102] ASoC: wm8904: " Takashi Iwai
2014-02-23 2:37 ` Mark Brown
2014-02-18 11:38 ` [PATCH 054/102] ASoC: wm8940: " Takashi Iwai
2014-02-23 2:37 ` Mark Brown
2014-02-18 11:38 ` [PATCH 055/102] ASoC: wm8961: " Takashi Iwai
2014-02-23 2:38 ` Mark Brown
2014-02-18 11:38 ` [PATCH 056/102] ASoC: wm8962: " Takashi Iwai
2014-02-23 2:40 ` Mark Brown
2014-02-18 11:38 ` [PATCH 057/102] ASoC: wm8974: " Takashi Iwai
2014-02-23 2:42 ` Mark Brown
2014-02-23 2:42 ` Mark Brown
2014-02-18 11:38 ` [PATCH 058/102] ASoC: wm8993: " Takashi Iwai
2014-02-23 2:42 ` Mark Brown
2014-02-18 11:38 ` [PATCH 059/102] ASoC: wm8995: " Takashi Iwai
2014-02-23 2:44 ` Mark Brown
2014-02-18 11:38 ` [PATCH 060/102] ASoC: wm8996: " Takashi Iwai
2014-02-23 2:44 ` Mark Brown
2014-02-18 11:38 ` [PATCH 061/102] ASoC: wm_hubs: " Takashi Iwai
2014-02-23 2:44 ` Mark Brown
2014-02-18 11:38 ` [PATCH 062/102] ASoC: omap: Use SOC_ENUM_SINGLE_EXT_DECL() Takashi Iwai
2014-02-23 2:47 ` Mark Brown
2014-02-18 11:38 ` [PATCH 063/102] ASoC: 88pm860x: Use SOC_ENUM_SINGLE_DECL() Takashi Iwai
2014-02-23 2:46 ` Mark Brown
2014-02-18 11:38 ` [PATCH 064/102] ASoC: ak4641: " Takashi Iwai
2014-02-23 2:48 ` Mark Brown
2014-02-18 11:38 ` [PATCH 065/102] ASoC: ak4671: " Takashi Iwai
2014-02-23 2:49 ` Mark Brown
2014-02-18 11:38 ` [PATCH 066/102] ASoC: alc5632: " Takashi Iwai
2014-02-23 2:56 ` Mark Brown
2014-02-18 11:38 ` [PATCH 067/102] ASoC: wm2200: Use SOC_ENUM_SINGLE_*_DECL() Takashi Iwai
2014-02-23 2:57 ` Mark Brown
2014-02-18 11:38 ` Takashi Iwai [this message]
2014-02-23 2:57 ` [PATCH 068/102] ASoC: da732x: Use SOC_ENUM_SINGLE_DECL() Mark Brown
2014-02-18 11:38 ` [PATCH 069/102] ASoC: ml26124: " Takashi Iwai
2014-02-23 2:57 ` Mark Brown
2014-02-18 11:38 ` [PATCH 070/102] ASoC: tlv320aic23: " Takashi Iwai
2014-02-23 2:57 ` Mark Brown
2014-02-18 11:38 ` [PATCH 071/102] ASoC: wm5100: " Takashi Iwai
2014-02-23 3:03 ` Mark Brown
2014-02-18 11:38 ` [PATCH 072/102] ASoC: wm8955: " Takashi Iwai
2014-02-23 3:04 ` Mark Brown
2014-02-18 11:38 ` [PATCH 073/102] ASoC: wm8988: " Takashi Iwai
2014-02-23 3:04 ` Mark Brown
2014-02-18 11:38 ` [PATCH 074/102] ASoC: wm9081: " Takashi Iwai
2014-02-23 3:04 ` Mark Brown
2014-02-18 11:38 ` [PATCH 075/102] ASoC: wm9705: " Takashi Iwai
2014-02-23 3:05 ` Mark Brown
2014-02-18 11:38 ` [PATCH 076/102] ASoC: ad1836: " Takashi Iwai
2014-02-23 3:05 ` Mark Brown
2014-02-18 11:38 ` [PATCH 077/102] ASoC: cs42l73: " Takashi Iwai
2014-02-23 3:05 ` Mark Brown
2014-02-18 11:38 ` [PATCH 078/102] ASoC: lm49453: " Takashi Iwai
2014-02-23 3:05 ` Mark Brown
2014-02-18 11:38 ` [PATCH 079/102] ASoC: tlv320dac33: Use SOC_ENUM_SINGLE_*_DECL() Takashi Iwai
2014-02-23 3:06 ` Mark Brown
2014-02-18 11:38 ` [PATCH 080/102] ASoC: wm5102: Use ARRAY_SIZE() for SOC_VALUE_ENUM_SINGLE() Takashi Iwai
2014-02-23 3:06 ` Mark Brown
2014-02-18 11:38 ` [PATCH 081/102] ASoC: wm8997: " Takashi Iwai
2014-02-23 3:06 ` Mark Brown
2014-02-18 13:03 ` [PATCH 000/102 chunk#4] Clean up with SOC_ENUM_SINGLE_DECL() & co Takashi Iwai
2014-02-18 13:04 ` [PATCH 028/102] ASoC: ad193x: Use SOC_ENUM_SINGLE_DECL() Takashi Iwai
2014-02-20 1:39 ` Mark Brown
2014-02-20 2:12 ` [PATCH 029/102] ASoC: adau1373: " Mark Brown
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=1392723517-12772-41-git-send-email-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=lgirdwood@gmail.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox