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); }} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   ?
12-09 21:13