summaryrefslogtreecommitdiff
path: root/drivers/staging/ti-st/fmdrv_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/ti-st/fmdrv_common.h')
-rw-r--r--drivers/staging/ti-st/fmdrv_common.h319
1 files changed, 127 insertions, 192 deletions
diff --git a/drivers/staging/ti-st/fmdrv_common.h b/drivers/staging/ti-st/fmdrv_common.h
index 689a764a3d1b..065192b77c19 100644
--- a/drivers/staging/ti-st/fmdrv_common.h
+++ b/drivers/staging/ti-st/fmdrv_common.h
@@ -34,148 +34,104 @@ struct fm_reg_table {
char *name;
};
-/* FM register index */
-enum fm_reg_index {
- /* FM RX registers */
- STEREO_GET,
- RSSI_LVL_GET,
- IF_COUNT_GET,
- FLAG_GET,
- RDS_SYNC_GET,
- RDS_DATA_GET,
- FREQ_SET,
- FREQ_GET,
- AF_FREQ_SET,
- AF_FREQ_GET,
- MOST_MODE_SET,
- MOST_MODE_GET,
- MOST_BLEND_SET,
- MOST_BLEND_GET,
- DEMPH_MODE_SET,
- DEMPH_MODE_GET,
- SEARCH_LVL_SET,
- SEARCH_LVL_GET,
- RX_BAND_SET,
- RX_BAND_GET,
- MUTE_STATUS_SET,
- MUTE_STATUS_GET,
- RDS_PAUSE_LVL_SET,
- RDS_PAUSE_LVL_GET,
- RDS_PAUSE_DUR_SET,
- RDS_PAUSE_DUR_GET,
- RDS_MEM_SET,
- RDS_MEM_GET,
- RDS_BLK_B_SET,
- RDS_BLK_B_GET,
- RDS_MSK_B_SET,
- RDS_MSK_B_GET,
- RDS_PI_MASK_SET,
- RDS_PI_MASK_GET,
- RDS_PI_SET,
- RDS_PI_GET,
- RDS_SYSTEM_SET,
- RDS_SYSTEM_GET,
- INT_MASK_SET,
- INT_MASK_GET,
- SEARCH_DIR_SET,
- SEARCH_DIR_GET,
- VOLUME_SET,
- VOLUME_GET,
- AUDIO_ENABLE_SET,
- AUDIO_ENABLE_GET,
- PCM_MODE_SET,
- PCM_MODE_GET,
- I2S_MODE_CONFIG_SET,
- I2S_MODE_CONFIG_GET,
- POWER_SET,
- POWER_GET,
- INTx_CONFIG_SET,
- INTx_CONFIG_GET,
- PULL_EN_SET,
- PULL_EN_GET,
- HILO_SET,
- HILO_GET,
- SWITCH2FREF,
- FREQ_DRIFT_REPORT,
- PCE_GET,
- FIRM_VER_GET,
- ASIC_VER_GET,
- ASIC_ID_GET,
- MAIN_ID_GET,
- TUNER_MODE_SET,
- STOP_SEARCH,
- RDS_CNTRL_SET,
- WRITE_HARDWARE_REG,
- CODE_DOWNLOAD,
- RESET,
- FM_POWER_MODE,
- FM_INTERRUPT,
-
- /* FM TX registers */
- CHANL_SET,
- CHANL_GET,
- CHANL_BW_SET,
- CHANL_BW_GET,
- REF_SET,
- REF_GET,
- POWER_ENB_SET,
- POWER_ATT_SET,
- POWER_ATT_GET,
- POWER_LEL_SET,
- POWER_LEL_GET,
- AUDIO_DEV_SET,
- AUDIO_DEV_GET,
- PILOT_DEV_SET,
- PILOT_DEV_GET,
- RDS_DEV_SET,
- RDS_DEV_GET,
- PUPD_SET,
- AUDIO_IO_SET,
- PREMPH_SET,
- PREMPH_GET,
- TX_BAND_SET,
- TX_BAND_GET,
- MONO_SET,
- MONO_GET,
- MUTE,
- MPX_LMT_ENABLE,
- LOCK_GET,
- REF_ERR_SET,
- PI_SET,
- PI_GET,
- TYPE_SET,
- TYPE_GET,
- PTY_SET,
- PTY_GET,
- AF_SET,
- AF_GET,
- DISPLAY_SIZE_SET,
- DISPLAY_SIZE_GET,
- RDS_MODE_SET,
- RDS_MODE_GET,
- DISPLAY_MODE_SET,
- DISPLAY_MODE_GET,
- LENGHT_SET,
- LENGHT_GET,
- TOGGLE_AB_SET,
- TOGGLE_AB_GET,
- RDS_REP_SET,
- RDS_REP_GET,
- RDS_DATA_SET,
- RDS_DATA_ENB,
- TA_SET,
- TA_GET,
- TP_SET,
- TP_GET,
- DI_SET,
- DI_GET,
- MS_SET,
- MS_GET,
- PS_SCROLL_SPEED_SET,
- PS_SCROLL_SPEED_GET,
-
- FM_REG_MAX_ENTRIES
-};
+#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 {
@@ -212,42 +168,6 @@ struct fm_event_msg_hdr {
/* TI's magic number in firmware file */
#define FM_FW_FILE_HEADER_MAGIC 0x42535442
-/* Firmware header */
-struct bts_header {
- uint32_t magic;
- uint32_t version;
- uint8_t future[24];
- uint8_t actions[0];
-} __attribute__ ((packed));
-
-/* Firmware action */
-struct bts_action {
- uint16_t type;
- uint16_t size;
- uint8_t data[0];
-} __attribute__ ((packed));
-
-/* Firmware delay */
-struct bts_action_delay {
- uint32_t msec;
-} __attribute__ ((packed));
-
-#define ACTION_SEND_COMMAND 1
-#define ACTION_WAIT_EVENT 2
-#define ACTION_SERIAL 3
-#define ACTION_DELAY 4
-#define ACTION_REMARKS 6
-
-/* Converts little endian to big endian */
-#define FM_STORE_LE16_TO_BE16(data, value) \
- (data = ((value >> 8) | ((value & 0xFF) << 8)))
-#define FM_LE16_TO_BE16(value) (((value >> 8) | ((value & 0xFF) << 8)))
-
-/* Converts big endian to little endian */
-#define FM_STORE_BE16_TO_LE16(data, value) \
- (data = ((value & 0xFF) << 8) | ((value >> 8)))
-#define FM_BE16_TO_LE16(value) (((value & 0xFF) << 8) | ((value >> 8)))
-
#define FM_ENABLE 1
#define FM_DISABLE 0
@@ -265,17 +185,14 @@ struct bts_action_delay {
#define FM_MAL_EVENT (1 << 10)
#define FM_POW_ENB_EVENT (1 << 11)
-/* Firmware files of the FM, ASIC ID and
- * ASIC version will be appened to this later
+/*
+ * 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_CHECK_SEND_CMD_STATUS(ret) \
- if (ret < 0) {\
- return ret;\
- }
#define FM_UNDEFINED_FREQ 0xFFFFFFFF
/* Band types */
@@ -300,8 +217,8 @@ struct bts_action_delay {
#define FM_RX_VOLUME_GAIN_STEP 0x370
/* Mute modes */
-#define FM_MUTE_ON 0
-#define FM_MUTE_OFF 1
+#define FM_MUTE_ON 0
+#define FM_MUTE_OFF 1
#define FM_MUTE_ATTENUATE 2
#define FM_RX_MUTE_UNMUTE_MODE 0x00
@@ -360,9 +277,9 @@ struct bts_action_delay {
#define FM_RDS_STATUS_ERROR_MASK 0x18
-/* Represents an RDS group type & version.
- * There are 15 groups, each group has 2
- * versions: A and B.
+/*
+ * 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 ((unsigned long)1<<0)
#define FM_RDS_GROUP_TYPE_MASK_0B ((unsigned long)1<<1)
@@ -426,19 +343,37 @@ struct bts_action_delay {
#define FM_RX_IFFREQ_TO_LO_SIDE 0x1
#define FM_RX_IFFREQ_HILO_AUTOMATIC 0x2
-/* Default RX mode configuration. Chip will be configured
+/*
+ * 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 impedence 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 fmdrv_ops *);
int fmc_release(struct fmdrv_ops *);
void fmc_update_region_info(struct fmdrv_ops *, unsigned char);
-int fmc_send_cmd(struct fmdrv_ops *, unsigned char, void *, int,
- struct completion *, void *, int *);
+int fmc_send_cmd(struct fmdrv_ops *, unsigned char, unsigned short int,
+ void *, int, void *, int *);
int fmc_is_rds_data_available(struct fmdrv_ops *, struct file *,
struct poll_table_struct *);
int fmc_transfer_rds_from_internal_buff(struct fmdrv_ops *, struct file *,