On Mon, Mar 29, 2010 at 4:48 AM, Feng Tang <feng.tang@xxxxxxxxx> wrote: > Hi, 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. never seen such a behavior. Which platform are you using? Which SPI driver? Do you have a low level printk (printascii) that puts output somewhere else so I can send you a patch with some debugging output? Can you log in some other way (like via network) and see if the CPU load is at 100% for some reason? >> This patch adds console support for the MAX3100 UART >> (console=ttyMAX0,11500). The SPI subsystem and an > > 115200? > ack > 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. > no, I put RTS on because it looks like a good default. I can make it configurable. I just noticed on the data sheet that RTS is actually inverted so a more sensible default would be to put it off. For testing you should have flow control set to none on the machine you are using as a terminal emulator. >> + 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. > yes but I think it's quite difficult to solve this problem in every case. Console output is massively used only on boot when the user is not supposed to type a lot. >> + 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? > Have you configured your SPI controller as LSB first somehow, haven't you? BTW my platform is a quite usual ARM9 S3C2440 which is little endian. -- Christian Pellegrin, see http://www.evolware.org/chri/ "Real Programmers don't play tennis, or any other sport which requires you to change clothes. Mountain climbing is OK, and Real Programmers wear their climbing boots to work in case a mountain should suddenly spring up in the middle of the computer room." -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html