你好,
我是一名嵌入式系统工程师,为我公司的一个自行设计的板开发BSP,我们使用Dialog DA9063-3FHK1 PMIC。雷电竞下载app
在实现PMIC稳压器监控的Linux支持时,我发现了不同的版本已存在DA9063 PMIC。它们没有相同的寄存器地图。
由于我不知道我的PMIC版本属于哪个寄存器地图,我在这里发帖是为了知道如何找出在DA9063-3FHK1版本中实现的确切寄存器映射。
最好的问候,
PinkPR
你好
检查寄存器值的最好方法是使用DA9063 GUI,这将允许您检查每个寄存器及其功能。-3FHK1代码描述包,3F是变体号(OTP),而HK1是物理包的详细信息。
3F变体在由82变量所取代的过程中,然而这种变体仍然经历被释放的过程。我建议将来使用82个变体。
亲切的问候,
艾略特德克斯特
点击这里的链接到DA9063 GUI。
嗨,艾略特,谢谢你的回答。
据我所知,DA9063 GUI是与DA9063 Eval板一起使用的。我没有这个eval板,加上我无法在互联网上找到DA9063 GUI。
实际上,我并没有试图找到OTP中的内容,但我只是想检查我的PMIC版本中的寄存器地址是否与Linux源文件中所写的内容兼容。我特别想检查ADC部分。在Linux内核中没有为DA9063实现ADC特性,而这正是我正在从事的工作。
你好PinkPR,
DA9063 GUI
GUI本身可以在没有性能或Eval板的情况下使用,这将允许用户检查和编辑OTP寄存器设置,但不允许用户用PMIC检查OTP。
点击这里DA9063技术支持界面。这个GUI被称为PowerCommander
芯片ID和变体
在DA9063驱动程序中有两个寄存器映射。AD表和BB表,BB表用于DA9063驱动。
芯片ID和可变寄存器值用于检测芯片类型。这些寄存器:
#定义x181 DA9063_REG_CHIP_ID 0
#定义x182 DA9063_REG_CHIP_VARIANT 0
ADC映射
下
https://support.dialog-seminile.com/pmic-audio/device/da9063?qt-pmic_device=1#qt-pmic_device.
文件>飞思卡尔BSP>
有DA9063 Android集成。这些包含DA9063的HWMON驱动程序的示例,该示例集成到Freescale / NXP Android版本中。
最新版本,DA9063 I.MX 6 LOLLIPOP ANDROID L5.1.1 2.1.0 BSP有一个ZIP文件,哪个是DA9063 i.m x6棒棒糖Android L5.1.1 2.1.0 BSP.zip,它包含DA9063的一个hwmon示例。
亲切的问候,艾略特德克斯特
嗨艾略特,
您是否知道为什么在HWMON驱动程序中未实施内部监管机构监控?这正是我正在寻找的功能。我将尝试在您提供的基本驱动程序之上添加这个特性。
嗨皮埃尔奥利维尔,
在过去,超过/欠电压中断处理程序太专用于通用Linux驱动程序,并且内核维护者不支持其添加。Android实现中的示例显示了如何在对话框Pebix参考平台上实现android版本以用于监视,但据信任何实现都包含平台特定组件。
感谢您的回答。我仍然无法找到如何在内部调节器上执行ADC手动转换。
我真的是跟着监控输出电压->调节器输出电压的手动测量第13页第6.4部分AN-PM-024 DA9063电压监控文件,它似乎并没有工作。另外,我注意到这个文档内容和数据表内容之间的一些差异。
例如,文档告诉设置MON_A8_IDX = 0选择BUCKCORE1监控。但是根据数据表,你应该设置MON_A8_IDX = 1.
MON_A8_IDX = 0
MON_A8_IDX = 1
那么什么是对的,什么是错的?
顺便问一下,3F和82版本有什么区别?
数据表及应用说明:
DA9063数据表指出克克隆1的寄存器值为1,并且AN-PM-024大部分状态为BACKCORE1的寄存器值为1。然而,AN-PM-024,表12中的一个表中存在拼写,表12,它状态为0H,这也应该是1待正确且与其他表保持一致。谢谢您指出这一点,我们将更新文档。
改型3F和82:
变型3F和变型82非常相似;某些调节器电压,电流限制和启动插槽有一些微小的变化。对次要寄存器还有一些更改,但没有任何内容可以显着改变其操作或目的。客户和客户要求建议的更改。
ADC
当你说你跟随文件时,它根本不起作用,你的意思是什么?
我实际上是想得到每个调节器的adc测量的电压值。
1.我通过在ADC_MAN寄存器中写入值ADC_MUX(8, 9,或10,根据测量的调节器属于哪一组)来重置ADC。2.我在mon_reg_5或mon_reg_6中写下与稳压器相关的索引。3.我在ADC_MAN寄存器中写入ADC_MAN位(1 << 4)。4.我等待要在Event_A寄存器中设置的e_adc_rdy bit(1 << 3)进行准备的值。5.我得到ADC_RES_H和ADC_RES_L,并合并它们,以便重建转换结果。
问题是,对于每一个属于A8或A10组的调节器,我得到一个充满高比特(OxFF)的ADC_RES_H和ADC_RES_L。在A9的情况下,我根据调节器得到不同的值,但它们完全不符合逻辑。
例如,我(在现实中)有LDO1电压> LDO2电压。但我的ADC转换结果却恰恰相反。
那些不合逻辑的行为让我认为我的算法有一个大问题,它可能来自我所拥有的数据表/应用笔记中的错误信息。这就是为什么我来找你并要求帮助:-)
我遵循了申请说明上的说明,没有任何问题。雷竞技安卓下载我将列出我的步骤,从变体3F开始;我将以LD05设置为2.8 V为例:
注册分类:
我使用带有标准I2C接口的GUI来读取和写入命令,我没有使用它的任何其他函数或更改任何其他寄存器值。我也测试了所有三个ADC通道与不同的调节器,没有任何问题。
你好Pierre-Olivier,
您可能会得到ADC_RES_H和ADC_RES_L寄存器中满是高比特(OxFF)的一个潜在原因是,您试图测量的调节器没有启用。我重新尝试手动测量与调节器禁用,得到了相同的结果,但当我启用调节器,ADC测量正确的输出电压的调节器。
嗨,艾略特
我终于发现了问题所在。我用示波器探测了I2C线路,发现我们在MON_REG_5和MON_REG_6上没有进行写操作。我其实是在用Regmap_write.Linux内核的功能。此功能验证您尝试编写的寄存器实际存在。我不知道为什么,但是DA9063 Linux Driver寄存器范围不包括MON_REG_5和MON_REG_6.我刚将寄存器范围扩展到mon_reg_6,一切都在工作。
Regmap_write.
我可能会提交一个补丁到Linux驱动程序,一旦一切都干净了。
非常感谢您拨出的时间帮助我:-)
没问题,很乐意帮忙。
嗨Pierre-Oliver,
关于你的最后一个问题,我已经和Driver应用团队谈过了,请雷竞技安卓下载回复如下:
从Linux主线v3.16-rc1开始,DA9063 Linux设备驱动程序就使用了标准的Linux regmap框架来访问PMIC的寄存器。
Regmap是寄存器I / O的常见方法,通常由Linux内核中的设备驱动程序使用以执行这些标准访问操作。但是,与其他操作系统I / O方法相比,Regmap不同。部分差异是由于使用寄存器访问权限表,该表可以使用该regmap用于创建芯片模型。
DA9063设备驱动程序定义了寄存器访问权限,以根据设备驱动程序中内置的预定义表列出对DA9063 PMIC寄存器的所有可能的I2C访问。这些表保存注册 - > {可读,可写的,易失性}映射和在文件中静态定义Drivers / MFD / DA9063-I2C.C.因此,Linux内核regmap核心I / O功能可以根据编码到这些表的权限来限制任何PMIC寄存器访问。
应该小心。在Linux设备驱动程序中添加新功能时,它将使用Linux核心regmap函数访问寄存器:应相应地更新相关的Regmap访问表。如果向已启用现有的Regmap的设备驱动程序添加新组件,则在制定寄存器的访问权限条目时,应仔细考虑每个新寄存器中的每个位。使用Regmap的原因不仅仅是为了实施寄存器访问限制;暂停和恢复操作的性能改进,默认值和简化也是Regmap设计的一部分。“
你好
检查寄存器值的最好方法是使用DA9063 GUI,这将允许您检查每个寄存器及其功能。-3FHK1代码描述包,3F是变体号(OTP),而HK1是物理包的详细信息。
3F变体在由82变量所取代的过程中,然而这种变体仍然经历被释放的过程。我建议将来使用82个变体。
亲切的问候,
艾略特德克斯特
点击这里的链接到DA9063 GUI。
嗨,艾略特,谢谢你的回答。
据我所知,DA9063 GUI是与DA9063 Eval板一起使用的。
我没有这个eval板,加上我无法在互联网上找到DA9063 GUI。
实际上,我并没有试图找到OTP中的内容,但我只是想检查我的PMIC版本中的寄存器地址是否与Linux源文件中所写的内容兼容。
我特别想检查ADC部分。在Linux内核中没有为DA9063实现ADC特性,而这正是我正在从事的工作。
PinkPR
你好PinkPR,
DA9063 GUI
GUI本身可以在没有性能或Eval板的情况下使用,这将允许用户检查和编辑OTP寄存器设置,但不允许用户用PMIC检查OTP。
点击这里DA9063技术支持界面。这个GUI被称为PowerCommander
芯片ID和变体
在DA9063驱动程序中有两个寄存器映射。AD表和BB表,BB表用于DA9063驱动。
芯片ID和可变寄存器值用于检测芯片类型。这些寄存器:
#定义x181 DA9063_REG_CHIP_ID 0
#定义x182 DA9063_REG_CHIP_VARIANT 0
ADC映射
下
https://support.dialog-seminile.com/pmic-audio/device/da9063?qt-pmic_device=1#qt-pmic_device.
文件>飞思卡尔BSP>
有DA9063 Android集成。这些包含DA9063的HWMON驱动程序的示例,该示例集成到Freescale / NXP Android版本中。
最新版本,DA9063 I.MX 6 LOLLIPOP ANDROID L5.1.1 2.1.0 BSP有一个ZIP文件,哪个是DA9063 i.m x6棒棒糖Android L5.1.1 2.1.0 BSP.zip,它包含DA9063的一个hwmon示例。
亲切的问候,
艾略特德克斯特
嗨艾略特,
您是否知道为什么在HWMON驱动程序中未实施内部监管机构监控?这正是我正在寻找的功能。
我将尝试在您提供的基本驱动程序之上添加这个特性。
PinkPR
嗨皮埃尔奥利维尔,
在过去,超过/欠电压中断处理程序太专用于通用Linux驱动程序,并且内核维护者不支持其添加。Android实现中的示例显示了如何在对话框Pebix参考平台上实现android版本以用于监视,但据信任何实现都包含平台特定组件。
亲切的问候,
艾略特德克斯特
嗨艾略特,
感谢您的回答。我仍然无法找到如何在内部调节器上执行ADC手动转换。
我真的是跟着监控输出电压->调节器输出电压的手动测量第13页第6.4部分AN-PM-024 DA9063电压监控文件,它似乎并没有工作。
另外,我注意到这个文档内容和数据表内容之间的一些差异。
例如,文档告诉设置
MON_A8_IDX = 0
选择BUCKCORE1监控。但是根据数据表,你应该设置MON_A8_IDX = 1
.那么什么是对的,什么是错的?
PinkPR
顺便问一下,3F和82版本有什么区别?
嗨皮埃尔奥利维尔,
数据表及应用说明:
DA9063数据表指出克克隆1的寄存器值为1,并且AN-PM-024大部分状态为BACKCORE1的寄存器值为1。然而,AN-PM-024,表12中的一个表中存在拼写,表12,它状态为0H,这也应该是1待正确且与其他表保持一致。谢谢您指出这一点,我们将更新文档。
改型3F和82:
变型3F和变型82非常相似;某些调节器电压,电流限制和启动插槽有一些微小的变化。对次要寄存器还有一些更改,但没有任何内容可以显着改变其操作或目的。客户和客户要求建议的更改。
ADC
当你说你跟随文件时,它根本不起作用,你的意思是什么?
亲切的问候,
艾略特德克斯特
我实际上是想得到每个调节器的adc测量的电压值。
1.我通过在ADC_MAN寄存器中写入值ADC_MUX(8, 9,或10,根据测量的调节器属于哪一组)来重置ADC。
2.我在mon_reg_5或mon_reg_6中写下与稳压器相关的索引。
3.我在ADC_MAN寄存器中写入ADC_MAN位(1 << 4)。
4.我等待要在Event_A寄存器中设置的e_adc_rdy bit(1 << 3)进行准备的值。
5.我得到ADC_RES_H和ADC_RES_L,并合并它们,以便重建转换结果。
问题是,对于每一个属于A8或A10组的调节器,我得到一个充满高比特(OxFF)的ADC_RES_H和ADC_RES_L。
在A9的情况下,我根据调节器得到不同的值,但它们完全不符合逻辑。
例如,我(在现实中)有LDO1电压> LDO2电压。但我的ADC转换结果却恰恰相反。
那些不合逻辑的行为让我认为我的算法有一个大问题,它可能来自我所拥有的数据表/应用笔记中的错误信息。
这就是为什么我来找你并要求帮助:-)
PinkPR
嗨皮埃尔奥利维尔,
我遵循了申请说明上的说明,没有任何问题。雷竞技安卓下载我将列出我的步骤,从变体3F开始;我将以LD05设置为2.8 V为例:
注册分类:
我使用带有标准I2C接口的GUI来读取和写入命令,我没有使用它的任何其他函数或更改任何其他寄存器值。我也测试了所有三个ADC通道与不同的调节器,没有任何问题。
亲切的问候,
艾略特德克斯特
你好Pierre-Olivier,
您可能会得到ADC_RES_H和ADC_RES_L寄存器中满是高比特(OxFF)的一个潜在原因是,您试图测量的调节器没有启用。我重新尝试手动测量与调节器禁用,得到了相同的结果,但当我启用调节器,ADC测量正确的输出电压的调节器。
亲切的问候,
艾略特德克斯特
嗨,艾略特
我终于发现了问题所在。
我用示波器探测了I2C线路,发现我们在MON_REG_5和MON_REG_6上没有进行写操作。
我其实是在用
Regmap_write.
Linux内核的功能。此功能验证您尝试编写的寄存器实际存在。我不知道为什么,但是DA9063 Linux Driver寄存器范围不包括MON_REG_5和MON_REG_6.
我刚将寄存器范围扩展到mon_reg_6,一切都在工作。
我可能会提交一个补丁到Linux驱动程序,一旦一切都干净了。
非常感谢您拨出的时间帮助我:-)
PinkPR
你好Pierre-Olivier,
没问题,很乐意帮忙。
亲切的问候,
艾略特德克斯特
嗨Pierre-Oliver,
关于你的最后一个问题,我已经和Driver应用团队谈过了,请雷竞技安卓下载回复如下:
从Linux主线v3.16-rc1开始,DA9063 Linux设备驱动程序就使用了标准的Linux regmap框架来访问PMIC的寄存器。
Regmap是寄存器I / O的常见方法,通常由Linux内核中的设备驱动程序使用以执行这些标准访问操作。但是,与其他操作系统I / O方法相比,Regmap不同。部分差异是由于使用寄存器访问权限表,该表可以使用该regmap用于创建芯片模型。
DA9063设备驱动程序定义了寄存器访问权限,以根据设备驱动程序中内置的预定义表列出对DA9063 PMIC寄存器的所有可能的I2C访问。这些表保存注册 - > {可读,可写的,易失性}映射和在文件中静态定义Drivers / MFD / DA9063-I2C.C.因此,Linux内核regmap核心I / O功能可以根据编码到这些表的权限来限制任何PMIC寄存器访问。
应该小心。在Linux设备驱动程序中添加新功能时,它将使用Linux核心regmap函数访问寄存器:应相应地更新相关的Regmap访问表。如果向已启用现有的Regmap的设备驱动程序添加新组件,则在制定寄存器的访问权限条目时,应仔细考虑每个新寄存器中的每个位。使用Regmap的原因不仅仅是为了实施寄存器访问限制;暂停和恢复操作的性能改进,默认值和简化也是Regmap设计的一部分。“
亲切的问候,
艾略特德克斯特