xref: /openbmc/u-boot/drivers/sound/maxim_codec.h (revision ecab65e4)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * maxim_codec.h -- MAXIM codec common interface file
4  *
5  * Copyright (C) 2013 Samsung Electronics
6  * D Krishna Mohan <krishna.md@samsung.com>
7  */
8 
9 #ifndef __MAXIM_COMMON_H__
10 #define __MAXIM_COMMON_H__
11 
12 enum maxim_codec_type {
13 	MAX98095,
14 	MAX98090,
15 };
16 
17 struct maxim_priv {
18 	enum maxim_codec_type devtype;
19 	unsigned int sysclk;
20 	unsigned int rate;
21 	unsigned int fmt;
22 	struct udevice *dev;
23 };
24 
25 #define MAXIM_AUDIO_I2C_BUS		7
26 #define MAXIM_AUDIO_I2C_REG_98095	0x22
27 
28 #define MAXIM_AUDIO_I2C_REG		MAXIM_AUDIO_I2C_REG_98095
29 
30 /*
31  * Writes value to a device register through i2c
32  *
33  * @param priv	Private data for driver
34  * @param reg	reg number to be write
35  * @param data	data to be writen to the above registor
36  *
37  * @return	int value 1 for change, 0 for no change or negative error code.
38  */
39 int maxim_i2c_write(struct maxim_priv *priv, unsigned int reg,
40 		    unsigned char data);
41 
42 /*
43  * Read a value from a device register through i2c
44  *
45  * @param priv	Private data for driver
46  * @param reg	reg number to be read
47  * @param data	address of read data to be stored
48  *
49  * @return	int value 0 for success, -1 in case of error.
50  */
51 unsigned int maxim_i2c_read(struct maxim_priv *priv, unsigned int reg,
52 			    unsigned char *data);
53 
54 /*
55  * update device register bits through i2c
56  *
57  * @param priv	Private data for driver
58  * @param reg	codec register
59  * @param mask	register mask
60  * @param value	new value
61  *
62  * @return int value 0 for success, non-zero error code.
63  */
64 int maxim_bic_or(struct maxim_priv *priv, unsigned int reg, unsigned char mask,
65 		 unsigned char value);
66 
67 #endif /* __MAXIM_COMMON_H__ */
68