174ba9207SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
29a0bf528SMauro Carvalho Chehab /*
39a0bf528SMauro Carvalho Chehab 	Intersil ISL6423 SEC and LNB Power supply controller
49a0bf528SMauro Carvalho Chehab 
59a0bf528SMauro Carvalho Chehab 	Copyright (C) Manu Abraham <abraham.manu@gmail.com>
69a0bf528SMauro Carvalho Chehab 
79a0bf528SMauro Carvalho Chehab */
89a0bf528SMauro Carvalho Chehab 
99a0bf528SMauro Carvalho Chehab #ifndef __ISL_6423_H
109a0bf528SMauro Carvalho Chehab #define __ISL_6423_H
119a0bf528SMauro Carvalho Chehab 
129a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
139a0bf528SMauro Carvalho Chehab 
149a0bf528SMauro Carvalho Chehab enum isl6423_current {
159a0bf528SMauro Carvalho Chehab 	SEC_CURRENT_275m = 0,
169a0bf528SMauro Carvalho Chehab 	SEC_CURRENT_515m,
179a0bf528SMauro Carvalho Chehab 	SEC_CURRENT_635m,
189a0bf528SMauro Carvalho Chehab 	SEC_CURRENT_800m,
199a0bf528SMauro Carvalho Chehab };
209a0bf528SMauro Carvalho Chehab 
219a0bf528SMauro Carvalho Chehab enum isl6423_curlim {
229a0bf528SMauro Carvalho Chehab 	SEC_CURRENT_LIM_ON = 1,
239a0bf528SMauro Carvalho Chehab 	SEC_CURRENT_LIM_OFF
249a0bf528SMauro Carvalho Chehab };
259a0bf528SMauro Carvalho Chehab 
269a0bf528SMauro Carvalho Chehab struct isl6423_config {
279a0bf528SMauro Carvalho Chehab 	enum isl6423_current current_max;
289a0bf528SMauro Carvalho Chehab 	enum isl6423_curlim curlim;
299a0bf528SMauro Carvalho Chehab 	u8 addr;
309a0bf528SMauro Carvalho Chehab 	u8 mod_extern;
319a0bf528SMauro Carvalho Chehab };
329a0bf528SMauro Carvalho Chehab 
339b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_ISL6423)
349a0bf528SMauro Carvalho Chehab 
359a0bf528SMauro Carvalho Chehab 
369a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *isl6423_attach(struct dvb_frontend *fe,
379a0bf528SMauro Carvalho Chehab 					   struct i2c_adapter *i2c,
389a0bf528SMauro Carvalho Chehab 					   const struct isl6423_config *config);
399a0bf528SMauro Carvalho Chehab 
409a0bf528SMauro Carvalho Chehab #else
isl6423_attach(struct dvb_frontend * fe,struct i2c_adapter * i2c,const struct isl6423_config * config)419a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *isl6423_attach(struct dvb_frontend *fe,
429a0bf528SMauro Carvalho Chehab 						  struct i2c_adapter *i2c,
439a0bf528SMauro Carvalho Chehab 						  const struct isl6423_config *config)
449a0bf528SMauro Carvalho Chehab {
459a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
469a0bf528SMauro Carvalho Chehab 	return NULL;
479a0bf528SMauro Carvalho Chehab }
489a0bf528SMauro Carvalho Chehab 
499a0bf528SMauro Carvalho Chehab #endif /* CONFIG_DVB_ISL6423 */
509a0bf528SMauro Carvalho Chehab 
519a0bf528SMauro Carvalho Chehab #endif /* __ISL_6423_H */
52