All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Enable HDMI audio on DCE12
@ 2017-10-31 20:28 sunpeng.li-5C7GfCeVMHo
       [not found] ` <1509481738-31306-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: sunpeng.li-5C7GfCeVMHo @ 2017-10-31 20:28 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Leo (Sunpeng) Li, harry.wentland-5C7GfCeVMHo

From: "Leo (Sunpeng) Li" <sunpeng.li@amd.com>

This series properly enables audio on DCE12 by adding the relevant registers,
and reading them into the software structs.

Previously, this was only working because the registers were being ignored.
Now that they're being considered, HDMI audio on DCE12 stopped working due to
missing code that fetched the necessary registers.

Leo (Sunpeng) Li (2):
  drm/amd: Add DCE12 resource strap registers
  drm/amd/display: Read resource_straps from registers for DCE12

 drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c   | 15 +++++++++------
 .../drm/amd/include/asic_reg/vega10/DC/dce_12_0_offset.h  |  4 ++++
 .../drm/amd/include/asic_reg/vega10/DC/dce_12_0_sh_mask.h |  8 ++++++++
 3 files changed, 21 insertions(+), 6 deletions(-)

-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/2] drm/amd: Add DCE12 resource strap registers
       [not found] ` <1509481738-31306-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
@ 2017-10-31 20:28   ` sunpeng.li-5C7GfCeVMHo
  2017-10-31 20:28   ` [PATCH 2/2] drm/amd/display: Read resource_straps from registers for DCE12 sunpeng.li-5C7GfCeVMHo
  1 sibling, 0 replies; 7+ messages in thread
From: sunpeng.li-5C7GfCeVMHo @ 2017-10-31 20:28 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Leo (Sunpeng) Li, harry.wentland-5C7GfCeVMHo

From: "Leo (Sunpeng) Li" <sunpeng.li@amd.com>

We need them for initializing audio properly.

Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_offset.h  | 4 ++++
 drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_sh_mask.h | 8 ++++++++
 2 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_offset.h
index 75b660d..f730d06 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_offset.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_offset.h
@@ -1841,6 +1841,10 @@
 #define mmUNIPHYG_CHANNEL_XBAR_CNTL_BASE_IDX                                                           2
 #define mmDCIO_WRCMD_DELAY                                                                             0x2094
 #define mmDCIO_WRCMD_DELAY_BASE_IDX                                                                    2
+#define mmDC_PINSTRAPS                                                                                 0x2096
+#define mmDC_PINSTRAPS_BASE_IDX                                                                        2
+#define mmCC_DC_MISC_STRAPS                                                                            0x2097
+#define mmCC_DC_MISC_STRAPS_BASE_IDX                                                                   2
 #define mmDC_DVODATA_CONFIG                                                                            0x2098
 #define mmDC_DVODATA_CONFIG_BASE_IDX                                                                   2
 #define mmLVTMA_PWRSEQ_CNTL                                                                            0x2099
diff --git a/drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_sh_mask.h
index d8ad862..6d3162c 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_sh_mask.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/vega10/DC/dce_12_0_sh_mask.h
@@ -2447,6 +2447,14 @@
 //DCCG_CBUS_WRCMD_DELAY
 #define DCCG_CBUS_WRCMD_DELAY__CBUS_PLL_WRCMD_DELAY__SHIFT                                                    0x0
 #define DCCG_CBUS_WRCMD_DELAY__CBUS_PLL_WRCMD_DELAY_MASK                                                      0x0000000FL
+//DC_PINSTRAPS
+#define DC_PINSTRAPS__DC_PINSTRAPS_AUDIO__SHIFT                                                               0xe
+#define DC_PINSTRAPS__DC_PINSTRAPS_AUDIO_MASK                                                                 0x0000C000L
+//CC_DC_MISC_STRAPS
+#define CC_DC_MISC_STRAPS__HDMI_DISABLE__SHIFT                                                                0x6
+#define CC_DC_MISC_STRAPS__AUDIO_STREAM_NUMBER__SHIFT                                                         0x8
+#define CC_DC_MISC_STRAPS__HDMI_DISABLE_MASK                                                                  0x00000040L
+#define CC_DC_MISC_STRAPS__AUDIO_STREAM_NUMBER_MASK                                                           0x00000700L
 //DCCG_DS_DTO_INCR
 #define DCCG_DS_DTO_INCR__DCCG_DS_DTO_INCR__SHIFT                                                             0x0
 #define DCCG_DS_DTO_INCR__DCCG_DS_DTO_INCR_MASK                                                               0xFFFFFFFFL
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] drm/amd/display: Read resource_straps from registers for DCE12
       [not found] ` <1509481738-31306-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
  2017-10-31 20:28   ` [PATCH 1/2] drm/amd: Add DCE12 resource strap registers sunpeng.li-5C7GfCeVMHo
@ 2017-10-31 20:28   ` sunpeng.li-5C7GfCeVMHo
       [not found]     ` <1509481738-31306-3-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
  1 sibling, 1 reply; 7+ messages in thread
From: sunpeng.li-5C7GfCeVMHo @ 2017-10-31 20:28 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Leo (Sunpeng) Li, harry.wentland-5C7GfCeVMHo

From: "Leo (Sunpeng) Li" <sunpeng.li@amd.com>

Now that the registers exist, assign them to the resource_straps struct.

Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com>
---
 drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
index 3ed28a8..5023a03 100644
--- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
@@ -501,12 +501,15 @@ static void read_dce_straps(
 	struct dc_context *ctx,
 	struct resource_straps *straps)
 {
-	/* TODO: Registers are missing */
-	/*REG_GET_2(CC_DC_HDMI_STRAPS,
-			HDMI_DISABLE, &straps->hdmi_disable,
-			AUDIO_STREAM_NUMBER, &straps->audio_stream_number);
-
-	REG_GET(DC_PINSTRAPS, DC_PINSTRAPS_AUDIO, &straps->dc_pinstraps_audio);*/
+	uint32_t reg_val = dm_read_reg_soc15(ctx, mmCC_DC_MISC_STRAPS, 0);
+	straps->audio_stream_number = get_reg_field_value(
+			reg_val, CC_DC_MISC_STRAPS, AUDIO_STREAM_NUMBER);
+	straps->hdmi_disable = get_reg_field_value(
+				reg_val, CC_DC_MISC_STRAPS, HDMI_DISABLE);
+
+	reg_val = dm_read_reg_soc15(ctx, mmDC_PINSTRAPS, 0);
+	straps->dc_pinstraps_audio = get_reg_field_value(
+			reg_val, DC_PINSTRAPS, DC_PINSTRAPS_AUDIO);
 }
 
 static struct audio *create_audio(
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] drm/amd/display: Read resource_straps from registers for DCE12
       [not found]     ` <1509481738-31306-3-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
@ 2017-10-31 20:46       ` Harry Wentland
  2017-10-31 20:58       ` [PATCH V2 " sunpeng.li-5C7GfCeVMHo
  2017-11-01 14:24       ` [PATCH V3 " sunpeng.li-5C7GfCeVMHo
  2 siblings, 0 replies; 7+ messages in thread
From: Harry Wentland @ 2017-10-31 20:46 UTC (permalink / raw)
  To: sunpeng.li-5C7GfCeVMHo, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

On 2017-10-31 04:28 PM, sunpeng.li@amd.com wrote:
> From: "Leo (Sunpeng) Li" <sunpeng.li@amd.com>
> 
> Now that the registers exist, assign them to the resource_straps struct.
> 
> Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com>
> ---
>  drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
> index 3ed28a8..5023a03 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
> @@ -501,12 +501,15 @@ static void read_dce_straps(
>  	struct dc_context *ctx,
>  	struct resource_straps *straps)
>  {
> -	/* TODO: Registers are missing */
> -	/*REG_GET_2(CC_DC_HDMI_STRAPS,
> -			HDMI_DISABLE, &straps->hdmi_disable,
> -			AUDIO_STREAM_NUMBER, &straps->audio_stream_number);
> -
> -	REG_GET(DC_PINSTRAPS, DC_PINSTRAPS_AUDIO, &straps->dc_pinstraps_audio);*/
> +	uint32_t reg_val = dm_read_reg_soc15(ctx, mmCC_DC_MISC_STRAPS, 0);
> +	straps->audio_stream_number = get_reg_field_value(
> +			reg_val, CC_DC_MISC_STRAPS, AUDIO_STREAM_NUMBER);
> +	straps->hdmi_disable = get_reg_field_value(
> +				reg_val, CC_DC_MISC_STRAPS, HDMI_DISABLE);

The indentation looks wrong. I know we have the same in other parts of this code but let's try to consider this for new code.

In particular reg_val should be on the same line as the function call, the rest should be on new lines, aligned with tabs and spaces to reg_val.

> +
> +	reg_val = dm_read_reg_soc15(ctx, mmDC_PINSTRAPS, 0);
> +	straps->dc_pinstraps_audio = get_reg_field_value(
> +			reg_val, DC_PINSTRAPS, DC_PINSTRAPS_AUDIO);

Nitpick on indentation here as well.

With those nitpicks addressed the series is
Reviewed-by: Harry Wentland <harry.wentland@amd.com>

Harry

>  }
>  
>  static struct audio *create_audio(
> 
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH V2 2/2] drm/amd/display: Read resource_straps from registers for DCE12
       [not found]     ` <1509481738-31306-3-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
  2017-10-31 20:46       ` Harry Wentland
@ 2017-10-31 20:58       ` sunpeng.li-5C7GfCeVMHo
  2017-11-01 14:24       ` [PATCH V3 " sunpeng.li-5C7GfCeVMHo
  2 siblings, 0 replies; 7+ messages in thread
From: sunpeng.li-5C7GfCeVMHo @ 2017-10-31 20:58 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Leo (Sunpeng) Li, harry.wentland-5C7GfCeVMHo

From: "Leo (Sunpeng) Li" <sunpeng.li@amd.com>

Now that the registers exist, assign them to the resource_straps struct.

v2: Fix indentation

Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com>
---
 .../gpu/drm/amd/display/dc/dce120/dce120_resource.c    | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
index 3ed28a8..15509a8 100644
--- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
@@ -501,12 +501,18 @@ static void read_dce_straps(
 	struct dc_context *ctx,
 	struct resource_straps *straps)
 {
-	/* TODO: Registers are missing */
-	/*REG_GET_2(CC_DC_HDMI_STRAPS,
-			HDMI_DISABLE, &straps->hdmi_disable,
-			AUDIO_STREAM_NUMBER, &straps->audio_stream_number);
-
-	REG_GET(DC_PINSTRAPS, DC_PINSTRAPS_AUDIO, &straps->dc_pinstraps_audio);*/
+	uint32_t reg_val = dm_read_reg_soc15(ctx, mmCC_DC_MISC_STRAPS, 0);
+	straps->audio_stream_number = get_reg_field_value(reg_val, 
+							  CC_DC_MISC_STRAPS,
+							  AUDIO_STREAM_NUMBER);
+	straps->hdmi_disable = get_reg_field_value(reg_val,
+						   CC_DC_MISC_STRAPS,
+						   HDMI_DISABLE);
+
+	reg_val = dm_read_reg_soc15(ctx, mmDC_PINSTRAPS, 0);
+	straps->dc_pinstraps_audio = get_reg_field_value(reg_val,
+							 DC_PINSTRAPS,
+							 DC_PINSTRAPS_AUDIO);
 }
 
 static struct audio *create_audio(
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH V3 2/2] drm/amd/display: Read resource_straps from registers for DCE12
       [not found]     ` <1509481738-31306-3-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
  2017-10-31 20:46       ` Harry Wentland
  2017-10-31 20:58       ` [PATCH V2 " sunpeng.li-5C7GfCeVMHo
@ 2017-11-01 14:24       ` sunpeng.li-5C7GfCeVMHo
       [not found]         ` <1509546291-14336-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
  2 siblings, 1 reply; 7+ messages in thread
From: sunpeng.li-5C7GfCeVMHo @ 2017-11-01 14:24 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Leo (Sunpeng) Li, harry.wentland-5C7GfCeVMHo

From: "Leo (Sunpeng) Li" <sunpeng.li@amd.com>

Now that the registers exist, assign them to the resource_straps struct.

v2: Fix indentation
v3: Fix trailing whitespace and checkpatch warnings.

Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com>
---
 .../gpu/drm/amd/display/dc/dce120/dce120_resource.c   | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
index 3ed28a8..5c48c22 100644
--- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
@@ -501,12 +501,19 @@ static void read_dce_straps(
 	struct dc_context *ctx,
 	struct resource_straps *straps)
 {
-	/* TODO: Registers are missing */
-	/*REG_GET_2(CC_DC_HDMI_STRAPS,
-			HDMI_DISABLE, &straps->hdmi_disable,
-			AUDIO_STREAM_NUMBER, &straps->audio_stream_number);
-
-	REG_GET(DC_PINSTRAPS, DC_PINSTRAPS_AUDIO, &straps->dc_pinstraps_audio);*/
+	uint32_t reg_val = dm_read_reg_soc15(ctx, mmCC_DC_MISC_STRAPS, 0);
+
+	straps->audio_stream_number = get_reg_field_value(reg_val,
+							  CC_DC_MISC_STRAPS,
+							  AUDIO_STREAM_NUMBER);
+	straps->hdmi_disable = get_reg_field_value(reg_val,
+						   CC_DC_MISC_STRAPS,
+						   HDMI_DISABLE);
+
+	reg_val = dm_read_reg_soc15(ctx, mmDC_PINSTRAPS, 0);
+	straps->dc_pinstraps_audio = get_reg_field_value(reg_val,
+							 DC_PINSTRAPS,
+							 DC_PINSTRAPS_AUDIO);
 }
 
 static struct audio *create_audio(
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH V3 2/2] drm/amd/display: Read resource_straps from registers for DCE12
       [not found]         ` <1509546291-14336-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
@ 2017-11-01 14:49           ` Harry Wentland
  0 siblings, 0 replies; 7+ messages in thread
From: Harry Wentland @ 2017-11-01 14:49 UTC (permalink / raw)
  To: sunpeng.li-5C7GfCeVMHo, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

On 2017-11-01 10:24 AM, sunpeng.li@amd.com wrote:
> From: "Leo (Sunpeng) Li" <sunpeng.li@amd.com>
> 
> Now that the registers exist, assign them to the resource_straps struct.
> 
> v2: Fix indentation
> v3: Fix trailing whitespace and checkpatch warnings.
> 
> Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com>

Series is
Reviewed-by: Harry Wentland <harry.wentland@amd.com>

Harry

> ---
>  .../gpu/drm/amd/display/dc/dce120/dce120_resource.c   | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
> index 3ed28a8..5c48c22 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
> @@ -501,12 +501,19 @@ static void read_dce_straps(
>  	struct dc_context *ctx,
>  	struct resource_straps *straps)
>  {
> -	/* TODO: Registers are missing */
> -	/*REG_GET_2(CC_DC_HDMI_STRAPS,
> -			HDMI_DISABLE, &straps->hdmi_disable,
> -			AUDIO_STREAM_NUMBER, &straps->audio_stream_number);
> -
> -	REG_GET(DC_PINSTRAPS, DC_PINSTRAPS_AUDIO, &straps->dc_pinstraps_audio);*/
> +	uint32_t reg_val = dm_read_reg_soc15(ctx, mmCC_DC_MISC_STRAPS, 0);
> +
> +	straps->audio_stream_number = get_reg_field_value(reg_val,
> +							  CC_DC_MISC_STRAPS,
> +							  AUDIO_STREAM_NUMBER);
> +	straps->hdmi_disable = get_reg_field_value(reg_val,
> +						   CC_DC_MISC_STRAPS,
> +						   HDMI_DISABLE);
> +
> +	reg_val = dm_read_reg_soc15(ctx, mmDC_PINSTRAPS, 0);
> +	straps->dc_pinstraps_audio = get_reg_field_value(reg_val,
> +							 DC_PINSTRAPS,
> +							 DC_PINSTRAPS_AUDIO);
>  }
>  
>  static struct audio *create_audio(
> 
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-11-01 14:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-31 20:28 [PATCH 0/2] Enable HDMI audio on DCE12 sunpeng.li-5C7GfCeVMHo
     [not found] ` <1509481738-31306-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
2017-10-31 20:28   ` [PATCH 1/2] drm/amd: Add DCE12 resource strap registers sunpeng.li-5C7GfCeVMHo
2017-10-31 20:28   ` [PATCH 2/2] drm/amd/display: Read resource_straps from registers for DCE12 sunpeng.li-5C7GfCeVMHo
     [not found]     ` <1509481738-31306-3-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
2017-10-31 20:46       ` Harry Wentland
2017-10-31 20:58       ` [PATCH V2 " sunpeng.li-5C7GfCeVMHo
2017-11-01 14:24       ` [PATCH V3 " sunpeng.li-5C7GfCeVMHo
     [not found]         ` <1509546291-14336-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org>
2017-11-01 14:49           ` Harry Wentland

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.