sound/soc/codecs/idt821034.c
1015
struct idt821034 *idt821034 = gpiochip_get_data(c);
sound/soc/codecs/idt821034.c
1018
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
1019
slic_dir = idt821034_get_slic_conf(idt821034, ch);
sound/soc/codecs/idt821034.c
102
*valr = idt821034->spi_rx_buf;
sound/soc/codecs/idt821034.c
1020
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
1029
struct idt821034 *idt821034 = gpiochip_get_data(c);
sound/soc/codecs/idt821034.c
1037
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
1039
slic_conf = idt821034_get_slic_conf(idt821034, ch) | mask;
sound/soc/codecs/idt821034.c
104
dev_vdbg(&idt821034->spi->dev, "spi xfer wr 0x%x, rd 0x%x\n",
sound/soc/codecs/idt821034.c
1041
ret = idt821034_set_slic_conf(idt821034, ch, slic_conf);
sound/soc/codecs/idt821034.c
1043
dev_err(&idt821034->spi->dev, "dir in gpio %d (%u, 0x%x) failed (%d)\n",
sound/soc/codecs/idt821034.c
1047
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
1055
struct idt821034 *idt821034 = gpiochip_get_data(c);
sound/soc/codecs/idt821034.c
1063
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
1065
slic_conf = idt821034_get_slic_conf(idt821034, ch) & ~mask;
sound/soc/codecs/idt821034.c
1067
ret = idt821034_set_slic_conf(idt821034, ch, slic_conf);
sound/soc/codecs/idt821034.c
1069
dev_err(&idt821034->spi->dev, "dir out gpio %d (%u, 0x%x) failed (%d)\n",
sound/soc/codecs/idt821034.c
1073
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
1077
static int idt821034_reset_gpio(struct idt821034 *idt821034)
sound/soc/codecs/idt821034.c
1082
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
1086
ret = idt821034_set_slic_conf(idt821034, i,
sound/soc/codecs/idt821034.c
1091
ret = idt821034_write_slic_raw(idt821034, i, 0);
sound/soc/codecs/idt821034.c
1098
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
1102
static int idt821034_gpio_init(struct idt821034 *idt821034)
sound/soc/codecs/idt821034.c
1106
ret = idt821034_reset_gpio(idt821034);
sound/soc/codecs/idt821034.c
1110
idt821034->gpio_chip.owner = THIS_MODULE;
sound/soc/codecs/idt821034.c
1111
idt821034->gpio_chip.label = dev_name(&idt821034->spi->dev);
sound/soc/codecs/idt821034.c
1112
idt821034->gpio_chip.parent = &idt821034->spi->dev;
sound/soc/codecs/idt821034.c
1113
idt821034->gpio_chip.base = -1;
sound/soc/codecs/idt821034.c
1114
idt821034->gpio_chip.ngpio = 5 * 4; /* 5 GPIOs on 4 channels */
sound/soc/codecs/idt821034.c
1115
idt821034->gpio_chip.get_direction = idt821034_chip_get_direction;
sound/soc/codecs/idt821034.c
1116
idt821034->gpio_chip.direction_input = idt821034_chip_direction_input;
sound/soc/codecs/idt821034.c
1117
idt821034->gpio_chip.direction_output = idt821034_chip_direction_output;
sound/soc/codecs/idt821034.c
1118
idt821034->gpio_chip.get = idt821034_chip_gpio_get;
sound/soc/codecs/idt821034.c
1119
idt821034->gpio_chip.set = idt821034_chip_gpio_set;
sound/soc/codecs/idt821034.c
1120
idt821034->gpio_chip.can_sleep = true;
sound/soc/codecs/idt821034.c
1122
return devm_gpiochip_add_data(&idt821034->spi->dev, &idt821034->gpio_chip,
sound/soc/codecs/idt821034.c
1123
idt821034);
sound/soc/codecs/idt821034.c
1128
struct idt821034 *idt821034;
sound/soc/codecs/idt821034.c
1136
idt821034 = devm_kzalloc(&spi->dev, sizeof(*idt821034), GFP_KERNEL);
sound/soc/codecs/idt821034.c
1137
if (!idt821034)
sound/soc/codecs/idt821034.c
1140
idt821034->spi = spi;
sound/soc/codecs/idt821034.c
1142
mutex_init(&idt821034->mutex);
sound/soc/codecs/idt821034.c
1144
spi_set_drvdata(spi, idt821034);
sound/soc/codecs/idt821034.c
1152
return idt821034_gpio_init(idt821034);
sound/soc/codecs/idt821034.c
119
static int idt821034_set_channel_power(struct idt821034 *idt821034, u8 ch, u8 power)
sound/soc/codecs/idt821034.c
124
dev_dbg(&idt821034->spi->dev, "set_channel_power(%u, 0x%x)\n", ch, power);
sound/soc/codecs/idt821034.c
126
conf = IDT821034_MODE_CODEC(ch) | idt821034->cache.codec_conf;
sound/soc/codecs/idt821034.c
129
ret = idt821034_2x8bit_write(idt821034,
sound/soc/codecs/idt821034.c
131
idt821034->cache.ch[ch].rx_slot);
sound/soc/codecs/idt821034.c
136
ret = idt821034_2x8bit_write(idt821034,
sound/soc/codecs/idt821034.c
138
idt821034->cache.ch[ch].tx_slot);
sound/soc/codecs/idt821034.c
143
ret = idt821034_2x8bit_write(idt821034, conf, 0);
sound/soc/codecs/idt821034.c
148
idt821034->cache.ch[ch].power = power;
sound/soc/codecs/idt821034.c
153
static u8 idt821034_get_channel_power(struct idt821034 *idt821034, u8 ch)
sound/soc/codecs/idt821034.c
155
return idt821034->cache.ch[ch].power;
sound/soc/codecs/idt821034.c
162
static int idt821034_set_codec_conf(struct idt821034 *idt821034, u8 codec_conf)
sound/soc/codecs/idt821034.c
168
dev_dbg(&idt821034->spi->dev, "set_codec_conf(0x%x)\n", codec_conf);
sound/soc/codecs/idt821034.c
180
if (idt821034->cache.ch[0].power & IDT821034_CONF_PWRUP_RX) {
sound/soc/codecs/idt821034.c
182
ts = idt821034->cache.ch[0].rx_slot;
sound/soc/codecs/idt821034.c
183
} else if (idt821034->cache.ch[0].power & IDT821034_CONF_PWRUP_TX) {
sound/soc/codecs/idt821034.c
185
ts = idt821034->cache.ch[0].tx_slot;
sound/soc/codecs/idt821034.c
191
ret = idt821034_2x8bit_write(idt821034, conf, ts);
sound/soc/codecs/idt821034.c
195
idt821034->cache.codec_conf = codec_conf;
sound/soc/codecs/idt821034.c
199
static u8 idt821034_get_codec_conf(struct idt821034 *idt821034)
sound/soc/codecs/idt821034.c
201
return idt821034->cache.codec_conf;
sound/soc/codecs/idt821034.c
208
static int idt821034_set_channel_ts(struct idt821034 *idt821034, u8 ch, u8 ch_dir, u8 ts_num)
sound/soc/codecs/idt821034.c
213
dev_dbg(&idt821034->spi->dev, "set_channel_ts(%u, 0x%x, %d)\n", ch, ch_dir, ts_num);
sound/soc/codecs/idt821034.c
215
conf = IDT821034_MODE_CODEC(ch) | idt821034->cache.codec_conf;
sound/soc/codecs/idt821034.c
218
if (idt821034->cache.ch[ch].power & IDT821034_CONF_PWRUP_RX) {
sound/soc/codecs/idt821034.c
219
ret = idt821034_2x8bit_write(idt821034,
sound/soc/codecs/idt821034.c
225
idt821034->cache.ch[ch].rx_slot = ts_num;
sound/soc/codecs/idt821034.c
228
if (idt821034->cache.ch[ch].power & IDT821034_CONF_PWRUP_TX) {
sound/soc/codecs/idt821034.c
229
ret = idt821034_2x8bit_write(idt821034,
sound/soc/codecs/idt821034.c
235
idt821034->cache.ch[ch].tx_slot = ts_num;
sound/soc/codecs/idt821034.c
245
static int idt821034_set_slic_conf(struct idt821034 *idt821034, u8 ch, u8 slic_dir)
sound/soc/codecs/idt821034.c
250
dev_dbg(&idt821034->spi->dev, "set_slic_conf(%u, 0x%x)\n", ch, slic_dir);
sound/soc/codecs/idt821034.c
253
ret = idt821034_2x8bit_write(idt821034, conf, idt821034->cache.ch[ch].slic_control);
sound/soc/codecs/idt821034.c
257
idt821034->cache.ch[ch].slic_conf = slic_dir;
sound/soc/codecs/idt821034.c
262
static u8 idt821034_get_slic_conf(struct idt821034 *idt821034, u8 ch)
sound/soc/codecs/idt821034.c
264
return idt821034->cache.ch[ch].slic_conf;
sound/soc/codecs/idt821034.c
267
static int idt821034_write_slic_raw(struct idt821034 *idt821034, u8 ch, u8 slic_raw)
sound/soc/codecs/idt821034.c
272
dev_dbg(&idt821034->spi->dev, "write_slic_raw(%u, 0x%x)\n", ch, slic_raw);
sound/soc/codecs/idt821034.c
283
conf = IDT821034_MODE_SLIC(ch) | idt821034->cache.ch[ch].slic_conf;
sound/soc/codecs/idt821034.c
284
ret = idt821034_2x8bit_write(idt821034, conf, slic_raw);
sound/soc/codecs/idt821034.c
288
idt821034->cache.ch[ch].slic_control = slic_raw;
sound/soc/codecs/idt821034.c
292
static u8 idt821034_get_written_slic_raw(struct idt821034 *idt821034, u8 ch)
sound/soc/codecs/idt821034.c
294
return idt821034->cache.ch[ch].slic_control;
sound/soc/codecs/idt821034.c
297
static int idt821034_read_slic_raw(struct idt821034 *idt821034, u8 ch, u8 *slic_raw)
sound/soc/codecs/idt821034.c
314
val = IDT821034_MODE_SLIC(ch) | idt821034->cache.ch[ch].slic_conf;
sound/soc/codecs/idt821034.c
315
ret = idt821034_8bit_write(idt821034, val);
sound/soc/codecs/idt821034.c
319
ret = idt821034_8bit_read(idt821034, idt821034->cache.ch[ch].slic_control, slic_raw);
sound/soc/codecs/idt821034.c
323
dev_dbg(&idt821034->spi->dev, "read_slic_raw(%i) 0x%x\n", ch, *slic_raw);
sound/soc/codecs/idt821034.c
332
static int idt821034_set_gain_channel(struct idt821034 *idt821034, u8 ch,
sound/soc/codecs/idt821034.c
338
dev_dbg(&idt821034->spi->dev, "set_gain_channel(%u, 0x%x, 0x%x-%d)\n",
sound/soc/codecs/idt821034.c
379
ret = idt821034_2x8bit_write(idt821034, conf | 0x00, gain_val & 0x007F);
sound/soc/codecs/idt821034.c
383
ret = idt821034_2x8bit_write(idt821034, conf | 0x01, (gain_val >> 7) & 0x7F);
sound/soc/codecs/idt821034.c
406
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/idt821034.c
416
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
418
val = idt821034->amps.ch[ch].amp_out.gain;
sound/soc/codecs/idt821034.c
420
val = idt821034->amps.ch[ch].amp_in.gain;
sound/soc/codecs/idt821034.c
421
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
437
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/idt821034.c
459
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
462
amp = &idt821034->amps.ch[ch].amp_out;
sound/soc/codecs/idt821034.c
465
amp = &idt821034->amps.ch[ch].amp_in;
sound/soc/codecs/idt821034.c
475
ret = idt821034_set_gain_channel(idt821034, ch, gain_type, val);
sound/soc/codecs/idt821034.c
483
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
491
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/idt821034.c
498
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
500
idt821034->amps.ch[ch].amp_out.is_muted :
sound/soc/codecs/idt821034.c
501
idt821034->amps.ch[ch].amp_in.is_muted;
sound/soc/codecs/idt821034.c
502
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
51
static int idt821034_8bit_write(struct idt821034 *idt821034, u8 val)
sound/soc/codecs/idt821034.c
513
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/idt821034.c
524
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
527
amp = &idt821034->amps.ch[ch].amp_out;
sound/soc/codecs/idt821034.c
530
amp = &idt821034->amps.ch[ch].amp_in;
sound/soc/codecs/idt821034.c
539
ret = idt821034_set_gain_channel(idt821034, ch, gain_type,
sound/soc/codecs/idt821034.c
547
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
55
.tx_buf = &idt821034->spi_tx_buf,
sound/soc/codecs/idt821034.c
59
.tx_buf = &idt821034->spi_tx_buf,
sound/soc/codecs/idt821034.c
623
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/idt821034.c
632
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
634
power = idt821034_get_channel_power(idt821034, ch);
sound/soc/codecs/idt821034.c
639
ret = idt821034_set_channel_power(idt821034, ch, power);
sound/soc/codecs/idt821034.c
64
idt821034->spi_tx_buf = val;
sound/soc/codecs/idt821034.c
641
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
66
dev_vdbg(&idt821034->spi->dev, "spi xfer wr 0x%x\n", val);
sound/soc/codecs/idt821034.c
68
return spi_sync_transfer(idt821034->spi, xfer, 2);
sound/soc/codecs/idt821034.c
700
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(dai->component);
sound/soc/codecs/idt821034.c
71
static int idt821034_2x8bit_write(struct idt821034 *idt821034, u8 val1, u8 val2)
sound/soc/codecs/idt821034.c
720
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
721
ret = idt821034_set_channel_ts(idt821034, ch, IDT821034_CH_RX, slot);
sound/soc/codecs/idt821034.c
722
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
738
idt821034->max_ch_playback = ch;
sound/soc/codecs/idt821034.c
745
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
746
ret = idt821034_set_channel_ts(idt821034, ch, IDT821034_CH_TX, slot);
sound/soc/codecs/idt821034.c
747
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
75
ret = idt821034_8bit_write(idt821034, val1);
sound/soc/codecs/idt821034.c
763
idt821034->max_ch_capture = ch;
sound/soc/codecs/idt821034.c
770
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(dai->component);
sound/soc/codecs/idt821034.c
774
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
776
conf = idt821034_get_codec_conf(idt821034);
sound/soc/codecs/idt821034.c
78
return idt821034_8bit_write(idt821034, val2);
sound/soc/codecs/idt821034.c
791
ret = idt821034_set_codec_conf(idt821034, conf);
sound/soc/codecs/idt821034.c
793
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
801
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(dai->component);
sound/soc/codecs/idt821034.c
805
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
807
conf = idt821034_get_codec_conf(idt821034);
sound/soc/codecs/idt821034.c
81
static int idt821034_8bit_read(struct idt821034 *idt821034, u8 valw, u8 *valr)
sound/soc/codecs/idt821034.c
822
ret = idt821034_set_codec_conf(idt821034, conf);
sound/soc/codecs/idt821034.c
824
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
838
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(dai->component);
sound/soc/codecs/idt821034.c
843
idt821034->max_ch_playback : idt821034->max_ch_capture;
sound/soc/codecs/idt821034.c
85
.tx_buf = &idt821034->spi_tx_buf,
sound/soc/codecs/idt821034.c
86
.rx_buf = &idt821034->spi_rx_buf,
sound/soc/codecs/idt821034.c
895
static int idt821034_reset_audio(struct idt821034 *idt821034)
sound/soc/codecs/idt821034.c
90
.tx_buf = &idt821034->spi_tx_buf,
sound/soc/codecs/idt821034.c
900
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
902
ret = idt821034_set_codec_conf(idt821034, 0);
sound/soc/codecs/idt821034.c
907
idt821034->amps.ch[i].amp_out.gain = IDT821034_GAIN_OUT_INIT_RAW;
sound/soc/codecs/idt821034.c
908
idt821034->amps.ch[i].amp_out.is_muted = false;
sound/soc/codecs/idt821034.c
909
ret = idt821034_set_gain_channel(idt821034, i, IDT821034_GAIN_RX,
sound/soc/codecs/idt821034.c
910
idt821034->amps.ch[i].amp_out.gain);
sound/soc/codecs/idt821034.c
914
idt821034->amps.ch[i].amp_in.gain = IDT821034_GAIN_IN_INIT_RAW;
sound/soc/codecs/idt821034.c
915
idt821034->amps.ch[i].amp_in.is_muted = false;
sound/soc/codecs/idt821034.c
916
ret = idt821034_set_gain_channel(idt821034, i, IDT821034_GAIN_TX,
sound/soc/codecs/idt821034.c
917
idt821034->amps.ch[i].amp_in.gain);
sound/soc/codecs/idt821034.c
921
ret = idt821034_set_channel_power(idt821034, i, 0);
sound/soc/codecs/idt821034.c
928
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
934
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/idt821034.c
938
ret = idt821034_reset_audio(idt821034);
sound/soc/codecs/idt821034.c
96
idt821034->spi_tx_buf = valw;
sound/soc/codecs/idt821034.c
964
struct idt821034 *idt821034 = gpiochip_get_data(c);
sound/soc/codecs/idt821034.c
968
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
970
slic_raw = idt821034_get_written_slic_raw(idt821034, ch);
sound/soc/codecs/idt821034.c
975
ret = idt821034_write_slic_raw(idt821034, ch, slic_raw);
sound/soc/codecs/idt821034.c
977
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
98
ret = spi_sync_transfer(idt821034->spi, xfer, 2);
sound/soc/codecs/idt821034.c
980
dev_err(&idt821034->spi->dev, "set gpio %d (%u, 0x%x) failed (%d)\n",
sound/soc/codecs/idt821034.c
990
struct idt821034 *idt821034 = gpiochip_get_data(c);
sound/soc/codecs/idt821034.c
994
mutex_lock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
995
ret = idt821034_read_slic_raw(idt821034, ch, &slic_raw);
sound/soc/codecs/idt821034.c
996
mutex_unlock(&idt821034->mutex);
sound/soc/codecs/idt821034.c
998
dev_err(&idt821034->spi->dev, "get gpio %d (%u, 0x%x) failed (%d)\n",