linux/drivers/media/usb/dvb-usb-v2/mxl111sf.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2010-2014 Michael Krufky ([email protected])
 *
 * see Documentation/driver-api/media/drivers/dvb-usb.rst for more information
 */

#ifndef _DVB_USB_MXL111SF_H_
#define _DVB_USB_MXL111SF_H_

#ifdef DVB_USB_LOG_PREFIX
#undef DVB_USB_LOG_PREFIX
#endif
#define DVB_USB_LOG_PREFIX
#include "dvb_usb.h"
#include <media/tveeprom.h>
#include <media/media-entity.h>

/* Max transfer size done by I2C transfer functions */
#define MXL_MAX_XFER_SIZE

#define MXL_EP1_REG_READ
#define MXL_EP2_REG_WRITE
#define MXL_EP3_INTERRUPT
#define MXL_EP4_MPEG2
#define MXL_EP5_I2S
#define MXL_EP6_656
#define MXL_EP6_MPEG2

#ifdef USING_ENUM_mxl111sf_current_mode
enum mxl111sf_current_mode {
	mxl_mode_dvbt = MXL_EP4_MPEG2,
	mxl_mode_mh   = MXL_EP5_I2S,
	mxl_mode_atsc = MXL_EP6_MPEG2,
};
#endif

enum mxl111sf_gpio_port_expander {};

struct mxl111sf_adap_state {};

enum mxl111sf_pads {};

struct mxl111sf_state {};

int mxl111sf_read_reg(struct mxl111sf_state *state, u8 addr, u8 *data);
int mxl111sf_write_reg(struct mxl111sf_state *state, u8 addr, u8 data);

struct mxl111sf_reg_ctrl_info {};

int mxl111sf_write_reg_mask(struct mxl111sf_state *state,
			    u8 addr, u8 mask, u8 data);
int mxl111sf_ctrl_program_regs(struct mxl111sf_state *state,
			       struct mxl111sf_reg_ctrl_info *ctrl_reg_info);

/* needed for hardware i2c functions in mxl111sf-i2c.c:
 * mxl111sf_i2c_send_data / mxl111sf_i2c_get_data */
int mxl111sf_ctrl_msg(struct mxl111sf_state *state,
		      u8 cmd, u8 *wbuf, int wlen, u8 *rbuf, int rlen);

#define mxl_printk(kern, fmt, arg...)

#define mxl_info(fmt, arg...)

extern int dvb_usb_mxl111sf_debug;
#define mxl_debug(fmt, arg...)

#define MXL_I2C_DBG
#define MXL_ADV_DBG
#define mxl_debug_adv(fmt, arg...)

#define mxl_i2c(fmt, arg...)

#define mxl_i2c_adv(fmt, arg...)

/* The following allows the mxl_fail() macro defined below to work
 * in externel modules, such as mxl111sf-tuner.ko, even though
 * dvb_usb_mxl111sf_debug is not defined within those modules */
#if (defined(__MXL111SF_TUNER_H__)) || (defined(__MXL111SF_DEMOD_H__))
#define MXL_ADV_DEBUG_ENABLED
#else
#define MXL_ADV_DEBUG_ENABLED
#endif

#define mxl_fail(ret)

#endif /* _DVB_USB_MXL111SF_H_ */