/* SPDX-License-Identifier: GPL-2.0 */
/*
 * descriptions + helper functions for simple dvb plls.
 */

#ifndef __DVB_PLL_H__
#define __DVB_PLL_H__

#include <linux/i2c.h>
#include <media/dvb_frontend.h>

#define DVB_PLL_UNDEFINED               0
#define DVB_PLL_THOMSON_DTT7579         1
#define DVB_PLL_THOMSON_DTT759X         2
#define DVB_PLL_LG_Z201                 3
#define DVB_PLL_UNKNOWN_1               4
#define DVB_PLL_TUA6010XS               5
#define DVB_PLL_ENV57H1XD5              6
#define DVB_PLL_TUA6034                 7
#define DVB_PLL_TDA665X                 8
#define DVB_PLL_TDED4                   9
#define DVB_PLL_TDHU2                  10
#define DVB_PLL_SAMSUNG_TBMV           11
#define DVB_PLL_PHILIPS_SD1878_TDA8261 12
#define DVB_PLL_OPERA1                 13
#define DVB_PLL_SAMSUNG_DTOS403IH102A  14
#define DVB_PLL_SAMSUNG_TDTC9251DH0    15
#define DVB_PLL_SAMSUNG_TBDU18132      16
#define DVB_PLL_SAMSUNG_TBMU24112      17
#define DVB_PLL_TDEE4		       18
#define DVB_PLL_THOMSON_DTT7520X       19
#define DVB_PLL_TUA6034_FRIIO          20
#define DVB_PLL_TDA665X_EARTH_PT1      21

struct dvb_pll_config {
	struct dvb_frontend *fe;
};

#if IS_REACHABLE(CONFIG_DVB_PLL)
/**
 * Attach a dvb-pll to the supplied frontend structure.
 *
 * @fe: Frontend to attach to.
 * @pll_addr: i2c address of the PLL (if used).
 * @i2c: i2c adapter to use (set to NULL if not used).
 * @pll_desc_id: dvb_pll_desc to use.
 *
 * return: Frontend pointer on success, NULL on failure
 */
extern struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe,
					   int pll_addr,
					   struct i2c_adapter *i2c,
					   unsigned int pll_desc_id);
#else
static inline struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe,
					   int pll_addr,
					   struct i2c_adapter *i2c,
					   unsigned int pll_desc_id)
{
	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
	return NULL;
}
#endif

#endif
