⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stb0899_chip.h

📁 DVB-S STB0899 source code
💻 H
字号:
/* -------------------------------------------------------------------------
File Name: stn0899_chip.h

Description: Present a register based interface to hardware connected on an I2C bus.

Copyright (C) 1999-2001 STMicroelectronics

History:
  date: 10-October-2001
version: 1.0.0
 author: SA
comment: STAPIfied by GP

---------------------------------------------------------------------------- */

/* define to prevent recursive inclusion */
#ifndef STB0899_CHIP_H
#define STB0899_CHIP_H

#include "stb0899_common.h"
#include <linux/dvb/frontend.h>
#include "dvb_frontend.h"


/* enumerations------------------------------------------------------------- */

/* access modes for fields and registers */
typedef enum
{
    STCHIP_ACCESS_WR,  /* can be read and written */
    STCHIP_ACCESS_R,   /* only be read from */
    STCHIP_ACCESS_W,   /* only be written to */
    STCHIP_ACCESS_NON  /* cannot be read or written (guarded register, e.g. register skipped by ChipApplyDefaultValues() etc.) */
}
STCHIP_Access_t;

/* register field type */
typedef enum
{
    CHIP_UNSIGNED,
    CHIP_SIGNED
}
STCHIP_FieldType_t;

/* error codes */
typedef enum
{
    CHIPERR_NO_ERROR = 0,       /* 0    No error encountered */
    CHIPERR_INVALID_HANDLE,     /* 1    Using of an invalid chip handle */
    CHIPERR_INVALID_REG_ID,     /* 2    Using of an invalid register */
    CHIPERR_INVALID_FIELD_ID,   /* 3    Using of an Invalid field */
    CHIPERR_INVALID_FIELD_SIZE, /* 4    Using of a field with an invalid size */
    CHIPERR_I2C_NO_ACK,         /* 5    No acknowledge from the chip */
    CHIPERR_I2C_BURST           /* 6    Two many registers accessed in burst mode */
}
STCHIP_Error_t;

/* how to access I2C bus */
typedef enum
{
    STCHIP_MODE_SUBADR_8,       /* <addr><reg8><data><data> (e.g. demod chip) */
    STCHIP_MODE_SUBADR_16,      /* <addr><regM8><regL8><data><data> (e.g. demod chip) */
    STCHIP_MODE_NOSUBADR,       /* <addr><data>|<data><data><data> (e.g. tuner chip) */
    STCHIP_MODE_NO_R_SUBADR
}
STCHIP_Mode_t;

typedef enum
{
	STCHIP_REG_8,
	STCHIP_REG_16,
	STCHIP_REG_24,
	STCHIP_REG_32
}
STCHIP_RegSize_t;

typedef enum
{
	STCHIP_NOT_POINTED=0,
	STCHIP_POINTED
}
STCHIP_Pointed_t;

/* structures -------------------------------------------------------------- */

/* register information */
typedef struct
{
	u16             	Addr;  		/* Address */
    	STCHIP_RegSize_t 	Size;	  	/* Register size in Byte*/
    	u32   			Default;	/* Default value */
    	u32	 		Value;		/* Current value */
    	char           	 	Name[30];	/* Name */
    	STCHIP_Access_t 	Access;		/* access mode */
    	STCHIP_Pointed_t 	Pointed;	/* Register Pointed or not*/
    	u16 			PointerRegAddr;	/* Pointer Adress*/
    	u32 			BaseAdress;	/* Base Adress*/
}
STCHIP_Register_t;

/* register field information */
typedef struct
{
    u16                	Reg;      /* Register index */
    unsigned char      	Pos;      /* Bit position */
    unsigned char      	Bits;     /* Bit width */
    u32			Mask;	  /* Mask compute with width and position */
    STCHIP_FieldType_t 	Type;     /* Signed or unsigned */
    char               	Name[30]; /* Name */
}
STCHIP_Field_t;

/* data about a specific chip */
typedef struct stchip_Info_t
{
    	unsigned char       I2cAddr;          /* Chip I2C address */
    	char                Name[30];         /* Name of the chip */
    	int                 NbRegs; //+20          /* Number of registers in the chip */
    	int                 NbFields;  //+24       /* Number of fields in the chip */
    	STCHIP_Register_t   *pRegMap;         /* Pointer to register map */
    	STCHIP_Field_t      *pFieldMap;       /* Pointer to field map */
    	STCHIP_Error_t      ChipError;  //+30      /* Error state */
    	STCHIP_Mode_t       ChipMode;   //+34      /* Access bus in demod (SubAdr) or tuner (NoSubAdr) mode */

	//+38

#ifdef HOST_PC				  /* PC specific parameters */
	BOOL		Repeater;  //+3C       /* Is repeater enabled or not ? */
	/* Owner of the repeater */
	struct stchip_Info_t *RepeaterHost;	//+40
	/* Pointer to repeater routine */
	STCHIP_Error_t	(*RepeaterFn)(struct stchip_Info_t *hChip,BOOL State); //+44
	
	/* Parameters needed for non sub address devices */
	u32		WrStart;//+48	/* Id of the first writable register */
	u32		WrSize;   //+4C      /* Number of writable registers */
	u32		RdStart;//+50	/* Id of the first readable register */
	u32		RdSize;//+54		/* Number of readable registers */
#endif
}
STCHIP_Info_t;

/* Handle to a chip */
typedef STCHIP_Info_t *STCHIP_Handle_t;

/* Pointer to repeater routine */ 
typedef STCHIP_Error_t  (*STCHIP_RepeaterFn_t)(STCHIP_Handle_t hChip,BOOL State);

/* functions --------------------------------------------------------------- */

/* Creation and destruction routines */
STCHIP_Handle_t ChipOpen(STCHIP_Info_t *hChipOpenParams);

STCHIP_Error_t ChipAddReg(STCHIP_Handle_t hChip, STCHIP_RegSize_t Size, u16 RegId, char * Name, u16 Address, u32 Default, STCHIP_Access_t Access, STCHIP_Pointed_t Pointed, u16 PointerRegAddr, u32 BaseAdress);

STCHIP_Error_t ChipAddField(STCHIP_Handle_t hChip, u16 RegId, u32 FieldId, char *Name, char Pos, char NbBits, STCHIP_FieldType_t Type);

/* Utility routines */
STCHIP_Error_t ChipApplyDefaultValues(STCHIP_Handle_t hChip);

/* Access routines */
int I2cWrite(STCHIP_Handle_t hChip, u8 *Data, u8 NbData);
int I2cRead(STCHIP_Handle_t hChip, u8 *Data, u8 NbData);

STCHIP_Error_t ChipSetOneRegister(STCHIP_Handle_t hChip, u16 RegId, u32 Data);
int	       ChipGetOneRegister(STCHIP_Handle_t hChip, u16 RegId);

STCHIP_Error_t ChipSetRegisters(STCHIP_Handle_t hChip, int FirstReg, int NbRegs);
STCHIP_Error_t ChipGetRegisters(STCHIP_Handle_t hChip, int FirstReg, int NbRegs);

STCHIP_Error_t ChipSetField(STCHIP_Handle_t hChip, u32 FieldId, int Value);
int            ChipGetField(STCHIP_Handle_t hChip, u32 FieldId);

STCHIP_Error_t ChipSetFieldImage(STCHIP_Handle_t hChip, u32 FieldId, int Value);
int            ChipGetFieldImage(STCHIP_Handle_t hChip, u32 FieldId);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -