tveeprom.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. * @has_ir: If has_ir == 0, then it is unknown what the IR
  27. * capabilities are. Otherwise:
  28. * bit 0) 1 (= IR capabilities are known);
  29. * bit 1) IR receiver present;
  30. * bit 2) IR transmitter (blaster) present.
  31. * @has_MAC_address: 0: no MAC, 1: MAC present, 2: unknown.
  32. * @tuner_type: type of the tuner (TUNER_*, as defined at
  33. * include/media/tuner.h).
  34. * @tuner_formats: Supported analog TV standards (V4L2_STD_*).
  35. * @tuner_hauppauge_model: Hauppauge's code for the device model number.
  36. * @tuner2_type: type of the second tuner (TUNER_*, as defined
  37. * at include/media/tuner.h).
  38. * @tuner2_formats: Tuner 2 supported analog TV standards
  39. * (V4L2_STD_*).
  40. * @tuner2_hauppauge_model: tuner 2 Hauppauge's code for the device model
  41. * number.
  42. * @audio_processor: analog audio decoder, as defined by enum
  43. * tveeprom_audio_processor.
  44. * @decoder_processor: Hauppauge's code for the decoder chipset.
  45. * Unused by the drivers, as they probe the
  46. * decoder based on the PCI or USB ID.
  47. * @model: Hauppauge's model number
  48. * @revision: Card revision number
  49. * @serial_number: Card's serial number
  50. * @rev_str: Card revision converted to number
  51. * @MAC_address: MAC address for the network interface
  52. */
  53. struct tveeprom {
  54. u32 has_radio;
  55. u32 has_ir;
  56. u32 has_MAC_address;
  57. u32 tuner_type;
  58. u32 tuner_formats;
  59. u32 tuner_hauppauge_model;
  60. u32 tuner2_type;
  61. u32 tuner2_formats;
  62. u32 tuner2_hauppauge_model;
  63. u32 audio_processor;
  64. u32 decoder_processor;
  65. u32 model;
  66. u32 revision;
  67. u32 serial_number;
  68. char rev_str[5];
  69. u8 MAC_address[ETH_ALEN];
  70. };
  71. /**
  72. * tveeprom_hauppauge_analog - Fill struct tveeprom using the contents
  73. * of the eeprom previously filled at
  74. * @eeprom_data field.
  75. *
  76. * @c: I2C client struct
  77. * @tvee: Struct to where the eeprom parsed data will be filled;
  78. * @eeprom_data: Array with the contents of the eeprom_data. It should
  79. * contain 256 bytes filled with the contents of the
  80. * eeprom read from the Hauppauge device.
  81. */
  82. void tveeprom_hauppauge_analog(struct i2c_client *c, struct tveeprom *tvee,
  83. unsigned char *eeprom_data);
  84. /**
  85. * tveeprom_read - Reads the contents of the eeprom found at the Hauppauge
  86. * devices.
  87. *
  88. * @c: I2C client struct
  89. * @eedata: Array where the eeprom content will be stored.
  90. * @len: Size of @eedata array. If the eeprom content will be latter
  91. * be parsed by tveeprom_hauppauge_analog(), len should be, at
  92. * least, 256.
  93. */
  94. int tveeprom_read(struct i2c_client *c, unsigned char *eedata, int len);