cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

tveeprom.h (3370B)


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