cregit-Linux how code gets into the kernel

Release 4.11 drivers/media/radio/si4713/si4713.h

/*
 * drivers/media/radio/si4713-i2c.h
 *
 * Property and commands definitions for Si4713 radio transmitter chip.
 *
 * Copyright (c) 2008 Instituto Nokia de Tecnologia - INdT
 * Contact: Eduardo Valentin <eduardo.valentin@nokia.com>
 *
 * This file is licensed under the terms of the GNU General Public License
 * version 2. This program is licensed "as is" without any warranty of any
 * kind, whether express or implied.
 *
 */

#ifndef SI4713_I2C_H

#define SI4713_I2C_H

#include <linux/platform_device.h>
#include <linux/regulator/consumer.h>
#include <linux/gpio/consumer.h>
#include <media/v4l2-subdev.h>
#include <media/v4l2-ctrls.h>
#include <linux/platform_data/media/si4713.h>


#define SI4713_PRODUCT_NUMBER		0x0D

/* Command Timeouts */

#define DEFAULT_TIMEOUT			500

#define TIMEOUT_SET_PROPERTY		20

#define TIMEOUT_TX_TUNE_POWER		30000

#define TIMEOUT_TX_TUNE			110000

#define TIMEOUT_POWER_UP		200000

/*
 * Command and its arguments definitions
 */

#define SI4713_PWUP_CTSIEN		(1<<7)

#define SI4713_PWUP_GPO2OEN		(1<<6)

#define SI4713_PWUP_PATCH		(1<<5)

#define SI4713_PWUP_XOSCEN		(1<<4)

#define SI4713_PWUP_FUNC_TX		0x02

#define SI4713_PWUP_FUNC_PATCH		0x0F

#define SI4713_PWUP_OPMOD_ANALOG	0x50

#define SI4713_PWUP_OPMOD_DIGITAL	0x0F

#define SI4713_PWUP_NARGS		2

#define SI4713_PWUP_NRESP		1

#define SI4713_CMD_POWER_UP		0x01


#define SI4713_GETREV_NRESP		9

#define SI4713_CMD_GET_REV		0x10


#define SI4713_PWDN_NRESP		1

#define SI4713_CMD_POWER_DOWN		0x11


#define SI4713_SET_PROP_NARGS		5

#define SI4713_SET_PROP_NRESP		1

#define SI4713_CMD_SET_PROPERTY		0x12


#define SI4713_GET_PROP_NARGS		3

#define SI4713_GET_PROP_NRESP		4

#define SI4713_CMD_GET_PROPERTY		0x13


#define SI4713_GET_STATUS_NRESP		1

#define SI4713_CMD_GET_INT_STATUS	0x14


#define SI4713_CMD_PATCH_ARGS		0x15

#define SI4713_CMD_PATCH_DATA		0x16


#define SI4713_MAX_FREQ			10800

#define SI4713_MIN_FREQ			7600

#define SI4713_TXFREQ_NARGS		3

#define SI4713_TXFREQ_NRESP		1

#define SI4713_CMD_TX_TUNE_FREQ		0x30


#define SI4713_MAX_POWER		120

#define SI4713_MIN_POWER		88

#define SI4713_MAX_ANTCAP		191

#define SI4713_MIN_ANTCAP		0

#define SI4713_TXPWR_NARGS		4

#define SI4713_TXPWR_NRESP		1

#define SI4713_CMD_TX_TUNE_POWER	0x31


#define SI4713_TXMEA_NARGS		4

#define SI4713_TXMEA_NRESP		1

#define SI4713_CMD_TX_TUNE_MEASURE	0x32


#define SI4713_INTACK_MASK		0x01

#define SI4713_TXSTATUS_NARGS		1

#define SI4713_TXSTATUS_NRESP		8

#define SI4713_CMD_TX_TUNE_STATUS	0x33


#define SI4713_OVERMOD_BIT		(1 << 2)

#define SI4713_IALH_BIT			(1 << 1)

#define SI4713_IALL_BIT			(1 << 0)

#define SI4713_ASQSTATUS_NARGS		1

#define SI4713_ASQSTATUS_NRESP		5

#define SI4713_CMD_TX_ASQ_STATUS	0x34


#define SI4713_RDSBUFF_MODE_MASK	0x87

#define SI4713_RDSBUFF_NARGS		7

#define SI4713_RDSBUFF_NRESP		6

#define SI4713_CMD_TX_RDS_BUFF		0x35


#define SI4713_RDSPS_PSID_MASK		0x1F

#define SI4713_RDSPS_NARGS		5

#define SI4713_RDSPS_NRESP		1

#define SI4713_CMD_TX_RDS_PS		0x36


#define SI4713_CMD_GPO_CTL		0x80

#define SI4713_CMD_GPO_SET		0x81

/*
 * Bits from status response
 */

#define SI4713_CTS			(1<<7)

#define SI4713_ERR			(1<<6)

#define SI4713_RDS_INT			(1<<2)

#define SI4713_ASQ_INT			(1<<1)

#define SI4713_STC_INT			(1<<0)

/*
 * Property definitions
 */

#define SI4713_GPO_IEN			0x0001

#define SI4713_DIG_INPUT_FORMAT		0x0101

#define SI4713_DIG_INPUT_SAMPLE_RATE	0x0103

#define SI4713_REFCLK_FREQ		0x0201

#define SI4713_REFCLK_PRESCALE		0x0202

#define SI4713_TX_COMPONENT_ENABLE	0x2100

#define SI4713_TX_AUDIO_DEVIATION	0x2101

#define SI4713_TX_PILOT_DEVIATION	0x2102

#define SI4713_TX_RDS_DEVIATION		0x2103

#define SI4713_TX_LINE_INPUT_LEVEL	0x2104

#define SI4713_TX_LINE_INPUT_MUTE	0x2105

#define SI4713_TX_PREEMPHASIS		0x2106

#define SI4713_TX_PILOT_FREQUENCY	0x2107

#define SI4713_TX_ACOMP_ENABLE		0x2200

#define SI4713_TX_ACOMP_THRESHOLD	0x2201

#define SI4713_TX_ACOMP_ATTACK_TIME	0x2202

#define SI4713_TX_ACOMP_RELEASE_TIME	0x2203

#define SI4713_TX_ACOMP_GAIN		0x2204

#define SI4713_TX_LIMITER_RELEASE_TIME	0x2205

#define SI4713_TX_ASQ_INTERRUPT_SOURCE	0x2300

#define SI4713_TX_ASQ_LEVEL_LOW		0x2301

#define SI4713_TX_ASQ_DURATION_LOW	0x2302

#define SI4713_TX_ASQ_LEVEL_HIGH	0x2303

#define SI4713_TX_ASQ_DURATION_HIGH	0x2304

#define SI4713_TX_RDS_INTERRUPT_SOURCE	0x2C00

#define SI4713_TX_RDS_PI		0x2C01

#define SI4713_TX_RDS_PS_MIX		0x2C02

#define SI4713_TX_RDS_PS_MISC		0x2C03

#define SI4713_TX_RDS_PS_REPEAT_COUNT	0x2C04

#define SI4713_TX_RDS_PS_MESSAGE_COUNT	0x2C05

#define SI4713_TX_RDS_PS_AF		0x2C06

#define SI4713_TX_RDS_FIFO_SIZE		0x2C07


#define PREEMPHASIS_USA			75

#define PREEMPHASIS_EU			50

#define PREEMPHASIS_DISABLED		0

#define FMPE_USA			0x00

#define FMPE_EU				0x01

#define FMPE_DISABLED			0x02


#define POWER_UP			0x01

#define POWER_DOWN			0x00


#define MAX_RDS_PTY			31

#define MAX_RDS_DEVIATION		90000

/*
 * PSNAME is known to be defined as 8 character sized (RDS Spec).
 * However, there is receivers which scroll PSNAME 8xN sized.
 */

#define MAX_RDS_PS_NAME			96

/*
 * MAX_RDS_RADIO_TEXT is known to be defined as 32 (2A group) or 64 (2B group)
 * character sized (RDS Spec).
 * However, there is receivers which scroll them as well.
 */

#define MAX_RDS_RADIO_TEXT		384


#define MAX_LIMITER_RELEASE_TIME	102390

#define MAX_LIMITER_DEVIATION		90000


#define MAX_PILOT_DEVIATION		90000

#define MAX_PILOT_FREQUENCY		19000


#define MAX_ACOMP_RELEASE_TIME		1000000

#define MAX_ACOMP_ATTACK_TIME		5000

#define MAX_ACOMP_THRESHOLD		0

#define MIN_ACOMP_THRESHOLD		(-40)

#define MAX_ACOMP_GAIN			20

/*
 * si4713_device - private data
 */

struct si4713_device {
	/* v4l2_subdev and i2c reference (v4l2_subdev priv data) */
	
struct v4l2_subdev sd;
	
struct v4l2_ctrl_handler ctrl_handler;
	/* private data structures */
	struct { /* si4713 control cluster */
		/* This is one big cluster since the mute control
                 * powers off the device and after unmuting again all
                 * controls need to be set at once. The only way of doing
                 * that is by making it one big cluster. */
		
struct v4l2_ctrl *mute;
		
struct v4l2_ctrl *rds_ps_name;
		
struct v4l2_ctrl *rds_radio_text;
		
struct v4l2_ctrl *rds_pi;
		
struct v4l2_ctrl *rds_deviation;
		
struct v4l2_ctrl *rds_pty;
		
struct v4l2_ctrl *rds_compressed;
		
struct v4l2_ctrl *rds_art_head;
		
struct v4l2_ctrl *rds_stereo;
		
struct v4l2_ctrl *rds_ta;
		
struct v4l2_ctrl *rds_tp;
		
struct v4l2_ctrl *rds_ms;
		
struct v4l2_ctrl *rds_dyn_pty;
		
struct v4l2_ctrl *rds_alt_freqs_enable;
		
struct v4l2_ctrl *rds_alt_freqs;
		
struct v4l2_ctrl *compression_enabled;
		
struct v4l2_ctrl *compression_threshold;
		
struct v4l2_ctrl *compression_gain;
		
struct v4l2_ctrl *compression_attack_time;
		
struct v4l2_ctrl *compression_release_time;
		
struct v4l2_ctrl *pilot_tone_enabled;
		
struct v4l2_ctrl *pilot_tone_freq;
		
struct v4l2_ctrl *pilot_tone_deviation;
		
struct v4l2_ctrl *limiter_enabled;
		
struct v4l2_ctrl *limiter_deviation;
		
struct v4l2_ctrl *limiter_release_time;
		
struct v4l2_ctrl *tune_preemphasis;
		
struct v4l2_ctrl *tune_pwr_level;
		
struct v4l2_ctrl *tune_ant_cap;
	};
	
struct completion work;
	
struct regulator *vdd;
	
struct regulator *vio;
	
struct gpio_desc *gpio_reset;
	
struct platform_device *pd;
	
u32 power_state;
	
u32 rds_enabled;
	
u32 frequency;
	
u32 preemphasis;
	
u32 stereo;
	
u32 tune_rnl;
};


struct radio_si4713_platform_data {
	
struct i2c_client *subdev;
};
#endif /* ifndef SI4713_I2C_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Eduardo Valentin55373.83%110.00%
Hans Verkuil15620.83%220.00%
Sebastian Reichel314.14%330.00%
Jarkko Nikula40.53%110.00%
Dinesh Ram40.53%220.00%
Mauro Carvalho Chehab10.13%110.00%
Total749100.00%10100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.