tda10071_priv.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. * NXP TDA10071 + Conexant CX24118A DVB-S/S2 demodulator + tuner driver
  3. *
  4. * Copyright (C) 2011 Antti Palosaari <crope@iki.fi>
  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. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License along
  17. * with this program; if not, write to the Free Software Foundation, Inc.,
  18. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  19. */
  20. #ifndef TDA10071_PRIV
  21. #define TDA10071_PRIV
  22. #include "dvb_frontend.h"
  23. #include "tda10071.h"
  24. #include <linux/firmware.h>
  25. struct tda10071_priv {
  26. struct i2c_adapter *i2c;
  27. struct dvb_frontend fe;
  28. struct tda10071_config cfg;
  29. u8 meas_count[2];
  30. u32 ber;
  31. u32 ucb;
  32. fe_status_t fe_status;
  33. fe_delivery_system_t delivery_system;
  34. bool warm; /* FW running */
  35. };
  36. static struct tda10071_modcod {
  37. fe_delivery_system_t delivery_system;
  38. fe_modulation_t modulation;
  39. fe_code_rate_t fec;
  40. u8 val;
  41. } TDA10071_MODCOD[] = {
  42. /* NBC-QPSK */
  43. { SYS_DVBS2, QPSK, FEC_AUTO, 0x00 },
  44. { SYS_DVBS2, QPSK, FEC_1_2, 0x04 },
  45. { SYS_DVBS2, QPSK, FEC_3_5, 0x05 },
  46. { SYS_DVBS2, QPSK, FEC_2_3, 0x06 },
  47. { SYS_DVBS2, QPSK, FEC_3_4, 0x07 },
  48. { SYS_DVBS2, QPSK, FEC_4_5, 0x08 },
  49. { SYS_DVBS2, QPSK, FEC_5_6, 0x09 },
  50. { SYS_DVBS2, QPSK, FEC_8_9, 0x0a },
  51. { SYS_DVBS2, QPSK, FEC_9_10, 0x0b },
  52. /* 8PSK */
  53. { SYS_DVBS2, PSK_8, FEC_3_5, 0x0c },
  54. { SYS_DVBS2, PSK_8, FEC_2_3, 0x0d },
  55. { SYS_DVBS2, PSK_8, FEC_3_4, 0x0e },
  56. { SYS_DVBS2, PSK_8, FEC_5_6, 0x0f },
  57. { SYS_DVBS2, PSK_8, FEC_8_9, 0x10 },
  58. { SYS_DVBS2, PSK_8, FEC_9_10, 0x11 },
  59. /* QPSK */
  60. { SYS_DVBS, QPSK, FEC_AUTO, 0x2d },
  61. { SYS_DVBS, QPSK, FEC_1_2, 0x2e },
  62. { SYS_DVBS, QPSK, FEC_2_3, 0x2f },
  63. { SYS_DVBS, QPSK, FEC_3_4, 0x30 },
  64. { SYS_DVBS, QPSK, FEC_5_6, 0x31 },
  65. { SYS_DVBS, QPSK, FEC_7_8, 0x32 },
  66. };
  67. struct tda10071_reg_val_mask {
  68. u8 reg;
  69. u8 val;
  70. u8 mask;
  71. };
  72. /* firmware filename */
  73. #define TDA10071_FIRMWARE "dvb-fe-tda10071.fw"
  74. /* firmware commands */
  75. #define CMD_DEMOD_INIT 0x10
  76. #define CMD_CHANGE_CHANNEL 0x11
  77. #define CMD_MPEG_CONFIG 0x13
  78. #define CMD_TUNER_INIT 0x15
  79. #define CMD_GET_AGCACC 0x1a
  80. #define CMD_LNB_CONFIG 0x20
  81. #define CMD_LNB_SEND_DISEQC 0x21
  82. #define CMD_LNB_SET_DC_LEVEL 0x22
  83. #define CMD_LNB_PCB_CONFIG 0x23
  84. #define CMD_LNB_SEND_TONEBURST 0x24
  85. #define CMD_LNB_UPDATE_REPLY 0x25
  86. #define CMD_GET_FW_VERSION 0x35
  87. #define CMD_SET_SLEEP_MODE 0x36
  88. #define CMD_BER_CONTROL 0x3e
  89. #define CMD_BER_UPDATE_COUNTERS 0x3f
  90. /* firmare command struct */
  91. #define TDA10071_ARGLEN 30
  92. struct tda10071_cmd {
  93. u8 args[TDA10071_ARGLEN];
  94. u8 len;
  95. };
  96. #endif /* TDA10071_PRIV */