adc和pwm

at91_adc.c


at91_adc_probe()
{
    申请iio_dev
    从中提取 at91_adc_state
    填充at91_adc_state
    填充io_dev at91_adc_info -> at91_adc_read_raw()
    获取中断资源申请中断 at91_adc_interrupt()
    计算并使能时钟
    初始化队列和锁
    初始化缓存和触发 at91_adc_buffer_init() at91_adc_trigger_init()
    注册iio_dev
}

at91_adc_read_raw()
{
    开中断
    等wait_event
    向上传值
    关中断
}

at91_adc_interrupt()
{
    获取状态寄存器值
    根据寄存器值进行操作
}


industraialio-core.c                                                                                                                                                                      at91_adc.c
iio_device_register -> iio_device_register_sysfs -> iio_device_add_channel_sysfs -> iio_read_channel_info -> indio_dev->info->read_raw == at91_adc_read_raw

atmel_pwm_probe()
{
    开辟空间atmel_pwm_chip
    获取映射io资源
    获取clk 
    填充atmel_pwm_chip atmel_pwm_ops
    注册pwm_chip pwmchip_add()    

}

pwm子系统 貌似还没完善

你可能感兴趣的:(linux驱动)