2005-04-17 02:20:36 +04:00
# ifndef __SOUND_TEA575X_TUNER_H
# define __SOUND_TEA575X_TUNER_H
/*
* ALSA driver for TEA5757 / 5759 Philips AM / FM tuner chips
*
2007-10-15 11:50:19 +04:00
* Copyright ( c ) 2004 Jaroslav Kysela < perex @ perex . cz >
2005-04-17 02:20:36 +04:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*
2006-06-21 08:29:38 +04:00
*/
2005-04-17 02:20:36 +04:00
2009-02-27 17:51:24 +03:00
# include <linux/videodev2.h>
2011-05-23 16:17:19 +04:00
# include <media/v4l2-ctrls.h>
2006-06-21 08:29:38 +04:00
# include <media/v4l2-dev.h>
2012-02-27 12:30:13 +04:00
# include <media/v4l2-device.h>
2005-04-17 02:20:36 +04:00
2011-05-13 00:17:56 +04:00
# define TEA575X_FMIF 10700
2011-05-10 01:39:26 +04:00
# define TEA575X_DATA (1 << 0)
# define TEA575X_CLK (1 << 1)
# define TEA575X_WREN (1 << 2)
# define TEA575X_MOST (1 << 3)
2005-11-17 16:17:19 +03:00
struct snd_tea575x ;
2005-04-17 02:20:36 +04:00
struct snd_tea575x_ops {
2011-05-10 01:39:26 +04:00
void ( * set_pins ) ( struct snd_tea575x * tea , u8 pins ) ;
u8 ( * get_pins ) ( struct snd_tea575x * tea ) ;
void ( * set_direction ) ( struct snd_tea575x * tea , bool output ) ;
2005-04-17 02:20:36 +04:00
} ;
struct snd_tea575x {
2012-02-27 12:30:13 +04:00
struct v4l2_device * v4l2_dev ;
2011-05-23 16:17:19 +04:00
struct video_device vd ; /* video device */
2012-02-27 12:30:13 +04:00
int radio_nr ; /* radio_nr */
2011-03-19 18:32:53 +03:00
bool tea5759 ; /* 5759 chip is present */
2012-02-27 12:30:13 +04:00
bool cannot_read_data ; /* Device cannot read the data pin */
2011-03-19 18:32:53 +03:00
bool mute ; /* Device is muted? */
bool stereo ; /* receiving stereo */
bool tuned ; /* tuned to a station */
2005-04-17 02:20:36 +04:00
unsigned int val ; /* hw value */
2012-02-27 12:30:13 +04:00
u32 freq ; /* frequency */
2011-06-11 17:28:59 +04:00
struct mutex mutex ;
2005-04-17 02:20:36 +04:00
struct snd_tea575x_ops * ops ;
void * private_data ;
2011-05-13 00:18:22 +04:00
u8 card [ 32 ] ;
u8 bus_info [ 32 ] ;
2011-05-23 16:17:19 +04:00
struct v4l2_ctrl_handler ctrl_handler ;
int ( * ext_init ) ( struct snd_tea575x * tea ) ;
2005-04-17 02:20:36 +04:00
} ;
2011-05-10 01:39:26 +04:00
int snd_tea575x_init ( struct snd_tea575x * tea ) ;
2005-11-17 16:17:19 +03:00
void snd_tea575x_exit ( struct snd_tea575x * tea ) ;
2005-04-17 02:20:36 +04:00
# endif /* __SOUND_TEA575X_TUNER_H */