19a0bf528SMauro Carvalho Chehab /* 29a0bf528SMauro Carvalho Chehab * Samsung s5h1432 VSB/QAM demodulator driver 39a0bf528SMauro Carvalho Chehab * 49a0bf528SMauro Carvalho Chehab * Copyright (C) 2009 Bill Liu <Bill.Liu@Conexant.com> 59a0bf528SMauro Carvalho Chehab * 69a0bf528SMauro Carvalho Chehab * This program is free software; you can redistribute it and/or modify 79a0bf528SMauro Carvalho Chehab * it under the terms of the GNU General Public License as published by 89a0bf528SMauro Carvalho Chehab * the Free Software Foundation; either version 2 of the License, or 99a0bf528SMauro Carvalho Chehab * (at your option) any later version. 109a0bf528SMauro Carvalho Chehab * 119a0bf528SMauro Carvalho Chehab * This program is distributed in the hope that it will be useful, 129a0bf528SMauro Carvalho Chehab * but WITHOUT ANY WARRANTY; without even the implied warranty of 139a0bf528SMauro Carvalho Chehab * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 149a0bf528SMauro Carvalho Chehab * GNU General Public License for more details. 159a0bf528SMauro Carvalho Chehab * 169a0bf528SMauro Carvalho Chehab * You should have received a copy of the GNU General Public License 179a0bf528SMauro Carvalho Chehab * along with this program; if not, write to the Free Software 189a0bf528SMauro Carvalho Chehab * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 199a0bf528SMauro Carvalho Chehab * 209a0bf528SMauro Carvalho Chehab */ 219a0bf528SMauro Carvalho Chehab 229a0bf528SMauro Carvalho Chehab #ifndef __S5H1432_H__ 239a0bf528SMauro Carvalho Chehab #define __S5H1432_H__ 249a0bf528SMauro Carvalho Chehab 25782d8b74SMauro Carvalho Chehab #include <linux/kconfig.h> 269a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h> 279a0bf528SMauro Carvalho Chehab 289a0bf528SMauro Carvalho Chehab #define S5H1432_I2C_TOP_ADDR (0x02 >> 1) 299a0bf528SMauro Carvalho Chehab 309a0bf528SMauro Carvalho Chehab #define TAIWAN_HI_IF_FREQ_44_MHZ 44000000 319a0bf528SMauro Carvalho Chehab #define EUROPE_HI_IF_FREQ_36_MHZ 36000000 329a0bf528SMauro Carvalho Chehab #define IF_FREQ_6_MHZ 6000000 339a0bf528SMauro Carvalho Chehab #define IF_FREQ_3point3_MHZ 3300000 349a0bf528SMauro Carvalho Chehab #define IF_FREQ_3point5_MHZ 3500000 359a0bf528SMauro Carvalho Chehab #define IF_FREQ_4_MHZ 4000000 369a0bf528SMauro Carvalho Chehab 379a0bf528SMauro Carvalho Chehab struct s5h1432_config { 389a0bf528SMauro Carvalho Chehab 399a0bf528SMauro Carvalho Chehab /* serial/parallel output */ 409a0bf528SMauro Carvalho Chehab #define S5H1432_PARALLEL_OUTPUT 0 419a0bf528SMauro Carvalho Chehab #define S5H1432_SERIAL_OUTPUT 1 429a0bf528SMauro Carvalho Chehab u8 output_mode; 439a0bf528SMauro Carvalho Chehab 449a0bf528SMauro Carvalho Chehab /* GPIO Setting */ 459a0bf528SMauro Carvalho Chehab #define S5H1432_GPIO_OFF 0 469a0bf528SMauro Carvalho Chehab #define S5H1432_GPIO_ON 1 479a0bf528SMauro Carvalho Chehab u8 gpio; 489a0bf528SMauro Carvalho Chehab 499a0bf528SMauro Carvalho Chehab /* MPEG signal timing */ 509a0bf528SMauro Carvalho Chehab #define S5H1432_MPEGTIMING_CONTINOUS_INVERTING_CLOCK 0 519a0bf528SMauro Carvalho Chehab #define S5H1432_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK 1 529a0bf528SMauro Carvalho Chehab #define S5H1432_MPEGTIMING_NONCONTINOUS_INVERTING_CLOCK 2 539a0bf528SMauro Carvalho Chehab #define S5H1432_MPEGTIMING_NONCONTINOUS_NONINVERTING_CLOCK 3 549a0bf528SMauro Carvalho Chehab u16 mpeg_timing; 559a0bf528SMauro Carvalho Chehab 569a0bf528SMauro Carvalho Chehab /* IF Freq for QAM and VSB in KHz */ 579a0bf528SMauro Carvalho Chehab #define S5H1432_IF_3250 3250 589a0bf528SMauro Carvalho Chehab #define S5H1432_IF_3500 3500 599a0bf528SMauro Carvalho Chehab #define S5H1432_IF_4000 4000 609a0bf528SMauro Carvalho Chehab #define S5H1432_IF_5380 5380 619a0bf528SMauro Carvalho Chehab #define S5H1432_IF_44000 44000 629a0bf528SMauro Carvalho Chehab #define S5H1432_VSB_IF_DEFAULT s5h1432_IF_44000 639a0bf528SMauro Carvalho Chehab #define S5H1432_QAM_IF_DEFAULT s5h1432_IF_44000 649a0bf528SMauro Carvalho Chehab u16 qam_if; 659a0bf528SMauro Carvalho Chehab u16 vsb_if; 669a0bf528SMauro Carvalho Chehab 679a0bf528SMauro Carvalho Chehab /* Spectral Inversion */ 689a0bf528SMauro Carvalho Chehab #define S5H1432_INVERSION_OFF 0 699a0bf528SMauro Carvalho Chehab #define S5H1432_INVERSION_ON 1 709a0bf528SMauro Carvalho Chehab u8 inversion; 719a0bf528SMauro Carvalho Chehab 729a0bf528SMauro Carvalho Chehab /* Return lock status based on tuner lock, or demod lock */ 739a0bf528SMauro Carvalho Chehab #define S5H1432_TUNERLOCKING 0 749a0bf528SMauro Carvalho Chehab #define S5H1432_DEMODLOCKING 1 759a0bf528SMauro Carvalho Chehab u8 status_mode; 769a0bf528SMauro Carvalho Chehab }; 779a0bf528SMauro Carvalho Chehab 789b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_S5H1432) 799a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *s5h1432_attach(const struct s5h1432_config *config, 809a0bf528SMauro Carvalho Chehab struct i2c_adapter *i2c); 819a0bf528SMauro Carvalho Chehab #else 829a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *s5h1432_attach(const struct s5h1432_config 839a0bf528SMauro Carvalho Chehab *config, 849a0bf528SMauro Carvalho Chehab struct i2c_adapter *i2c) 859a0bf528SMauro Carvalho Chehab { 869a0bf528SMauro Carvalho Chehab printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 879a0bf528SMauro Carvalho Chehab return NULL; 889a0bf528SMauro Carvalho Chehab } 899a0bf528SMauro Carvalho Chehab #endif /* CONFIG_DVB_s5h1432 */ 909a0bf528SMauro Carvalho Chehab 919a0bf528SMauro Carvalho Chehab #endif /* __s5h1432_H__ */ 92