int init_zion_audio_proc(void) { zion_params_t *zion_params; int ret; /* get ZION parameters */ zion_params = find_zion(0); if(zion_params == NULL) { return -ENODEV; } /* Check Fireball */ if((zion_params->revision & 0xF000) == 0xF000) { PINFO("This is fireball! ZION AudioProc cannot be used!!\n"); return 0; } /* register fuctions for operation */ zion_params->zion_operations[ZION_AUDIO_PROC]=&zion_audio_proc_fops; /* enable interruption */ ret = zion_enable_mbus_interrupt(zion_params, AudioProc_Int, zion_audio_proc_event); if(ret) { PERROR("registering interruption failed.\n"); return -EINVAL; } PINFO("ZION Audio Proc module Installed.\n"); return 0; }
/*************************************************************************** * init_zion_dmaif **************************************************************************/ int init_zion_dmaif(void) { zion_params_t *zion_params; int ret, i; /* get ZION parameters */ zion_params = find_zion(0); if (zion_params == NULL) { return -ENODEV; } /* Check Fireball */ if((zion_params->revision & 0xF000) == 0xF000) { PINFO("This is fireball! ZION DMA IF cannot be used!!\n"); return 0; } /* register fuctions for operation */ for (i = 0; i < ZION_EDMA_PORT; i++) { zion_params->zion_operations[ZION_DMAIF + i] = &zion_dmaif_port_fops; } /* Set Private Data Area */ zion_params->zion_private[ZION_DMAIF] = kmalloc(sizeof(zion_dmaif_params_t), GFP_KERNEL); if (ZION_DMAIF_PARAM(zion_params) == NULL) { PERROR ("Can't get enough space for private data.\n"); return -ENOMEM; } initialize_zion_dmaif_private_space(ZION_DMAIF_PARAM (zion_params)); #ifndef NEO_DEBUG PINFO("ZION DMAIF(EDMA) module ver. %d.%d Installed.\n", DMAIF_MAJORVER, DMAIF_MINORVER); #else /* NEO_DEBUG */ PINFO("ZION DMAIF(EDMA) module ver. %d.%d-DEBUG Installed.\n", DMAIF_MAJORVER, DMAIF_MINORVER); #endif /* !NEO_DEBUG */ /* enable interruption */ mbus_writew(ZION_MBUS_DMASEL_ENB, MBUS_ADDR(zion_params, ZION_MBUS_IOSEL)); /* DMA select */ ret = zion_enable_mbus_interrupt(zion_params, Dmaif_Int, zion_dmaif_event); if (ret) { PERROR ("registering interruption failed.\n"); return -EINVAL; } mbus_writew(ZION_MBUS_INTGB_MPU1ENB, MBUS_ADDR(zion_params, ZION_MBUS_INTGEN_B)); /* INT Gen B Enable */ return 0; }