1 #ifndef __MT6627_FM_CMD_H__
2 #define __MT6627_FM_CMD_H__
4 #include <linux/types.h>
5 #include "fm_typedef.h"
7 /* FM basic-operation's opcode */
8 #define FM_BOP_BASE (0x80)
10 FM_WRITE_BASIC_OP
= (FM_BOP_BASE
+ 0x00),
11 FM_UDELAY_BASIC_OP
= (FM_BOP_BASE
+ 0x01),
12 FM_RD_UNTIL_BASIC_OP
= (FM_BOP_BASE
+ 0x02),
13 FM_MODIFY_BASIC_OP
= (FM_BOP_BASE
+ 0x03),
14 FM_MSLEEP_BASIC_OP
= (FM_BOP_BASE
+ 0x04),
15 FM_TOP_WRITE_BASIC_OP
= (FM_BOP_BASE
+ 0x05),
16 FM_TOP_RD_UNTIL_BASIC_OP
= (FM_BOP_BASE
+ 0x06),
17 FM_TOP_MODIFY_BASIC_OP
= (FM_BOP_BASE
+ 0x07),
18 FM_MAX_BASIC_OP
= (FM_BOP_BASE
+ 0x08)
22 #define FM_TOP_WRITE_BOP_SIZE (7)
23 #define FM_TOP_RD_UNTIL_BOP_SIZE (11)
24 #define FM_TOP_MODIFY_BOP_SIZE (11)
26 #define FM_WRITE_BASIC_OP_SIZE (3)
27 #define FM_UDELAY_BASIC_OP_SIZE (4)
28 #define FM_RD_UNTIL_BASIC_OP_SIZE (5)
29 #define FM_MODIFY_BASIC_OP_SIZE (5)
30 #define FM_MSLEEP_BASIC_OP_SIZE (4)
32 fm_s32
mt6627_pwrup_fpga_on(fm_u8
*buf
, fm_s32 buf_size
);
33 fm_s32
mt6627_pwrup_clock_on(fm_u8
*buf
, fm_s32 buf_size
);
34 fm_s32
mt6627_pwrup_digital_init(fm_u8
*buf
, fm_s32 buf_size
);
35 fm_s32
mt6627_pwrdown(fm_u8
*buf
, fm_s32 buf_size
);
36 fm_s32
mt6627_rampdown(fm_u8
*buf
, fm_s32 buf_size
);
37 fm_s32
mt6627_tune(fm_u8
*buf
, fm_s32 buf_size
, fm_u16 freq
, fm_u16 chan_para
);
38 fm_s32
mt6627_seek(fm_u8
*buf
, fm_s32 buf_size
, fm_u16 seekdir
, fm_u16 space
, fm_u16 max_freq
,
40 fm_s32
mt6627_scan(fm_u8
*buf
, fm_s32 buf_size
, fm_u16 scandir
, fm_u16 space
, fm_u16 max_freq
,
42 fm_s32
mt6627_cqi_get(fm_u8
*buf
, fm_s32 buf_size
);
43 fm_s32
mt6627_get_reg(fm_u8
*buf
, fm_s32 buf_size
, fm_u8 addr
);
44 fm_s32
mt6627_set_reg(fm_u8
*buf
, fm_s32 buf_size
, fm_u8 addr
, fm_u16 value
);
45 fm_s32
mt6627_patch_download(fm_u8
*buf
, fm_s32 buf_size
, fm_u8 seg_num
, fm_u8 seg_id
,
46 const fm_u8
*src
, fm_s32 seg_len
);
47 fm_s32
mt6627_coeff_download(fm_u8
*buf
, fm_s32 buf_size
, fm_u8 seg_num
, fm_u8 seg_id
,
48 const fm_u8
*src
, fm_s32 seg_len
);
50 fm_s32
mt6627_hwcoeff_download(fm_u8
*buf
, fm_s32 buf_size
, fm_u8 seg_num
, fm_u8 seg_id
,
51 const fm_u8
*src
, fm_s32 seg_len
);
52 fm_s32
mt6627_rom_download(fm_u8
*buf
, fm_s32 buf_size
, fm_u8 seg_num
, fm_u8 seg_id
,
53 const fm_u8
*src
, fm_s32 seg_len
);
55 fm_s32
mt6627_full_cqi_req(fm_u8
*buf
, fm_s32 buf_size
, fm_u16
*freq
, fm_s32 cnt
, fm_s32 type
);
56 fm_s32
mt6627_top_get_reg(fm_u8
*buf
, fm_s32 buf_size
, fm_u16 addr
);
57 fm_s32
mt6627_top_set_reg(fm_u8
*buf
, fm_s32 buf_size
, fm_u16 addr
, fm_u32 value
);
58 fm_s32
mt6627_host_get_reg(fm_u8
*buf
, fm_s32 buf_size
, fm_u32 addr
);
59 fm_s32
mt6627_host_set_reg(fm_u8
*buf
, fm_s32 buf_size
, fm_u32 addr
, fm_u32 value
);
60 fm_s32
mt6627_set_bits_reg(fm_u8
*buf
, fm_s32 buf_size
, fm_u8 addr
, fm_u16 bits
, fm_u16 mask
);
61 fm_s32
mt6627_pwrup_fine_tune(fm_u8
*buf
, fm_s32 buf_size
);
64 * fm_get_channel_space - get the spcace of gived channel
65 * @freq - value in 760~1080 or 7600~10800
67 * Return 0, if 760~1080; return 1, if 7600 ~ 10800, else err code < 0
69 extern fm_s32
fm_get_channel_space(int freq
);