/* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __RADIO_TEA5777_H
#define __RADIO_TEA5777_H

/*
 *   v4l2 driver for TEA5777 Philips AM/FM radio tuner chips
 *
 *	Copyright (c) 2012 Hans de Goede <hdegoede@redhat.com>
 *
 *   Based on the ALSA driver for TEA5757/5759 Philips AM/FM radio tuner chips:
 *
 *	Copyright (c) 2004 Jaroslav Kysela <perex@perex.cz>
 *	Copyright (c) 2012 Hans de Goede <hdegoede@redhat.com>
 */

#include <linux/videodev2.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-dev.h>
#include <media/v4l2-device.h>

#define TEA575X_FMIF	10700
#define TEA575X_AMIF	  450

struct radio_tea5777;

struct radio_tea5777_ops {
	/*
	 * Write the 6 bytes large write register of the tea5777
	 *
	 * val represents the 6 write registers, with byte 1 from the
	 * datasheet being the most significant byte (so byte 5 of the u64),
	 * and byte 6 from the datasheet being the least significant byte.
	 *
	 * returns 0 on success.
	 */
	int (*write_reg)(struct radio_tea5777 *tea, u64 val);
	/*
	 * Read the 3 bytes large read register of the tea5777
	 *
	 * The read value gets returned in val, akin to write_reg, byte 1 from
	 * the datasheet is stored as the most significant byte (so byte 2 of
	 * the u32), and byte 3 from the datasheet gets stored as the least
	 * significant byte (iow byte 0 of the u32).
	 *
	 * returns 0 on success.
	 */
	int (*read_reg)(struct radio_tea5777 *tea, u32 *val);
};

struct radio_tea5777 {
	struct v4l2_device *v4l2_dev;
	struct v4l2_file_operations fops;
	struct video_device vd;		/* video device */
	bool has_am;			/* Device can tune to AM freqs */
	bool write_before_read;		/* must write before read quirk */
	bool needs_write;		/* for write before read quirk */
	u32 band;			/* current band */
	u32 freq;			/* current frequency */
	u32 audmode;			/* last set audmode */
	u32 seek_rangelow;		/* current hwseek limits */
	u32 seek_rangehigh;
	u32 read_reg;
	u64 write_reg;
	struct mutex mutex;
	const struct radio_tea5777_ops *ops;
	void *private_data;
	u8 card[32];
	u8 bus_info[32];
	struct v4l2_ctrl_handler ctrl_handler;
};

int radio_tea5777_init(struct radio_tea5777 *tea, struct module *owner);
void radio_tea5777_exit(struct radio_tea5777 *tea);
int radio_tea5777_set_freq(struct radio_tea5777 *tea);

#endif /* __RADIO_TEA5777_H */
