mt2060_priv.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*
  2. * Driver for Microtune MT2060 "Single chip dual conversion broadband tuner"
  3. *
  4. * Copyright (c) 2006 Olivier DANET <odanet@caramail.com>
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 2 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. *
  15. * GNU General Public License for more details.
  16. */
  17. #ifndef MT2060_PRIV_H
  18. #define MT2060_PRIV_H
  19. // Uncomment the #define below to enable spurs checking. The results where quite unconvincing.
  20. // #define MT2060_SPURCHECK
  21. /* This driver is based on the information available in the datasheet of the
  22. "Comtech SDVBT-3K6M" tuner ( K1000737843.pdf ) which features the MT2060 register map :
  23. I2C Address : 0x60
  24. Reg.No | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | ( defaults )
  25. --------------------------------------------------------------------------------
  26. 00 | [ PART ] | [ REV ] | R = 0x63
  27. 01 | [ LNABAND ] | [ NUM1(5:2) ] | RW = 0x3F
  28. 02 | [ DIV1 ] | RW = 0x74
  29. 03 | FM1CA | FM1SS | [ NUM1(1:0) ] | [ NUM2(3:0) ] | RW = 0x00
  30. 04 | NUM2(11:4) ] | RW = 0x08
  31. 05 | [ DIV2 ] |NUM2(12)| RW = 0x93
  32. 06 | L1LK | [ TAD1 ] | L2LK | [ TAD2 ] | R
  33. 07 | [ FMF ] | R
  34. 08 | ? | FMCAL | ? | ? | ? | ? | ? | TEMP | R
  35. 09 | 0 | 0 | [ FMGC ] | 0 | GP02 | GP01 | 0 | RW = 0x20
  36. 0A | ??
  37. 0B | 0 | 0 | 1 | 1 | 0 | 0 | [ VGAG ] | RW = 0x30
  38. 0C | V1CSE | 1 | 1 | 1 | 1 | 1 | 1 | 1 | RW = 0xFF
  39. 0D | 1 | 0 | [ V1CS ] | RW = 0xB0
  40. 0E | ??
  41. 0F | ??
  42. 10 | ??
  43. 11 | [ LOTO ] | 0 | 0 | 1 | 0 | RW = 0x42
  44. PART : Part code : 6 for MT2060
  45. REV : Revision code : 3 for current revision
  46. LNABAND : Input frequency range : ( See code for details )
  47. NUM1 / DIV1 / NUM2 / DIV2 : Frequencies programming ( See code for details )
  48. FM1CA : Calibration Start Bit
  49. FM1SS : Calibration Single Step bit
  50. L1LK : LO1 Lock Detect
  51. TAD1 : Tune Line ADC ( ? )
  52. L2LK : LO2 Lock Detect
  53. TAD2 : Tune Line ADC ( ? )
  54. FMF : Estimated first IF Center frequency Offset ( ? )
  55. FM1CAL : Calibration done bit
  56. TEMP : On chip temperature sensor
  57. FMCG : Mixer 1 Cap Gain ( ? )
  58. GP01 / GP02 : Programmable digital outputs. Unconnected pins ?
  59. V1CSE : LO1 VCO Automatic Capacitor Select Enable ( ? )
  60. V1CS : LO1 Capacitor Selection Value ( ? )
  61. LOTO : LO Timeout ( ? )
  62. VGAG : Tuner Output gain
  63. */
  64. #define I2C_ADDRESS 0x60
  65. #define REG_PART_REV 0
  66. #define REG_LO1C1 1
  67. #define REG_LO1C2 2
  68. #define REG_LO2C1 3
  69. #define REG_LO2C2 4
  70. #define REG_LO2C3 5
  71. #define REG_LO_STATUS 6
  72. #define REG_FM_FREQ 7
  73. #define REG_MISC_STAT 8
  74. #define REG_MISC_CTRL 9
  75. #define REG_RESERVED_A 0x0A
  76. #define REG_VGAG 0x0B
  77. #define REG_LO1B1 0x0C
  78. #define REG_LO1B2 0x0D
  79. #define REG_LOTO 0x11
  80. #define PART_REV 0x63 // The current driver works only with PART=6 and REV=3 chips
  81. struct mt2060_priv {
  82. struct mt2060_config *cfg;
  83. struct i2c_adapter *i2c;
  84. struct i2c_client *client;
  85. struct mt2060_config config;
  86. u8 i2c_max_regs;
  87. u32 frequency;
  88. u16 if1_freq;
  89. u8 fmfreq;
  90. /*
  91. * Use REG_MISC_CTRL register for sleep. That drops sleep power usage
  92. * about 0.9W (huge!). Register bit meanings are unknown, so let it be
  93. * disabled by default to avoid possible regression. Convert driver to
  94. * i2c model in order to enable it.
  95. */
  96. bool sleep;
  97. };
  98. #endif