18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Support for LG2160 - ATSC/MH 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2010 Michael Krufky <mkrufky@linuxtv.org> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef _LG2160_H_ 98c2ecf20Sopenharmony_ci#define _LG2160_H_ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <linux/i2c.h> 128c2ecf20Sopenharmony_ci#include <media/dvb_frontend.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cienum lg_chip_type { 158c2ecf20Sopenharmony_ci LG2160 = 0, 168c2ecf20Sopenharmony_ci LG2161 = 1, 178c2ecf20Sopenharmony_ci}; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#define LG2161_1019 LG2161 208c2ecf20Sopenharmony_ci#define LG2161_1040 LG2161 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_cienum lg2160_spi_clock { 238c2ecf20Sopenharmony_ci LG2160_SPI_3_125_MHZ = 0, 248c2ecf20Sopenharmony_ci LG2160_SPI_6_25_MHZ = 1, 258c2ecf20Sopenharmony_ci LG2160_SPI_12_5_MHZ = 2, 268c2ecf20Sopenharmony_ci}; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci#if 0 298c2ecf20Sopenharmony_cienum lg2161_oif { 308c2ecf20Sopenharmony_ci LG2161_OIF_EBI2_SLA = 1, 318c2ecf20Sopenharmony_ci LG2161_OIF_SDIO_SLA = 2, 328c2ecf20Sopenharmony_ci LG2161_OIF_SPI_SLA = 3, 338c2ecf20Sopenharmony_ci LG2161_OIF_SPI_MAS = 4, 348c2ecf20Sopenharmony_ci LG2161_OIF_SERIAL_TS = 7, 358c2ecf20Sopenharmony_ci}; 368c2ecf20Sopenharmony_ci#endif 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_cistruct lg2160_config { 398c2ecf20Sopenharmony_ci u8 i2c_addr; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci /* user defined IF frequency in KHz */ 428c2ecf20Sopenharmony_ci u16 if_khz; 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci /* disable i2c repeater - 0:repeater enabled 1:repeater disabled */ 458c2ecf20Sopenharmony_ci unsigned int deny_i2c_rptr:1; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci /* spectral inversion - 0:disabled 1:enabled */ 488c2ecf20Sopenharmony_ci unsigned int spectral_inversion:1; 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci unsigned int output_if; 518c2ecf20Sopenharmony_ci enum lg2160_spi_clock spi_clock; 528c2ecf20Sopenharmony_ci enum lg_chip_type lg_chip; 538c2ecf20Sopenharmony_ci}; 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci#if IS_REACHABLE(CONFIG_DVB_LG2160) 568c2ecf20Sopenharmony_ciextern 578c2ecf20Sopenharmony_cistruct dvb_frontend *lg2160_attach(const struct lg2160_config *config, 588c2ecf20Sopenharmony_ci struct i2c_adapter *i2c_adap); 598c2ecf20Sopenharmony_ci#else 608c2ecf20Sopenharmony_cistatic inline 618c2ecf20Sopenharmony_cistruct dvb_frontend *lg2160_attach(const struct lg2160_config *config, 628c2ecf20Sopenharmony_ci struct i2c_adapter *i2c_adap) 638c2ecf20Sopenharmony_ci{ 648c2ecf20Sopenharmony_ci printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 658c2ecf20Sopenharmony_ci return NULL; 668c2ecf20Sopenharmony_ci} 678c2ecf20Sopenharmony_ci#endif /* CONFIG_DVB_LG2160 */ 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#endif /* _LG2160_H_ */ 70