serial: imx: add rx and tx led trigger (2024)

diff mbox

Message ID 1467646452-21243-1-git-send-email-u.kleine-koenig@pengutronix.de (mailing list archive)
State New, archived
Headers show

Commit Message

Uwe Kleine-König July 4, 2016, 3:34 p.m. UTC

Add support for two led triggers per UART instance that blink ontransmission and reception of data respectively.Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>--- drivers/tty/serial/imx.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+)

Comments

Arnd Bergmann July 4, 2016, 3:43 p.m. UTC | #1

On Monday, July 4, 2016 5:34:12 PM CEST Uwe Kleine-König wrote:> Add support for two led triggers per UART instance that blink on> transmission and reception of data respectively.> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>> ---> drivers/tty/serial/imx.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++> 1 file changed, 57 insertions(+)What is specific to this driver here? Could this be done in thecore tty code instead?Arnd

Uwe Kleine-König July 4, 2016, 3:50 p.m. UTC | #2

On Mon, Jul 04, 2016 at 05:43:03PM +0200, Arnd Bergmann wrote:> On Monday, July 4, 2016 5:34:12 PM CEST Uwe Kleine-König wrote:> > Add support for two led triggers per UART instance that blink on> > transmission and reception of data respectively.> > > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>> > ---> > drivers/tty/serial/imx.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++> > 1 file changed, 57 insertions(+)> > What is specific to this driver here? Could this be done in the> core tty code instead?The core doesn't notice when the driver starts to push out characters.I also have a patch in my queue that adds support for rts delaying inrs485 mode. While the delay between start_tx being called and the firstchar leaving the hardware might not be big enough to care in rs232 mode,with a big delay_rts_before_send it might matter.Best regardsUwe

Arnd Bergmann July 6, 2016, 3:22 p.m. UTC | #3

On Monday, July 4, 2016 5:50:09 PM CEST Uwe Kleine-König wrote:> On Mon, Jul 04, 2016 at 05:43:03PM +0200, Arnd Bergmann wrote:> > On Monday, July 4, 2016 5:34:12 PM CEST Uwe Kleine-König wrote:> > > Add support for two led triggers per UART instance that blink on> > > transmission and reception of data respectively.> > > > > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>> > > ---> > > drivers/tty/serial/imx.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++> > > 1 file changed, 57 insertions(+)> > > > What is specific to this driver here? Could this be done in the> > core tty code instead?> > The core doesn't notice when the driver starts to push out characters.> > I also have a patch in my queue that adds support for rts delaying in> rs485 mode. While the delay between start_tx being called and the first> char leaving the hardware might not be big enough to care in rs232 mode,> with a big delay_rts_before_send it might matter.Right, that makes sense. It still seems odd to have this just in onedriver, and your changelog above doesn't really explain what theblinkenlights are actually good for.I'm sure you had something useful in mind, can you elaborate?If this is something we may want to do on other platforms as well,we should perhaps not hardwire the name of the imx tty device inthe led trigger name.Arnd

Uwe Kleine-König July 6, 2016, 5:30 p.m. UTC | #4

On Wed, Jul 06, 2016 at 05:22:40PM +0200, Arnd Bergmann wrote:> On Monday, July 4, 2016 5:50:09 PM CEST Uwe Kleine-König wrote:> > On Mon, Jul 04, 2016 at 05:43:03PM +0200, Arnd Bergmann wrote:> > > On Monday, July 4, 2016 5:34:12 PM CEST Uwe Kleine-König wrote:> > > > Add support for two led triggers per UART instance that blink on> > > > transmission and reception of data respectively.> > > > > > > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>> > > > ---> > > > drivers/tty/serial/imx.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++> > > > 1 file changed, 57 insertions(+)> > > > > > What is specific to this driver here? Could this be done in the> > > core tty code instead?> > > > The core doesn't notice when the driver starts to push out characters.> > > > I also have a patch in my queue that adds support for rts delaying in> > rs485 mode. While the delay between start_tx being called and the first> > char leaving the hardware might not be big enough to care in rs232 mode,> > with a big delay_rts_before_send it might matter.> > Right, that makes sense. It still seems odd to have this just in one> driver, and your changelog above doesn't really explain what the> blinkenlights are actually good for.> > I'm sure you had something useful in mind, can you elaborate?I don't know the exact motivation. $customer wants to see when there istraffic on the serial line. Is there a better motivation needed? If so,what was the motivation for the mmc led trigger (which btw also used thehost's device name as trigger name).> If this is something we may want to do on other platforms as well,> we should perhaps not hardwire the name of the imx tty device in> the led trigger name.I cannot follow. If we have several serial lines and a trigger for eachof them, they must get different names. Using the device's name todistinguish them seems like a good and obvious idea.Best regardsUwe

Arnd Bergmann July 6, 2016, 8:09 p.m. UTC | #5

On Wednesday, July 6, 2016 7:30:57 PM CEST Uwe Kleine-König wrote:> On Wed, Jul 06, 2016 at 05:22:40PM +0200, Arnd Bergmann wrote:> > On Monday, July 4, 2016 5:50:09 PM CEST Uwe Kleine-König wrote:> > > On Mon, Jul 04, 2016 at 05:43:03PM +0200, Arnd Bergmann wrote:> > > > On Monday, July 4, 2016 5:34:12 PM CEST Uwe Kleine-König wrote:> > > > > Add support for two led triggers per UART instance that blink on> > > > > transmission and reception of data respectively.> > > > > > > > > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>> > > > > ---> > > > > drivers/tty/serial/imx.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++> > > > > 1 file changed, 57 insertions(+)> > > > > > > > What is specific to this driver here? Could this be done in the> > > > core tty code instead?> > > > > > The core doesn't notice when the driver starts to push out characters.> > > > > > I also have a patch in my queue that adds support for rts delaying in> > > rs485 mode. While the delay between start_tx being called and the first> > > char leaving the hardware might not be big enough to care in rs232 mode,> > > with a big delay_rts_before_send it might matter.> > > > Right, that makes sense. It still seems odd to have this just in one> > driver, and your changelog above doesn't really explain what the> > blinkenlights are actually good for.> > > > I'm sure you had something useful in mind, can you elaborate?> > I don't know the exact motivation. $customer wants to see when there is> traffic on the serial line. Is there a better motivation needed?I don't know, it depends a bit on how smart you think $customer is ;-)Some customers know exactly what they need and why they ask for it,some others are a bit confused about their own requirements.I can certainly think of cases where this makes sense, e.g. a modemappliance or a terminal server.> If so, what was the motivation for the mmc led trigger (which btw also> used the host's device name as trigger name).I didn't see that patch.> > If this is something we may want to do on other platforms as well,> > we should perhaps not hardwire the name of the imx tty device in> > the led trigger name.> > I cannot follow. If we have several serial lines and a trigger for each> of them, they must get different names. Using the device's name to> distinguish them seems like a good and obvious idea.The main problem I see is if someone puts the name of the trigger intoa dtb file, as this hardcodes the connection between the Linux drivername and numbering system with the device tree binding, which are normallyseparate.If we could derive the trigger name from the "/aliases/serial%d" propertyin DT instead, it would get a little more portable.Arnd

Uwe Kleine-König July 7, 2016, 6:28 a.m. UTC | #6

Hello Arnd,[adding Rob Herring to Cc]On Wed, Jul 06, 2016 at 10:09:39PM +0200, Arnd Bergmann wrote:> On Wednesday, July 6, 2016 7:30:57 PM CEST Uwe Kleine-König wrote:> > On Wed, Jul 06, 2016 at 05:22:40PM +0200, Arnd Bergmann wrote:> > > On Monday, July 4, 2016 5:50:09 PM CEST Uwe Kleine-König wrote:> > > > On Mon, Jul 04, 2016 at 05:43:03PM +0200, Arnd Bergmann wrote:> > > > > On Monday, July 4, 2016 5:34:12 PM CEST Uwe Kleine-König wrote:> > > > > > Add support for two led triggers per UART instance that blink on> > > > > > transmission and reception of data respectively.> > > > > > > > > If this is something we may want to do on other platforms as well,> > > we should perhaps not hardwire the name of the imx tty device in> > > the led trigger name.> > > > I cannot follow. If we have several serial lines and a trigger for each> > of them, they must get different names. Using the device's name to> > distinguish them seems like a good and obvious idea.> > The main problem I see is if someone puts the name of the trigger into> a dtb file, as this hardcodes the connection between the Linux driver> name and numbering system with the device tree binding, which are normally> separate.> > If we could derive the trigger name from the "/aliases/serial%d" property> in DT instead, it would get a little more portable.Alternatively we could invent a more dtish way as aliases seem to befrowned upon [1], something like:led#0 {label = "userled";linux,default-trigger = &uart1, "tx";};uart1: serial@43f90000 {...#trigger-cells = <1>;};Having said that, I don't think it's a big problem if the value of"linux,default-trigger" is Linux-specific. Moreover, is a defaulttrigger considered a hardware description?Best regardsUwe[1] http://mid.gmane.org/20160705140546.GA10601@rob-hp-laptop Not sure this is a general objection to aliases, though.

Arnd Bergmann July 7, 2016, 8:27 a.m. UTC | #7

On Thursday, July 7, 2016 8:28:00 AM CEST Uwe Kleine-König wrote:> Hello Arnd,> > [adding Rob Herring to Cc]> > On Wed, Jul 06, 2016 at 10:09:39PM +0200, Arnd Bergmann wrote:> > On Wednesday, July 6, 2016 7:30:57 PM CEST Uwe Kleine-König wrote:> > > On Wed, Jul 06, 2016 at 05:22:40PM +0200, Arnd Bergmann wrote:> > > > On Monday, July 4, 2016 5:50:09 PM CEST Uwe Kleine-König wrote:> > > > > On Mon, Jul 04, 2016 at 05:43:03PM +0200, Arnd Bergmann wrote:> > > > > > On Monday, July 4, 2016 5:34:12 PM CEST Uwe Kleine-König wrote:> > > > > > > Add support for two led triggers per UART instance that blink on> > > > > > > transmission and reception of data respectively.> > > > > > > > > > > If this is something we may want to do on other platforms as well,> > > > we should perhaps not hardwire the name of the imx tty device in> > > > the led trigger name.> > > > > > I cannot follow. If we have several serial lines and a trigger for each> > > of them, they must get different names. Using the device's name to> > > distinguish them seems like a good and obvious idea.> > > > The main problem I see is if someone puts the name of the trigger into> > a dtb file, as this hardcodes the connection between the Linux driver> > name and numbering system with the device tree binding, which are normally> > separate.> > > > If we could derive the trigger name from the "/aliases/serial%d" property> > in DT instead, it would get a little more portable.> > Alternatively we could invent a more dtish way as aliases seem to be> frowned upon [1], something like:> > led#0 {> label = "userled";> linux,default-trigger = &uart1, "tx";> };> > uart1: serial@43f90000 {> ...> #trigger-cells = <1>;> };That looks nice, but I don't see how we could implement this in abackwards compatible way, as we don't know whether the first cellof the property is a phandle or a string.> Having said that, I don't think it's a big problem if the value of> "linux,default-trigger" is Linux-specific. Moreover, is a default> trigger considered a hardware description?What's more important here I think is that even in Linux, the nameof the uart is not always stable across versions or configurations,e.g. in on OMAP we can have either ttyO%d or ttyS%d.Arnd

Uwe Kleine-König July 7, 2016, 8:33 a.m. UTC | #8

Hello,On Thu, Jul 07, 2016 at 10:27:51AM +0200, Arnd Bergmann wrote:> On Thursday, July 7, 2016 8:28:00 AM CEST Uwe Kleine-König wrote:> > On Wed, Jul 06, 2016 at 10:09:39PM +0200, Arnd Bergmann wrote:> > > On Wednesday, July 6, 2016 7:30:57 PM CEST Uwe Kleine-König wrote:> > > > On Wed, Jul 06, 2016 at 05:22:40PM +0200, Arnd Bergmann wrote:> > > > > On Monday, July 4, 2016 5:50:09 PM CEST Uwe Kleine-König wrote:> > > > > > On Mon, Jul 04, 2016 at 05:43:03PM +0200, Arnd Bergmann wrote:> > > > > > > On Monday, July 4, 2016 5:34:12 PM CEST Uwe Kleine-König wrote:> > > > > > > > Add support for two led triggers per UART instance that blink on> > > > > > > > transmission and reception of data respectively.> > > > > > > > > > > > > If this is something we may want to do on other platforms as well,> > > > > we should perhaps not hardwire the name of the imx tty device in> > > > > the led trigger name.> > > > > > > > I cannot follow. If we have several serial lines and a trigger for each> > > > of them, they must get different names. Using the device's name to> > > > distinguish them seems like a good and obvious idea.> > > > > > The main problem I see is if someone puts the name of the trigger into> > > a dtb file, as this hardcodes the connection between the Linux driver> > > name and numbering system with the device tree binding, which are normally> > > separate.> > > > > > If we could derive the trigger name from the "/aliases/serial%d" property> > > in DT instead, it would get a little more portable.> > > > Alternatively we could invent a more dtish way as aliases seem to be> > frowned upon [1], something like:> > > > led#0 {> > label = "userled";> > linux,default-trigger = &uart1, "tx";> > };> > > > uart1: serial@43f90000 {> > ...> > #trigger-cells = <1>;> > };> > That looks nice, but I don't see how we could implement this in a> backwards compatible way, as we don't know whether the first cell> of the property is a phandle or a string.If we agree, that this is OS-agnostic, we could use "default-trigger" asproperty name instead of "linux,default-trigger". Best regardsUwe

Arnd Bergmann July 7, 2016, 8:43 a.m. UTC | #9

On Thursday, July 7, 2016 10:33:22 AM CEST Uwe Kleine-König wrote:> On Thu, Jul 07, 2016 at 10:27:51AM +0200, Arnd Bergmann wrote:> > On Thursday, July 7, 2016 8:28:00 AM CEST Uwe Kleine-König wrote:> > > On Wed, Jul 06, 2016 at 10:09:39PM +0200, Arnd Bergmann wrote:> > > > On Wednesday, July 6, 2016 7:30:57 PM CEST Uwe Kleine-König wrote:> > > > > On Wed, Jul 06, 2016 at 05:22:40PM +0200, Arnd Bergmann wrote:> > > > > > On Monday, July 4, 2016 5:50:09 PM CEST Uwe Kleine-König wrote:> > > > > > > On Mon, Jul 04, 2016 at 05:43:03PM +0200, Arnd Bergmann wrote:> > > > > > > > On Monday, July 4, 2016 5:34:12 PM CEST Uwe Kleine-König wrote:> > > > > > > > > Add support for two led triggers per UART instance that blink on> > > > > > > > > transmission and reception of data respectively.> > > > > > > > > > > > > > > If this is something we may want to do on other platforms as well,> > > > > > we should perhaps not hardwire the name of the imx tty device in> > > > > > the led trigger name.> > > > > > > > > > I cannot follow. If we have several serial lines and a trigger for each> > > > > of them, they must get different names. Using the device's name to> > > > > distinguish them seems like a good and obvious idea.> > > > > > > > The main problem I see is if someone puts the name of the trigger into> > > > a dtb file, as this hardcodes the connection between the Linux driver> > > > name and numbering system with the device tree binding, which are normally> > > > separate.> > > > > > > > If we could derive the trigger name from the "/aliases/serial%d" property> > > > in DT instead, it would get a little more portable.> > > > > > Alternatively we could invent a more dtish way as aliases seem to be> > > frowned upon [1], something like:> > > > > > led#0 {> > > label = "userled";> > > linux,default-trigger = &uart1, "tx";> > > };> > > > > > uart1: serial@43f90000 {> > > ...> > > #trigger-cells = <1>;> > > };> > > > That looks nice, but I don't see how we could implement this in a> > backwards compatible way, as we don't know whether the first cell> > of the property is a phandle or a string.> > If we agree, that this is OS-agnostic, we could use "default-trigger" as> property name instead of "linux,default-trigger".Yes, I think that can work, but why not just use linux,default-trigger="serial%d-tx"where serial%d is the alias we already have?Arnd

Greg KH Aug. 31, 2016, 2 p.m. UTC | #10

On Mon, Jul 04, 2016 at 05:34:12PM +0200, Uwe Kleine-König wrote:> Add support for two led triggers per UART instance that blink on> transmission and reception of data respectively.> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>> ---> drivers/tty/serial/imx.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++> 1 file changed, 57 insertions(+)> > diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c> index 621e488cbb12..2b6ba3b8bdd5 100644> --- a/drivers/tty/serial/imx.c> +++ b/drivers/tty/serial/imx.c> @@ -39,6 +39,7 @@> #include <linux/of_device.h>> #include <linux/io.h>> #include <linux/dma-mapping.h>> +#include <linux/leds.h>> > #include <asm/irq.h>> #include <linux/platform_data/serial-imx.h>> @@ -227,6 +228,8 @@ struct imx_port {> wait_queue_head_tdma_wait;> unsigned int saved_reg[10];> boolcontext_saved;> +struct led_triggerled_trigger_rx;> +struct led_triggerled_trigger_tx;> };> > struct imx_port_ucrs {> @@ -293,6 +296,10 @@ static inline int is_imx6q_uart(struct imx_port *sport)> {> return sport->devdata->devtype == IMX6Q_UART;> }> +> +static unsigned long led_delay = 50;> +module_param(led_delay, ulong, 0644);I hate module parameters, and so should you, this isn't the 1990'sanymore :(And I'm with Arnd, let's make this work for all tty drivers that want touse it please.thanks,greg k-h

diff mbox

Patch

diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.cindex 621e488cbb12..2b6ba3b8bdd5 100644--- a/drivers/tty/serial/imx.c+++ b/drivers/tty/serial/imx.c@@ -39,6 +39,7 @@  #include <linux/of_device.h> #include <linux/io.h> #include <linux/dma-mapping.h>+#include <linux/leds.h> #include <asm/irq.h> #include <linux/platform_data/serial-imx.h>@@ -227,6 +228,8 @@  struct imx_port { wait_queue_head_tdma_wait; unsigned int saved_reg[10]; boolcontext_saved;+struct led_triggerled_trigger_rx;+struct led_triggerled_trigger_tx; }; struct imx_port_ucrs {@@ -293,6 +296,10 @@  static inline int is_imx6q_uart(struct imx_port *sport) { return sport->devdata->devtype == IMX6Q_UART; }++static unsigned long led_delay = 50;+module_param(led_delay, ulong, 0644);+ /* * Save and restore functions for UCR1, UCR2 and UCR3 registers */@@ -426,6 +433,9 @@  static inline void imx_transmit_buffer(struct imx_port *sport) return; } +led_trigger_blink_oneshot(&sport->led_trigger_tx,+ &led_delay, &led_delay, 1);+ if (sport->dma_is_enabled) { /* * We've just sent a X-char Ensure the TX DMA is enabled@@ -635,6 +645,9 @@  static irqreturn_t imx_rxint(int irq, void *dev_id) struct tty_port *port = &sport->port.state->port; unsigned long flags, temp; +led_trigger_blink_oneshot(&sport->led_trigger_rx,+ &led_delay, &led_delay, 1);+ spin_lock_irqsave(&sport->port.lock, flags); while (readl(sport->port.membase + USR2) & USR2_RDR) {@@ -708,6 +721,9 @@  static void imx_dma_rxint(struct imx_port *sport) unsigned long temp; unsigned long flags; +led_trigger_blink_oneshot(&sport->led_trigger_rx,+ &led_delay, &led_delay, 1);+ spin_lock_irqsave(&sport->port.lock, flags); temp = readl(sport->port.membase + USR2);@@ -2002,6 +2018,42 @@  static void serial_imx_probe_pdata(struct imx_port *sport, sport->have_rtscts = 1; } +static void imx_register_led_trigger(struct device *dev, struct imx_port *sport)+{+#ifdef CONFIG_LEDS_TRIGGERS+int ret;+char *name;++name = devm_kasprintf(dev, GFP_KERNEL, "ttymxc%d-rx|ttymxc%d-tx",+ sport->port.line, sport->port.line);+if (!name) {+dev_warn(dev, "failed to allocate led trigger name\n");+return;+}++sport->led_trigger_rx.name = name;++name = strchr(name, '|');+*name = '\0';++sport->led_trigger_tx.name = name + 1;++ret = led_trigger_register(&sport->led_trigger_rx);+if (ret) {+dev_warn(dev, "failed to register rx led trigger\n");+goto err_register_rx;+}++ret = led_trigger_register(&sport->led_trigger_tx);+if (ret) {+dev_warn(dev, "failed to register tx led trigger\n");+led_trigger_unregister(&sport->led_trigger_rx);+err_register_rx:+devm_kfree(dev, name);+}+#endif+}+ static int serial_imx_probe(struct platform_device *pdev) { struct imx_port *sport;@@ -2065,6 +2117,8 @@  static int serial_imx_probe(struct platform_device *pdev) sport->port.uartclk = clk_get_rate(sport->clk_per); +imx_register_led_trigger(&pdev->dev, sport);+ /* For register access, we only need to enable the ipg clock. */ ret = clk_prepare_enable(sport->clk_ipg); if (ret)@@ -2110,6 +2164,9 @@  static int serial_imx_remove(struct platform_device *pdev) { struct imx_port *sport = platform_get_drvdata(pdev); +#ifdef CONFIG_LEDS_TRIGGERS+led_trigger_unregister(&sport->led_trigger_rx);+#endif return uart_remove_one_port(&imx_reg, &sport->port); } 
serial: imx: add rx and tx led trigger (2024)

FAQs

What does it mean when the RX & TX leds flash? ›

1 Answer. On Arduino Uno (and most basic Arduinos), the 'L' LED is operated by whatever code is on the Arduino. RX and TX flicker whenever the Arduino is sending data to the PC (TX) or is receiving data from the PC (RX).

What are RX and TX LEDs? ›

RX(0) and TX(1) are connected to the corresponding pins of the ATmega8U2 USB-to-TTL Serial chip and are used to receive and transmit data respectively via the USB-to-serial chip and USB connection to the computer. RX and TX LED's on the board flashes when data is being received or transmitted.

What is the difference between TX and RX light? ›

The optical Tx power is the signal level leaving that device and it should be within the transmitter power range. The Rx power is the incoming signal level being received from the far end device and it should fall within the receive power range.

What is the difference between TX and RX signal? ›

Tx and Rx Levels. The Tx level is the power in decibels per milliwatt (dBm) at which a modem transmits its signal. The Rx level is the power in dBm of the received signal. The server modems normally transmit at -13 dBm by default.

What will happen to RX & TX LEDs once a code is uploaded on the board? ›

The TX and RX LEDs blink whenever there is a communication between the onboard microcontroller and the computer through the USB to serial converter chip present near the USB port. The lighting up of the LEDs indicate the direction of flow of data.

What is the difference between RX and TX filters? ›

The Tx reject filters are designed to be used on receive systems to reject any spurious signals in the transmit frequency, while the Rx reject filters are used on transmit systems to reject any spurious signals in the receive frequency.

What does TX and RX mean on a circuit board? ›

TX and RX stand for transmitter and receiver, respectively.

What is USB TX and RX? ›

They are labeled from the computer's perspective: TX is an output that connects to your target's serial receive pin and RX is an input that connects to your target's serial transmit pin. Section 6 describes how to use these lines to communicate with your devices from the computer.

What is the issue when LED light blinking? ›

Any burnt or loose connectors and circuits can cause LED lights to flicker. This may be the result of improper installation, or if many fixtures are flickering at the same time, then there could be a problem at the panel or the junction point to be addressed.

References

Top Articles
Latest Posts
Article information

Author: Carlyn Walter

Last Updated:

Views: 5485

Rating: 5 / 5 (50 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Carlyn Walter

Birthday: 1996-01-03

Address: Suite 452 40815 Denyse Extensions, Sengermouth, OR 42374

Phone: +8501809515404

Job: Manufacturing Technician

Hobby: Table tennis, Archery, Vacation, Metal detecting, Yo-yoing, Crocheting, Creative writing

Introduction: My name is Carlyn Walter, I am a lively, glamorous, healthy, clean, powerful, calm, combative person who loves writing and wants to share my knowledge and understanding with you.