我为ADC模块编写了一个驱动程序,它是IIO子系统的一部分。它读取连接到特定通道的各种硬件外设的电压,这些电压只能从sysfs读取。
我的问题是,我的充电驱动程序也想从ADC读取数据,但是没有这样的API暴露,以便充电驱动程序可以与IIO子系统驱动程序通信(驱动程序-驱动程序通信)。
我的解决方案-是否可以编写一个函数,该函数本身将计算特定通道的ADC电压,并将电压发送到充电驱动器。它获取设备详细信息(driver_find_device),可以调用handler函数进行读取操作。
这不是真的,内核内用户有一个消费者API。它在linux/iio/consumer.h中定义。请查看drivers/hwmon/ii_hwmon.c或drivers/power/axp288_fuel_gauge。c的用法示例。您也可以搜索iio_read_channel_raw,但我建议使用处理过的版本,这肯定更便于移植。