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