"ext Woodruff, Richard" <[EMAIL PROTECTED]> writes:
> Hi,
>
>> > static void serial8250_stop_tx(struct uart_port *port)
>> > @@ -1268,6 +1276,15 @@ static void serial8250_start_tx(struct u
>> > up->acr &= ~UART_ACR_TXDIS;
>> > serial_icr_write(up, UART_ACR, up->acr);
>> > }
>> > +#ifdef CONFIG_OMAP3_PM
>> > + {
>> > + /* Don't advertise partial idle else TX irqs will
>> not be seen */
>> > + /* Alternative is to set kernel timer at fifo drain
>> rate */
>> > + unsigned int tmp;
>> > + tmp = (serial_in(up, UART_OMAP_SYSC) & 0x7) | (1 <<
>> 3);
>> > + serial_out(up, UART_OMAP_SYSC, tmp); /* no-idle */
>> > + }
>> > +#endif
>>
>> I tried this quickly. This doesn't work alone. At least if we want
>> working serial-console. Problem with this is that when entering char
>> to console to wake-up omap. First character is lost and then no "echo"
>> happens and serial8250_start_tx is not called. I think this will need
>> some timeout anyway which is started when uart rx|iopad wakeup
>> happens.
>
> Yes that is true.
>
> In reference code it is dealt with and rationalized. This was an issue last
> year in the old code and will be this year in this newer code.
>
> * CDP code employs an activity check which can gate idle. The disruption was
> bothersome and gave a bad impression (even if its just a debug port). It
> also interfered at times with existing functional tests which depended on
> console (either getting all characters or reasonable performance).
>
> The current check will: On activity raise a cpuidle bus master
> activity failure for some number of seconds. This allows normal
> typing for extended periods. It does this by marking UART function
> IRQs with a time stamp and it checks internal state to make sure
> RX/TX engine is not busy or has queued data waiting.
Isn't this exactly what is done in "Added sleep support to UART" patch
in workaround patch set?
>
> This activity assertion will gate the usage of C states where its F-CLOCK is
> cut. At the same time its natural wake up events are enabled (along with the
> above hack as the tx events are not currenly hooked into the wakeup logic).
>
> When OFF/RET mode is selected IO pad is enabled for the port wakeup.
I have seen this in CDP reference code. Is there some specific reason
why this is enabled dynamically in code?
>
> ** The end effect is typing and input/output are good. However, if you stop
> interacting for greater than the time out you will loose your 1st character.
> This is unavoidable as the machine doesn't re-start fast enough to not loose
> the start bit (wakeup/DPLL relock).
>
> It doesn't take much code to do this today. But with out it the console is
> not very useable when PM is enabled _AND_ being effective. As I mentioned
> initially, having the UART problem in a sense is a good milestone as it shows
> you are starting to hit the big power states very often.
>
> Regards,
> Richard W.
--
Jouni Högander
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html