1, 驱动架构: 驱动分两个层次,上层是平台设备驱动,底层是audio 驱动与mixer 驱动
(1)标准的平台设备驱动结构,probe 与remove 两个函数
probe: 获得平台资源->申请内存区域->io 内存重映射->获得并使能时钟->设置 gpio 口->初始化iis总线-> 初始化uda1341->audio dma 初始化->注册dsp 和 mixer->释放内存区域
代码及注释: static int s3c2410iis_probe(struct platform_device *pdev) { struct resource *res; unsigned long flags; int ret; DPRINTK("s3c2410iis_probe\n"); //获得平台设备资源 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (res == NULL) { printk(KERN_INFO PFX "failed to get memory region resouce\n"); return -ENOENT; } //申请可用内存 res = request_mem_region(res->start, RESSIZE(res), pdev->name); if(res == 0){ printk(KERN_INFO PFX "failed to request io memory region
\n"); return -ENOENT; } //io 内存重映射 iis_base = ioremap(res->start, RESSIZE(res)); if(iis_base == 0){ printk(KERN_INFO PFX "failed to ioremap() i