On Mon, 29 Mar 2010 14:11:15 +0800 christian pellegrin <chripell@xxxxxxxx> wrote: > > 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? Hi, Our platform is Intel Moorestown platform, and use a spi controller core from Designware (drivers/spi/dw_*.c). I know the problem may probably be caused by my setting, but the dw_spi driver works fine with our own 3110 driver. For debug method, sadly I don't get another output port yet, but if you have some debug patch, that's great, it will help when I find another debug output than max3110. > > >> + 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. It's difficult but not impossible, actually our driver checks every word read back and handle it if it contains a valid data > > >> + 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. > yeah, you hit the point that our spi controller is LSB naturally (not configured to), here may need a check for whether to do a swap -- 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