From: Feng Tang <feng.tang@intel.com> To: Christian Pellegrin <chripell@fsfe.org> Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>, "greg@kroah.com" <greg@kroah.com>, "david-b@pacbell.net" <david-b@pacbell.net>, "grant.likely@secretlab.ca" <grant.likely@secretlab.ca>, "alan@lxorguk.ukuu.org.uk" <alan@lxorguk.ukuu.org.uk>, "spi-devel-general@lists.sourceforge.net" <spi-devel-general@lists.sourceforge.net>, "linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Christian Pellegrin <chripell@fsfe.org> Subject: Re: [PATCH v1 3/4] max3100: adds console support for MAX3100 Date: Mon, 29 Mar 2010 10:48:38 +0800 [thread overview] Message-ID: <20100329104838.49c18075@feng-i7> (raw) In-Reply-To: <1269340170-6558-1-git-send-email-chripell@fsfe.org> Hi, I modified the code a little and run it on our HW platform, it really show some sigh of life: it can boots to console (the print format is not so good), I can input command and it execute correctly, but very slow, I type 3 characters and it takes about 2 seconds to echo back on screen and start the execution, and after about 1 minute, the console hang there and input stopped to work. I also have some comments inline. Thanks, Feng On Tue, 23 Mar 2010 18:29:30 +0800 Christian Pellegrin <chripell@fsfe.org> wrote: > This patch adds console support for the MAX3100 UART > (console=ttyMAX0,11500). The SPI subsystem and an 115200? > > +#ifdef CONFIG_SERIAL_MAX3100_CONSOLE > + > +static void max3100_console_work(struct work_struct *w) > +{ > + struct max3100_port *s = container_of(w, struct max3100_port, > + console_work); > + unsigned long start; > + u16 tx, rx; > + > + while (s->console_head != s->console_tail && > + (s->console_flags & MAX3100_SUSPENDING) == 0) { > + start = jiffies; > + do { > + tx = MAX3100_RC; > + max3100_sr(s, tx, &rx); > + } while ((rx & MAX3100_T) == 0 && > + !time_after(jiffies, start + > s->console_tout)); > + tx = s->console_buf[s->console_tail]; > + max3100_calc_parity(s, &tx); > + tx |= MAX3100_WD | MAX3100_RTS; Does this imply to have to work with HW flow control? on my platform I have to remove the RTS bit to make it work. > + max3100_sr(s, tx, &rx); It doesn't handle received characters here? If the console is printing out a bulk of message while user input some command, the command may be ignored. Myself have met the same problem in our driver. > + s->console_tail = (s->console_tail + 1) % > CONSOLE_BUF_SIZE; > + } > +} > + > +static void max3100_console_putchar(struct uart_port *port, int ch) > +{ > + struct max3100_port *s = to_max3100_port(port); > + int next = (s->console_head + 1) % CONSOLE_BUF_SIZE; > + > + if (next != s->console_tail) { > + s->console_buf[next] = ch; > + s->console_head = next; > + } Also I saw max3100_sr() uses cpu_to_be16() and be16_to_cpu(), is it really necessary, our platform is little-endian(x86), and I have to disable them to make the code work. Is your test platform big-endian?
WARNING: multiple messages have this Message-ID (diff)
From: Feng Tang <feng.tang@intel.com> Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>, "greg@kroah.com" <greg@kroah.com>, "david-b@pacbell.net" <david-b@pacbell.net>, "grant.likely@secretlab.ca" <grant.likely@secretlab.ca>, "alan@lxorguk.ukuu.org.uk" <alan@lxorguk.ukuu.org.uk>, "spi-devel-general@lists.sourceforge.net" <spi-devel-general@lists.sourceforge.net>, "linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Christian Pellegrin <chripell@fsfe.org> Subject: Re: [PATCH v1 3/4] max3100: adds console support for MAX3100 Date: Mon, 29 Mar 2010 10:48:38 +0800 [thread overview] Message-ID: <20100329104838.49c18075@feng-i7> (raw) In-Reply-To: <1269340170-6558-1-git-send-email-chripell@fsfe.org> Hi, I modified the code a little and run it on our HW platform, it really show some sigh of life: it can boots to console (the print format is not so good), I can input command and it execute correctly, but very slow, I type 3 characters and it takes about 2 seconds to echo back on screen and start the execution, and after about 1 minute, the console hang there and input stopped to work. I also have some comments inline. Thanks, Feng On Tue, 23 Mar 2010 18:29:30 +0800 Christian Pellegrin <chripell@fsfe.org> wrote: > This patch adds console support for the MAX3100 UART > (console=ttyMAX0,11500). The SPI subsystem and an 115200? > > +#ifdef CONFIG_SERIAL_MAX3100_CONSOLE > + > +static void max3100_console_work(struct work_struct *w) > +{ > + struct max3100_port *s = container_of(w, struct max3100_port, > + console_work); > + unsigned long start; > + u16 tx, rx; > + > + while (s->console_head != s->console_tail && > + (s->console_flags & MAX3100_SUSPENDING) == 0) { > + start = jiffies; > + do { > + tx = MAX3100_RC; > + max3100_sr(s, tx, &rx); > + } while ((rx & MAX3100_T) == 0 && > + !time_after(jiffies, start + > s->console_tout)); > + tx = s->console_buf[s->console_tail]; > + max3100_calc_parity(s, &tx); > + tx |= MAX3100_WD | MAX3100_RTS; Does this imply to have to work with HW flow control? on my platform I have to remove the RTS bit to make it work. > + max3100_sr(s, tx, &rx); It doesn't handle received characters here? If the console is printing out a bulk of message while user input some command, the command may be ignored. Myself have met the same problem in our driver. > + s->console_tail = (s->console_tail + 1) % > CONSOLE_BUF_SIZE; > + } > +} > + > +static void max3100_console_putchar(struct uart_port *port, int ch) > +{ > + struct max3100_port *s = to_max3100_port(port); > + int next = (s->console_head + 1) % CONSOLE_BUF_SIZE; > + > + if (next != s->console_tail) { > + s->console_buf[next] = ch; > + s->console_head = next; > + } Also I saw max3100_sr() uses cpu_to_be16() and be16_to_cpu(), is it really necessary, our platform is little-endian(x86), and I have to disable them to make the code work. Is your test platform big-endian?
next prev parent reply other threads:[~2010-03-29 2:44 UTC|newest] Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top 2010-03-23 10:29 [PATCH v1 0/3] max3100: improvements christian pellegrin 2010-03-23 10:28 ` [PATCH v1 1/4] max3100: added raise_threaded_irq Christian Pellegrin 2010-03-23 10:28 ` Christian Pellegrin 2010-03-23 10:28 ` Christian Pellegrin 2010-03-23 10:29 ` [PATCH v1 2/4] max3100: moved to threaded interrupt Christian Pellegrin 2010-03-23 10:29 ` Christian Pellegrin 2010-03-23 10:29 ` Christian Pellegrin 2010-03-23 10:29 ` [PATCH v1 3/4] max3100: adds console support for MAX3100 Christian Pellegrin 2010-03-23 10:29 ` Christian Pellegrin 2010-03-23 10:29 ` Christian Pellegrin 2010-03-29 2:48 ` Feng Tang [this message] 2010-03-29 2:48 ` Feng Tang 2010-03-29 2:48 ` Feng Tang 2010-03-29 6:11 ` christian pellegrin 2010-03-29 6:11 ` christian pellegrin 2010-03-29 7:06 ` Feng Tang 2010-03-29 7:06 ` Feng Tang 2010-03-29 12:55 ` christian pellegrin 2010-03-29 12:55 ` christian pellegrin 2010-03-30 2:14 ` Feng Tang 2010-03-30 6:49 ` christian pellegrin 2010-03-30 7:19 ` Feng Tang 2010-03-30 8:00 ` christian pellegrin 2010-03-30 8:46 ` Alan Cox 2010-03-30 12:03 ` christian pellegrin 2010-03-31 6:04 ` Grant Likely 2010-04-05 18:19 ` christian pellegrin 2010-04-05 19:00 ` Grant Likely 2010-04-08 9:31 ` christian pellegrin 2010-04-08 9:31 ` christian pellegrin 2010-04-08 9:43 ` christian pellegrin 2010-04-08 9:43 ` christian pellegrin 2010-03-23 10:29 ` [PATCH v1 4/4] max3100: introduced to_max3100_port, small style fixes Christian Pellegrin 2010-03-23 10:29 ` Christian Pellegrin 2010-03-23 10:29 ` Christian Pellegrin 2010-04-15 23:22 ` [PATCH v1 1/4] max3100: added raise_threaded_irq Thomas Gleixner 2010-04-16 16:18 ` christian pellegrin 2010-04-16 22:06 ` Thomas Gleixner 2010-04-17 16:25 ` christian pellegrin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20100329104838.49c18075@feng-i7 \ --to=feng.tang@intel.com \ --cc=akpm@linux-foundation.org \ --cc=alan@lxorguk.ukuu.org.uk \ --cc=chripell@fsfe.org \ --cc=david-b@pacbell.net \ --cc=grant.likely@secretlab.ca \ --cc=greg@kroah.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=spi-devel-general@lists.sourceforge.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.