* [PATCH v3 0/3] ARM: berlin: BG2Q SPI support
@ 2015-06-02 9:37 Antoine Tenart
2015-06-02 9:37 ` [PATCH v3 1/3] pinctrl: berlin: fix spi1 SS0n function name Antoine Tenart
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Antoine Tenart @ 2015-06-02 9:37 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
This series adds the SPI nodes for the Berlin BG2Q SoC as well as
comments on the Berlin spi pinctrl functions.
Antoine
Antoine Tenart (3):
pinctrl: berlin: fix spi1 SS0n function name
pinctrl: berlin: comment the spi functions
ARM: berlin: add SPI nodes for BG2Q
arch/arm/boot/dts/berlin2q.dtsi | 36 +++++++++++++++++++++++++++++++++++
drivers/pinctrl/berlin/berlin-bg2.c | 18 +++++++++---------
drivers/pinctrl/berlin/berlin-bg2cd.c | 8 ++++----
drivers/pinctrl/berlin/berlin-bg2q.c | 16 ++++++++--------
4 files changed, 57 insertions(+), 21 deletions(-)
--
2.4.2
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH v3 1/3] pinctrl: berlin: fix spi1 SS0n function name 2015-06-02 9:37 [PATCH v3 0/3] ARM: berlin: BG2Q SPI support Antoine Tenart @ 2015-06-02 9:37 ` Antoine Tenart 2015-06-10 7:15 ` Linus Walleij 2015-06-02 9:37 ` [PATCH v3 2/3] pinctrl: berlin: comment the spi functions Antoine Tenart ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Antoine Tenart @ 2015-06-02 9:37 UTC (permalink / raw) To: linux-arm-kernel Rename function ss0 to spi1 to be consistent with the other Berlin function names. Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> --- drivers/pinctrl/berlin/berlin-bg2cd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/berlin/berlin-bg2cd.c b/drivers/pinctrl/berlin/berlin-bg2cd.c index 9e11f191d643..5cfadbc14a79 100644 --- a/drivers/pinctrl/berlin/berlin-bg2cd.c +++ b/drivers/pinctrl/berlin/berlin-bg2cd.c @@ -68,7 +68,7 @@ static const struct berlin_desc_group berlin2cd_soc_pinctrl_groups[] = { BERLIN_PINCTRL_FUNCTION(0x1, "twsi1"), BERLIN_PINCTRL_FUNCTION(0x2, "gpio")), BERLIN_PINCTRL_GROUP("G8", 0x00, 0x3, 0x10, - BERLIN_PINCTRL_FUNCTION(0x0, "ss0"), + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), BERLIN_PINCTRL_GROUP("G9", 0x00, 0x3, 0x13, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), -- 2.4.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 1/3] pinctrl: berlin: fix spi1 SS0n function name 2015-06-02 9:37 ` [PATCH v3 1/3] pinctrl: berlin: fix spi1 SS0n function name Antoine Tenart @ 2015-06-10 7:15 ` Linus Walleij 0 siblings, 0 replies; 8+ messages in thread From: Linus Walleij @ 2015-06-10 7:15 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 2, 2015 at 11:37 AM, Antoine Tenart <antoine.tenart@free-electrons.com> wrote: > Rename function ss0 to spi1 to be consistent with the other Berlin > function names. > > Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> Patch applied. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 2/3] pinctrl: berlin: comment the spi functions 2015-06-02 9:37 [PATCH v3 0/3] ARM: berlin: BG2Q SPI support Antoine Tenart 2015-06-02 9:37 ` [PATCH v3 1/3] pinctrl: berlin: fix spi1 SS0n function name Antoine Tenart @ 2015-06-02 9:37 ` Antoine Tenart 2015-06-10 7:18 ` Linus Walleij 2015-06-02 9:37 ` [PATCH v3 3/3] ARM: berlin: add SPI nodes for BG2Q Antoine Tenart 2015-06-02 9:47 ` [PATCH v3 0/3] ARM: berlin: BG2Q SPI support Antoine Tenart 3 siblings, 1 reply; 8+ messages in thread From: Antoine Tenart @ 2015-06-02 9:37 UTC (permalink / raw) To: linux-arm-kernel Add comments for the SPI functions, to distinguish CLK, SDI, SDO and C{0,1,2,3}n. Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> --- drivers/pinctrl/berlin/berlin-bg2.c | 18 +++++++++--------- drivers/pinctrl/berlin/berlin-bg2cd.c | 8 ++++---- drivers/pinctrl/berlin/berlin-bg2q.c | 16 ++++++++-------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/drivers/pinctrl/berlin/berlin-bg2.c b/drivers/pinctrl/berlin/berlin-bg2.c index 3769eaedf519..274c5535b531 100644 --- a/drivers/pinctrl/berlin/berlin-bg2.c +++ b/drivers/pinctrl/berlin/berlin-bg2.c @@ -20,24 +20,24 @@ static const struct berlin_desc_group berlin2_soc_pinctrl_groups[] = { /* G */ BERLIN_PINCTRL_GROUP("G0", 0x00, 0x1, 0x00, - BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SS0n */ BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), BERLIN_PINCTRL_GROUP("G1", 0x00, 0x2, 0x01, - BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SS1n */ BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), BERLIN_PINCTRL_FUNCTION(0x2, "usb1")), BERLIN_PINCTRL_GROUP("G2", 0x00, 0x2, 0x02, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS2n */ BERLIN_PINCTRL_FUNCTION(0x2, "pwm"), BERLIN_PINCTRL_FUNCTION(0x3, "i2s0")), BERLIN_PINCTRL_GROUP("G3", 0x00, 0x2, 0x04, BERLIN_PINCTRL_FUNCTION(0x0, "soc"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS3n */ BERLIN_PINCTRL_FUNCTION(0x2, "gpio"), BERLIN_PINCTRL_FUNCTION(0x3, "i2s1")), BERLIN_PINCTRL_GROUP("G4", 0x00, 0x2, 0x06, - BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* CLK/SDI/SDO */ BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), BERLIN_PINCTRL_FUNCTION(0x2, "pwm")), BERLIN_PINCTRL_GROUP("G5", 0x00, 0x3, 0x08, @@ -163,15 +163,15 @@ static const struct berlin_desc_group berlin2_sysmgr_pinctrl_groups[] = { /* GSM */ BERLIN_PINCTRL_GROUP("GSM0", 0x40, 0x2, 0x00, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS0n */ BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), BERLIN_PINCTRL_GROUP("GSM1", 0x40, 0x2, 0x02, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS1n */ BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), BERLIN_PINCTRL_GROUP("GSM2", 0x40, 0x2, 0x04, BERLIN_PINCTRL_FUNCTION(0x0, "twsi2"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi2")), + BERLIN_PINCTRL_FUNCTION(0x1, "spi2")), /* SS2n/SS3n */ BERLIN_PINCTRL_GROUP("GSM3", 0x40, 0x2, 0x06, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), BERLIN_PINCTRL_FUNCTION(0x1, "uart0"), /* CTS/RTS */ @@ -187,7 +187,7 @@ static const struct berlin_desc_group berlin2_sysmgr_pinctrl_groups[] = { BERLIN_PINCTRL_FUNCTION(0x3, "twsi3")), BERLIN_PINCTRL_GROUP("GSM6", 0x40, 0x2, 0x0c, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* CLK/SDO */ BERLIN_PINCTRL_FUNCTION(0x1, "clki")), BERLIN_PINCTRL_GROUP("GSM7", 0x40, 0x1, 0x0e, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), diff --git a/drivers/pinctrl/berlin/berlin-bg2cd.c b/drivers/pinctrl/berlin/berlin-bg2cd.c index 5cfadbc14a79..0cb793a3552a 100644 --- a/drivers/pinctrl/berlin/berlin-bg2cd.c +++ b/drivers/pinctrl/berlin/berlin-bg2cd.c @@ -68,17 +68,17 @@ static const struct berlin_desc_group berlin2cd_soc_pinctrl_groups[] = { BERLIN_PINCTRL_FUNCTION(0x1, "twsi1"), BERLIN_PINCTRL_FUNCTION(0x2, "gpio")), BERLIN_PINCTRL_GROUP("G8", 0x00, 0x3, 0x10, - BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SS0n */ BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), BERLIN_PINCTRL_GROUP("G9", 0x00, 0x3, 0x13, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS1n/SS2n */ BERLIN_PINCTRL_FUNCTION(0x2, "twsi0")), BERLIN_PINCTRL_GROUP("G10", 0x00, 0x2, 0x16, - BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* CLK */ BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), BERLIN_PINCTRL_GROUP("G11", 0x00, 0x2, 0x18, - BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SDI/SDO */ BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), BERLIN_PINCTRL_GROUP("G12", 0x00, 0x3, 0x1a, BERLIN_PINCTRL_FUNCTION(0x0, "usb1"), diff --git a/drivers/pinctrl/berlin/berlin-bg2q.c b/drivers/pinctrl/berlin/berlin-bg2q.c index ba7a8a8ad010..a466054a8206 100644 --- a/drivers/pinctrl/berlin/berlin-bg2q.c +++ b/drivers/pinctrl/berlin/berlin-bg2q.c @@ -59,21 +59,21 @@ static const struct berlin_desc_group berlin2q_soc_pinctrl_groups[] = { BERLIN_PINCTRL_FUNCTION(0x2, "gpio"), BERLIN_PINCTRL_FUNCTION(0x3, "eddc")), BERLIN_PINCTRL_GROUP("G8", 0x18, 0x3, 0x18, - BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* CLK/SDI/SDO */ BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), BERLIN_PINCTRL_GROUP("G9", 0x18, 0x3, 0x1b, - BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SS0n/SS1n */ BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), BERLIN_PINCTRL_FUNCTION(0x5, "sata")), BERLIN_PINCTRL_GROUP("G10", 0x1c, 0x3, 0x00, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS2n */ BERLIN_PINCTRL_FUNCTION(0x3, "i2s0"), BERLIN_PINCTRL_FUNCTION(0x4, "pwm"), BERLIN_PINCTRL_FUNCTION(0x5, "sata")), BERLIN_PINCTRL_GROUP("G11", 0x1c, 0x3, 0x03, BERLIN_PINCTRL_FUNCTION(0x0, "jtag"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS3n */ BERLIN_PINCTRL_FUNCTION(0x2, "gpio"), BERLIN_PINCTRL_FUNCTION(0x3, "i2s1"), BERLIN_PINCTRL_FUNCTION(0x4, "pwm"), @@ -301,19 +301,19 @@ static const struct berlin_desc_group berlin2q_sysmgr_pinctrl_groups[] = { /* GSM */ BERLIN_PINCTRL_GROUP("GSM0", 0x40, 0x2, 0x00, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS0n */ BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), BERLIN_PINCTRL_GROUP("GSM1", 0x40, 0x2, 0x02, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS1n */ BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), BERLIN_PINCTRL_GROUP("GSM2", 0x40, 0x2, 0x04, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS2n/SS3n */ BERLIN_PINCTRL_FUNCTION(0x2, "eddc")), BERLIN_PINCTRL_GROUP("GSM3", 0x40, 0x2, 0x06, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), - BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* CLK/SDO */ BERLIN_PINCTRL_FUNCTION(0x2, "eddc")), BERLIN_PINCTRL_GROUP("GSM4", 0x40, 0x1, 0x08, BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), -- 2.4.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 2/3] pinctrl: berlin: comment the spi functions 2015-06-02 9:37 ` [PATCH v3 2/3] pinctrl: berlin: comment the spi functions Antoine Tenart @ 2015-06-10 7:18 ` Linus Walleij 0 siblings, 0 replies; 8+ messages in thread From: Linus Walleij @ 2015-06-10 7:18 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 2, 2015 at 11:37 AM, Antoine Tenart <antoine.tenart@free-electrons.com> wrote: > Add comments for the SPI functions, to distinguish CLK, SDI, SDO and > C{0,1,2,3}n. > > Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> Patch applied. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 3/3] ARM: berlin: add SPI nodes for BG2Q 2015-06-02 9:37 [PATCH v3 0/3] ARM: berlin: BG2Q SPI support Antoine Tenart 2015-06-02 9:37 ` [PATCH v3 1/3] pinctrl: berlin: fix spi1 SS0n function name Antoine Tenart 2015-06-02 9:37 ` [PATCH v3 2/3] pinctrl: berlin: comment the spi functions Antoine Tenart @ 2015-06-02 9:37 ` Antoine Tenart 2015-06-10 7:18 ` Linus Walleij 2015-06-02 9:47 ` [PATCH v3 0/3] ARM: berlin: BG2Q SPI support Antoine Tenart 3 siblings, 1 reply; 8+ messages in thread From: Antoine Tenart @ 2015-06-02 9:37 UTC (permalink / raw) To: linux-arm-kernel The BG2Q SoC has two SPI controllers. Add the corresponding nodes. Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> --- arch/arm/boot/dts/berlin2q.dtsi | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/arch/arm/boot/dts/berlin2q.dtsi b/arch/arm/boot/dts/berlin2q.dtsi index 187d056f7ad2..ddf7e47fc487 100644 --- a/arch/arm/boot/dts/berlin2q.dtsi +++ b/arch/arm/boot/dts/berlin2q.dtsi @@ -286,6 +286,19 @@ status = "disabled"; }; + spi1: spi at 1c00 { + compatible = "snps,dw-apb-ssi"; + reg = <0x1c00 0x100>; + interrupts = <7>; + clocks = <&chip_clk CLKID_CFG>; + pinctrl-0 = <&spi1_pmux>; + pinctrl-names = "default"; + #address-cells = <1>; + #size-cells = <0>; + num-cs = <4>; + status = "disabled"; + }; + timer0: timer at 2c00 { compatible = "snps,dw-apb-timer"; reg = <0x2c00 0x14>; @@ -383,6 +396,11 @@ groups = "G7"; function = "twsi1"; }; + + spi1_pmux: spi1-pmux { + groups = "G8"; + function = "spi1"; + }; }; chip_rst: reset { @@ -473,6 +491,19 @@ }; }; + spi2: spi at 6000 { + compatible = "snps,dw-apb-ssi"; + reg = <0x6000 0x100>; + interrupts = <5>; + clocks = <&refclk>; + pinctrl-0 = <&spi2_pmux>; + pinctrl-names = "default"; + #address-cells = <1>; + #size-cells = <0>; + num-cs = <4>; + status = "disabled"; + }; + i2c2: i2c at 7000 { compatible = "snps,designware-i2c"; #address-cells = <1>; @@ -564,6 +595,11 @@ groups = "GSM14"; function = "twsi3"; }; + + spi2_pmux: spi2-pmux { + groups = "GSM3"; + function = "spi2"; + }; }; }; -- 2.4.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 3/3] ARM: berlin: add SPI nodes for BG2Q 2015-06-02 9:37 ` [PATCH v3 3/3] ARM: berlin: add SPI nodes for BG2Q Antoine Tenart @ 2015-06-10 7:18 ` Linus Walleij 0 siblings, 0 replies; 8+ messages in thread From: Linus Walleij @ 2015-06-10 7:18 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 2, 2015 at 11:37 AM, Antoine Tenart <antoine.tenart@free-electrons.com> wrote: > The BG2Q SoC has two SPI controllers. Add the corresponding nodes. > > Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> Acked-by: Linus Walleij <linus.walleij@linaro.org> Take this through ARM SoC pls. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 0/3] ARM: berlin: BG2Q SPI support 2015-06-02 9:37 [PATCH v3 0/3] ARM: berlin: BG2Q SPI support Antoine Tenart ` (2 preceding siblings ...) 2015-06-02 9:37 ` [PATCH v3 3/3] ARM: berlin: add SPI nodes for BG2Q Antoine Tenart @ 2015-06-02 9:47 ` Antoine Tenart 3 siblings, 0 replies; 8+ messages in thread From: Antoine Tenart @ 2015-06-02 9:47 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 02, 2015 at 11:37:46AM +0200, Antoine Tenart wrote: > Hi, > > This series adds the SPI nodes for the Berlin BG2Q SoC as well as > comments on the Berlin spi pinctrl functions. > > Antoine Oops, forgot to summarize the changes... Changes since v2: - renamed spi nodes - added comments after the pinctrl SPI function definitions Changes since v1: - reworked the pinmux - removed useless interrupt-parent properties - typo > > Antoine Tenart (3): > pinctrl: berlin: fix spi1 SS0n function name > pinctrl: berlin: comment the spi functions > ARM: berlin: add SPI nodes for BG2Q > > arch/arm/boot/dts/berlin2q.dtsi | 36 +++++++++++++++++++++++++++++++++++ > drivers/pinctrl/berlin/berlin-bg2.c | 18 +++++++++--------- > drivers/pinctrl/berlin/berlin-bg2cd.c | 8 ++++---- > drivers/pinctrl/berlin/berlin-bg2q.c | 16 ++++++++-------- > 4 files changed, 57 insertions(+), 21 deletions(-) > > -- > 2.4.2 > -- Antoine T?nart, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-06-10 7:18 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-06-02 9:37 [PATCH v3 0/3] ARM: berlin: BG2Q SPI support Antoine Tenart 2015-06-02 9:37 ` [PATCH v3 1/3] pinctrl: berlin: fix spi1 SS0n function name Antoine Tenart 2015-06-10 7:15 ` Linus Walleij 2015-06-02 9:37 ` [PATCH v3 2/3] pinctrl: berlin: comment the spi functions Antoine Tenart 2015-06-10 7:18 ` Linus Walleij 2015-06-02 9:37 ` [PATCH v3 3/3] ARM: berlin: add SPI nodes for BG2Q Antoine Tenart 2015-06-10 7:18 ` Linus Walleij 2015-06-02 9:47 ` [PATCH v3 0/3] ARM: berlin: BG2Q SPI support Antoine Tenart
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).