blob: 6fe9384a1edff11f4c6818f2161fee95839d957d [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001/***********************************************************************
2* Copyright (C) 2016, ZTE Corporation.
3*
4* File Name: hal_fm_rda5802.h
5* File Mark:
6* Description: fm RDA5802 chiper hal interface declaration.
7* Others:
8* Version: v1.0
9* Author: taochao
10* Date: 2016-03-09
11*
12* History 1:
13* Date:
14* Version:
15* Author:
16* Modification:
17
18* History 2:
19**********************************************************************/
20#ifndef _HAL_FM_RDA5802_H
21#define _HAL_FM_RDA5802_H
22
23//#include "drv_pub.h"
24#include "oss_api.h"
25#include "oss_pub.h"
26
27#define FM_BAND_LOWER 8700 /*87MHz*/
28#define FM_BAND_UPPER 10800 /*108MHz*/
29#define FM_CHAN_SPACING 10 /*100KHz */
30
31/*fm volume level limits*/
32typedef enum
33{
34 FM_VOLUME_MIN = 0, //mute
35 FM_VOLUME_MAX = 15
36}T_HalFm_Volume_Level;
37
38//stc --- Seek/Tune complete
39//rssi--- Receive signal strength indicator
40typedef union
41{
42 UINT16 value;
43 struct
44 {
45 UINT16 enable:1; // 0
46 UINT16 softReset:1; // 1
47 UINT16 :2; // 2-3
48 UINT16 clkMode:3; // 4-6
49 UINT16 seekMode:1; // 7
50 UINT16 seek:1; // 8
51 UINT16 seekUp:1; // 9
52 UINT16 clkDirectMode:1; // 10
53 UINT16 :1;
54 UINT16 bassBoost:1; // 12
55 UINT16 monoSel:1; // 13
56 UINT16 disMute:1; //14
57 UINT16 disHighZ:1; // 15
58 }bitSet;
59}T_Rda5802_Reg02H;
60
61typedef union
62{
63 UINT16 value;
64 struct
65 {
66 UINT16 channelSpace:2; // 0-1
67 UINT16 bandSel:2; // 2-3
68 UINT16 tune:1; // 4
69 UINT16 :1; //5
70 UINT16 channelSel:10; //6-15
71 }bitSet;
72}T_Rda5802_Reg03H;
73
74typedef union
75{
76 UINT16 value;
77 struct
78 {
79 UINT16 gpio1:2; // 0-1
80 UINT16 gpio2:2; // 2-3
81 UINT16 gpio3:2; // 4-5
82 UINT16 i2sEnable:1; // 6
83 UINT16 :1; // 7
84 UINT16 afcDisable:1; // 8
85 UINT16 softMuteEnable:1; // 9
86 UINT16 :1; // 10
87 UINT16 de:1; // 11
88 UINT16 :2; // 12-13
89 UINT16 stcIntrEnable:1; // 14
90 }bitSet;
91}T_Rda5802_Reg04H;
92#if 0
93typedef union
94{
95 UINT16 value;
96 struct
97 {
98 UINT16 volume:4; // 0-3
99 UINT16 lnaIcSel:2; // 4-5
100 UINT16 lnaPortSel:2; // 6-7
101 UINT16 seekThreshold:7; // 8-14
102 UINT16 intrMode:1; //15
103 }bitSet;
104}T_Rda5802_Reg05H;
105#else
106typedef union
107{
108 UINT16 value;
109 struct
110 {
111 UINT16 volume:4; // 0-3
112 UINT16 :2; // 4-5
113 UINT16 lnaPortSel:2; // 6-7
114 UINT16 seekThreshold:4; // 8-11
115 UINT16 :1; // 12
116 UINT16 seekMode:2; // 13-14
117 UINT16 intrMode:1; //15
118 }bitSet;
119}T_Rda5802_Reg05H;
120#endif
121typedef union
122{
123 UINT16 value;
124 struct
125 {
126 UINT16 noSet:4; // 0-3
127 UINT16 i2sWsCnt:4; // 4-7
128 UINT16 :4; // 8-11
129 UINT16 i2sModeSel:1; // 12
130 UINT16 openmode:2; // 13-14
131 }bitSet;
132}T_Rda5802_Reg06H;
133
134typedef union
135{
136 UINT16 value;
137 struct
138 {
139 UINT16 readChannel:10; // 0-9
140 UINT16 stereo:1; // 10
141 UINT16 :2; // 11-12
142 UINT16 seekFail:1; // 13
143 UINT16 stc:1; //14
144 }bitSet;
145}T_Rda5802_Reg0AH;
146
147typedef union
148{
149 UINT16 value;
150 struct
151 {
152 UINT16 :7; // 0-6
153 UINT16 fmReady:1; // 7
154 UINT16 fmTrue:1; // 8
155 UINT16 rssi:7; // 9-15
156 }bitSet;
157}T_Rda5802_Reg0BH;
158
159typedef enum
160{
161 FM_RESET = 1,
162 FM_TUNE = 2,
163 FM_WORK = 3,
164 FM_SEEK = 4,
165 FM_SLEEP = 5
166}T_Rda5802_State;
167
168typedef struct _T_Rda5802_DevInfo
169{
170 T_Rda5802_Reg02H reg02h;
171 T_Rda5802_Reg03H reg03h;
172 T_Rda5802_Reg04H reg04h;
173 T_Rda5802_Reg05H reg05h;
174 T_Rda5802_Reg06H reg06h;
175 T_Rda5802_Reg0AH reg0Ah;
176 T_Rda5802_Reg0BH reg0Bh;
177
178 T_Rda5802_State devState;
179 BOOL canWaitSTC;
180 ZOSS_SEMAPHORE_ID stcSema;
181}T_Rda5802_DevInfo;
182
183
184#endif