static int saudio_snd_init_ipc(struct snd_saudio *saudio) { int result = 0; int32_t i = 0, j = 0; struct saudio_stream *stream = NULL; struct saudio_dev_ctrl *dev_ctrl = NULL; ADEBUG(); for (i = 0; i < SAUDIO_DEV_MAX; i++) { /* now only support one device */ dev_ctrl = &saudio->dev_ctrl[i]; result = sblock_create(dev_ctrl->dst, dev_ctrl->monitor_channel, SAUDIO_MONITOR_BLOCK_COUNT, CMD_BLOCK_SIZE, SAUDIO_MONITOR_BLOCK_COUNT, CMD_BLOCK_SIZE); if (result) { ETRACE ("saudio:monitor channel create failed result is %d\n", result); goto __nodev; } result = sblock_create(dev_ctrl->dst, dev_ctrl->channel, SAUDIO_CMD_BLOCK_COUNT, CMD_BLOCK_SIZE, SAUDIO_CMD_BLOCK_COUNT, CMD_BLOCK_SIZE); if (result) { ETRACE ("saudio_thread sblock create failed result is %d\n", result); goto __nodev; } pr_debug("saudio_thread sblock create result is %d\n", result); for (j = 0; j < SAUDIO_STREAM_MAX; j++) { stream = &dev_ctrl->stream[j]; result = sblock_create(stream->dst, stream->channel, SAUDIO_STREAM_BLOCK_COUNT, TX_DATA_BLOCK_SIZE, SAUDIO_STREAM_BLOCK_COUNT, RX_DATA_BLOCK_SIZE); if (result) { ETRACE ("saudio_thread sblock create failed result is %d\n", result); goto __nodev; } sblock_register_notifier(stream->dst, stream->channel, sblock_notifier, stream); pr_debug("saudio_thread sblock create result is %d\n", result); } } ADEBUG(); return result; __nodev: ETRACE("initialization failed\n"); return result; }
static int __init itm_sblock_init(void) { int ret; ret = sblock_create(3, 7, 64, 1600, 64, 1600); if (ret) { printk(KERN_ERR "Failed to create data sblock (%d)\n", ret); return -ENOMEM; } ret = sblock_create(3, 8, 1, (10 * 1024), 1, (10 * 1024)); if (ret) { printk(KERN_ERR "Failed to create event sblock (%d)\n", ret); sblock_destroy(3, 7); return -ENOMEM; } printk(KERN_ERR "create sblock successfully\n"); return 0; }