?? chip.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 + -