Linux Audio

Check our new training course

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