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.

[参考译文] Linux/AM3352:TPS65910 RTC 的器件树设置

Guru**** 2928980 points

Other Parts Discussed in Thread: TPS65910, AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/659761/linux-am3352-device-tree-settings-for-tps65910-rtc

器件型号:AM3352
主题中讨论的其他器件:TPS65910

工具/软件:Linux

我正在使用 AM3352和 TPS65910 PMIC 进行设计。   我正在寻找 Linux 器件树配置、以便 在启动时加载 tps65910-RTC 驱动程序。

我可以在引导系统后加载驱动程序

# modprobe rtc-tps65910

那么我可以将其视为 RTC1。

[59.357679] tps65910-RTC tps65910-RTC:RTC 内核:已将 tps65910-RTC 注册为 RTC1
# cat /sys/class/rtc/rtc1/time
00:02:48

是否有方法通过更改器件树来使其自动加载?

一些其他背景信息

系统设计为在待机和 Sitara 断电时使用 PMIC RTC、而不是 AM3352 RTC。

TPS65910使用内部32kHz RC 振荡器。

运行 Linux 时需要 AM3352 RTC。   它在引导时自动分配给 rtc0。  它需要是系统电源控制  器、因此 ALARM2可以控制用于断电命令的 PMIC_POWER_EN。  这目前正在工作。

相关线程是

e2e.ti.com/.../407269

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

    Aaron、您好!

    如果您只想在启动时自动加载 tps65910-RTC 驱动程序、请在目标板上执行以下命令:
    Echo RTC-tps65910 >/etc/modules-load.d/rtc-tps65910.conf

    此致、
    Kemal

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

    这改变了加载顺序、因此 rtc0为 tps65910-RTC、RTC1为 OMAP_RTC。 我能否确保始终以相同的顺序加载它们、以便我只需在引导脚本中使用 RTC1和 rtc0、并知道它所指的是哪个驱动程序?

    # dmesg | grep rtc
    [1.285360] vrtc:由 VBAT 供电
    [1.403947] hctosys:无法打开 RTC 设备(rtc0)
    [3.493050] tps65910-RTC tps65910-RTC:启用 RTC-tps65910。
    [3.501514(XV) RTC rtc0:tps65910-RTC:dev (253:0)
    [3.501557] tps65910-RTC tps65910-RTC:RTC 内核:寄存器 tps65910-RTC 为0
    [6.331188] OMAP_RTC 44e3e000.RTC:OMAP_RTC_PROBE:RTC 是_PMIC_controller
    [6.371432] RTC RTC1:44e3e000.RTC:DEV (253:1)
    [6.371448] OMAP_RTC 44e3e000.RTC:RTC 内核:将44e3e000.RTC 注册为 RTC1

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我刚刚注意到错误 hctosys:Unable to open RTC device (rtc0)

    我想看到 tps6910-RTC 先前加载为 rtc0、因此 hctosys 可以使用它。 我假设这将由器件树实现。 如果不是这样、我需要在 tps65910-RTC 之后加载 hctos。 这会在启动时从 PMIC RTC 加载系统时间、对吧?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅 帖子。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这对于设置 RTC 的加载顺序非常有用。

    我认为器件树可能仍然存在问题。 当我尝试从系统时间开始设置 tps65910-RTC 硬件时钟时、命令挂起。

    # dmesg | grep 'as rtc'
    [3.501557] tps65910-RTC tps65910-RTC:RTC 内核:将 tps65910-RTC 注册为 rtc0
    [6.371448] OMAP_RTC 44e3e000.RTC:RTC 内核:将44e3e000.RTC 注册为 RTC1

    #日期--set="2018年1月27日10:09"
    周六2018年1月27日10:09:00 UTC
    # hwclock -f /dev/rtc1 -w
    # cat /sys/class/rtc/rtc1/time
    10:09:24
    # hwclock -f /dev/rtc0 -w <---------------- 此命令挂起
    ^C
    # cat /sys/class/rtc/rtc0/time
    01:08:29


    以下是 TPS65910的树节点:
    TPS{
    reg =<0x2D>;
    interrupt-parent =<&INTc>;
    中断=< 0 118 0x04 >;

    #GPIO-cells =<2>;
    GPIO 控制器;

    #interrupt-cells =<2>;
    中断控制器;

    ti、en-ck32k-xtal;

    vcc1-supply =<VBAT>;
    vcc2-supply =<VBAT>;
    vcc3-supply =<VBAT>;
    vcc4-supply =<VBAT>;
    vcc5-supply =<VBAT>;
    vcc6-supply =<VBAT>;
    vcc7-supply =<VBAT>;
    vcio-supply =<VBAT>;

    调节器{
    vrtc_reg:电脑控制器@0{
    稳压器常开;
    };

    VIO_reg:电脑控制器@1{
    稳压器名称="VIO、VDDS_DDR";
    稳压器常开;
    };

    vdd1_reg:电脑控制器@2{
    /* VDD_MPU 电压限制为0.95V - 1.325V、容差为+/-4%*
    电脑控制器名称="VDD_MPU、vdd1";
    稳压器最小微伏=<925000>;
    稳压器最大值微伏=<1378000>;
    稳压器启动;
    稳压器常开;
    };

    vdd2_reg:电脑控制器@3{
    /* VDD_CORE 电压限制1.056V - 1.144V、容差为+/-4%*
    稳压器名称="VDD_CORE";
    稳压器最小微伏=<1056000>;
    稳压器最大微伏=<1144000>;
    稳压器启动;
    稳压器常开;
    };

    vdd3_reg:电脑控制器@4{
    稳压器始终关闭;
    };

    vdig1_reg:电脑控制器@5{
    稳压器常开;
    };

    vdig2_reg:电脑控制器@6{
    稳压器常开;
    };

    vpll_reg:电脑控制器@7{
    稳压器常开;
    };

    vdac_reg:电脑控制器@8{
    稳压器常开;
    };

    vaux1_reg:电脑控制器@9{
    稳压器常开;
    };

    vaux2_reg:电脑控制器@10{
    稳压器常开;
    };

    vaux33_reg:电脑控制器@11{
    稳压器常开;
    };

    VMMC_reg:电脑控制器@12{
    稳压器最小微伏=<1800000>;
    稳压器最大值微伏=<3300000>;
    稳压器常开;
    };
    };
    };
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现我所说的挂起命令完成起来非常慢。 设置 tps65910-RTC 硬件时钟大约需要10秒、而 OMAP-RTC 硬件时钟在不到一秒的时间内设置。

    [3.049489] tps65910-RTC tps65910-RTC:RTC 内核:将 tps65910-RTC 注册为 rtc0
    [6.403069] OMAP_RTC 44e3e000.RTC:RTC 内核:将44e3e000.RTC 注册为 RTC1

    # cat /sys/class/rtc/rtc0/time
    11:41:56
    #日期--set="2018年1月27日11:11"
    2018年1月27日11:11:00 UTC
    # hwclock -f /dev/rtc1 -w #完成此过程大约需要一秒钟
    # cat /sys/class/rtc/rtc1/time
    11:11:16
    # cat /sys/class/rtc/rtc0/time
    11:42:33
    # hwclock -f /dev/rtc0 -w #完成此操作需要10秒
    # cat /sys/class/rtc/rtc0/time
    11:11:51

    PMIC i2c 通信是否存在问题或是否会导致问题持续时间太长?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我能够通过 time htosys 消除该错误:

    hctosys:无法打开 RTC 设备(rtc0)  

    当 RTC 驱动程序是可加载模块时、我看到了错误、而是将 RTC 驱动程序配置为内置内核模块、并在引导过程的早期加载。  我找不到一种方法来延迟时间同步。

    我将 OMAP-RTC 作为 rtc0使用。  现在、为电路板加电后、时间看起来是正确的。  我仍在努力控制加载驱动程序的顺序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    除了设置加载顺序之外、我还需要解决 hctosys 错误。 加载 RTC 驱动程序模块后、我找不到一种方法来延迟时间同步发生。

    我发现一种权变措施是使您要首先加载的 RTC 驱动程序成为一个内置模块、而另一个、RTC_OMAP、是一个可加载模块。 内置加载在引导中的时间要早得多、而且当两个可加载模块都与 RTC 同步时、它消除了时间不正确的问题。

    这正常工作

    # dmesg | grep rtc
    [1.285058] vrtc:由 VBAT 供电
    [1.382157] tps65910-RTC tps65910-RTC:启用 RTC-tps65910。
    [1.389681] RTC rtc0:tps65910-RTC:dev (253:0)
    [1.389701] tps65910-RTC tps65910-RTC:RTC 内核:将 tps65910-RTC 注册为 rtc0
    [1.422088] tps65910-RTC tps65910-RTC:将系统时钟设置为2018-01-29 05:05:02 UTC (1517202302)
    [6.356774] OMAP_RTC 44e3e000.RTC:已在运行
    [6.412659] OMAP_RTC 44e3e000.RTC:OMAP_RTC_PROBE:RTC 是_PMIC_controller
    [6.493127] RTC RTC1:44e3e000.RTC:DEV (253:1)
    [6.493144] OMAP_RTC 44e3e000.RTC:RTC 内核:将44e3e000.RTC 注册为 RTC1


    当两个模块都是时、我得到了这个(hctosys 错误):

    # dmesg | grep rtc
    [1.285360] vrtc:由 VBAT 供电
    [1.403947] hctosys:无法打开 RTC 设备(rtc0)
    [3.493050] tps65910-RTC tps65910-RTC:启用 RTC-tps65910。
    [3.501514(XV) RTC rtc0:tps65910-RTC:dev (253:0)
    [3.501557] tps65910-RTC tps65910-RTC:RTC 内核:寄存器 tps65910-RTC 为0
    [6.331188] OMAP_RTC 44e3e000.RTC:OMAP_RTC_PROBE:RTC 是_PMIC_controller
    [6.371432] RTC RTC1:44e3e000.RTC:DEV (253:1)
    [6.371448] OMAP_RTC 44e3e000.RTC:RTC 内核:将44e3e000.RTC 注册为 RTC1
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否仍有任何问题? 如果没有、我们可以关闭它。

    Steve K.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    代码更改已合并到下一个正在测试的版本中、我正在等待产品测试工程师的结果。 请不要关闭。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Aaron、
    测试工程师是否有任何结果?

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

    目前还不是大型项目的关键时间、因此队列中有大量测试、 计划在几周内开始生产、因此我应该很快知道。