tveeprom.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /*
  2. * tveeprom - Contains structures and functions to work with Hauppauge
  3. * eeproms.
  4. */
  5. #include <linux/if_ether.h>
  6. /**
  7. * enum tveeprom_audio_processor - Specifies the type of audio processor
  8. * used on a Hauppauge device.
  9. *
  10. * @TVEEPROM_AUDPROC_NONE: No audio processor present
  11. * @TVEEPROM_AUDPROC_INTERNAL: The audio processor is internal to the
  12. * video processor
  13. * @TVEEPROM_AUDPROC_MSP: The audio processor is a MSPXXXX device
  14. * @TVEEPROM_AUDPROC_OTHER: The audio processor is another device
  15. */
  16. enum tveeprom_audio_processor {
  17. TVEEPROM_AUDPROC_NONE,
  18. TVEEPROM_AUDPROC_INTERNAL,
  19. TVEEPROM_AUDPROC_MSP,
  20. TVEEPROM_AUDPROC_OTHER,
  21. };
  22. /**
  23. * struct tveeprom - Contains the fields parsed from Hauppauge eeproms
  24. *
  25. * @has_radio: 1 if the device has radio; 0 otherwise.
  26. *
  27. * @has_ir: If has_ir == 0, then it is unknown what the IR
  28. * capabilities are. Otherwise:
  29. * bit 0) 1 (= IR capabilities are known);
  30. * bit 1) IR receiver present;
  31. * bit 2) IR transmitter (blaster) present.
  32. *
  33. * @has_MAC_address: 0: no MAC, 1: MAC present, 2: unknown.
  34. * @tuner_type: type of the tuner (TUNER_*, as defined at
  35. * include/media/tuner.h).
  36. *
  37. * @tuner_formats: Supported analog TV standards (V4L2_STD_*).
  38. * @tuner_hauppauge_model: Hauppauge's code for the device model number.
  39. * @tuner2_type: type of the second tuner (TUNER_*, as defined
  40. * at include/media/tuner.h).
  41. *
  42. * @tuner2_formats: Tuner 2 supported analog TV standards
  43. * (V4L2_STD_*).
  44. *
  45. * @tuner2_hauppauge_model: tuner 2 Hauppauge's code for the device model
  46. * number.
  47. *
  48. * @audio_processor: analog audio decoder, as defined by enum
  49. * tveeprom_audio_processor.
  50. *
  51. * @decoder_processor: Hauppauge's code for the decoder chipset.
  52. * Unused by the drivers, as they probe the
  53. * decoder based on the PCI or USB ID.
  54. *
  55. * @model: Hauppauge's model number
  56. *
  57. * @revision: Card revision number
  58. *
  59. * @serial_number: Card's serial number
  60. *
  61. * @rev_str: Card revision converted to number
  62. *
  63. * @MAC_address: MAC address for the network interface
  64. */
  65. struct tveeprom {
  66. u32 has_radio;
  67. u32 has_ir;
  68. u32 has_MAC_address;
  69. u32 tuner_type;
  70. u32 tuner_formats;
  71. u32 tuner_hauppauge_model;
  72. u32 tuner2_type;
  73. u32 tuner2_formats;
  74. u32 tuner2_hauppauge_model;
  75. u32 audio_processor;
  76. u32 decoder_processor;
  77. u32 model;
  78. u32 revision;
  79. u32 serial_number;
  80. char rev_str[5];
  81. u8 MAC_address[ETH_ALEN];
  82. };
  83. /**
  84. * tveeprom_hauppauge_analog - Fill struct tveeprom using the contents
  85. * of the eeprom previously filled at
  86. * @eeprom_data field.
  87. *
  88. * @c: I2C client struct
  89. * @tvee: Struct to where the eeprom parsed data will be filled;
  90. * @eeprom_data: Array with the contents of the eeprom_data. It should
  91. * contain 256 bytes filled with the contents of the
  92. * eeprom read from the Hauppauge device.
  93. */
  94. void tveeprom_hauppauge_analog(struct i2c_client *c, struct tveeprom *tvee,
  95. unsigned char *eeprom_data);
  96. /**
  97. * tveeprom_read - Reads the contents of the eeprom found at the Hauppauge
  98. * devices.
  99. *
  100. * @c: I2C client struct
  101. * @eedata: Array where the eeprom content will be stored.
  102. * @len: Size of @eedata array. If the eeprom content will be latter
  103. * be parsed by tveeprom_hauppauge_analog(), len should be, at
  104. * least, 256.
  105. */
  106. int tveeprom_read(struct i2c_client *c, unsigned char *eedata, int len);