1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * wm8731.h -- WM8731 Soc Audio driver 4 * 5 * Copyright 2005 Openedhand Ltd. 6 * 7 * Author: Richard Purdie <richard@openedhand.com> 8 * 9 * Based on wm8753.h 10 */ 11 12 #ifndef _WM8731_H 13 #define _WM8731_H 14 15 #include <linux/mutex.h> 16 #include <linux/regmap.h> 17 #include <linux/regulator/consumer.h> 18 19 struct clk; 20 struct snd_pcm_hw_constraint_list; 21 22 /* WM8731 register space */ 23 24 #define WM8731_LINVOL 0x00 25 #define WM8731_RINVOL 0x01 26 #define WM8731_LOUT1V 0x02 27 #define WM8731_ROUT1V 0x03 28 #define WM8731_APANA 0x04 29 #define WM8731_APDIGI 0x05 30 #define WM8731_PWR 0x06 31 #define WM8731_IFACE 0x07 32 #define WM8731_SRATE 0x08 33 #define WM8731_ACTIVE 0x09 34 #define WM8731_RESET 0x0f 35 36 #define WM8731_CACHEREGNUM 10 37 38 #define WM8731_SYSCLK_MCLK 0 39 #define WM8731_SYSCLK_XTAL 1 40 41 #define WM8731_DAI 0 42 43 #define WM8731_NUM_SUPPLIES 4 44 45 /* codec private data */ 46 struct wm8731_priv { 47 struct regmap *regmap; 48 struct clk *mclk; 49 struct regulator_bulk_data supplies[WM8731_NUM_SUPPLIES]; 50 const struct snd_pcm_hw_constraint_list *constraints; 51 unsigned int sysclk; 52 int sysclk_type; 53 int playback_fs; 54 bool deemph; 55 56 struct mutex lock; 57 }; 58 59 extern const struct regmap_config wm8731_regmap; 60 61 int wm8731_init(struct device *dev, struct wm8731_priv *wm8731); 62 63 #endif 64