www.pudn.com > Demo C.rar > CLIB.h


/* CLIB.h */
/* From: Darnold, Joel R    */
/* Definitions for Custom Laser Interface Board */
/******************************************************************************
*                                          LEDS
*      User I/O P5	  Programming P1    G  G  Y  R    Reset
*     -------------    -----------     -----------     ---
*    | o o o o o o1|  | o o o o o1|   |7O  O  O  O1|  | X |
*    | o o o o o o2|  | o o o o o2|   |8O  O  O  O2|  |   |
*     -------------    -----------     ------------    ---
*
*
*   Leds: Red 1 - EEPROM_CS
*         Red 2 - Error  (ERR)
*         Yel 3 - Fifo Full (FIFO_FULL)
*         Yel 4 - Fifo Empty (FIFO_EMPTY)
*         Grn 5 - Fifo Write Enable (FIFO_WREN_N)
*         Grn 6 - Fifo Output Enable (FIFO_OEN)
*         Grn 7 - 10MHz Clock Select (10MHz_SEL)
*         Grn 8 - Running (~1Hz)  (RUN)
*
*   P5: 1 -
*       2 - System tick
*
*	SW2 (Dip Switch): SW  Open      Closed
*                      1  Reticle   Wafer
*                      2  Stop      Run
*                      3            33MHz   3 & 4 Control the local PCI clock, 3 or 4
*                      4            10Mhz   must be closed but not both
*
******************************************************************************/

/*
#include "vxWorks.h"
#include "stdio.h"
#include "sysLib.h"
#include "math.h"
#include "drv/pci/pciLocalBus.h"
#include "drv/pci/pciIomapLib.h"
#include "fppLib.h"
#include "intLib.h"
#include "arch/ppc/ivPpc.h"
*/

#ifndef INCLUDE_MPIC  /* These are required for getting correct definitions from vm2600.h */
 #define INCLUDE_MPIC
#endif=20
#ifndef EXTENDED_VME
#define EXTENDED_VME
#endif
#include "c:/tornado/target/config/mv2304/mv2600.h"

#define PLX_VEN_ID	0x10b5
#define PCI9050_DEV_ID	0x9050

/* PLX 9050 Local Control Registers Address offsets */
#define LAS0RR	0x00
#define LAS1RR 	0x04
#define LAS2RR	0x08
#define LAS3RR 	0x0c
#define EROMRR	0x10
#define LAS0BA 	0x14
#define LAS1BA 	0x18
#define LAS2BA 	0x1c
#define LAS3BA 	0x20
#define EROMBA 	0x24
#define LAS0BRD	0x28
#define LAS1BRD	0x2c
#define LAS2BRD	0x30
#define LAS3BRD	0x34
#define EROMBRD	0x38
#define CS0BASE	0x3c
#define CS1BASE	0x40
#define CS2BASE	0x44
#define CS3BASE	0x48
#define INTCSR	0x4c
#define CNTRL	0x50

/* CLIB PCI Configuration information */

#define CLIB_PCI_DEVICE_ID	(((PCI9050_DEV_ID<<16)&0xffff0000) | PLX_VEN_ID) /* 0x905010b5 */ /* Used for pciFindDevice() */
#define CLIB_PMC_IO_SPACE	0x40100			/* CLIB Base for Local Control Registers in PCI I/O Space */
#define CLIB_PMC_MEM_SPACE	0x40000			/* CLIB Base for Local Control Registers in PCI Mem Space */
#define CLIB_PCI_IO0_ADRS	(PCI_IO_ADRS + CLIB_PMC_IO_SPACE) /* CPU address for Local Control Registers in PCI I/O Space */
#define CLIB_PCI_MEM0_ADRS	(PCI_MEM_ADRS + CLIB_PMC_MEM_SPACE)  /* CPU address for Local Control Registers in PCI MEM Space */
#define CLIB_PCI_FIFO_ADRS	(CLIB_PCI_MEM0_ADRS+0x100) /* PCI address of CLIB Fifo */
#define CLIB_PCI_ALTERA_ADRS	(CLIB_PCI_IO0_ADRS+0x100) /* PCI address if CLIB Altera registers */
#define CLIB_CPU_FIFO_ADRS	(CLIB_PCI_FIFO_ADRS) /* CPU address of CLIB Fifo */
#define CLIB_CPU_ALTERA_ADRS	(CLIB_PCI_ALTERA_ADRS) /* CPU address of CLIB Altera registers */

/* CLIB Altera register address offsets on local bus */

#define CLIB_CONTROL		0x00 	/* Register 0 */
#define CLIB_SAMP_MODULUS_LO	0x04	/* Register 1 */
#define CLIB_SAMP_MODULUS_HI	0x08	/* Register 2 */
#define CLIB_OVSAMP_MODULUS	0x0c	/* Register 3 */
#define CLIB_USER_IO_DIR	0x10	/* Register 4 */
#define CLIB_UNUSED		0x14	/* Register 5 */
#define CLIB_ERROR		0x18	/* Register 6 */
#define CLIB_STATUS		0x1c	/* Register 7 */


/* CLIB Alter register address on PCI bus */

#define CLIB_PCI_CONTROL		(CLIB_CONTROL + CLIB_PCI_ALTERA_ADRS)
#define CLIB_PCI_SAMP_MODULUS_LO	(CLIB_SAMP_MODULUS_LO + CLIB_PCI_ALTERA_ADRS)
#define CLIB_PCI_SAMP_MODULUS_HI	(CLIB_SAMP_MODULUS_HI + CLIB_PCI_ALTERA_ADRS)
#define CLIB_PCI_OVSAMP_MODULUS		(CLIB_OVSAMP_MODULUS + CLIB_PCI_ALTERA_ADRS)
#define CLIB_PCI_USER_IO_DIR		(CLIB_USER_IO_DIR + CLIB_PCI_ALTERA_ADRS)
#define CLIB_PCI_UNUSED			(CLIB_UNUSED + CLIB_PCI_ALTERA_ADRS)
#define CLIB_PCI_ERROR			(CLIB_ERROR + CLIB_PCI_ALTERA_ADRS)
#define CLIB_PCI_STATUS			(CLIB_STATUS + CLIB_PCI_ALTERA_ADRS)

/* CLIB Alter register address viewed from Processor */

#define CLIB_CPU_CONTROL		(CLIB_CONTROL + CLIB_CPU_ALTERA_ADRS)
#define CLIB_CPU_SAMP_MODULUS_LO	(CLIB_SAMP_MODULUS_LO + CLIB_CPU_ALTERA_ADRS)
#define CLIB_CPU_SAMP_MODULUS_HI	(CLIB_SAMP_MODULUS_HI + CLIB_CPU_ALTERA_ADRS)
#define CLIB_CPU_OVSAMP_MODULUS		(CLIB_OVSAMP_MODULUS + CLIB_CPU_ALTERA_ADRS)
#define CLIB_CPU_USER_IO_DIR		(CLIB_USER_IO_DIR + CLIB_CPU_ALTERA_ADRS)
#define CLIB_CPU_UNUSED			(CLIB_UNUSED + CLIB_CPU_ALTERA_ADRS)
#define CLIB_CPU_ERROR			(CLIB_ERROR + CLIB_CPU_ALTERA_ADRS)
#define CLIB_CPU_STATUS			(CLIB_STATUS + CLIB_CPU_ALTERA_ADRS)

/* CLIB register bit definitions */

/* CLIB_CONTROL register 0 */
#define CLIB_CTRL_SCLR_SAMPLE_CNT	0x01	/* 0=increment sample count for each control sample, 1=sample count stays zero , default=0 */
#define CLIB_IF_ENABLE			0x02	/* 0=interf. control signals (IF_AOH_N & IF_RDEN_N) disabled, 1=interf. interface enabled,default=0 */
#define CLIB_FIFO_ENABLE		0x04	/* 0=fifo control signal (F_WREN_N) disabled, 1=fifo interface enabled, default=0  */
#define CLIB_IF_POSN_RST_N		0x08	/* 0=all interf. position counters reset to 0,1=all counts show position, default=1  */
#define CLIB_TERM_ACCESS_EN		0x10 	/* 0=alter will only terminate local access that are addressed to CLIB, 1=terminate all local accesses, default=0 */
#define CLIB_REG_UNUSED			0x20
#define CLIB_MASTER			0x40	/* 0=slave mode, 1=master mode, default=1 */
#define CLIB_RUN			0x80 	/* 0=stop, 1=run, default=0 */

#define CLIB_CONTROL_RUN_MASTER_IF	(CLIB_IF_ENABLE|CLIB_FIFO_ENABLE|CLIB_IF_POSN_RST_N|CLIB_TERM_ACCESS_EN|CLIB_MASTER|CLIB_RUN)
#define CLIB_CONTROL_STOP_MASTER_IF	(CLIB_IF_ENABLE|CLIB_FIFO_ENABLE|CLIB_IF_POSN_RST_N|CLIB_TERM_ACCESS_EN|CLIB_MASTER)

#define CLIB_CONTROL_RUN_SLAVE_IF	(CLIB_IF_ENABLE|CLIB_FIFO_ENABLE|CLIB_IF_POSN_RST_N|CLIB_TERM_ACCESS_EN|CLIB_RUN)
#define CLIB_CONTROL_STOP_SLAVE_IF	(CLIB_IF_ENABLE|CLIB_FIFO_ENABLE|CLIB_IF_POSN_RST_N|CLIB_TERM_ACCESS_EN) 

/* CLIB_SAMP_MODULUS(s) Registers 1-3*/

/* The master CLIB clock is 10Mhz interf. clock, determine desired sample rate,
*  multiply this by number of oversamples + 1 (for servo sample), divide this
*  into 10MHz, this is value written into CLIB_SAMP_MODULUS(s)
*
*  Example
*	Desired servo rate = 7500Hz with 2 oversamples
*	2*7500 = 22500Hz,
*	100000000/22500 = 444.444
*	(int)444.444 = 0x01bc  (actual servo rate = 10Mhz/444 = 22.522kHz/3 = 7507.5Hz
*
*	write 0xbc to CLIB_CPU_SAMP_MODULUS_LO (lo byte of 0x01bc );
*	write 0x01 to CLIB_CPU_SAMP_MODULUS_HI (hi byte of 0x01bc );
*	write 0x02 to CLIB_CPU_OVSAMP_MODULUS  (meaning 2 oversamples)
*/

/* CLIB_USER_IO_DIR Register 4*/

#define CLIB_USER_IO1_DIR	0x01

/* CLIB_ERROR Register 6 */
/* A write to CLIB_ERROR clears the error register */
/* a 1 = error condition */
#define CLIB_FIFO_OEN_CONFLICT	0x01
#define CLIB_FIFO_FLAG_ERROR	0x02
#define CLIB_FIFO_FULL_ERROR	0x04
#define CLIB_TERM_ACCESS_ERROR	0x08
/* bits 4-7 are unused */

/* CLIB_STATUS Register 7 */
/* A write to CLIB_STATUS register clears local interrupt (LPCI_IRQ) */
#define CLIB_FIFO_EMPTY			0x01	/* 1=fifo is empty */
#define CLIB_FIFO_FULL			0x02 /* 1=fifo is full */
#define CLIB_IRQ_ASSERTED		0x04 /* 0=local interrupt is asserted */
#define CLIB_STATUS_UNUSED		0x08
#define CLIB_ALTERA_ERROR		0x10 /* the logical OR of all error register bits */
#define CLIB_10MHZ_SELECTED		0x20 /* 1=CLIB is using interferometer clock */
#define CLIB_MASTER_SELECTED		0x40 /* connected to register 0_6 (1=Master) */
#define CLIB_RUN_SELECTED		0x80 /* connected to register 0_7 (1=Run) */