| /* |
| * 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 |
| |