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

📄 chip.h

📁 STV0299 Minituner driver, for ST chipset
💻 H
字号:
/* -------------------------------------------------------------------------
File Name: 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 H_CHIP
#define H_CHIP


/* includes ---------------------------------------------------------------- */
#include "miniqpsk.h"


/* STAPI (ST20) requirements */
#if defined(CHIP_STAPI)
 #include "stddefs.h"    /* Standard definitions */
 #include "ioarch.h"
 #include "ioreg.h"
#endif

#ifdef __cplusplus
 extern "C"
 {
#endif                  /* __cplusplus */


/* definitions ------------------------------------------------------------- */

/* maximum number of chips that can be opened */
#define MAXNBCHIP 10


/* 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,       /* No error encountered */
    CHIPERR_INVALID_HANDLE,     /* Using of an invalid chip handle */
    CHIPERR_INVALID_REG_ID,     /* Using of an invalid register */
    CHIPERR_INVALID_FIELD_ID,   /* Using of an Invalid field */
    CHIPERR_INVALID_FIELD_SIZE, /* Using of a field with an invalid size */
    CHIPERR_I2C_NO_ACK,         /* No acknowledge from the chip */
    CHIPERR_I2C_BURST           /* 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><reg8><data><data>        (e.g. demod chip) */  
    STCHIP_MODE_NOSUBADR,       /* <addr><data>|<data><data><data> (e.g. tuner chip) */
    STCHIP_MODE_NOSUBADR_RD		/* <addr><data>|<data><data><data> (e.g. tuner chip) only for read */
}
STCHIP_Mode_t;

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


/* register information */
typedef struct
{
    U16             Addr;     /* Address */
    unsigned char   Default;  /* Default value */
    unsigned char   Value;    /* Current value */
    char            Name[30]; /* Name */
    STCHIP_Access_t Access;   /* access mode */
}
STCHIP_Register_t;


/* register field information */
typedef struct
{
    U16                Reg;      /* Register index */
    unsigned char      Pos;      /* Bit position */
    unsigned char      Bits;     /* Bit width */
    unsigned char      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;           /* Number of registers in the chip */
    int                 NbFields;         /* 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      Error;            /* Error state */
    STCHIP_Mode_t       ChipMode;         /* Access bus in demod (SubAdr) or tuner (NoSubAdr) mode */  
#if defined(CHIP_STAPI)                   /* pass other STAPI specific parameters to this driver */
    ST_Partition_t     *MemoryPartition;
    IOARCH_Handle_t    IOHandle;
#endif

#if defined(HOST_PC)					  /* PC specific parameters */
	BOOL                Repeater;         /* Is repeater enabled or not ? */
	struct stchip_Info_t *RepeaterHost;   /* Owner of the repeater */
	STCHIP_Error_t 		(*RepeaterFn)(struct stchip_Info_t *hChip,BOOL State);    /* Pointer to repeater routine */ 
	
	/* Parameters needed for non sub address devices */
	U32					WrStart;		  /* Id of the first writable register */	
	U32					WrSize;           /* Number of writable registers */	
	U32					RdStart;		  /* Id of the first readable register */
	U32					RdSize;			  /* Number of readable registers */
#endif

	void				*pData;			  /* pointer to chip data */
}
STCHIP_Info_t;


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

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

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

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

STCHIP_Error_t  ChipAddReg  (STCHIP_Handle_t hChip, U16 RegId, char *Name,  U16 Address, U8 Default,STCHIP_Access_t Access);
STCHIP_Error_t  ChipAddField(STCHIP_Handle_t hChip, U16 RegId, U32 FieldId, char *Name,   char Pos, char NbBits, STCHIP_FieldType_t Type);
STCHIP_Error_t  ChipClose   (STCHIP_Handle_t hChip);

/* Utility routines */
STCHIP_Handle_t ChipGetFirst(void);
STCHIP_Handle_t ChipGetNext(STCHIP_Handle_t hPrevChip);
STCHIP_Handle_t ChipGetHandleFromName(char *Name);
STCHIP_Error_t	ChipToHtmlFile(STCHIP_Handle_t hChip,char *FileName);

STCHIP_Error_t  ChipChangeAddress(STCHIP_Handle_t hChip, unsigned char I2cAddr);
STCHIP_Error_t  ChipSetRepeater(STCHIP_Handle_t hChip,BOOL Repeater);

STCHIP_Error_t  ChipUpdateDefaultValues(STCHIP_Handle_t hChip);
STCHIP_Error_t  ChipApplyDefaultValues(STCHIP_Handle_t hChip);  /* reset */

int             ChipCheckAck(STCHIP_Handle_t hChip);

STCHIP_Error_t  ChipGetError(STCHIP_Handle_t hChip);
STCHIP_Error_t  ChipResetError(STCHIP_Handle_t hChip);

int             ChipGetRegIdFromName(STCHIP_Handle_t hChip, char *RegName);
int             ChipGetFieldIdFromName(STCHIP_Handle_t hChip, char *FieldName);
U16				ChipGetRegIdFromAdd(STCHIP_Handle_t hChip,U16 Add);


/* Access routines */
STCHIP_Error_t ChipSetOneRegister(STCHIP_Handle_t hChip, U16 RegId, unsigned char Value);
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);

STCHIP_Error_t ChipSetRegDefault(STCHIP_Handle_t hChip, U16 RegId, U8 Default);
char           ChipGetRegDefault(STCHIP_Handle_t hChip, U16 RegId);
void ChipSaveMap(STCHIP_Handle_t hChip);


#ifdef __cplusplus
 }
#endif                  /* __cplusplus */

#endif          /* H_CHIP */

/* End of chip.h */

⌨️ 快捷键说明

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