1c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 29a0bf528SMauro Carvalho Chehab /* 39a0bf528SMauro Carvalho Chehab * Samsung s5h1432 VSB/QAM demodulator driver 49a0bf528SMauro Carvalho Chehab * 59a0bf528SMauro Carvalho Chehab * Copyright (C) 2009 Bill Liu <Bill.Liu@Conexant.com> 69a0bf528SMauro Carvalho Chehab */ 79a0bf528SMauro Carvalho Chehab 89a0bf528SMauro Carvalho Chehab #ifndef __S5H1432_H__ 99a0bf528SMauro Carvalho Chehab #define __S5H1432_H__ 109a0bf528SMauro Carvalho Chehab 119a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h> 129a0bf528SMauro Carvalho Chehab 139a0bf528SMauro Carvalho Chehab #define S5H1432_I2C_TOP_ADDR (0x02 >> 1) 149a0bf528SMauro Carvalho Chehab 159a0bf528SMauro Carvalho Chehab #define TAIWAN_HI_IF_FREQ_44_MHZ 44000000 169a0bf528SMauro Carvalho Chehab #define EUROPE_HI_IF_FREQ_36_MHZ 36000000 179a0bf528SMauro Carvalho Chehab #define IF_FREQ_6_MHZ 6000000 189a0bf528SMauro Carvalho Chehab #define IF_FREQ_3point3_MHZ 3300000 199a0bf528SMauro Carvalho Chehab #define IF_FREQ_3point5_MHZ 3500000 209a0bf528SMauro Carvalho Chehab #define IF_FREQ_4_MHZ 4000000 219a0bf528SMauro Carvalho Chehab 229a0bf528SMauro Carvalho Chehab struct s5h1432_config { 239a0bf528SMauro Carvalho Chehab 249a0bf528SMauro Carvalho Chehab /* serial/parallel output */ 259a0bf528SMauro Carvalho Chehab #define S5H1432_PARALLEL_OUTPUT 0 269a0bf528SMauro Carvalho Chehab #define S5H1432_SERIAL_OUTPUT 1 279a0bf528SMauro Carvalho Chehab u8 output_mode; 289a0bf528SMauro Carvalho Chehab 299a0bf528SMauro Carvalho Chehab /* GPIO Setting */ 309a0bf528SMauro Carvalho Chehab #define S5H1432_GPIO_OFF 0 319a0bf528SMauro Carvalho Chehab #define S5H1432_GPIO_ON 1 329a0bf528SMauro Carvalho Chehab u8 gpio; 339a0bf528SMauro Carvalho Chehab 349a0bf528SMauro Carvalho Chehab /* MPEG signal timing */ 35ad05ff09SMauro Carvalho Chehab #define S5H1432_MPEGTIMING_CONTINUOUS_INVERTING_CLOCK 0 36ad05ff09SMauro Carvalho Chehab #define S5H1432_MPEGTIMING_CONTINUOUS_NONINVERTING_CLOCK 1 37ad05ff09SMauro Carvalho Chehab #define S5H1432_MPEGTIMING_NONCONTINUOUS_INVERTING_CLOCK 2 38ad05ff09SMauro Carvalho Chehab #define S5H1432_MPEGTIMING_NONCONTINUOUS_NONINVERTING_CLOCK 3 399a0bf528SMauro Carvalho Chehab u16 mpeg_timing; 409a0bf528SMauro Carvalho Chehab 419a0bf528SMauro Carvalho Chehab /* IF Freq for QAM and VSB in KHz */ 429a0bf528SMauro Carvalho Chehab #define S5H1432_IF_3250 3250 439a0bf528SMauro Carvalho Chehab #define S5H1432_IF_3500 3500 449a0bf528SMauro Carvalho Chehab #define S5H1432_IF_4000 4000 459a0bf528SMauro Carvalho Chehab #define S5H1432_IF_5380 5380 469a0bf528SMauro Carvalho Chehab #define S5H1432_IF_44000 44000 479a0bf528SMauro Carvalho Chehab #define S5H1432_VSB_IF_DEFAULT s5h1432_IF_44000 489a0bf528SMauro Carvalho Chehab #define S5H1432_QAM_IF_DEFAULT s5h1432_IF_44000 499a0bf528SMauro Carvalho Chehab u16 qam_if; 509a0bf528SMauro Carvalho Chehab u16 vsb_if; 519a0bf528SMauro Carvalho Chehab 529a0bf528SMauro Carvalho Chehab /* Spectral Inversion */ 539a0bf528SMauro Carvalho Chehab #define S5H1432_INVERSION_OFF 0 549a0bf528SMauro Carvalho Chehab #define S5H1432_INVERSION_ON 1 559a0bf528SMauro Carvalho Chehab u8 inversion; 569a0bf528SMauro Carvalho Chehab 579a0bf528SMauro Carvalho Chehab /* Return lock status based on tuner lock, or demod lock */ 589a0bf528SMauro Carvalho Chehab #define S5H1432_TUNERLOCKING 0 599a0bf528SMauro Carvalho Chehab #define S5H1432_DEMODLOCKING 1 609a0bf528SMauro Carvalho Chehab u8 status_mode; 619a0bf528SMauro Carvalho Chehab }; 629a0bf528SMauro Carvalho Chehab 639b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_S5H1432) 649a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *s5h1432_attach(const struct s5h1432_config *config, 659a0bf528SMauro Carvalho Chehab struct i2c_adapter *i2c); 669a0bf528SMauro Carvalho Chehab #else s5h1432_attach(const struct s5h1432_config * config,struct i2c_adapter * i2c)679a0bf528SMauro Carvalho Chehabstatic inline struct dvb_frontend *s5h1432_attach(const struct s5h1432_config 689a0bf528SMauro Carvalho Chehab *config, 699a0bf528SMauro Carvalho Chehab struct i2c_adapter *i2c) 709a0bf528SMauro Carvalho Chehab { 719a0bf528SMauro Carvalho Chehab printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 729a0bf528SMauro Carvalho Chehab return NULL; 739a0bf528SMauro Carvalho Chehab } 749a0bf528SMauro Carvalho Chehab #endif /* CONFIG_DVB_s5h1432 */ 759a0bf528SMauro Carvalho Chehab 769a0bf528SMauro Carvalho Chehab #endif /* __s5h1432_H__ */ 77