HWMON(ADC)驱动移植

来源:互联网 发布:网络用语爬楼什么意思 编辑:程序博客网 时间:2024/06/06 03:18


使用Linux3.2.81内核


 


1.arch/arm/mach-s3c2440/mach-smdk2440.c中添加


 #include <plat/hwmon.h>

staticstruct platform_device *smdk2440_devices[] __initdata = {

&s3c_device_ohci,

&s3c_device_lcd,

&s3c_device_wdt,

&s3c_device_i2c0,

&s3c_device_iis,

&s3c_device_sdi, //SD

&s3c_device_adc, //ADC(触摸屏需要ADC支持)。这项必须在s3c_device_ts前面,否则启动不了内核

&s3c_device_hwmon,

&s3c_device_ts,  //触摸屏

};


/* ADC */

static struct s3c_hwmon_pdata smdk2440_hwmon_info __initdata= {

 .in[0] = &(structs3c_hwmon_chcfg) {

  .name = "adc-ch0",

  .mult = 3300,

  .div = 512,

 },


 .in[1] = &(structs3c_hwmon_chcfg) {

  .name = "adc-ch1",

  .mult = 3300,

  .div = 1024,

 },


 .in[2] = &(structs3c_hwmon_chcfg) {

  .name = "adc-ch2",

  .mult = 3300,

  .div = 512,

 },


 .in[3] = &(structs3c_hwmon_chcfg) {

  .name = "adc-ch3",

  .mult = 3300,

  .div = 1024,

 },

};


 

staticvoid __init smdk2440_machine_init(void)

{

s3c24xx_fb_set_platdata(&smdk2440_fb_info);

s3c_i2c0_set_platdata(NULL);

s3c_hwmon_set_platdata(&smdk2440_hwmon_info);//ADC初始化

s3c24xx_ts_set_platdata(&smdk2440_ts_cfg);//初始化触摸屏

 //添加下面三行

writel((readl(S3C2410_GPBCON) & ~(3)) | 1,S3C2410_GPBCON);

writel((readl(S3C2410_GPBDAT) | 1),S3C2410_GPBDAT);

writel((readl(S3C2410_GPGCON) | (3<<8)),S3C2410_GPGCON);

platform_add_devices(smdk2440_devices,ARRAY_SIZE(smdk2440_devices));

smdk_machine_init();

}


2.修改arch/arm/plat-samsung/Kconfig

 config S3C_DEV_HWMON

        bool

        default y  //前面有个Tab

        help

   Compile in platform device definitions forHWMON


 
3.执行make menuconfig

 System Type à
          [*] ADC common driver support

Device Driversà

          <*>Hardware Monitoring supportà

                   <*>  Samsung built-in ADC

                   [*]    Include raw channel attributes in sysfs

          -*- Voltageand Current Regulator Supportà

                   [*]  Provide a dummy regulator if regulatorlookups fail


0 0