⑤tiny4412 Linux驱动开发之ADC驱动程序

这篇博客介绍了在Linux环境下,针对Exynos4412平台的ADC驱动程序开发,采用字符设备而非iio或hwmon子系统。开发者参考了友善之臂官方提供的杂项设备驱动,并计划在后续深入学习后使用更规范的子系统方式进行开发。
摘要由CSDN通过智能技术生成

本次开发ADC没有使用iio子系统,也没有用hwmon子系统的方式开发,而是使用字符设备开发的,原因是友善之臂官方提供了一个线程的ADC驱动,是基于杂项设备写的,为了降低难度,这里也是这样写,等到后边比较深入之后,再用相关子系统的方式做规范开发.

在看本文之前可以先看<<S3C2410驱动分析之ADC通用驱动>>先了解一下三星平台ADC使用的大致情况.本例程ADC相关操作使用的是三星远程提供的\linux-3.5\arch\arm\plat-samsung\adc.c里的一些函数.具体看代码即可知道.

首先是驱动代码:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/input.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
#include <linux/platform_device.h>

#include <asm/uaccess.h>

#include <plat/adc.h>


#define	ADC_SET_CHANNEL _IOW('L', 0x1234, int)
#define ADC_SET_ADCTSC  _IOW('L', 0x1235, int)

struct ADC_OBJ{
    struct mutex mutex_lock;
    struct s3c_adc_client *client;
    int channel;
};

struct ADC_OBJ *exynos4412_adcdev = NULL;

static inline
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值