18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci#ifndef __SOUND_AK4531_CODEC_H 38c2ecf20Sopenharmony_ci#define __SOUND_AK4531_CODEC_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci/* 68c2ecf20Sopenharmony_ci * Copyright (c) by Jaroslav Kysela <perex@perex.cz> 78c2ecf20Sopenharmony_ci * Universal interface for Audio Codec '97 88c2ecf20Sopenharmony_ci * 98c2ecf20Sopenharmony_ci * For more details look to AC '97 component specification revision 2.1 108c2ecf20Sopenharmony_ci * by Intel Corporation (http://developer.intel.com). 118c2ecf20Sopenharmony_ci */ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include <sound/info.h> 148c2ecf20Sopenharmony_ci#include <sound/control.h> 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci/* 178c2ecf20Sopenharmony_ci * ASAHI KASEI - AK4531 codec 188c2ecf20Sopenharmony_ci * - not really AC'97 codec, but it uses very similar interface as AC'97 198c2ecf20Sopenharmony_ci */ 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci/* 228c2ecf20Sopenharmony_ci * AK4531 codec registers 238c2ecf20Sopenharmony_ci */ 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci#define AK4531_LMASTER 0x00 /* master volume left */ 268c2ecf20Sopenharmony_ci#define AK4531_RMASTER 0x01 /* master volume right */ 278c2ecf20Sopenharmony_ci#define AK4531_LVOICE 0x02 /* channel volume left */ 288c2ecf20Sopenharmony_ci#define AK4531_RVOICE 0x03 /* channel volume right */ 298c2ecf20Sopenharmony_ci#define AK4531_LFM 0x04 /* FM volume left */ 308c2ecf20Sopenharmony_ci#define AK4531_RFM 0x05 /* FM volume right */ 318c2ecf20Sopenharmony_ci#define AK4531_LCD 0x06 /* CD volume left */ 328c2ecf20Sopenharmony_ci#define AK4531_RCD 0x07 /* CD volume right */ 338c2ecf20Sopenharmony_ci#define AK4531_LLINE 0x08 /* LINE volume left */ 348c2ecf20Sopenharmony_ci#define AK4531_RLINE 0x09 /* LINE volume right */ 358c2ecf20Sopenharmony_ci#define AK4531_LAUXA 0x0a /* AUXA volume left */ 368c2ecf20Sopenharmony_ci#define AK4531_RAUXA 0x0b /* AUXA volume right */ 378c2ecf20Sopenharmony_ci#define AK4531_MONO1 0x0c /* MONO1 volume left */ 388c2ecf20Sopenharmony_ci#define AK4531_MONO2 0x0d /* MONO1 volume right */ 398c2ecf20Sopenharmony_ci#define AK4531_MIC 0x0e /* MIC volume */ 408c2ecf20Sopenharmony_ci#define AK4531_MONO_OUT 0x0f /* Mono-out volume */ 418c2ecf20Sopenharmony_ci#define AK4531_OUT_SW1 0x10 /* Output mixer switch 1 */ 428c2ecf20Sopenharmony_ci#define AK4531_OUT_SW2 0x11 /* Output mixer switch 2 */ 438c2ecf20Sopenharmony_ci#define AK4531_LIN_SW1 0x12 /* Input left mixer switch 1 */ 448c2ecf20Sopenharmony_ci#define AK4531_RIN_SW1 0x13 /* Input right mixer switch 1 */ 458c2ecf20Sopenharmony_ci#define AK4531_LIN_SW2 0x14 /* Input left mixer switch 2 */ 468c2ecf20Sopenharmony_ci#define AK4531_RIN_SW2 0x15 /* Input right mixer switch 2 */ 478c2ecf20Sopenharmony_ci#define AK4531_RESET 0x16 /* Reset & power down */ 488c2ecf20Sopenharmony_ci#define AK4531_CLOCK 0x17 /* Clock select */ 498c2ecf20Sopenharmony_ci#define AK4531_AD_IN 0x18 /* AD input select */ 508c2ecf20Sopenharmony_ci#define AK4531_MIC_GAIN 0x19 /* MIC amplified gain */ 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_cistruct snd_ak4531 { 538c2ecf20Sopenharmony_ci void (*write) (struct snd_ak4531 *ak4531, unsigned short reg, 548c2ecf20Sopenharmony_ci unsigned short val); 558c2ecf20Sopenharmony_ci void *private_data; 568c2ecf20Sopenharmony_ci void (*private_free) (struct snd_ak4531 *ak4531); 578c2ecf20Sopenharmony_ci /* --- */ 588c2ecf20Sopenharmony_ci unsigned char regs[0x20]; 598c2ecf20Sopenharmony_ci struct mutex reg_mutex; 608c2ecf20Sopenharmony_ci}; 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ciint snd_ak4531_mixer(struct snd_card *card, struct snd_ak4531 *_ak4531, 638c2ecf20Sopenharmony_ci struct snd_ak4531 **rak4531); 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci#ifdef CONFIG_PM 668c2ecf20Sopenharmony_civoid snd_ak4531_suspend(struct snd_ak4531 *ak4531); 678c2ecf20Sopenharmony_civoid snd_ak4531_resume(struct snd_ak4531 *ak4531); 688c2ecf20Sopenharmony_ci#endif 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci#endif /* __SOUND_AK4531_CODEC_H */ 71