149 lines
5.1 KiB
C
149 lines
5.1 KiB
C
/*
|
|
* TI FM kernel driver's sample application.
|
|
*
|
|
* Copyright (C) 2010 Texas Instruments
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*
|
|
*/
|
|
|
|
#ifndef _KFMAPP_H
|
|
#define _KFMAPP_H
|
|
|
|
#define DEFAULT_RADIO_DEVICE "/dev/radio0"
|
|
|
|
#define FMRX_BAND_SYSFS_ENTRY "/sys/class/video4linux/radio0/fmrx_band"
|
|
#define FMRX_RDS_AF_SYSFS_ENTRY "/sys/class/video4linux/radio0/fmrx_rds_af"
|
|
#define FMRX_RSSI_LVL_SYSFS_ENTRY "/sys/class/video4linux/radio0/fmrx_rssi_lvl"
|
|
|
|
#define FMTX_RDS_AF_SYSFS_ENTRY "/sys/class/video4linux/radio0/fmtx_rds_af"
|
|
|
|
#define CTL_INDEX_0 0
|
|
#define CTL_INDEX_1 1
|
|
|
|
#define FMAPP_BATCH 0
|
|
#define FMAPP_INTERACTIVE 1
|
|
|
|
#define FM_MUTE_OFF 0
|
|
#define FM_MUTE_ON 1
|
|
|
|
#define FM_SEARCH_DIRECTION_DOWN 0
|
|
#define FM_SEARCH_DIRECTION_UP 1
|
|
|
|
#define FM_MODE_SWITCH_CTL_NAME "Mode Switch"
|
|
#define FM_MODE_OFF 0
|
|
#define FM_MODE_TX 1
|
|
#define FM_MODE_RX 2
|
|
|
|
#define FM_BAND_SWITCH_CTL_NAME "Region Switch"
|
|
#define FM_BAND_EUROPE_US 0
|
|
#define FM_BAND_JAPAN 1
|
|
|
|
#define FM_RF_DEPENDENT_MUTE_CTL_NAME "RF Dependent Mute"
|
|
#define FM_RX_RF_DEPENDENT_MUTE_ON 1
|
|
#define FM_RX_RF_DEPENDENT_MUTE_OFF 0
|
|
|
|
#define FM_RX_GET_RSSI_LVL_CTL_NAME "RSSI Level"
|
|
#define FM_RX_RSSI_THRESHOLD_LVL_CTL_NAME "RSSI Threshold"
|
|
|
|
#define FM_STEREO_MONO_CTL_NAME "Stereo/Mono"
|
|
#define FM_STEREO_MODE 0
|
|
#define FM_MONO_MODE 1
|
|
|
|
#define FM_RX_DEEMPHASIS_CTL_NAME "De-emphasis Filter"
|
|
#define FM_RX_EMPHASIS_FILTER_50_USEC 0
|
|
#define FM_RX_EMPHASIS_FILTER_75_USEC 1
|
|
|
|
#define FM_RDS_SWITCH_CTL_NAME "RDS Switch"
|
|
#define FM_RDS_DISABLE 0
|
|
#define FM_RDS_ENABLE 1
|
|
|
|
#define FM_RX_RDS_OPMODE_CTL_NAME "RDS Operation Mode"
|
|
#define FM_RDS_SYSTEM_RDS 0
|
|
#define FM_RDS_SYSTEM_RBDS 1
|
|
|
|
#define FM_RX_AF_SWITCH_CTL_NAME "AF Switch"
|
|
#define FM_RX_RDS_AF_SWITCH_MODE_ON 1
|
|
#define FM_RX_RDS_AF_SWITCH_MODE_OFF 0
|
|
|
|
/* Auto scan info */
|
|
#define FMAPP_ASCAN_SIGNAL_THRESHOLD_PER 50 /* 50 % */
|
|
#define FMAPP_ASCAN_NO_OF_SIGNAL_SAMPLE 3 /* 3 Samples */
|
|
|
|
#define FMAPP_AF_MAX_FREQ_RANGE 6
|
|
|
|
#define V4L2_CID_CHANNEL_SPACING (V4L2_CID_PRIVATE_BASE + 0)
|
|
|
|
struct tx_rds {
|
|
unsigned char text_type;
|
|
unsigned char text[25];
|
|
unsigned int af_freq;
|
|
};
|
|
#define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator control class */
|
|
/* FM Modulator class control IDs */
|
|
#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
|
|
#define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
|
|
|
|
#define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112)
|
|
|
|
#define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1)
|
|
#define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2)
|
|
#define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
|
|
#define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
|
|
#define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
|
|
|
|
#define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113)
|
|
#define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114)
|
|
#define V4L2_TUNER_SUB_RDS 0x0010
|
|
|
|
/* Following macros and structs are re-declared since android
|
|
file system has old videodev2.h but kfmapp needs new K35 videodev2.h
|
|
declarations, So need to remove these definitions once android headers
|
|
move to K35 plus */
|
|
#undef VIDIOC_S_MODULATOR
|
|
#define VIDIOC_S_MODULATOR 1078220343
|
|
|
|
struct v4l2_ext_control_kfmapp {
|
|
__u32 id;
|
|
__u32 size;
|
|
__u32 reserved2[1];
|
|
union {
|
|
__s32 value;
|
|
__s64 value64;
|
|
char *string;
|
|
};
|
|
} __attribute__ ((packed));
|
|
|
|
struct v4l2_ext_controls_kfmapp {
|
|
__u32 ctrl_class;
|
|
__u32 count;
|
|
__u32 error_idx;
|
|
__u32 reserved[2];
|
|
struct v4l2_ext_control_kfmapp *controls;
|
|
};
|
|
|
|
/* Presently android videodev2.h is from k2.6.35 so remove below struct when
|
|
* android header files moves to k3.0+ kernel header
|
|
* */
|
|
struct ti_v4l2_hw_freq_seek {
|
|
__u32 tuner;
|
|
enum v4l2_tuner_type type;
|
|
__u32 seek_upward;
|
|
__u32 wrap_around;
|
|
__u32 spacing;
|
|
__u32 reserved[7];
|
|
};
|
|
|
|
#endif
|
|
|