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