我被要求在Linux中调出一个Ring Oscillator。首先,我尝试直接读取控制和状态寄存器(有趣的位),然后我可以访问devmem(使用寄存器的物理地址)。有两个Ring Oscillator模块0和1.每个都包含4个Ring振荡器。模块0输出馈送随机数发生器。模块1用于过程监控 - 目前还没有太多信息。每个模块都有单独的寄存器用于控制,状态等。每个环形振荡器都有一个频率计数器,当适当设置环形振荡器的控制寄存器时,我可以从频率计数器的计数寄存器中读取频率计数。
现在我必须为Ring Oscillator编写设备驱动程序以实现启动目的。我不太清楚的是,在dts文件中我是否应该尝试将Ring Oscillator表示为时钟源或将其视为平台设备。无法找到有关Linux如何处理环形振荡器的大量信息。我是否应该查找Ring Oscillator的设备地址,并尝试将其添加为dts文件中的任何其他平台外围设备条目。在那,我可以将其注册为驱动程序文件中的平台设备,并从探测功能控制其寄存器。或者我应该把它当作时钟源?但是,从可用的文档中我看不到它被用作任何其他外设的时钟源。请问有人对此有所了解吗?任何帮助将受到高度赞赏。
感谢。
此致
的Vivek
答案 0 :(得分:0)
我已经将Ring Oscillator作为平台驱动程序。 dts / dtsi的变化如下:
DTSI:
ring_osc: ring-oscillator@F00xxxxx {
compatible = "abc,abc-ring";
reg = <0xF00xxxxx 0x14>;
status = "disabled";
};
DTS:
&ring_osc {
status = "okay";
};
我编写的驱动程序只是使用配置寄存器配置振荡器。此外,还提供了一个sysfs接口,用于设置连接到它的频率计数器的周期值,并从频率计数器读回频率计数。