^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * isl6405.h - driver for dual lnb supply and control ic ISL6405
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 2008 Hartmut Hackmann
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (C) 2006 Oliver Endriss
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * the project's page is at https://linuxtv.org
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #ifndef _ISL6405_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define _ISL6405_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/dvb/frontend.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) /* system register bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) /* this bit selects register (control) 1 or 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) note that the bit maps are different */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define ISL6405_SR 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) /* SR = 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define ISL6405_OLF1 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define ISL6405_EN1 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define ISL6405_VSEL1 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define ISL6405_LLC1 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define ISL6405_ENT1 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define ISL6405_ISEL1 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define ISL6405_DCL 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) /* SR = 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define ISL6405_OLF2 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define ISL6405_OTF 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define ISL6405_EN2 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define ISL6405_VSEL2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define ISL6405_LLC2 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define ISL6405_ENT2 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define ISL6405_ISEL2 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #if IS_REACHABLE(CONFIG_DVB_ISL6405)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) /* override_set and override_clear control which system register bits (above)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) * to always set & clear
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) extern struct dvb_frontend *isl6405_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) u8 i2c_addr, u8 override_set, u8 override_clear);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) static inline struct dvb_frontend *isl6405_attach(struct dvb_frontend *fe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) struct i2c_adapter *i2c, u8 i2c_addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) u8 override_set, u8 override_clear)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) return NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #endif /* CONFIG_DVB_ISL6405 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #endif