mt6630_fm_cmd.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #ifndef __MT6630_FM_CMD_H__
  2. #define __MT6630_FM_CMD_H__
  3. #include <linux/types.h>
  4. #include "fm_typedef.h"
  5. /* FM basic-operation's opcode */
  6. #define FM_BOP_BASE (0x80)
  7. enum {
  8. FM_WRITE_BASIC_OP = (FM_BOP_BASE + 0x00),
  9. FM_UDELAY_BASIC_OP = (FM_BOP_BASE + 0x01),
  10. FM_RD_UNTIL_BASIC_OP = (FM_BOP_BASE + 0x02),
  11. FM_MODIFY_BASIC_OP = (FM_BOP_BASE + 0x03),
  12. FM_MSLEEP_BASIC_OP = (FM_BOP_BASE + 0x04),
  13. FM_TOP_WRITE_BASIC_OP = (FM_BOP_BASE + 0x05),
  14. FM_TOP_RD_UNTIL_BASIC_OP = (FM_BOP_BASE + 0x06),
  15. FM_TOP_MODIFY_BASIC_OP = (FM_BOP_BASE + 0x07),
  16. FM_MAX_BASIC_OP = (FM_BOP_BASE + 0x08)
  17. };
  18. /* FM BOP's size */
  19. #define FM_TOP_WRITE_BOP_SIZE (7)
  20. #define FM_TOP_RD_UNTIL_BOP_SIZE (11)
  21. #define FM_TOP_MODIFY_BOP_SIZE (11)
  22. #define FM_WRITE_BASIC_OP_SIZE (3)
  23. #define FM_UDELAY_BASIC_OP_SIZE (4)
  24. #define FM_RD_UNTIL_BASIC_OP_SIZE (5)
  25. #define FM_MODIFY_BASIC_OP_SIZE (5)
  26. #define FM_MSLEEP_BASIC_OP_SIZE (4)
  27. fm_s32 mt6630_pwrup_fpga_on(fm_u8 *buf, fm_s32 buf_size);
  28. fm_s32 mt6630_pwrup_clock_on(fm_u8 *buf, fm_s32 buf_size);
  29. fm_s32 mt6630_pwrup_digital_init(fm_u8 *buf, fm_s32 buf_size);
  30. fm_s32 mt6630_pwrdown(fm_u8 *buf, fm_s32 buf_size);
  31. fm_s32 mt6630_rampdown(fm_u8 *buf, fm_s32 buf_size);
  32. fm_s32 mt6630_tune(fm_u8 *buf, fm_s32 buf_size, fm_u16 freq, fm_u16 chan_para);
  33. fm_s32 mt6630_seek(fm_u8 *buf, fm_s32 buf_size, fm_u16 seekdir, fm_u16 space, fm_u16 max_freq, fm_u16 min_freq);
  34. fm_s32 mt6630_scan(fm_u8 *buf, fm_s32 buf_size, fm_u16 scandir, fm_u16 space, fm_u16 max_freq, fm_u16 min_freq);
  35. fm_s32 mt6630_cqi_get(fm_u8 *buf, fm_s32 buf_size);
  36. fm_s32 mt6630_get_reg(fm_u8 *buf, fm_s32 buf_size, fm_u8 addr);
  37. fm_s32 mt6630_set_reg(fm_u8 *buf, fm_s32 buf_size, fm_u8 addr, fm_u16 value);
  38. fm_s32 mt6630_patch_download(fm_u8 *buf, fm_s32 buf_size, fm_u8 seg_num, fm_u8 seg_id,
  39. const fm_u8 *src, fm_s32 seg_len);
  40. fm_s32 mt6630_coeff_download(fm_u8 *buf, fm_s32 buf_size, fm_u8 seg_num, fm_u8 seg_id,
  41. const fm_u8 *src, fm_s32 seg_len);
  42. #if 0
  43. fm_s32 mt6630_hwcoeff_download(fm_u8 *buf, fm_s32 buf_size, fm_u8 seg_num, fm_u8 seg_id,
  44. const fm_u8 *src, fm_s32 seg_len);
  45. fm_s32 mt6630_rom_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. #endif
  48. fm_s32 mt6630_full_cqi_req(fm_u8 *buf, fm_s32 buf_size, fm_u16 *freq, fm_s32 cnt, fm_s32 type);
  49. fm_s32 mt6630_top_get_reg(fm_u8 *buf, fm_s32 buf_size, fm_u16 addr);
  50. fm_s32 mt6630_top_set_reg(fm_u8 *buf, fm_s32 buf_size, fm_u16 addr, fm_u32 value);
  51. fm_s32 mt6630_host_get_reg(fm_u8 *buf, fm_s32 buf_size, fm_u32 addr);
  52. fm_s32 mt6630_host_set_reg(fm_u8 *buf, fm_s32 buf_size, fm_u32 addr, fm_u32 value);
  53. fm_s32 mt6630_set_bits_reg(fm_u8 *buf, fm_s32 buf_size, fm_u8 addr, fm_u16 bits, fm_u16 mask);
  54. /*****************Tx***********************/
  55. fm_s32 mt6630_tune_tx(fm_u8 *buf, fm_s32 buf_size, fm_u16 freq, fm_u16 chan_para);
  56. fm_s32 mt6630_pwrup_clock_on_tx(fm_u8 *buf, fm_s32 buf_size);
  57. fm_s32 mt6630_pwrup_tx_deviation(fm_u8 *buf, fm_s32 buf_size);
  58. fm_s32 mt6630_rds_tx(fm_u8 *tx_buf, fm_s32 tx_buf_size, fm_u16 pi, fm_u16 *ps, fm_u16 *other_rds,
  59. fm_u8 other_rds_cnt);
  60. fm_s32 mt6630_tx_rdson_deviation(fm_u8 *buf, fm_s32 buf_size);
  61. /*
  62. * fm_get_channel_space - get the spcace of gived channel
  63. * @freq - value in 760~1080 or 7600~10800
  64. *
  65. * Return 0, if 760~1080; return 1, if 7600 ~ 10800, else err code < 0
  66. */
  67. extern fm_s32 fm_get_channel_space(int freq);
  68. #endif