移植DAC芯片MCP4725驱动到NUC980

本文介绍了移植DAC芯片MCP4725的方法。

因为官方提供的linux-4.4.x虽然有一个mcp4725.c的驱动,但该驱动适合无dts的老的应用场景,而我的系统使用了dts树所以需要更换该驱动,具体方法为:

从网站linux/mcp4725.c at master · torvalds/linux · GitHub

下载mcp4725.c,下载的该文件要做下面调整才能被正常编译使用,具体如下:

1 增加头文件:#include <linux/of_device.h>

2 找到IIO_ENUM_AVAILABLE并删除第二个参数,变成如下形式:

IIO_ENUM_AVAILABLE("powerdown_mode",

                           &mcp472x_powerdown_mode_enum[MCP4725]),

        IIO_ENUM_AVAILABLE("powerdown_mode",

                           &mcp472x_powerdown_mode_enum[MCP4726]),

3 找到device_get_match_data改成of_device_get_match_data

 if (dev_fwnode(&client->dev))

                data->id = (uintptr_t)of_device_get_match_data(&client->dev);

        else

         ......

4 替换include/linux/iio/dac/mcp4725.h为下面内容:

....

struct mcp4725_platform_data {

bool use_vref;

bool vref_buffered;

};

....

5 修改文件:

drivers/base/property.c +108,允许dev_fwnode 被外部调用:

struct fwnode_handle *dev_fwnode(struct device *dev)

{

        return IS_ENABLED(CONFIG_OF) && dev->of_node ?

                &dev->of_node->fwnode : dev->fwnode;

}

EXPORT_SYMBOL_GPL(dev_fwnode);

6 调整include/linux/property.h,对输出的函数进行声明

struct fwnode_handle *dev_fwnode(struct device *dev);

7  因为DAC芯片是挂接在I2c1总线上,需要修改文件nuc980-iot.dtsi,增加蓝色部分:

i2c1: i2c1@b0081000 {

                        compatible = "nuvoton,nuc980-i2c1";

.........

                        #address-cells = <1>;

                        #size-cells = <0>;

                        mcp4725@61 {

                        compatible = "microchip,mcp4725";

                                reg = <0x61>;

                        };

编译正常后刷写到板子内部后进入/sys/devices/iio:deviceX即可看到节点信息,这里的X请根据自己的系统实际情况进行替换。

可以写入DA值然后实际用万用表进行测试验证。

echo 2000 > out_voltage0_raw

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值