我正在将 Linux 内核移植到不受支持的 ARM SoC 平台上。不幸的是,在这个 SoC 上,不同的外设有时会在同一内存区域内共享寄存器或混合寄存器。这让我对设备树规范感到悲痛,该规范似乎不支持不同设备共享同一组寄存器或混合在同一地址空间中的寄存器的概念。我在设备树上阅读的各种文档都没有建议处理这个问题的正确方法。
我在多个驱动程序中指定相同寄存器区域的简单方法会为尝试将相同寄存器区域映射为另一个驱动程序的第二个设备抛出“无法请求资源区域”。据我了解,这是内核强制执行有关寄存器区域的设备树规则的结果。
解决这个困境的首选通用解决方案是什么?是否应该有一个更高级别的驱动程序来编组对共享寄存器区域的访问?现有 Linux 内核中是否有解决此特定问题的示例(我找不到任何示例,但我可能不确定要查找什么)?