All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] arm64: dts: ti: k3-am64-main: Add GPMC & ELM nodes
@ 2022-02-04 11:15 ` Roger Quadros
  0 siblings, 0 replies; 10+ messages in thread
From: Roger Quadros @ 2022-02-04 11:15 UTC (permalink / raw)
  To: nm
  Cc: kishon, vigneshr, linux-arm-kernel, devicetree, linux-kernel,
	Roger Quadros

Hi Nishanth,

This series adds GPMC and ELM controller device tree nodes to
AM64 SoC's dtsi file.

Changelog:
v3
- Rebased to v5.17-rc1

v2
- Fix register sizes for GPMC node.
- Disable GPMC and ELM nodes in board files. They will be enabled in
NAND card device tree overlay.

cheers,
-roger

Roger Quadros (2):
  arm64: dts: ti: k3-am64-main: Add GPMC memory controller node
  arm64: dts: ti: k3-am64-main: Add ELM (Error Location Module) node

 arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 28 ++++++++++++++++++++++++
 arch/arm64/boot/dts/ti/k3-am642-evm.dts  |  8 +++++++
 arch/arm64/boot/dts/ti/k3-am642-sk.dts   |  8 +++++++
 3 files changed, 44 insertions(+)

-- 
2.17.1


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

* [PATCH v3 0/2] arm64: dts: ti: k3-am64-main: Add GPMC & ELM nodes
@ 2022-02-04 11:15 ` Roger Quadros
  0 siblings, 0 replies; 10+ messages in thread
From: Roger Quadros @ 2022-02-04 11:15 UTC (permalink / raw)
  To: nm
  Cc: kishon, vigneshr, linux-arm-kernel, devicetree, linux-kernel,
	Roger Quadros

Hi Nishanth,

This series adds GPMC and ELM controller device tree nodes to
AM64 SoC's dtsi file.

Changelog:
v3
- Rebased to v5.17-rc1

v2
- Fix register sizes for GPMC node.
- Disable GPMC and ELM nodes in board files. They will be enabled in
NAND card device tree overlay.

cheers,
-roger

Roger Quadros (2):
  arm64: dts: ti: k3-am64-main: Add GPMC memory controller node
  arm64: dts: ti: k3-am64-main: Add ELM (Error Location Module) node

 arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 28 ++++++++++++++++++++++++
 arch/arm64/boot/dts/ti/k3-am642-evm.dts  |  8 +++++++
 arch/arm64/boot/dts/ti/k3-am642-sk.dts   |  8 +++++++
 3 files changed, 44 insertions(+)

-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v3 1/2] arm64: dts: ti: k3-am64-main: Add GPMC memory controller node
  2022-02-04 11:15 ` Roger Quadros
@ 2022-02-04 11:15   ` Roger Quadros
  -1 siblings, 0 replies; 10+ messages in thread
From: Roger Quadros @ 2022-02-04 11:15 UTC (permalink / raw)
  To: nm
  Cc: kishon, vigneshr, linux-arm-kernel, devicetree, linux-kernel,
	Roger Quadros

The GPMC is a unified memory controller dedicated for interfacing
with external memory devices like
  - Asynchronous SRAM-like memories and ASICs
  - Asynchronous, synchronous, and page mode burst NOR flash
  - NAND flash
  - Pseudo-SRAM devices

Signed-off-by: Roger Quadros <rogerq@kernel.org>
---
 arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 19 +++++++++++++++++++
 arch/arm64/boot/dts/ti/k3-am642-evm.dts  |  4 ++++
 arch/arm64/boot/dts/ti/k3-am642-sk.dts   |  4 ++++
 3 files changed, 27 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
index 012011dc619a..94ea5c304d73 100644
--- a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
@@ -1289,4 +1289,23 @@
 		interrupt-names = "int0", "int1";
 		bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>;
 	};
+
+	gpmc0: memory-controller@3b000000 {
+		compatible = "ti,am64-gpmc";
+		power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
+		clocks = <&k3_clks 80 0>;
+		clock-names = "fck";
+		reg = <0x00 0x03b000000 0x00 0x400>,
+		      <0x00 0x050000000 0x00 0x8000000>;
+		reg-names = "cfg", "data";
+		interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+		gpmc,num-cs = <3>;
+		gpmc,num-waitpins = <2>;
+		#address-cells = <2>;
+		#size-cells = <1>;
+		interrupt-controller;
+		#interrupt-cells = <2>;
+		gpio-controller;
+		#gpio-cells = <2>;
+	};
 };
diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm.dts b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
index e94ae178b1ae..6bd0c0876865 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
@@ -678,3 +678,7 @@
 	pinctrl-0 = <&main_mcan1_pins_default>;
 	phys = <&transceiver2>;
 };
+
+&gpmc0 {
+	status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am642-sk.dts b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
index a9785bec12df..40706aa61514 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
@@ -533,3 +533,7 @@
 &main_mcan1 {
 	status = "disabled";
 };
+
+&gpmc0 {
+	status = "disabled";
+};
-- 
2.17.1


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

* [PATCH v3 1/2] arm64: dts: ti: k3-am64-main: Add GPMC memory controller node
@ 2022-02-04 11:15   ` Roger Quadros
  0 siblings, 0 replies; 10+ messages in thread
From: Roger Quadros @ 2022-02-04 11:15 UTC (permalink / raw)
  To: nm
  Cc: kishon, vigneshr, linux-arm-kernel, devicetree, linux-kernel,
	Roger Quadros

The GPMC is a unified memory controller dedicated for interfacing
with external memory devices like
  - Asynchronous SRAM-like memories and ASICs
  - Asynchronous, synchronous, and page mode burst NOR flash
  - NAND flash
  - Pseudo-SRAM devices

Signed-off-by: Roger Quadros <rogerq@kernel.org>
---
 arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 19 +++++++++++++++++++
 arch/arm64/boot/dts/ti/k3-am642-evm.dts  |  4 ++++
 arch/arm64/boot/dts/ti/k3-am642-sk.dts   |  4 ++++
 3 files changed, 27 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
index 012011dc619a..94ea5c304d73 100644
--- a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
@@ -1289,4 +1289,23 @@
 		interrupt-names = "int0", "int1";
 		bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>;
 	};
+
+	gpmc0: memory-controller@3b000000 {
+		compatible = "ti,am64-gpmc";
+		power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
+		clocks = <&k3_clks 80 0>;
+		clock-names = "fck";
+		reg = <0x00 0x03b000000 0x00 0x400>,
+		      <0x00 0x050000000 0x00 0x8000000>;
+		reg-names = "cfg", "data";
+		interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+		gpmc,num-cs = <3>;
+		gpmc,num-waitpins = <2>;
+		#address-cells = <2>;
+		#size-cells = <1>;
+		interrupt-controller;
+		#interrupt-cells = <2>;
+		gpio-controller;
+		#gpio-cells = <2>;
+	};
 };
diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm.dts b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
index e94ae178b1ae..6bd0c0876865 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
@@ -678,3 +678,7 @@
 	pinctrl-0 = <&main_mcan1_pins_default>;
 	phys = <&transceiver2>;
 };
+
+&gpmc0 {
+	status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am642-sk.dts b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
index a9785bec12df..40706aa61514 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
@@ -533,3 +533,7 @@
 &main_mcan1 {
 	status = "disabled";
 };
+
+&gpmc0 {
+	status = "disabled";
+};
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v3 2/2] arm64: dts: ti: k3-am64-main: Add ELM (Error Location Module) node
  2022-02-04 11:15 ` Roger Quadros
@ 2022-02-04 11:15   ` Roger Quadros
  -1 siblings, 0 replies; 10+ messages in thread
From: Roger Quadros @ 2022-02-04 11:15 UTC (permalink / raw)
  To: nm
  Cc: kishon, vigneshr, linux-arm-kernel, devicetree, linux-kernel,
	Roger Quadros

The ELM module is used for GPMC NAND accesses for detecting
and correcting errors during reads due to NAND bitflips errors.

4-, 8-, and 16-bit error-correction levels are supported using
the BCH (Bose-ChaudhurI-Hocquenghem) algorithm.

Signed-off-by: Roger Quadros <rogerq@kernel.org>
---
 arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 9 +++++++++
 arch/arm64/boot/dts/ti/k3-am642-evm.dts  | 4 ++++
 arch/arm64/boot/dts/ti/k3-am642-sk.dts   | 4 ++++
 3 files changed, 17 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
index 94ea5c304d73..b17620e999a5 100644
--- a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
@@ -1308,4 +1308,13 @@
 		gpio-controller;
 		#gpio-cells = <2>;
 	};
+
+	elm0: ecc@25010000 {
+		compatible = "ti,am3352-elm";
+		reg = <0x00 0x25010000 0x00 0x2000>;
+		interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
+		power-domains = <&k3_pds 54 TI_SCI_PD_EXCLUSIVE>;
+		clocks = <&k3_clks 54 0>;
+		clock-names = "fck";
+	};
 };
diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm.dts b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
index 6bd0c0876865..0252218282c2 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
@@ -682,3 +682,7 @@
 &gpmc0 {
 	status = "disabled";
 };
+
+&elm0 {
+	status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am642-sk.dts b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
index 40706aa61514..1d91b7ec8912 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
@@ -537,3 +537,7 @@
 &gpmc0 {
 	status = "disabled";
 };
+
+&elm0 {
+	status = "disabled";
+};
-- 
2.17.1


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

* [PATCH v3 2/2] arm64: dts: ti: k3-am64-main: Add ELM (Error Location Module) node
@ 2022-02-04 11:15   ` Roger Quadros
  0 siblings, 0 replies; 10+ messages in thread
From: Roger Quadros @ 2022-02-04 11:15 UTC (permalink / raw)
  To: nm
  Cc: kishon, vigneshr, linux-arm-kernel, devicetree, linux-kernel,
	Roger Quadros

The ELM module is used for GPMC NAND accesses for detecting
and correcting errors during reads due to NAND bitflips errors.

4-, 8-, and 16-bit error-correction levels are supported using
the BCH (Bose-ChaudhurI-Hocquenghem) algorithm.

Signed-off-by: Roger Quadros <rogerq@kernel.org>
---
 arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 9 +++++++++
 arch/arm64/boot/dts/ti/k3-am642-evm.dts  | 4 ++++
 arch/arm64/boot/dts/ti/k3-am642-sk.dts   | 4 ++++
 3 files changed, 17 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
index 94ea5c304d73..b17620e999a5 100644
--- a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
@@ -1308,4 +1308,13 @@
 		gpio-controller;
 		#gpio-cells = <2>;
 	};
+
+	elm0: ecc@25010000 {
+		compatible = "ti,am3352-elm";
+		reg = <0x00 0x25010000 0x00 0x2000>;
+		interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
+		power-domains = <&k3_pds 54 TI_SCI_PD_EXCLUSIVE>;
+		clocks = <&k3_clks 54 0>;
+		clock-names = "fck";
+	};
 };
diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm.dts b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
index 6bd0c0876865..0252218282c2 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
@@ -682,3 +682,7 @@
 &gpmc0 {
 	status = "disabled";
 };
+
+&elm0 {
+	status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am642-sk.dts b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
index 40706aa61514..1d91b7ec8912 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
@@ -537,3 +537,7 @@
 &gpmc0 {
 	status = "disabled";
 };
+
+&elm0 {
+	status = "disabled";
+};
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH v3 1/2] arm64: dts: ti: k3-am64-main: Add GPMC memory controller node
  2022-02-04 11:15   ` Roger Quadros
@ 2022-02-28  7:47     ` Vignesh Raghavendra
  -1 siblings, 0 replies; 10+ messages in thread
From: Vignesh Raghavendra @ 2022-02-28  7:47 UTC (permalink / raw)
  To: Roger Quadros, nm; +Cc: kishon, linux-arm-kernel, devicetree, linux-kernel



On 04/02/22 4:45 pm, Roger Quadros wrote:
> The GPMC is a unified memory controller dedicated for interfacing
> with external memory devices like
>   - Asynchronous SRAM-like memories and ASICs
>   - Asynchronous, synchronous, and page mode burst NOR flash
>   - NAND flash
>   - Pseudo-SRAM devices
> 
> Signed-off-by: Roger Quadros <rogerq@kernel.org>
> ---
>  arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 19 +++++++++++++++++++
>  arch/arm64/boot/dts/ti/k3-am642-evm.dts  |  4 ++++
>  arch/arm64/boot/dts/ti/k3-am642-sk.dts   |  4 ++++
>  3 files changed, 27 insertions(+)
> 

Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>

[...]

Regards
Vignesh

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

* Re: [PATCH v3 1/2] arm64: dts: ti: k3-am64-main: Add GPMC memory controller node
@ 2022-02-28  7:47     ` Vignesh Raghavendra
  0 siblings, 0 replies; 10+ messages in thread
From: Vignesh Raghavendra @ 2022-02-28  7:47 UTC (permalink / raw)
  To: Roger Quadros, nm; +Cc: kishon, linux-arm-kernel, devicetree, linux-kernel



On 04/02/22 4:45 pm, Roger Quadros wrote:
> The GPMC is a unified memory controller dedicated for interfacing
> with external memory devices like
>   - Asynchronous SRAM-like memories and ASICs
>   - Asynchronous, synchronous, and page mode burst NOR flash
>   - NAND flash
>   - Pseudo-SRAM devices
> 
> Signed-off-by: Roger Quadros <rogerq@kernel.org>
> ---
>  arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 19 +++++++++++++++++++
>  arch/arm64/boot/dts/ti/k3-am642-evm.dts  |  4 ++++
>  arch/arm64/boot/dts/ti/k3-am642-sk.dts   |  4 ++++
>  3 files changed, 27 insertions(+)
> 

Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>

[...]

Regards
Vignesh

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH v3 2/2] arm64: dts: ti: k3-am64-main: Add ELM (Error Location Module) node
  2022-02-04 11:15   ` Roger Quadros
@ 2022-02-28  7:49     ` Vignesh Raghavendra
  -1 siblings, 0 replies; 10+ messages in thread
From: Vignesh Raghavendra @ 2022-02-28  7:49 UTC (permalink / raw)
  To: Roger Quadros, nm; +Cc: kishon, linux-arm-kernel, devicetree, linux-kernel



On 04/02/22 4:45 pm, Roger Quadros wrote:
> The ELM module is used for GPMC NAND accesses for detecting
> and correcting errors during reads due to NAND bitflips errors.

[...]

> 
> diff --git a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
> index 94ea5c304d73..b17620e999a5 100644
> --- a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
> @@ -1308,4 +1308,13 @@
>  		gpio-controller;
>  		#gpio-cells = <2>;
>  	};
> +
> +	elm0: ecc@25010000 {
> +		compatible = "ti,am3352-elm";

Sorry, this binding needs to move to YAML before patch can be applied.

> +		reg = <0x00 0x25010000 0x00 0x2000>;
> +		interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
> +		power-domains = <&k3_pds 54 TI_SCI_PD_EXCLUSIVE>;
> +		clocks = <&k3_clks 54 0>;
> +		clock-names = "fck";
> +	};
>  };
[...]


Regards
Vignesh

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

* Re: [PATCH v3 2/2] arm64: dts: ti: k3-am64-main: Add ELM (Error Location Module) node
@ 2022-02-28  7:49     ` Vignesh Raghavendra
  0 siblings, 0 replies; 10+ messages in thread
From: Vignesh Raghavendra @ 2022-02-28  7:49 UTC (permalink / raw)
  To: Roger Quadros, nm; +Cc: kishon, linux-arm-kernel, devicetree, linux-kernel



On 04/02/22 4:45 pm, Roger Quadros wrote:
> The ELM module is used for GPMC NAND accesses for detecting
> and correcting errors during reads due to NAND bitflips errors.

[...]

> 
> diff --git a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
> index 94ea5c304d73..b17620e999a5 100644
> --- a/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am64-main.dtsi
> @@ -1308,4 +1308,13 @@
>  		gpio-controller;
>  		#gpio-cells = <2>;
>  	};
> +
> +	elm0: ecc@25010000 {
> +		compatible = "ti,am3352-elm";

Sorry, this binding needs to move to YAML before patch can be applied.

> +		reg = <0x00 0x25010000 0x00 0x2000>;
> +		interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
> +		power-domains = <&k3_pds 54 TI_SCI_PD_EXCLUSIVE>;
> +		clocks = <&k3_clks 54 0>;
> +		clock-names = "fck";
> +	};
>  };
[...]


Regards
Vignesh

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2022-02-28  7:51 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-04 11:15 [PATCH v3 0/2] arm64: dts: ti: k3-am64-main: Add GPMC & ELM nodes Roger Quadros
2022-02-04 11:15 ` Roger Quadros
2022-02-04 11:15 ` [PATCH v3 1/2] arm64: dts: ti: k3-am64-main: Add GPMC memory controller node Roger Quadros
2022-02-04 11:15   ` Roger Quadros
2022-02-28  7:47   ` Vignesh Raghavendra
2022-02-28  7:47     ` Vignesh Raghavendra
2022-02-04 11:15 ` [PATCH v3 2/2] arm64: dts: ti: k3-am64-main: Add ELM (Error Location Module) node Roger Quadros
2022-02-04 11:15   ` Roger Quadros
2022-02-28  7:49   ` Vignesh Raghavendra
2022-02-28  7:49     ` Vignesh Raghavendra

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.