blob: 10aac4a675a23c4354edec3bfca07b8c97c6d7c7 [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef __AML_DVB_EXTERN_DRIVER_H__
#define __AML_DVB_EXTERN_DRIVER_H__
#include <linux/device.h>
#include <media/dvb_frontend.h>
#define DVB_CFGDEV_BASEMINOR 1
#define DVB_CFGDEV_COUNT 1
#define DVB_CFGDEV_IOC_MAGIC 'y'
#define DVB_CFGDEV_IOC_SET_PARAM _IOW(DVB_CFGDEV_IOC_MAGIC, 50, struct tuner_config)
#define DVB_CFGDEV_IOC_GET_PARAM _IO(DVB_CFGDEV_IOC_MAGIC, 51)
#define COMPAT_DVB_CFGDEV_IOC_SET_PARAM _IOW(DVB_CFGDEV_IOC_MAGIC, 50, struct compact_tuner_config)
#define COMPAT_DVB_CFGDEV_IOC_GET_PARAM _IO(DVB_CFGDEV_IOC_MAGIC, 51)
#define DVB_CFGDEV_IOC_MAXNR 52
struct compact_tuner_config {
u32 name;
u32 code;
u8 id;
u8 i2c_addr;
u8 i2c_id;
u32 i2c_adap;
u8 xtal;
u32 xtal_cap;
u8 xtal_mode;
u8 lt_out;
u8 dual_power;
u8 if_agc;
u8 if_hz;
u8 if_invert;
u8 if_amp;
u8 detect;
struct gpio_config reset;
struct gpio_config power;
u32 reserved0;
u32 reserved1;
};
struct aml_attach_work {
struct work_struct work;
int cur_id;
};
struct dvb_extern_device {
char *name;
struct class class;
struct device *dev;
struct proc_dir_entry *debug_proc_dir;
/* for debug. */
struct dvb_frontend *tuner_fe;
struct dvb_frontend *demod_fe;
struct analog_parameters para;
struct gpio_config dvb_power;
int tuner_num;
int tuner_cur;
int tuner_cur_attached;
int demod_num;
int demod_cur;
int demod_cur_attached;
struct work_struct work;
struct aml_attach_work attach_work;
/* to set config from userspace */
struct device cdev;
dev_t cfgdevno;
};
struct device *aml_get_dvb_extern_dev(void);
#endif /* __AML_DVB_EXTERN_DRIVER_H__ */