/* SPDX-License-Identifier: GPL-2.0-only */
/*
 *  FM Driver for Connectivity chip of Texas Instruments.
 *  FM Common module header file
 *
 *  Copyright (C) 2011 Texas Instruments
 */

#ifndef _FMDRV_COMMON_H
#define _FMDRV_COMMON_H

#define FM_ST_REG_TIMEOUT   msecs_to_jiffies(6000)	/* 6 sec */
#define FM_PKT_LOGICAL_CHAN_NUMBER  0x08   /* Logical channel 8 */

#define REG_RD       0x1
#define REG_WR      0x0

struct fm_reg_table {
	u8 opcode;
	u8 type;
	u8 *name;
};

#define STEREO_GET               0
#define RSSI_LVL_GET             1
#define IF_COUNT_GET             2
#define FLAG_GET                 3
#define RDS_SYNC_GET             4
#define RDS_DATA_GET             5
#define FREQ_SET                 10
#define AF_FREQ_SET              11
#define MOST_MODE_SET            12
#define MOST_BLEND_SET           13
#define DEMPH_MODE_SET           14
#define SEARCH_LVL_SET           15
#define BAND_SET                 16
#define MUTE_STATUS_SET          17
#define RDS_PAUSE_LVL_SET        18
#define RDS_PAUSE_DUR_SET        19
#define RDS_MEM_SET              20
#define RDS_BLK_B_SET            21
#define RDS_MSK_B_SET            22
#define RDS_PI_MASK_SET          23
#define RDS_PI_SET               24
#define RDS_SYSTEM_SET           25
#define INT_MASK_SET             26
#define SEARCH_DIR_SET           27
#define VOLUME_SET               28
#define AUDIO_ENABLE_SET         29
#define PCM_MODE_SET             30
#define I2S_MODE_CONFIG_SET      31
#define POWER_SET                32
#define INTX_CONFIG_SET          33
#define PULL_EN_SET              34
#define HILO_SET                 35
#define SWITCH2FREF              36
#define FREQ_DRIFT_REPORT        37

#define PCE_GET                  40
#define FIRM_VER_GET             41
#define ASIC_VER_GET             42
#define ASIC_ID_GET              43
#define MAN_ID_GET               44
#define TUNER_MODE_SET           45
#define STOP_SEARCH              46
#define RDS_CNTRL_SET            47

#define WRITE_HARDWARE_REG       100
#define CODE_DOWNLOAD            101
#define RESET                    102

#define FM_POWER_MODE            254
#define FM_INTERRUPT             255

/* Transmitter API */

#define CHANL_SET                55
#define CHANL_BW_SET		56
#define REF_SET                  57
#define POWER_ENB_SET            90
#define POWER_ATT_SET            58
#define POWER_LEV_SET            59
#define AUDIO_DEV_SET            60
#define PILOT_DEV_SET            61
#define RDS_DEV_SET              62
#define TX_BAND_SET              65
#define PUPD_SET                 91
#define AUDIO_IO_SET             63
#define PREMPH_SET               64
#define MONO_SET                 66
#define MUTE                     92
#define MPX_LMT_ENABLE           67
#define PI_SET                   93
#define ECC_SET                  69
#define PTY                      70
#define AF                       71
#define DISPLAY_MODE             74
#define RDS_REP_SET              77
#define RDS_CONFIG_DATA_SET      98
#define RDS_DATA_SET             99
#define RDS_DATA_ENB             94
#define TA_SET                   78
#define TP_SET                   79
#define DI_SET                   80
#define MS_SET                   81
#define PS_SCROLL_SPEED          82
#define TX_AUDIO_LEVEL_TEST      96
#define TX_AUDIO_LEVEL_TEST_THRESHOLD    73
#define TX_AUDIO_INPUT_LEVEL_RANGE_SET   54
#define RX_ANTENNA_SELECT        87
#define I2C_DEV_ADDR_SET         86
#define REF_ERR_CALIB_PARAM_SET          88
#define REF_ERR_CALIB_PERIODICITY_SET    89
#define SOC_INT_TRIGGER                  52
#define SOC_AUDIO_PATH_SET               83
#define SOC_PCMI_OVERRIDE                84
#define SOC_I2S_OVERRIDE         85
#define RSSI_BLOCK_SCAN_FREQ_SET 95
#define RSSI_BLOCK_SCAN_START    97
#define RSSI_BLOCK_SCAN_DATA_GET  5
#define READ_FMANT_TUNE_VALUE            104

/* SKB helpers */
struct fm_skb_cb {
	__u8 fm_op;
	struct completion *completion;
};

#define fm_cb(skb) ((struct fm_skb_cb *)(skb->cb))

/* FM Channel-8 command message format */
struct fm_cmd_msg_hdr {
	__u8 hdr;		/* Logical Channel-8 */
	__u8 len;		/* Number of bytes follows */
	__u8 op;		/* FM Opcode */
	__u8 rd_wr;		/* Read/Write command */
	__u8 dlen;		/* Length of payload */
} __attribute__ ((packed));

#define FM_CMD_MSG_HDR_SIZE    5	/* sizeof(struct fm_cmd_msg_hdr) */

/* FM Channel-8 event messgage format */
struct fm_event_msg_hdr {
	__u8 header;		/* Logical Channel-8 */
	__u8 len;		/* Number of bytes follows */
	__u8 status;		/* Event status */
	__u8 num_fm_hci_cmds;	/* Number of pkts the host allowed to send */
	__u8 op;		/* FM Opcode */
	__u8 rd_wr;		/* Read/Write command */
	__u8 dlen;		/* Length of payload */
} __attribute__ ((packed));

#define FM_EVT_MSG_HDR_SIZE     7	/* sizeof(struct fm_event_msg_hdr) */

/* TI's magic number in firmware file */
#define FM_FW_FILE_HEADER_MAGIC	     0x42535442

#define FM_ENABLE   1
#define FM_DISABLE  0

/* FLAG_GET register bits */
#define FM_FR_EVENT		BIT(0)
#define FM_BL_EVENT		BIT(1)
#define FM_RDS_EVENT		BIT(2)
#define FM_BBLK_EVENT		BIT(3)
#define FM_LSYNC_EVENT		BIT(4)
#define FM_LEV_EVENT		BIT(5)
#define FM_IFFR_EVENT		BIT(6)
#define FM_PI_EVENT		BIT(7)
#define FM_PD_EVENT		BIT(8)
#define FM_STIC_EVENT		BIT(9)
#define FM_MAL_EVENT		BIT(10)
#define FM_POW_ENB_EVENT	BIT(11)

/*
 * Firmware files of FM. ASIC ID and ASIC version will be appened to this,
 * later.
 */
#define FM_FMC_FW_FILE_START      ("fmc_ch8")
#define FM_RX_FW_FILE_START       ("fm_rx_ch8")
#define FM_TX_FW_FILE_START       ("fm_tx_ch8")

#define FM_UNDEFINED_FREQ		   0xFFFFFFFF

/* Band types */
#define FM_BAND_EUROPE_US	0
#define FM_BAND_JAPAN		1

/* Seek directions */
#define FM_SEARCH_DIRECTION_DOWN	0
#define FM_SEARCH_DIRECTION_UP		1

/* Tunner modes */
#define FM_TUNER_STOP_SEARCH_MODE	0
#define FM_TUNER_PRESET_MODE		1
#define FM_TUNER_AUTONOMOUS_SEARCH_MODE	2
#define FM_TUNER_AF_JUMP_MODE		3

/* Min and Max volume */
#define FM_RX_VOLUME_MIN	0
#define FM_RX_VOLUME_MAX	70

/* Volume gain step */
#define FM_RX_VOLUME_GAIN_STEP	0x370

/* Mute modes */
#define	FM_MUTE_ON		0
#define FM_MUTE_OFF		1
#define	FM_MUTE_ATTENUATE	2

#define FM_RX_UNMUTE_MODE		0x00
#define FM_RX_RF_DEP_MODE		0x01
#define FM_RX_AC_MUTE_MODE		0x02
#define FM_RX_HARD_MUTE_LEFT_MODE	0x04
#define FM_RX_HARD_MUTE_RIGHT_MODE	0x08
#define FM_RX_SOFT_MUTE_FORCE_MODE	0x10

/* RF dependent mute mode */
#define FM_RX_RF_DEPENDENT_MUTE_ON	1
#define FM_RX_RF_DEPENDENT_MUTE_OFF	0

/* RSSI threshold min and max */
#define FM_RX_RSSI_THRESHOLD_MIN	-128
#define FM_RX_RSSI_THRESHOLD_MAX	127

/* Stereo/Mono mode */
#define FM_STEREO_MODE		0
#define FM_MONO_MODE		1
#define FM_STEREO_SOFT_BLEND	1

/* FM RX De-emphasis filter modes */
#define FM_RX_EMPHASIS_FILTER_50_USEC	0
#define FM_RX_EMPHASIS_FILTER_75_USEC	1

/* FM RDS modes */
#define FM_RDS_DISABLE	0
#define FM_RDS_ENABLE	1

#define FM_NO_PI_CODE	0

/* FM and RX RDS block enable/disable  */
#define FM_RX_PWR_SET_FM_ON_RDS_OFF		0x1
#define FM_RX_PWR_SET_FM_AND_RDS_BLK_ON		0x3
#define FM_RX_PWR_SET_FM_AND_RDS_BLK_OFF	0x0

/* RX RDS */
#define FM_RX_RDS_FLUSH_FIFO		0x1
#define FM_RX_RDS_FIFO_THRESHOLD	64	/* tuples */
#define FM_RDS_BLK_SIZE		3	/* 3 bytes */

/* RDS block types */
#define FM_RDS_BLOCK_A		0
#define FM_RDS_BLOCK_B		1
#define FM_RDS_BLOCK_C		2
#define FM_RDS_BLOCK_Ctag	3
#define FM_RDS_BLOCK_D		4
#define FM_RDS_BLOCK_E		5

#define FM_RDS_BLK_IDX_A		0
#define FM_RDS_BLK_IDX_B		1
#define FM_RDS_BLK_IDX_C		2
#define FM_RDS_BLK_IDX_D		3
#define FM_RDS_BLK_IDX_UNKNOWN	0xF0

#define FM_RDS_STATUS_ERR_MASK	0x18

/*
 * Represents an RDS group type & version.
 * There are 15 groups, each group has 2 versions: A and B.
 */
#define FM_RDS_GROUP_TYPE_MASK_0A	    BIT(0)
#define FM_RDS_GROUP_TYPE_MASK_0B	    BIT(1)
#define FM_RDS_GROUP_TYPE_MASK_1A	    BIT(2)
#define FM_RDS_GROUP_TYPE_MASK_1B	    BIT(3)
#define FM_RDS_GROUP_TYPE_MASK_2A	    BIT(4)
#define FM_RDS_GROUP_TYPE_MASK_2B	    BIT(5)
#define FM_RDS_GROUP_TYPE_MASK_3A	    BIT(6)
#define FM_RDS_GROUP_TYPE_MASK_3B	    BIT(7)
#define FM_RDS_GROUP_TYPE_MASK_4A	    BIT(8)
#define FM_RDS_GROUP_TYPE_MASK_4B	    BIT(9)
#define FM_RDS_GROUP_TYPE_MASK_5A	    BIT(10)
#define FM_RDS_GROUP_TYPE_MASK_5B	    BIT(11)
#define FM_RDS_GROUP_TYPE_MASK_6A	    BIT(12)
#define FM_RDS_GROUP_TYPE_MASK_6B	    BIT(13)
#define FM_RDS_GROUP_TYPE_MASK_7A	    BIT(14)
#define FM_RDS_GROUP_TYPE_MASK_7B	    BIT(15)
#define FM_RDS_GROUP_TYPE_MASK_8A	    BIT(16)
#define FM_RDS_GROUP_TYPE_MASK_8B	    BIT(17)
#define FM_RDS_GROUP_TYPE_MASK_9A	    BIT(18)
#define FM_RDS_GROUP_TYPE_MASK_9B	    BIT(19)
#define FM_RDS_GROUP_TYPE_MASK_10A	    BIT(20)
#define FM_RDS_GROUP_TYPE_MASK_10B	    BIT(21)
#define FM_RDS_GROUP_TYPE_MASK_11A	    BIT(22)
#define FM_RDS_GROUP_TYPE_MASK_11B	    BIT(23)
#define FM_RDS_GROUP_TYPE_MASK_12A	    BIT(24)
#define FM_RDS_GROUP_TYPE_MASK_12B	    BIT(25)
#define FM_RDS_GROUP_TYPE_MASK_13A	    BIT(26)
#define FM_RDS_GROUP_TYPE_MASK_13B	    BIT(27)
#define FM_RDS_GROUP_TYPE_MASK_14A	    BIT(28)
#define FM_RDS_GROUP_TYPE_MASK_14B	    BIT(29)
#define FM_RDS_GROUP_TYPE_MASK_15A	    BIT(30)
#define FM_RDS_GROUP_TYPE_MASK_15B	    BIT(31)

/* RX Alternate Frequency info */
#define FM_RDS_MIN_AF			  1
#define FM_RDS_MAX_AF			204
#define FM_RDS_MAX_AF_JAPAN		140
#define FM_RDS_1_AF_FOLLOWS		225
#define FM_RDS_25_AF_FOLLOWS		249

/* RDS system type (RDS/RBDS) */
#define FM_RDS_SYSTEM_RDS		0
#define FM_RDS_SYSTEM_RBDS		1

/* AF on/off */
#define FM_RX_RDS_AF_SWITCH_MODE_ON	1
#define FM_RX_RDS_AF_SWITCH_MODE_OFF	0

/* Retry count when interrupt process goes wrong */
#define FM_IRQ_TIMEOUT_RETRY_MAX	5	/* 5 times */

/* Audio IO set values */
#define FM_RX_AUDIO_ENABLE_I2S	0x01
#define FM_RX_AUDIO_ENABLE_ANALOG	0x02
#define FM_RX_AUDIO_ENABLE_I2S_AND_ANALOG	0x03
#define FM_RX_AUDIO_ENABLE_DISABLE	0x00

/* HI/LO set values */
#define FM_RX_IFFREQ_TO_HI_SIDE		0x0
#define FM_RX_IFFREQ_TO_LO_SIDE		0x1
#define FM_RX_IFFREQ_HILO_AUTOMATIC	0x2

/*
 * Default RX mode configuration. Chip will be configured
 * with this default values after loading RX firmware.
 */
#define FM_DEFAULT_RX_VOLUME		10
#define FM_DEFAULT_RSSI_THRESHOLD	3

/* Range for TX power level in units for dB/uV */
#define FM_PWR_LVL_LOW			91
#define FM_PWR_LVL_HIGH			122

/* Chip specific default TX power level value */
#define FM_PWR_LVL_DEF			4

/* FM TX Pre-emphasis filter values */
#define FM_TX_PREEMPH_OFF		1
#define FM_TX_PREEMPH_50US		0
#define FM_TX_PREEMPH_75US		2

/* FM TX antenna impedance values */
#define FM_TX_ANT_IMP_50		0
#define FM_TX_ANT_IMP_200		1
#define FM_TX_ANT_IMP_500		2

/* Functions exported by FM common sub-module */
int fmc_prepare(struct fmdev *);
int fmc_release(struct fmdev *);

void fmc_update_region_info(struct fmdev *, u8);
int fmc_send_cmd(struct fmdev *, u8, u16,
				void *, unsigned int, void *, int *);
int fmc_is_rds_data_available(struct fmdev *, struct file *,
				struct poll_table_struct *);
int fmc_transfer_rds_from_internal_buff(struct fmdev *, struct file *,
					u8 __user *, size_t);

int fmc_set_freq(struct fmdev *, u32);
int fmc_set_mode(struct fmdev *, u8);
int fmc_set_region(struct fmdev *, u8);
int fmc_set_mute_mode(struct fmdev *, u8);
int fmc_set_stereo_mono(struct fmdev *, u16);
int fmc_set_rds_mode(struct fmdev *, u8);

int fmc_get_freq(struct fmdev *, u32 *);
int fmc_get_region(struct fmdev *, u8 *);
int fmc_get_mode(struct fmdev *, u8 *);

/*
 * channel spacing
 */
#define FM_CHANNEL_SPACING_50KHZ 1
#define FM_CHANNEL_SPACING_100KHZ 2
#define FM_CHANNEL_SPACING_200KHZ 4
#define FM_FREQ_MUL 50

#endif

