diff options
Diffstat (limited to 'drivers/sound/sound.c')
| -rw-r--r-- | drivers/sound/sound.c | 28 | 
1 files changed, 17 insertions, 11 deletions
| diff --git a/drivers/sound/sound.c b/drivers/sound/sound.c index 6fcc75da5..9b8ce5a9e 100644 --- a/drivers/sound/sound.c +++ b/drivers/sound/sound.c @@ -36,8 +36,7 @@ static int get_sound_i2s_values(struct i2stx_info *i2s, const void *blob)  	int error = 0;  	int base; -	node = fdtdec_next_compatible(blob, 0, -					COMPAT_SAMSUNG_EXYNOS5_SOUND); +	node = fdt_path_offset(blob, "i2s");  	if (node <= 0) {  		debug("EXYNOS_SOUND: No node for sound in device tree\n");  		return -1; @@ -80,6 +79,11 @@ static int get_sound_i2s_values(struct i2stx_info *i2s, const void *blob)  				node, "samsung,i2s-bit-clk-framesize", -1);  	error |= i2s->bfs;  	debug("bfs = %d\n", i2s->bfs); + +	i2s->id = fdtdec_get_int(blob, node, "samsung,i2s-id", -1); +	error |= i2s->id; +	debug("id = %d\n", i2s->id); +  	if (error == -1) {  		debug("fail to get sound i2s node properties\n");  		return -1; @@ -92,6 +96,7 @@ static int get_sound_i2s_values(struct i2stx_info *i2s, const void *blob)  	i2s->channels = I2S_CHANNELS;  	i2s->rfs = I2S_RFS;  	i2s->bfs = I2S_BFS; +	i2s->id = 0;  #endif  	return 0;  } @@ -111,7 +116,7 @@ static int codec_init(const void *blob, struct i2stx_info *pi2s_tx)  	int node;  	/* Get the node from FDT for sound */ -	node = fdtdec_next_compatible(blob, 0, COMPAT_SAMSUNG_EXYNOS5_SOUND); +	node = fdt_path_offset(blob, "i2s");  	if (node <= 0) {  		debug("EXYNOS_SOUND: No node for sound in device tree\n");  		debug("node = %d\n", node); @@ -130,14 +135,15 @@ static int codec_init(const void *blob, struct i2stx_info *pi2s_tx)  #endif  	if (!strcmp(codectype, "wm8994")) {  		/* Check the codec type and initialise the same */ -		ret = wm8994_init(blob, WM8994_AIF2, -			pi2s_tx->samplingrate, -			(pi2s_tx->samplingrate * (pi2s_tx->rfs)), -			pi2s_tx->bitspersample, pi2s_tx->channels); +		ret = wm8994_init(blob, pi2s_tx->id + 1, +				  pi2s_tx->samplingrate, +				  (pi2s_tx->samplingrate * (pi2s_tx->rfs)), +				  pi2s_tx->bitspersample, pi2s_tx->channels);  	} else if (!strcmp(codectype, "max98095")) { -		ret = max98095_init(blob, pi2s_tx->samplingrate, -				(pi2s_tx->samplingrate * (pi2s_tx->rfs)), -				pi2s_tx->bitspersample); +		ret = max98095_init(blob, pi2s_tx->id + 1, +				    pi2s_tx->samplingrate, +				    (pi2s_tx->samplingrate * (pi2s_tx->rfs)), +				    pi2s_tx->bitspersample);  	} else {  		debug("%s: Unknown codec type %s\n", __func__, codectype);  		return -1; @@ -230,7 +236,7 @@ int sound_play(uint32_t msec, uint32_t frequency)  	}  	sound_prepare_buffer((unsigned short *)data, -				data_size / sizeof(unsigned short), frequency); +			     data_size / sizeof(unsigned short), frequency);  	while (msec >= 1000) {  		ret = i2s_transfer_tx_data(&g_i2stx_pri, data, |