linux-digilent-3.3.0-digilent-12.07-zed-beta\arch\arm\mach-zynq\platform_devices.c 板端文件#define DMAC0_BASE (0xF8003000) //芯片里DMAC这组寄存器的基地址#define IRQ_DMAC0_ABORT 45#defineIRQ_DMAC0 46#define IRQ_DMAC3 72static struct resource dmac0[] ={ { .start = DMAC0_BASE, .end= DMAC0_BASE + 0xFFF, .flags = IORESOURCE_MEM, //表示是内存资源,使用的时候需要ioremap的 }, { .start =IRQ_DMAC0_ABORT, //??? .end = IRQ_DMAC0_ABORT, .flags =IORESOURCE_IRQ, //#define IORESOURCE_IRQ 0x00000400 include/linux/ioport.h }, { .start = IRQ_DMAC0, .end = IRQ_DMAC0 +3, .flags = IORESOURCE_IRQ,//表示是中断资源,不用映射 }, { .start =IRQ_DMAC3, .end = IRQ_DMAC3 + 3, .flags =IORESOURCE_IRQ, },};struct pl330_platform_config dmac_config0 = { .channels =8, .starting_channel = 0,};static u64 dma_mask =0xFFFFFFFFUL;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////struct platform_device dmac_device0 = { .name= "pl330", .id = 0, .dev = { .platform_data =&dmac_config0, .dma_mask = &dma_mask, .coherent_dma_mask =0xFFFFFFFF, }, .resource = dmac0, .num_resources =ARRAY_SIZE(dmac0),};////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static struct platform_device xilinx_pmu_device ={ .name = "arm-pmu", .id =ARM_PMU_DEVICE_CPU, .num_resources = 1, .resource = &xilinx_pmu_resource,};///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////staticstruct resource xilinx_pmu_resource ={ .start = 37, .end = 38, .flags =IORESOURCE_IRQ,};/*add all platform devices to the following table so they * will beregistered */struct platform_device *xilinx_pdevices[] __initdata = { &dmac_device0, /* &dmac_device1,*/ &xilinx_pmu_device,};/** * platform_device_init - Initialize all the platformdevices. * **/void __init platform_device_init(void){ int ret,i; struct platform_device **devptr; int size; devptr = &xilinx_pdevices[0]; //见struct platform_device *xilinx_pdevices[] __initdata size = ARRAY_SIZE(xilinx_pdevices); ret = 0; /* Initialize all the platform devices */ for (i = 0; i pr_info("registeringplatform device '%s' id%d\n", (*devptr)->name, (*devptr)->id); ret = platform_device_register(*devptr);//设备注册函数 if(ret) pr_info("Unable to register platform device '%s':%d\n", (*devptr)->name, ret); }} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ?