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