040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#ifndef __TDA8425_H__
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define __TDA8425_H__
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#include "xf86i2c.h"
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynctypedef struct {
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync I2CDevRec d;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int mux;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int stereo;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int v_left;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int v_right;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int bass;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int treble;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync int src_sel;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Bool mute;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync } TDA8425Rec, *TDA8425Ptr;
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define TDA8425_ADDR_1 0x82
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync/* the third parameter is meant to force detection of tda8425.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync This is because tda8425 is write-only and complete implementation
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync of I2C protocol is not always available. Besides address there is no good
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync way to autodetect it so we have to _know_ it is there anyway */
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncTDA8425Ptr Detect_tda8425(I2CBusPtr b, I2CSlaveAddr addr,Bool force);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncBool tda8425_init(TDA8425Ptr t);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncvoid tda8425_setaudio(TDA8425Ptr t);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncvoid tda8425_mute(TDA8425Ptr t, Bool mute);
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define TDA8425SymbolsList \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync "Detect_tda8425", \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync "tda8425_init", \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync "tda8425_setaudio", \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync "tda8425_mute"
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define xf86_Detect_tda8425 ((TDA8425Ptr (*)(I2CBusPtr, I2CSlaveAddr,Bool))LoaderSymbol("Detect_tda8425"))
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define xf86_tda8425_init ((Bool (*)(TDA8425Ptr))LoaderSymbol("tda8425_init"))
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define xf86_tda8425_setaudio ((void (*)(TDA8425Ptr))LoaderSymbol("tda8425_setaudio"))
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define xf86_tda8425_mute ((void (*)(TDA8425Ptr, Bool))LoaderSymbol("tda8425_mute"))
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#endif