This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM3358:UART 唤醒

Guru**** 2207170 points
Other Parts Discussed in Thread: AM3358
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/991967/am3358-uart-wakeup

器件型号:AM3358

我正在处理 am3358在挂起到 ram (待机)后的 UART 唤醒问题。 即使我向/sys/class/tty/ttyS0/power/wakeup.写入已启用、处理器似乎也不会唤醒 GPIO 唤醒工作正常。  我正在使用内核4.14.79。

我一直在调试该问题、如果我省略了器件勘误表的软复位修复、似乎可以解决该问题。 我使用了以下补丁并在器件树中将"ti、no-idle"添加到 uart0中。 唤醒源仍然被错误检测(MPU_WAKE)。 这是启用 uart0唤醒的正确方法吗?如果不是,您可以建议改进方法吗? 器件勘误表指出、在使用 DMA 之后和空闲之前需要进行软复位。 但是、软复位后唤醒不起作用。 是否可以将 UART 器件设置为空闲状态并仍然唤醒?

增补程序

日期:2021年4月7日星期三16:29:20 +0300 
主题:[PATCH] UART:请勿执行软复位以解决器件勘误表问题
如果不在挂起模式中进入空闲状态。

--
drivers/tty/ serial/8250/8250_omap.c | 5 +++-
1个文件已更改,4个插入(+),1个删除(-)

diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c
索引851d29ff3d19..2a5a74f449db 100644
-- a/drivers/tty/serial/8250/8250_omap.c
++ b/drivers/tty/serial/8250/8250_omap.c
@@-120、6 +120、7 @@ struct omap8250_priv
spinlock_t rx_dma_lock;
bool rx_dma_broken;
bool 油门;
+ bool no_idle;
};

struct omap8250_platdata{
@@-1283,6+1284,8 @@静态 int omap8250_probe (struct platform_device *pdev)
pdata =(struct omap8250_platdata *) of _device_get_match_data (&pdev->dev);
IF (pdata)
PRIV->Habit |= pdata -> Habit;
+ IF (of _find_property (pdev->dev.of 节点、"ti、no-idle"、NULL))
+ priv->no_idle = true;
}否则{
RET = pdev->id;

@@-1501、7 +1504、7 @@静态 int omap8250_runtime_suspend (struct device *dev)
return -EBUSY;


-如果(priv->Habit & UART_errata_clock_disable){
+ if (priv->Habit & UART_errata_clock_disable &&!priv->no_idle){
/*保存模块级唤醒寄存器*/
u32 wer = serial_in (up、UART_OMA_WER);
内转台;
--
2.27.0

dmesg 的输出

[85.948351] PM:暂停进入(浅) 
[85.948365] PM:正在同步文件系统... 完成。
[85.966354]冻结用户空间进程... (已用0.001秒)。
[85.967768]禁用杀手锏。
[85.967773]冻结剩余可自由执行的任务... (已用0.001秒)。
[85.969251]暂停控制台(使用 NO_console_suspend 进行调试)
[85.989523] pm33xx pm33xx:pm:成功地将所有电源域置于目标状态
[85.989523] PM:唤醒源 MPU_WAKE
[91.962347]启用了 Killer oom。
[91.962386]正在重新启动任务...
[91.987302]完成。
[92.012512] PM:挂起退出

 ttyS0和 GPIO 唤醒后的/sys/kernel/debug/wakeup_sources 输出。

将 ACTIVE_COUNT EVENT_COUNT WAKEUP_COUNT 命名为 EXPILOE_COUNT ACTIVE_INVE_INVE_TIME TOTAL_TIME max_TIME LAST_CHANGE INVE_SUSPEND_TIME 
ttyS0 0 0 0 0 0 0 0 18891 0
按钮3 3 0 0 0 3 2 363657 0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否在处理器 SDK Linux v6.3中使用内核 v4.19进行了测试?

    AM335x GP EVM 使用 UART0作为 Linux 控制台、通过 UART0唤醒在 EVM 上工作正常。 如何在平台中使用 UART0? 如果它不是 Linux 控制台、它连接到什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们尚未测试 v4.19、因为我们有一些驱动程序尚未移植 v4.19。 如果可能、请坚持使用 v4.14。

    我们使用的是自定义电路板、其中 UART0连接到外设、UART1用于控制台。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Mikko、

    客户能否在 BeagleBone Black wither Processor SDK Linux v4.19上重现此问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们没有用4.19复制它

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否在使用内核 v4.14的 BeagleBone Black 上重现此问题、以便我可以在本地对其进行调试?