Beispiel #1
0
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;
}