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/am5728:PMIC I2C 总线更改

Guru**** 2589265 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/631929/linux-am5728-pmic-i2c-bus-change

器件型号:AM5728

工具/软件:Linux

您好!

在我们的定制 AM5728设计中、我们使用了 I2C3端口来控制 PMIC、而不是 I2C1。 我们尝试更改 MLO 和 uboot 源代码上的 I2C1、但遇到了问题。

我正在使用 Linux Ubuntu 16.04和 SDK 版本(03.03.00.04)。 我们的目标是将 AM5728 I2C 总线从 I2C1更改为 I2C3、以控制 PMIC (在我们的定制板上、我们将 AM5728 I2C3连接到 PMIC I2C 总线)。 我们进行了以下更改:

1-(Uboot 源码目录)/arch/arm/dts/am57xx-beagle-x15.dts 在此文件中、我们添加了用于 PMIC 控制的 i2c3设置。

2-(Uboot 源码目录)/include/configs/ti_armv7_omap.h 在此文件中、在 I2C IP 块下、对于此定义、我们已从1更改为3 (#define CONFIG_SYS_OMAP24_I2C_SLAVE 3)

3-(Uboot 源代码方向)/arch/arm/include/asm/arch-omap5/i2c.h 在此文件中、我们已将此定义从1更改为3 (#define I2C_DEFAULT_base I2C_BASE3)

4- (Uboot 源码目录)/board/ti/am57xx/mux_data.h 在此文件中、我们删除了引脚多路复用器 i2c1并在这些结构下添加了 i2c3引脚多路复用器  pad_conf_entry earne_padconf 和  const 结构 pad_conf_entry core_padconf_array_ess_x15[]

5- (Uboot 源目录)/arch/arm/cpu/armv7/omap5/hw_data.c 在此文件中 ,我们添加 了(* prcm)->cm_l4per_i2c3_clkctrl,

我们是否需要更改任何其他文件才能获得结果?

我们为定制板添加了 Uboot 调试控制台作为附件。 您可以看到下面的错误。

此致

Alican

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Alican:

    在步骤4中、查看您是否具有:
    const struct pad_conf_entry earle_padconf[]

    如果确实如此、请将 I2C1更改为系统中使用的 I2C3。

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

    我们已经对其进行了更改。

    const struct pad_conf_entry earle_padconf[]={
    {SPI2_SCLK、(M1 | PIN_INPUT_SLEW)}、// SPI2_SCLK/uart3_RxD *
    {SPI2_D1、(M1 | PIN_INPUT_SLEW)}、// SPI2_D1.uart3_TxD *
    {GPIO6_10、(M2 | PIN_INPUT_PULLUP)}、// GPIO6_10.i2c3_sda *
    {GPIO6_11、(M2 | PIN_INPUT_PULLUP)}、// GPIO6_11.i2c3_SCL *
    };

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

    您是否曾尝试在 I2C 线路上放置示波器? 是否有任何活动? 如果您在 I2C3或 I2C1上看到任何活动、会很有意思。

    接下来、我要设置一些断点以了解发生的情况。 查看一些低级 I2C 函数、如 i2c_set_fbus_num、以验证 I2C3实例是否已设置、并在 do _scale_vcore 函数(arch/arm/cpu/armv7/omap_common.c)中稍微向上看。

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

    我们已经解决了这个问题。 我们的定制 AM5728设计使用 I2C1端口来控制 PMIC (TPS6590377与 AM57xx GP EVM 修订版 A3不同)、而不是 I2C1。 我们使用的是 Linux Ubuntu 16.04和 SDK 版本(03.03.00.04)。 我们进行了以下更改:

    1-(Uboot 源码目录)/arch/arm/dts/am57xx-beagle-x15.dts 在此文件中、我们添加了 I2C3设置、而不是用于 PMIC 控制的 I2C1。

    2-(Uboot 源码目录)/board/ti/am57xx/mux_data.h 在此文件中、我们删除了引脚多路复用器 I2C1并在这些结构下添加了 I2C3引脚多路复用器 pad_conf_entry early_padconf 和 const 结构 pad_conf_entry core_padconf_array_ess_x15[]

    3-(Uboot 源目录)/arch/arm/cpu/armv7/omap5/hw_data.c 在此文件中,在"enable_basic_clocks"函数下,我们添加了(* prcm)->cm_l4per_i2c3_clkctrl,而不是(* prcm)->cm_l4per_i2c1_clkctrl (默认)

    4-(Uboot 源码目录)/drivers/power/palmas.c 在此文件中、在"Palmas_mmc1_power_LDO"函数下、我们添加了"i2c_set_fbus_num (2)"以设置 I2C3总线。 在向 PMIC 发送命令之前、我们必须设置为 I2C3总线编号。

    5 (Uboot 源代码方向)/drivers/i2c/i2c_core.c 在此文件中、在"i2c_init"函数下、我们添加了"i2c_set_fbus_num(2)"以设置 I2C3总线。 此步骤是必要的、因为"i2c_init"函数默认设置为 I2C1总线编号。

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

    尊敬的 Alican:

    非常感谢您汇报并总结您的结果!

    此致、
    Mike