Lines Matching refs:onyx

45 struct onyx {  struct
62 #define codec_to_onyx(c) container_of(c, struct onyx, codec) argument
65 static int onyx_read_register(struct onyx *onyx, u8 reg, u8 *value) in onyx_read_register() argument
70 *value = onyx->cache[reg-FIRSTREGISTER]; in onyx_read_register()
73 v = i2c_smbus_read_byte_data(onyx->i2c, reg); in onyx_read_register()
79 onyx->cache[ONYX_REG_CONTROL-FIRSTREGISTER] = *value; in onyx_read_register()
83 static int onyx_write_register(struct onyx *onyx, u8 reg, u8 value) in onyx_write_register() argument
87 result = i2c_smbus_write_byte_data(onyx->i2c, reg, value); in onyx_write_register()
89 onyx->cache[reg-FIRSTREGISTER] = value; in onyx_write_register()
121 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_snd_vol_get() local
124 mutex_lock(&onyx->mutex); in onyx_snd_vol_get()
125 onyx_read_register(onyx, ONYX_REG_DAC_ATTEN_LEFT, &l); in onyx_snd_vol_get()
126 onyx_read_register(onyx, ONYX_REG_DAC_ATTEN_RIGHT, &r); in onyx_snd_vol_get()
127 mutex_unlock(&onyx->mutex); in onyx_snd_vol_get()
138 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_snd_vol_put() local
148 mutex_lock(&onyx->mutex); in onyx_snd_vol_put()
149 onyx_read_register(onyx, ONYX_REG_DAC_ATTEN_LEFT, &l); in onyx_snd_vol_put()
150 onyx_read_register(onyx, ONYX_REG_DAC_ATTEN_RIGHT, &r); in onyx_snd_vol_put()
154 mutex_unlock(&onyx->mutex); in onyx_snd_vol_put()
158 onyx_write_register(onyx, ONYX_REG_DAC_ATTEN_LEFT, in onyx_snd_vol_put()
161 onyx_write_register(onyx, ONYX_REG_DAC_ATTEN_RIGHT, in onyx_snd_vol_put()
164 mutex_unlock(&onyx->mutex); in onyx_snd_vol_put()
197 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_snd_inputgain_get() local
200 mutex_lock(&onyx->mutex); in onyx_snd_inputgain_get()
201 onyx_read_register(onyx, ONYX_REG_ADC_CONTROL, &ig); in onyx_snd_inputgain_get()
202 mutex_unlock(&onyx->mutex); in onyx_snd_inputgain_get()
213 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_snd_inputgain_put() local
219 mutex_lock(&onyx->mutex); in onyx_snd_inputgain_put()
220 onyx_read_register(onyx, ONYX_REG_ADC_CONTROL, &v); in onyx_snd_inputgain_put()
225 onyx_write_register(onyx, ONYX_REG_ADC_CONTROL, n); in onyx_snd_inputgain_put()
226 mutex_unlock(&onyx->mutex); in onyx_snd_inputgain_put()
251 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_snd_capture_source_get() local
254 mutex_lock(&onyx->mutex); in onyx_snd_capture_source_get()
255 onyx_read_register(onyx, ONYX_REG_ADC_CONTROL, &v); in onyx_snd_capture_source_get()
256 mutex_unlock(&onyx->mutex); in onyx_snd_capture_source_get()
263 static void onyx_set_capture_source(struct onyx *onyx, int mic) in onyx_set_capture_source() argument
267 mutex_lock(&onyx->mutex); in onyx_set_capture_source()
268 onyx_read_register(onyx, ONYX_REG_ADC_CONTROL, &v); in onyx_set_capture_source()
272 onyx_write_register(onyx, ONYX_REG_ADC_CONTROL, v); in onyx_set_capture_source()
273 mutex_unlock(&onyx->mutex); in onyx_set_capture_source()
311 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_snd_mute_get() local
314 mutex_lock(&onyx->mutex); in onyx_snd_mute_get()
315 onyx_read_register(onyx, ONYX_REG_DAC_CONTROL, &c); in onyx_snd_mute_get()
316 mutex_unlock(&onyx->mutex); in onyx_snd_mute_get()
327 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_snd_mute_put() local
331 mutex_lock(&onyx->mutex); in onyx_snd_mute_put()
332 if (onyx->analog_locked) in onyx_snd_mute_put()
335 onyx_read_register(onyx, ONYX_REG_DAC_CONTROL, &v); in onyx_snd_mute_put()
342 err = onyx_write_register(onyx, ONYX_REG_DAC_CONTROL, c); in onyx_snd_mute_put()
345 mutex_unlock(&onyx->mutex); in onyx_snd_mute_put()
368 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_snd_single_bit_get() local
375 mutex_lock(&onyx->mutex); in onyx_snd_single_bit_get()
376 onyx_read_register(onyx, address, &c); in onyx_snd_single_bit_get()
377 mutex_unlock(&onyx->mutex); in onyx_snd_single_bit_get()
387 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_snd_single_bit_put() local
396 mutex_lock(&onyx->mutex); in onyx_snd_single_bit_put()
397 if (spdiflock && onyx->spdif_locked) { in onyx_snd_single_bit_put()
402 onyx_read_register(onyx, address, &v); in onyx_snd_single_bit_put()
407 err = onyx_write_register(onyx, address, c); in onyx_snd_single_bit_put()
410 mutex_unlock(&onyx->mutex); in onyx_snd_single_bit_put()
489 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_spdif_get() local
492 mutex_lock(&onyx->mutex); in onyx_spdif_get()
493 onyx_read_register(onyx, ONYX_REG_DIG_INFO1, &v); in onyx_spdif_get()
496 onyx_read_register(onyx, ONYX_REG_DIG_INFO2, &v); in onyx_spdif_get()
499 onyx_read_register(onyx, ONYX_REG_DIG_INFO3, &v); in onyx_spdif_get()
502 onyx_read_register(onyx, ONYX_REG_DIG_INFO4, &v); in onyx_spdif_get()
504 mutex_unlock(&onyx->mutex); in onyx_spdif_get()
512 struct onyx *onyx = snd_kcontrol_chip(kcontrol); in onyx_spdif_put() local
515 mutex_lock(&onyx->mutex); in onyx_spdif_put()
516 onyx_read_register(onyx, ONYX_REG_DIG_INFO1, &v); in onyx_spdif_put()
518 onyx_write_register(onyx, ONYX_REG_DIG_INFO1, v); in onyx_spdif_put()
521 onyx_write_register(onyx, ONYX_REG_DIG_INFO2, v); in onyx_spdif_put()
523 onyx_read_register(onyx, ONYX_REG_DIG_INFO3, &v); in onyx_spdif_put()
525 onyx_write_register(onyx, ONYX_REG_DIG_INFO3, v); in onyx_spdif_put()
527 onyx_read_register(onyx, ONYX_REG_DIG_INFO4, &v); in onyx_spdif_put()
529 onyx_write_register(onyx, ONYX_REG_DIG_INFO4, v); in onyx_spdif_put()
530 mutex_unlock(&onyx->mutex); in onyx_spdif_put()
578 static int onyx_register_init(struct onyx *onyx) in onyx_register_init() argument
584 if (!onyx->initialised) { in onyx_register_init()
586 if (onyx_read_register(onyx, ONYX_REG_CONTROL, &val)) in onyx_register_init()
593 regs[i] = onyx->cache[register_map[i]-FIRSTREGISTER]; in onyx_register_init()
597 if (onyx_write_register(onyx, register_map[i], regs[i])) in onyx_register_init()
600 onyx->initialised = 1; in onyx_register_init()
672 struct onyx *onyx = cii->codec_data; in onyx_usable() local
675 mutex_lock(&onyx->mutex); in onyx_usable()
676 onyx_read_register(onyx, ONYX_REG_DIG_INFO4, &v); in onyx_usable()
678 onyx_read_register(onyx, ONYX_REG_DAC_CONTROL, &v); in onyx_usable()
682 mutex_unlock(&onyx->mutex); in onyx_usable()
697 struct onyx *onyx = cii->codec_data; in onyx_prepare() local
700 mutex_lock(&onyx->mutex); in onyx_prepare()
705 onyx_read_register(onyx, ONYX_REG_DAC_CONTROL, &v); in onyx_prepare()
706 if (onyx_write_register(onyx, in onyx_prepare()
710 onyx->analog_locked = 1; in onyx_prepare()
728 if (onyx_write_register(onyx, in onyx_prepare()
732 onyx->spdif_locked = 1; in onyx_prepare()
738 mutex_unlock(&onyx->mutex); in onyx_prepare()
746 struct onyx *onyx = cii->codec_data; in onyx_open() local
748 mutex_lock(&onyx->mutex); in onyx_open()
749 onyx->open_count++; in onyx_open()
750 mutex_unlock(&onyx->mutex); in onyx_open()
758 struct onyx *onyx = cii->codec_data; in onyx_close() local
760 mutex_lock(&onyx->mutex); in onyx_close()
761 onyx->open_count--; in onyx_close()
762 if (!onyx->open_count) in onyx_close()
763 onyx->spdif_locked = onyx->analog_locked = 0; in onyx_close()
764 mutex_unlock(&onyx->mutex); in onyx_close()
772 struct onyx *onyx = cii->codec_data; in onyx_switch_clock() local
774 mutex_lock(&onyx->mutex); in onyx_switch_clock()
778 onyx->codec.gpio->methods->all_amps_off(onyx->codec.gpio); in onyx_switch_clock()
781 onyx->codec.gpio->methods->all_amps_restore(onyx->codec.gpio); in onyx_switch_clock()
786 mutex_unlock(&onyx->mutex); in onyx_switch_clock()
795 struct onyx *onyx = cii->codec_data; in onyx_suspend() local
799 mutex_lock(&onyx->mutex); in onyx_suspend()
800 if (onyx_read_register(onyx, ONYX_REG_CONTROL, &v)) in onyx_suspend()
802 onyx_write_register(onyx, ONYX_REG_CONTROL, v | ONYX_ADPSV | ONYX_DAPSV); in onyx_suspend()
806 mutex_unlock(&onyx->mutex); in onyx_suspend()
813 struct onyx *onyx = cii->codec_data; in onyx_resume() local
817 mutex_lock(&onyx->mutex); in onyx_resume()
820 onyx->codec.gpio->methods->set_hw_reset(onyx->codec.gpio, 0); in onyx_resume()
822 onyx->codec.gpio->methods->set_hw_reset(onyx->codec.gpio, 1); in onyx_resume()
824 onyx->codec.gpio->methods->set_hw_reset(onyx->codec.gpio, 0); in onyx_resume()
828 if (onyx_read_register(onyx, ONYX_REG_CONTROL, &v)) in onyx_resume()
830 onyx_write_register(onyx, ONYX_REG_CONTROL, v & ~(ONYX_ADPSV | ONYX_DAPSV)); in onyx_resume()
834 onyx_register_init(onyx); in onyx_resume()
837 mutex_unlock(&onyx->mutex); in onyx_resume()
862 struct onyx *onyx = codec_to_onyx(codec); in onyx_init_codec() local
868 if (!onyx->codec.gpio || !onyx->codec.gpio->methods) { in onyx_init_codec()
873 onyx->codec.gpio->methods->set_hw_reset(onyx->codec.gpio, 0); in onyx_init_codec()
875 onyx->codec.gpio->methods->set_hw_reset(onyx->codec.gpio, 1); in onyx_init_codec()
877 onyx->codec.gpio->methods->set_hw_reset(onyx->codec.gpio, 0); in onyx_init_codec()
880 if (onyx_register_init(onyx)) { in onyx_init_codec()
885 if (aoa_snd_device_new(SNDRV_DEV_CODEC, onyx, &ops)) { in onyx_init_codec()
891 if ((onyx->codec.connected & 0xF) == 0) in onyx_init_codec()
895 if ((onyx->codec.connected & 0xC) == 0) { in onyx_init_codec()
896 if (!onyx->codec_info) in onyx_init_codec()
897 onyx->codec_info = kmalloc(sizeof(struct codec_info), GFP_KERNEL); in onyx_init_codec()
898 if (!onyx->codec_info) in onyx_init_codec()
900 ci = onyx->codec_info; in onyx_init_codec()
906 if ((onyx->codec.connected & 3) == 0) { in onyx_init_codec()
907 if (!onyx->codec_info) in onyx_init_codec()
908 onyx->codec_info = kmalloc(sizeof(struct codec_info), GFP_KERNEL); in onyx_init_codec()
909 if (!onyx->codec_info) in onyx_init_codec()
911 ci = onyx->codec_info; in onyx_init_codec()
918 if (onyx->codec.soundbus_dev->attach_codec(onyx->codec.soundbus_dev, in onyx_init_codec()
920 ci, onyx)) { in onyx_init_codec()
926 ctl = snd_ctl_new1(&n, onyx); \ in onyx_init_codec()
929 onyx->codec.soundbus_dev->pcm->device; \ in onyx_init_codec()
936 if (onyx->codec.soundbus_dev->pcm) { in onyx_init_codec()
939 if ((onyx->codec.connected & 0xC) == 0xC) in onyx_init_codec()
941 else if (onyx->codec.connected & 4) in onyx_init_codec()
942 onyx_set_capture_source(onyx, 0); in onyx_init_codec()
944 onyx_set_capture_source(onyx, 1); in onyx_init_codec()
945 if (onyx->codec.connected & 0xC) in onyx_init_codec()
950 if (onyx->codec.connected & 1) { in onyx_init_codec()
959 if (onyx->codec.connected & 2) { in onyx_init_codec()
963 if ((onyx->codec.connected & 3) == 3) in onyx_init_codec()
966 if ((onyx->codec.connected & 3) == 2) { in onyx_init_codec()
967 onyx_read_register(onyx, ONYX_REG_DIG_INFO4, &v); in onyx_init_codec()
969 onyx_write_register(onyx, ONYX_REG_DIG_INFO4, v); in onyx_init_codec()
977 onyx->codec.soundbus_dev->detach_codec(onyx->codec.soundbus_dev, onyx); in onyx_init_codec()
978 snd_device_free(aoa_get_card(), onyx); in onyx_init_codec()
984 struct onyx *onyx = codec_to_onyx(codec); in onyx_exit_codec() local
986 if (!onyx->codec.soundbus_dev) { in onyx_exit_codec()
990 onyx->codec.soundbus_dev->detach_codec(onyx->codec.soundbus_dev, onyx); in onyx_exit_codec()
997 struct onyx *onyx; in onyx_i2c_probe() local
1000 onyx = kzalloc(sizeof(struct onyx), GFP_KERNEL); in onyx_i2c_probe()
1002 if (!onyx) in onyx_i2c_probe()
1005 mutex_init(&onyx->mutex); in onyx_i2c_probe()
1006 onyx->i2c = client; in onyx_i2c_probe()
1007 i2c_set_clientdata(client, onyx); in onyx_i2c_probe()
1011 if (onyx_read_register(onyx, ONYX_REG_CONTROL, &dummy) != 0) { in onyx_i2c_probe()
1016 strlcpy(onyx->codec.name, "onyx", MAX_CODEC_NAME_LEN); in onyx_i2c_probe()
1017 onyx->codec.owner = THIS_MODULE; in onyx_i2c_probe()
1018 onyx->codec.init = onyx_init_codec; in onyx_i2c_probe()
1019 onyx->codec.exit = onyx_exit_codec; in onyx_i2c_probe()
1020 onyx->codec.node = of_node_get(node); in onyx_i2c_probe()
1022 if (aoa_codec_register(&onyx->codec)) { in onyx_i2c_probe()
1028 kfree(onyx); in onyx_i2c_probe()
1034 struct onyx *onyx = i2c_get_clientdata(client); in onyx_i2c_remove() local
1036 aoa_codec_unregister(&onyx->codec); in onyx_i2c_remove()
1037 of_node_put(onyx->codec.node); in onyx_i2c_remove()
1038 kfree(onyx->codec_info); in onyx_i2c_remove()
1039 kfree(onyx); in onyx_i2c_remove()