Merge tag 'for-master-20190201' of git://git.denx.de/u-boot-rockchip
[oweals/u-boot.git] / drivers / sound / maxim_codec.h
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__ */