* [PATCH 0/2] riscv: dts: anlogic: dr1v90: fix clock dtbs_check errors
@ 2026-10-02 6:06 Junhui Liu
2026-10-02 6:07 ` [PATCH 1/2] dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional Junhui Liu
2026-10-02 6:07 ` [PATCH 2/2] riscv: dts: anlogic: drop unused DR1V90 external clocks Junhui Liu
0 siblings, 2 replies; 7+ messages in thread
From: Junhui Liu @ 2026-10-02 6:06 UTC (permalink / raw)
To: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti
Cc: Brian Masney, Conor Dooley, Yixun Lan, linux-clk, devicetree,
linux-kernel, linux-riscv, Junhui Liu
The external CAN and watchdog clocks are optional board-level inputs to
the DR1V90 CRU. The current binding requires both inputs, causing the
common SoC device tree to provide fixed-clock placeholders without the
required clock-frequency property. Consequently, dtbs_check reports:
arch/riscv/boot/dts/anlogic/dr1v90-mlkpai-fs01.dtb: clock-ext-can (fixed-clock): 'clock-frequency' is a required property
from schema $id: http://devicetree.org/schemas/clock/fixed-clock.yaml
arch/riscv/boot/dts/anlogic/dr1v90-mlkpai-fs01.dtb: clock-ext-wdt (fixed-clock): 'clock-frequency' is a required property
from schema $id: http://devicetree.org/schemas/clock/fixed-clock.yaml
Make the external clocks optional in the binding, then remove the unused
placeholders from the common device tree. Both muxes select their internal
clock parents after reset, so boards without the external inputs continue
to operate normally. Boards that route either input can describe the
corresponding clock in their board-level device tree.
This based on linux-next (next-20261001).
Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
---
Junhui Liu (2):
dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional
riscv: dts: anlogic: drop unused DR1V90 external clocks
.../bindings/clock/anlogic,dr1v90-cru.yaml | 24 +++++++++++++++-------
arch/riscv/boot/dts/anlogic/dr1v90.dtsi | 16 ++-------------
2 files changed, 19 insertions(+), 21 deletions(-)
---
base-commit: 9f24d789f03b22941b905ded43cb5ff8eea9ce62
change-id: 20261002-dr1v90-cru-dt-fix-0463cfa1a104
Best regards,
--
Junhui Liu <junhui.liu@pigmoral.tech>
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 1/2] dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional
2026-10-02 6:06 [PATCH 0/2] riscv: dts: anlogic: dr1v90: fix clock dtbs_check errors Junhui Liu
@ 2026-10-02 6:07 ` Junhui Liu
2026-10-02 7:17 ` Conor Dooley
2026-10-02 6:07 ` [PATCH 2/2] riscv: dts: anlogic: drop unused DR1V90 external clocks Junhui Liu
1 sibling, 1 reply; 7+ messages in thread
From: Junhui Liu @ 2026-10-02 6:07 UTC (permalink / raw)
To: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti
Cc: Brian Masney, Conor Dooley, Yixun Lan, linux-clk, devicetree,
linux-kernel, linux-riscv, Junhui Liu
The external CAN and WDT clocks are optional inputs routed from the
board; the main oscillator is the only required clock. The binding
currently requires all three clocks, which forces device trees to add
stub fixed-clock nodes without a clock-frequency to satisfy it.
Allow the clocks and clock-names properties to contain just "osc",
optionally followed by either or both of "can_ext" and "wdt_ext".
Fixes: 155d900e4c7d ("dt-bindings: clock: add Anlogic DR1V90 CRU")
Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
---
.../bindings/clock/anlogic,dr1v90-cru.yaml | 24 +++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml b/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml
index 11a92588e494..8bd7b78a58d8 100644
--- a/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml
+++ b/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml
@@ -17,16 +17,26 @@ properties:
maxItems: 1
clocks:
- items:
- - description: Main oscillator
- - description: External CAN clock
- - description: External WDT clock
+ minItems: 1
+ maxItems: 3
+ description:
+ The main oscillator is always required. An external CAN clock and an
+ external WDT clock may additionally be provided if the board routes these
+ clocks to the SoC.
clock-names:
- items:
+ oneOf:
- const: osc
- - const: can_ext
- - const: wdt_ext
+ - items:
+ - const: osc
+ - const: can_ext
+ - items:
+ - const: osc
+ - const: wdt_ext
+ - items:
+ - const: osc
+ - const: can_ext
+ - const: wdt_ext
"#clock-cells":
const: 1
--
2.55.0
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 1/2] dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional
2026-10-02 6:07 ` [PATCH 1/2] dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional Junhui Liu
@ 2026-10-02 7:17 ` Conor Dooley
2026-10-02 15:55 ` Junhui Liu
0 siblings, 1 reply; 7+ messages in thread
From: Conor Dooley @ 2026-10-02 7:17 UTC (permalink / raw)
To: Junhui Liu
Cc: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti, Brian Masney,
Yixun Lan, linux-clk, devicetree, linux-kernel, linux-riscv
[-- Attachment #1: Type: text/plain, Size: 2244 bytes --]
On Fri, Oct 02, 2026 at 02:07:00PM +0800, Junhui Liu wrote:
> The external CAN and WDT clocks are optional inputs routed from the
> board; the main oscillator is the only required clock. The binding
> currently requires all three clocks, which forces device trees to add
> stub fixed-clock nodes without a clock-frequency to satisfy it.
>
> Allow the clocks and clock-names properties to contain just "osc",
> optionally followed by either or both of "can_ext" and "wdt_ext".
>
> Fixes: 155d900e4c7d ("dt-bindings: clock: add Anlogic DR1V90 CRU")
> Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
> ---
> .../bindings/clock/anlogic,dr1v90-cru.yaml | 24 +++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml b/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml
> index 11a92588e494..8bd7b78a58d8 100644
> --- a/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml
> +++ b/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml
> @@ -17,16 +17,26 @@ properties:
> maxItems: 1
>
> clocks:
> - items:
> - - description: Main oscillator
> - - description: External CAN clock
> - - description: External WDT clock
> + minItems: 1
> + maxItems: 3
> + description:
> + The main oscillator is always required. An external CAN clock and an
> + external WDT clock may additionally be provided if the board routes these
> + clocks to the SoC.
>
> clock-names:
> - items:
> + oneOf:
> - const: osc
> - - const: can_ext
> - - const: wdt_ext
> + - items:
> + - const: osc
> + - const: can_ext
> + - items:
> + - const: osc
> + - const: wdt_ext
> + - items:
> + - const: osc
> + - const: can_ext
> + - const: wdt_ext
This need not be so complicated. The following should do the trick:
clock-names:
minItems: 1
items:
- const: osc
- enum: [can_ext, wdt_ext]
- const: wdt_ext
pwbot: changes-requested
>
> "#clock-cells":
> const: 1
>
> --
> 2.55.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 1/2] dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional
2026-10-02 7:17 ` Conor Dooley
@ 2026-10-02 15:55 ` Junhui Liu
0 siblings, 0 replies; 7+ messages in thread
From: Junhui Liu @ 2026-10-02 15:55 UTC (permalink / raw)
To: Conor Dooley, Junhui Liu
Cc: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti, Brian Masney,
Yixun Lan, linux-clk, devicetree, linux-kernel, linux-riscv,
linux-riscv
Hi Conor,
On Fri Oct 2, 2026 at 3:17 PM CST, Conor Dooley wrote:
> On Fri, Oct 02, 2026 at 02:07:00PM +0800, Junhui Liu wrote:
>> The external CAN and WDT clocks are optional inputs routed from the
>> board; the main oscillator is the only required clock. The binding
>> currently requires all three clocks, which forces device trees to add
>> stub fixed-clock nodes without a clock-frequency to satisfy it.
>>
>> Allow the clocks and clock-names properties to contain just "osc",
>> optionally followed by either or both of "can_ext" and "wdt_ext".
>>
>> Fixes: 155d900e4c7d ("dt-bindings: clock: add Anlogic DR1V90 CRU")
>> Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
>> ---
>> .../bindings/clock/anlogic,dr1v90-cru.yaml | 24 +++++++++++++++-------
>> 1 file changed, 17 insertions(+), 7 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml b/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml
>> index 11a92588e494..8bd7b78a58d8 100644
>> --- a/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml
>> +++ b/Documentation/devicetree/bindings/clock/anlogic,dr1v90-cru.yaml
>> @@ -17,16 +17,26 @@ properties:
>> maxItems: 1
>>
>> clocks:
>> - items:
>> - - description: Main oscillator
>> - - description: External CAN clock
>> - - description: External WDT clock
>> + minItems: 1
>> + maxItems: 3
>> + description:
>> + The main oscillator is always required. An external CAN clock and an
>> + external WDT clock may additionally be provided if the board routes these
>> + clocks to the SoC.
>>
>> clock-names:
>> - items:
>> + oneOf:
>> - const: osc
>> - - const: can_ext
>> - - const: wdt_ext
>> + - items:
>> + - const: osc
>> + - const: can_ext
>> + - items:
>> + - const: osc
>> + - const: wdt_ext
>> + - items:
>> + - const: osc
>> + - const: can_ext
>> + - const: wdt_ext
>
> This need not be so complicated. The following should do the trick:
>
> clock-names:
> minItems: 1
> items:
> - const: osc
> - enum: [can_ext, wdt_ext]
> - const: wdt_ext
Thanks for showing me the simpler way to express this. I will update it
in v2.
>
> pwbot: changes-requested
>
>>
>> "#clock-cells":
>> const: 1
>>
>> --
>> 2.55.0
>>
--
Best regards,
Junhui Liu
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] riscv: dts: anlogic: drop unused DR1V90 external clocks
2026-10-02 6:06 [PATCH 0/2] riscv: dts: anlogic: dr1v90: fix clock dtbs_check errors Junhui Liu
2026-10-02 6:07 ` [PATCH 1/2] dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional Junhui Liu
@ 2026-10-02 6:07 ` Junhui Liu
2026-10-02 7:09 ` Conor Dooley
1 sibling, 1 reply; 7+ messages in thread
From: Junhui Liu @ 2026-10-02 6:07 UTC (permalink / raw)
To: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti
Cc: Brian Masney, Conor Dooley, Yixun Lan, linux-clk, devicetree,
linux-kernel, linux-riscv, Junhui Liu
The external CAN and watchdog clock inputs are not routed on the MLKPAI
FS01, the only board currently supported. Drop the two fixed-clock
placeholders from the common dtsi, as fixed clocks require a valid
clock-frequency property.
Both clock muxes select their internal parent clocks after reset, so
the CRU operates correctly without the external inputs. Keep only the
required oscillator input to the CRU.
A board using these external clocks should define them in its own
board-level dts and override the clocks and clock-names properties of
the CRU node.
Reported-by: Yixun Lan <dlan@kernel.org>
Fixes: 7849521aaac2 ("riscv: dts: anlogic: add clocks and CRU for DR1V90")
Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
---
arch/riscv/boot/dts/anlogic/dr1v90.dtsi | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/arch/riscv/boot/dts/anlogic/dr1v90.dtsi b/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
index 574c6608aef0..fe85d01563ad 100644
--- a/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
+++ b/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
@@ -44,23 +44,11 @@ cpu0_intc: interrupt-controller {
};
clocks {
- can_ext: clock-ext-can {
- compatible = "fixed-clock";
- clock-output-names = "can_ext";
- #clock-cells = <0>;
- };
-
osc: clock-osc {
compatible = "fixed-clock";
clock-output-names = "osc";
#clock-cells = <0>;
};
-
- wdt_ext: clock-ext-wdt {
- compatible = "fixed-clock";
- clock-output-names = "wdt_ext";
- #clock-cells = <0>;
- };
};
soc {
@@ -128,8 +116,8 @@ uart1: serial@f8401000 {
cru: clock-controller@f8801000 {
compatible = "anlogic,dr1v90-cru";
reg = <0x0 0xf8801000 0 0x400>;
- clocks = <&osc>, <&can_ext>, <&wdt_ext>;
- clock-names = "osc", "can_ext", "wdt_ext";
+ clocks = <&osc>;
+ clock-names = "osc";
#clock-cells = <1>;
#reset-cells = <1>;
};
--
2.55.0
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 2/2] riscv: dts: anlogic: drop unused DR1V90 external clocks
2026-10-02 6:07 ` [PATCH 2/2] riscv: dts: anlogic: drop unused DR1V90 external clocks Junhui Liu
@ 2026-10-02 7:09 ` Conor Dooley
2026-10-02 15:23 ` Brian Masney
0 siblings, 1 reply; 7+ messages in thread
From: Conor Dooley @ 2026-10-02 7:09 UTC (permalink / raw)
To: Junhui Liu
Cc: Stephen Boyd, Brian Masney, Jerome Brunet, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Conor Dooley, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti, Brian Masney,
Yixun Lan, linux-clk, devicetree, linux-kernel, linux-riscv
[-- Attachment #1: Type: text/plain, Size: 2446 bytes --]
On Fri, Oct 02, 2026 at 02:07:01PM +0800, Junhui Liu wrote:
> The external CAN and watchdog clock inputs are not routed on the MLKPAI
> FS01, the only board currently supported. Drop the two fixed-clock
> placeholders from the common dtsi, as fixed clocks require a valid
> clock-frequency property.
>
> Both clock muxes select their internal parent clocks after reset, so
> the CRU operates correctly without the external inputs. Keep only the
> required oscillator input to the CRU.
>
> A board using these external clocks should define them in its own
> board-level dts and override the clocks and clock-names properties of
> the CRU node.
>
> Reported-by: Yixun Lan <dlan@kernel.org>
> Fixes: 7849521aaac2 ("riscv: dts: anlogic: add clocks and CRU for DR1V90")
Uh, why is this in linux next?
Brian, please don't apply dts patches to the clock (or any other) driver
tree in the future.
Patch itself makes total sense,
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
and because it's easier
Acked-by: Conor Dooley <conor.dooley@microchip.com>
> Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
> ---
> arch/riscv/boot/dts/anlogic/dr1v90.dtsi | 16 ++--------------
> 1 file changed, 2 insertions(+), 14 deletions(-)
>
> diff --git a/arch/riscv/boot/dts/anlogic/dr1v90.dtsi b/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
> index 574c6608aef0..fe85d01563ad 100644
> --- a/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
> +++ b/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
> @@ -44,23 +44,11 @@ cpu0_intc: interrupt-controller {
> };
>
> clocks {
> - can_ext: clock-ext-can {
> - compatible = "fixed-clock";
> - clock-output-names = "can_ext";
> - #clock-cells = <0>;
> - };
> -
> osc: clock-osc {
> compatible = "fixed-clock";
> clock-output-names = "osc";
> #clock-cells = <0>;
> };
> -
> - wdt_ext: clock-ext-wdt {
> - compatible = "fixed-clock";
> - clock-output-names = "wdt_ext";
> - #clock-cells = <0>;
> - };
> };
>
> soc {
> @@ -128,8 +116,8 @@ uart1: serial@f8401000 {
> cru: clock-controller@f8801000 {
> compatible = "anlogic,dr1v90-cru";
> reg = <0x0 0xf8801000 0 0x400>;
> - clocks = <&osc>, <&can_ext>, <&wdt_ext>;
> - clock-names = "osc", "can_ext", "wdt_ext";
> + clocks = <&osc>;
> + clock-names = "osc";
> #clock-cells = <1>;
> #reset-cells = <1>;
> };
>
> --
> 2.55.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 2/2] riscv: dts: anlogic: drop unused DR1V90 external clocks
2026-10-02 7:09 ` Conor Dooley
@ 2026-10-02 15:23 ` Brian Masney
0 siblings, 0 replies; 7+ messages in thread
From: Brian Masney @ 2026-10-02 15:23 UTC (permalink / raw)
To: Conor Dooley
Cc: Junhui Liu, Stephen Boyd, Brian Masney, Jerome Brunet,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Conor Dooley,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti,
Yixun Lan, linux-clk, devicetree, linux-kernel, linux-riscv
Hi Conor,
On Fri, Oct 02, 2026 at 08:09:08AM +0100, Conor Dooley wrote:
> On Fri, Oct 02, 2026 at 02:07:01PM +0800, Junhui Liu wrote:
> > The external CAN and watchdog clock inputs are not routed on the MLKPAI
> > FS01, the only board currently supported. Drop the two fixed-clock
> > placeholders from the common dtsi, as fixed clocks require a valid
> > clock-frequency property.
> >
> > Both clock muxes select their internal parent clocks after reset, so
> > the CRU operates correctly without the external inputs. Keep only the
> > required oscillator input to the CRU.
> >
> > A board using these external clocks should define them in its own
> > board-level dts and override the clocks and clock-names properties of
> > the CRU node.
> >
> > Reported-by: Yixun Lan <dlan@kernel.org>
> > Fixes: 7849521aaac2 ("riscv: dts: anlogic: add clocks and CRU for DR1V90")
>
> Uh, why is this in linux next?
>
> Brian, please don't apply dts patches to the clock (or any other) driver
> tree in the future.
OK, sorry. I just checked clk-next and this is the only dts that I
applied. I'll rebase clk-next and drop this so that the tree only
contains the drivers.
Brian
>
> Patch itself makes total sense,
> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> and because it's easier
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
>
> > Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
> > ---
> > arch/riscv/boot/dts/anlogic/dr1v90.dtsi | 16 ++--------------
> > 1 file changed, 2 insertions(+), 14 deletions(-)
> >
> > diff --git a/arch/riscv/boot/dts/anlogic/dr1v90.dtsi b/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
> > index 574c6608aef0..fe85d01563ad 100644
> > --- a/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
> > +++ b/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
> > @@ -44,23 +44,11 @@ cpu0_intc: interrupt-controller {
> > };
> >
> > clocks {
> > - can_ext: clock-ext-can {
> > - compatible = "fixed-clock";
> > - clock-output-names = "can_ext";
> > - #clock-cells = <0>;
> > - };
> > -
> > osc: clock-osc {
> > compatible = "fixed-clock";
> > clock-output-names = "osc";
> > #clock-cells = <0>;
> > };
> > -
> > - wdt_ext: clock-ext-wdt {
> > - compatible = "fixed-clock";
> > - clock-output-names = "wdt_ext";
> > - #clock-cells = <0>;
> > - };
> > };
> >
> > soc {
> > @@ -128,8 +116,8 @@ uart1: serial@f8401000 {
> > cru: clock-controller@f8801000 {
> > compatible = "anlogic,dr1v90-cru";
> > reg = <0x0 0xf8801000 0 0x400>;
> > - clocks = <&osc>, <&can_ext>, <&wdt_ext>;
> > - clock-names = "osc", "can_ext", "wdt_ext";
> > + clocks = <&osc>;
> > + clock-names = "osc";
> > #clock-cells = <1>;
> > #reset-cells = <1>;
> > };
> >
> > --
> > 2.55.0
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-10-02 15:56 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-02 6:06 [PATCH 0/2] riscv: dts: anlogic: dr1v90: fix clock dtbs_check errors Junhui Liu
2026-10-02 6:07 ` [PATCH 1/2] dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional Junhui Liu
2026-10-02 7:17 ` Conor Dooley
2026-10-02 15:55 ` Junhui Liu
2026-10-02 6:07 ` [PATCH 2/2] riscv: dts: anlogic: drop unused DR1V90 external clocks Junhui Liu
2026-10-02 7:09 ` Conor Dooley
2026-10-02 15:23 ` Brian Masney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®