Re: [Fx2lib-devel] Add simple light blinking example for keyspan fx1/ezusb
Status: Beta
Brought to you by:
mulicheng
From: Dennis M. <de...@ub...> - 2009-12-01 15:54:31
|
Rather than sending patches, it would be easier for all parties to create a fork on github, then you just send pull requests. I think I'd like to add the fx1 stuff on a branch until I get 0.2 out the door. That will allow you to continue to develop on it without having to manage too many patches and I can still have a stable master branch to get the last few things I need done before 0.2. Steve Calfee wrote: > Here is a simple example that runs on a keyspan usa 19 serial adapter. > > Two patches, one that adds the app, one that adds the fx1.mk to the lib > directory. I think the fx[1-2].mk should go there to make > library building > simple and simplify the makefiles. Note, I used a heavily modified > version of the cypress ezregs.h file which is in the include directory. > > This Makefile/fx1.mk combination uses SDCCFLAGS to not-add jump tables and > the descriptors to this simple example. > > >From 269f20c7708dffea325d8fd9d1989d17ae011a40 Mon Sep 17 00:00:00 2001 > From: Steve Calfee <nos...@ya...> > Date: Mon, 30 Nov 2009 19:05:42 -0800 > Subject: [PATCH 1/4] Add simplest example of fx1/ezusb led blinking demo > > This works on my keyspan ezusb model usa-19. > It does no usb activity, just starts and blinks its one led. > See NOTES on how to use linux fxload, I could not get the python > stuff to work yet, so not fx2lib fxload, yet. > > Note I put fx1.mk in the lib directory, so all apps that want it can > find it. I use SDCCFLAGS for app specific issues, so no problem not > having descriptors or interrupt jump tables. > --- > examples/fx1/lights/Makefile | 7 + > examples/fx1/lights/NOTES | 14 ++ > examples/fx1/lights/lights.c | 65 +++++++ > include/ezregs.h | 430 ++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 516 insertions(+), 0 deletions(-) > create mode 100644 examples/fx1/lights/Makefile > create mode 100644 examples/fx1/lights/NOTES > create mode 100644 examples/fx1/lights/lights.c > create mode 100644 include/ezregs.h > > diff --git a/examples/fx1/lights/Makefile b/examples/fx1/lights/Makefile > new file mode 100644 > index 0000000..1322801 > --- /dev/null > +++ b/examples/fx1/lights/Makefile > @@ -0,0 +1,7 @@ > +BASEDIR = ../../.. > +LIBS = > +BASENAME = lights > +SOURCES = lights.c > +SDCCFLAGS += --code-loc 0x00 --code-size 0x1b00 > +include $(BASEDIR)/lib/fx1.mk > + > diff --git a/examples/fx1/lights/NOTES b/examples/fx1/lights/NOTES > new file mode 100644 > index 0000000..7fdffb9 > --- /dev/null > +++ b/examples/fx1/lights/NOTES > @@ -0,0 +1,14 @@ > +To actually load and run the program - install the linux fxload. > + > +You have to unbind the keyspan driver: > +first find the devices unique number: > +tree /sys/bus/usb/drivers/keyspan/ > +Use its bus,port number to unbind: > +sudo chmod a+w /sys/bus/usb/drivers/keyspan/unbind > +sudo echo -n "5-1:1.0" >/sys/bus/usb/drivers/keyspan/unbind > + > +You have to mount the usbfs on Ubuntu > +sudo mount -t usbfs u /proc/bus/usb/ > + > +Once you find the usb device, this loads the program. > +sudo fxload -D /proc/bus/usb/005/002 -I lights.ihx > \ No newline at end of file > diff --git a/examples/fx1/lights/lights.c b/examples/fx1/lights/lights.c > new file mode 100644 > index 0000000..7ba7743 > --- /dev/null > +++ b/examples/fx1/lights/lights.c > @@ -0,0 +1,65 @@ > +/** > + * Copyright (C) 2009 Steve Calfee > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + **/ > + > + /* > + * Minimal sample to flash the LED on the keyspan USA19 > + */ > + > +#include <ezregs.h> > + > +/* > + * USA 19 unique port A led bit > + */ > +#define bmMYLED 0x20 > + > +void delay1ms(void) > +{ > + /* > + * 24MHz clock => 166.6ns/cycle > + * > + * 10 cycles in a loop, 602 loops in a millisecond > + */ > + _asm > + mov dptr,#(0xffff - 602); > + loop: > + inc dptr ; 3 cycles > + mov a,dpl ; 2 cycles > + orl a,dph ; 2 cycles > + jnz loop ; 3 cycles > + _endasm; > +} > +void mdelay(u16_t ms) > +{ > + u16_t i; > + > + for(i=0; i < ms; i++) { > + delay1ms(); > + } > +} > + > +void main(void) > +{ > + > + // loop endlessly > + for(;;) { > + OUTA &= ~bmMYLED; > + mdelay(500); > + OUTA |= bmMYLED; > + mdelay(50); > + } > +} > diff --git a/include/ezregs.h b/include/ezregs.h > new file mode 100644 > index 0000000..cb76c01 > --- /dev/null > +++ b/include/ezregs.h > @@ -0,0 +1,430 @@ > +//----------------------------------------------------------------------------- > +// File: ezregs.h > +// Contents: EZ-USB register declarations and bit mask definitions. > +// > +// Copyright (c) 1997 AnchorChips, Inc. All rights reserved > +//----------------------------------------------------------------------------- > +#ifndef EZREGS_H /* Header Sentry */ > +#define EZREGS_H > + > +/*----------------------------------------------------------------------------- > + Global Variables > +-----------------------------------------------------------------------------*/ > + > +#define NEWEZREG(_name,_where,_size) volatile xdata at _where _size _name > + > +typedef unsigned char u8_t; > +typedef unsigned short u16_t; > +typedef struct { > + u8_t cntrl; // End point control register > + u8_t bytes; // End point buffer byte count > +} EPIOC; > + > + > +/* Register Assignments 3/18/99 TPM */ > +NEWEZREG(OUT7BUF[64],0x7B40,u8_t); > +NEWEZREG(IN7BUF[64],0x7B80,u8_t); > +NEWEZREG(OUT6BUF[64],0x7BC0,u8_t); > +NEWEZREG(IN6BUF[64],0x7C00,u8_t); > +NEWEZREG(OUT5BUF[64],0x7C40,u8_t); > +NEWEZREG(IN5BUF[64],0x7C80,u8_t); > +NEWEZREG(OUT4BUF[64],0x7CC0,u8_t); > +NEWEZREG(IN4BUF[64],0x7D00,u8_t); > +NEWEZREG(OUT3BUF[64],0x7D40,u8_t); > +NEWEZREG(IN3BUF[64],0x7D80,u8_t); > +NEWEZREG(OUT2BUF[64],0x7DC0,u8_t); > +NEWEZREG(IN2BUF[64],0x7E00,u8_t); > +NEWEZREG(OUT1BUF[64],0x7E40,u8_t); > +NEWEZREG(IN1BUF[64],0x7E80,u8_t); > +NEWEZREG(OUT0BUF[64],0x7EC0,u8_t); > +NEWEZREG(IN0BUF[64],0x7F00,u8_t); > +NEWEZREG(OUT8DATA,0x7F60,u8_t); > +NEWEZREG(OUT9DATA,0x7F61,u8_t); > +NEWEZREG(OUT10DATA,0x7F62,u8_t); > +NEWEZREG(OUT11DATA,0x7F63,u8_t); > +NEWEZREG(OUT12DATA,0x7F64,u8_t); > +NEWEZREG(OUT13DATA,0x7F65,u8_t); > +NEWEZREG(OUT14DATA,0x7F66,u8_t); > +NEWEZREG(OUT15DATA,0x7F67,u8_t); > +NEWEZREG(IN8DATA,0x7F68,u8_t); > +NEWEZREG(IN9DATA,0x7F69,u8_t); > +NEWEZREG(IN10DATA,0x7F6A,u8_t); > +NEWEZREG(IN11DATA,0x7F6B,u8_t); > +NEWEZREG(IN12DATA,0x7F6C,u8_t); > +NEWEZREG(IN13DATA,0x7F6D,u8_t); > +NEWEZREG(IN14DATA,0x7F6E,u8_t); > +NEWEZREG(IN15DATA,0x7F6F,u8_t); > +NEWEZREG(OUT8BCH,0x7F70,u8_t); > +NEWEZREG(OUT8BCL,0x7F71,u8_t); > +NEWEZREG(OUT9BCH,0x7F72,u8_t); > +NEWEZREG(OUT9BCL,0x7F73,u8_t); > +NEWEZREG(OUT10BCH,0x7F74,u8_t); > +NEWEZREG(OUT10BCL,0x7F75,u8_t); > +NEWEZREG(OUT11BCH,0x7F76,u8_t); > +NEWEZREG(OUT11BCL,0x7F77,u8_t); > +NEWEZREG(OUT12BCH,0x7F78,u8_t); > +NEWEZREG(OUT12BCL,0x7F79,u8_t); > +NEWEZREG(OUT13BCH,0x7F7A,u8_t); > +NEWEZREG(OUT13BCL,0x7F7B,u8_t); > +NEWEZREG(OUT14BCH,0x7F7C,u8_t); > +NEWEZREG(OUT14BCL,0x7F7D,u8_t); > +NEWEZREG(OUT15BCH,0x7F7E,u8_t); > +NEWEZREG(OUT15BCL,0x7F7F,u8_t); > +NEWEZREG(CPUCS,0x7F92,u8_t); > +NEWEZREG(PORTACFG,0x7F93,u8_t); > +NEWEZREG(PORTBCFG,0x7F94,u8_t); > +NEWEZREG(PORTCCFG,0x7F95,u8_t); > +NEWEZREG(OUTA,0x7F96,u8_t); > +NEWEZREG(OUTB,0x7F97,u8_t); > +NEWEZREG(OUTC,0x7F98,u8_t); > +NEWEZREG(PINSA,0x7F99,u8_t); > +NEWEZREG(PINSB,0x7F9A,u8_t); > +NEWEZREG(PINSC,0x7F9B,u8_t); > +NEWEZREG(OEA,0x7F9C,u8_t); > +NEWEZREG(OEB,0x7F9D,u8_t); > +NEWEZREG(OEC,0x7F9E,u8_t); > +NEWEZREG(UART230,0x7F9F,u8_t); > +NEWEZREG(ISOERR,0x7FA0,u8_t); > +NEWEZREG(ISOCTL,0x7FA1,u8_t); > +NEWEZREG(ZBCOUT,0x7FA2,u8_t); > +NEWEZREG(ZBCIN,0x7FA3,u8_t); > +NEWEZREG(I2CS,0x7FA5,u8_t); > +NEWEZREG(I2DAT,0x7FA6,u8_t); > +NEWEZREG(IVEC,0x7FA8,u8_t); > +NEWEZREG(IN07IRQ,0x7FA9,u8_t); > +NEWEZREG(OUT07IRQ,0x7FAA,u8_t); > +NEWEZREG(USBIRQ,0x7FAB,u8_t); > +NEWEZREG(IN07IEN,0x7FAC,u8_t); > +NEWEZREG(OUT07IEN,0x7FAD,u8_t); > +NEWEZREG(USBIEN,0x7FAE,u8_t); > +NEWEZREG(USBBAV,0x7FAF,u8_t); > +NEWEZREG(BPADDR,0x7FB2,u16_t); > +NEWEZREG(EPIO[16],0x7FB4,EPIOC); > +NEWEZREG(SUDPTRH,0x7FD4,u8_t); > +NEWEZREG(SUDPTRL,0x7FD5,u8_t); > +NEWEZREG(USBCS,0x7FD6,u8_t); > +NEWEZREG(TOGCTL,0x7FD7,u8_t); > +NEWEZREG(USBFRAMEL,0x7FD8,u8_t); > +NEWEZREG(USBFRAMEH,0x7FD9,u8_t); > +NEWEZREG(FNADDR,0x7FDB,u8_t); > +NEWEZREG(USBPAIR,0x7FDD,u8_t); > +NEWEZREG(IN07VAL,0x7FDE,u8_t); > +NEWEZREG(OUT07VAL,0x7FDF,u8_t); > +NEWEZREG(INISOVAL,0x7FE0,u8_t); > +NEWEZREG(OUTISOVAL,0x7FE1,u8_t); > +NEWEZREG(FASTXFR,0x7FE2,u8_t); > +NEWEZREG(AUTOPTRH,0x7FE3,u8_t); > +NEWEZREG(AUTOPTRL,0x7FE4,u8_t); > +NEWEZREG(AUTODATA,0x7FE5,u8_t); > +NEWEZREG(SETUPDAT[8],0x7FE8,u8_t); > +NEWEZREG(OUT8ADDR,0x7FF0,u8_t); > +NEWEZREG(OUT9ADDR,0x7FF1,u8_t); > +NEWEZREG(OUT10ADDR,0x7FF2,u8_t); > +NEWEZREG(OUT11ADDR,0x7FF3,u8_t); > +NEWEZREG(OUT12ADDR,0x7FF4,u8_t); > +NEWEZREG(OUT13ADDR,0x7FF5,u8_t); > +NEWEZREG(OUT14ADDR,0x7FF6,u8_t); > +NEWEZREG(OUT15ADDR,0x7FF7,u8_t); > +NEWEZREG(IN8ADDR,0x7FF8,u8_t); > +NEWEZREG(IN9ADDR,0x7FF9,u8_t); > +NEWEZREG(IN10ADDR,0x7FFA,u8_t); > +NEWEZREG(IN11ADDR,0x7FFB,u8_t); > +NEWEZREG(IN12ADDR,0x7FFC,u8_t); > +NEWEZREG(IN13ADDR,0x7FFD,u8_t); > +NEWEZREG(IN14ADDR,0x7FFE,u8_t); > +NEWEZREG(IN15ADDR,0x7FFF,u8_t); > + > + > +/*----------------------------------------------------------------------------- > + Special Function Registers (SFRs) > +-----------------------------------------------------------------------------*/ > +sfr at 0x81 SP; > +sfr at 0x82 DPL; > +sfr at 0x83 DPH; > +sfr at 0x84 DPL1; > +sfr at 0x85 DPH1; > +sfr at 0x86 DPS; > + > + /* DPS */ > +sfr at 0x87 PCON; > +sfr at 0x88 TCON; > + > + /* TCON */ > +sbit at 0x88+0 IT0; > +sbit at 0x88+1 IE0; > +sbit at 0x88+2 IT1; > +sbit at 0x88+3 IE1; > +sbit at 0x88+4 TR0; > +sbit at 0x88+5 TF0; > +sbit at 0x88+6 TR1; > +sbit at 0x88+7 TF1; > +sfr at 0x89 TMOD; > + > + /* TMOD */ > +sfr at 0x8A TL0; > +sfr at 0x8B TL1; > +sfr at 0x8C TH0; > +sfr at 0x8D TH1; > +sfr at 0x8E CKCON; > + > + /* CKCON */ > +sfr at 0x8F SPC_FNC; // Was WRS in Reg320 > + > +sfr at 0x91 EXIF; // EXIF Bit Values differ from Reg320 > +sfr at 0x92 MPAGE; > +sfr at 0x98 SCON0; > + > + /* SCON0 */ > +sbit at 0x98+0 RI; > +sbit at 0x98+1 TI; > +sbit at 0x98+2 RB8; > +sbit at 0x98+3 TB8; > +sbit at 0x98+4 REN; > +sbit at 0x98+5 SM2; > +sbit at 0x98+6 SM1; > +sbit at 0x98+7 SM0; > +sfr at 0x99 SBUF0; > +sfr at 0xA8 IE; > + > + /* IE */ > +sbit at 0xA8+0 EX0; > +sbit at 0xA8+1 ET0; > +sbit at 0xA8+2 EX1; > +sbit at 0xA8+3 ET1; > +sbit at 0xA8+4 ES0; > +sbit at 0xA8+5 ET2; > +sbit at 0xA8+6 ES1; > +sbit at 0xA8+7 EA; > +sfr at 0xB8 IP; > + > + /* IP */ > +sbit at 0xB8+0 PX0; > +sbit at 0xB8+1 PT0; > +sbit at 0xB8+2 PX1; > +sbit at 0xB8+3 PT1; > +sbit at 0xB8+4 PS0; > +sbit at 0xB8+5 PT2; > +sbit at 0xB8+6 PS1; > +sfr at 0xC0 SCON1; > + > + /* SCON1 */ > +sbit at 0xC0+0 RI1; > +sbit at 0xC0+1 TI1; > +sbit at 0xC0+2 RB81; > +sbit at 0xC0+3 TB81; > +sbit at 0xC0+4 REN1; > +sbit at 0xC0+5 SM21; > +sbit at 0xC0+6 SM11; > +sbit at 0xC0+7 SM01; > +sfr at 0xC1 SBUF1; > +sfr at 0xC8 T2CON; > + > + /* T2CON */ > +sbit at 0xC8+0 CP_RL2; > +sbit at 0xC8+1 C_T2; > +sbit at 0xC8+2 TR2; > +sbit at 0xC8+3 EXEN2; > +sbit at 0xC8+4 TCLK; > +sbit at 0xC8+5 RCLK; > +sbit at 0xC8+6 EXF2; > +sbit at 0xC8+7 TF2; > +sfr at 0xCA RCAP2L; > +sfr at 0xCB RCAP2H; > +sfr at 0xCC TL2; > +sfr at 0xCD TH2; > +sfr at 0xD0 PSW; > + > + /* PSW */ > +sbit at 0xD0+0 P; > +sbit at 0xD0+1 FL; > +sbit at 0xD0+2 OV; > +sbit at 0xD0+3 RS0; > +sbit at 0xD0+4 RS1; > +sbit at 0xD0+5 F0; > +sbit at 0xD0+6 AC; > +sbit at 0xD0+7 CY; > +sfr at 0xD8 EICON; // Was WDCON in DS80C320; Bit Values differ from Reg320 > +sbit at 0xD8+3 INT6; > +sbit at 0xD8+4 RESI; > +sbit at 0xD8+5 ERESI; > +sbit at 0xD8+7 SMOD1; > +sfr at 0xE0 ACC; > +sfr at 0xE8 EIE; // EIE Bit Values differ from Reg320 > +sbit at 0xE8+0 EUSB; > +sbit at 0xE8+1 EI2C; > +sbit at 0xE8+2 EIEX4; > +sbit at 0xE8+3 EIEX5; > +sbit at 0xE8+4 EIEX6; > +sfr at 0xF0 B; > +sfr at 0xF8 EIP; // EIP Bit Values differ from Reg320 > +sbit at 0xF8+0 PUSB; > +sbit at 0xF8+1 PI2C; > +sbit at 0xF8+2 EIPX4; > +sbit at 0xF8+3 EIPX5; > +sbit at 0xF8+4 EIPX6; > + > +/*----------------------------------------------------------------------------- > + Bit Masks > +-----------------------------------------------------------------------------*/ > + > +/* CPU Control & Status Register */ > +#define bmCHIPREV (bmBIT7 | bmBIT6 | bmBIT5 | bmBIT4) > +#define bmCLK24OE bmBIT1 > +#define bm8052RES bmBIT0 > +/* Port Configuration Registers */ > +/* Port A */ > +#define bmRXD1OUT bmBIT7 > +#define bmRXD0OUT bmBIT6 > +#define bmFRD bmBIT5 > +#define bmFWR bmBIT4 > +#define bmCS bmBIT3 > +#define bmOE bmBIT2 > +#define bmT1OUT bmBIT1 > +#define bmT0OUT bmBIT0 > +/* Port B */ > +#define bmT2OUT bmBIT7 > +#define bmINT6 bmBIT6 > +#define bmINT5 bmBIT5 > +#define bmINT4 bmBIT4 > +#define bmTXD1 bmBIT3 > +#define bmRXD1 bmBIT2 > +#define bmT2EX bmBIT1 > +#define bmT2 bmBIT0 > +/* Port C */ > +#define bmRD bmBIT7 > +#define bmWR bmBIT6 > +#define bmT1 bmBIT5 > +#define bmT0 bmBIT4 > +#define bmINT1 bmBIT3 > +#define bmINT0 bmBIT2 > +#define bmTXD0 bmBIT1 > +#define bmRXD0 bmBIT0 > +/* Isochronous Status & End Point Valid Registers */ > +#define bmEP15 bmBIT7 > +#define bmEP14 bmBIT6 > +#define bmEP13 bmBIT5 > +#define bmEP12 bmBIT4 > +#define bmEP11 bmBIT3 > +#define bmEP10 bmBIT2 > +#define bmEP9 bmBIT1 > +#define bmEP8 bmBIT0 > +/* I2C Control & Status Register */ > +#define bmSTART bmBIT7 > +#define bmSTOP bmBIT6 > +#define bmLASTRD bmBIT5 > +#define bmID (bmBIT4 | bmBIT3) > +#define bmBERR bmBIT2 > +#define bmACK bmBIT1 > +#define bmDONE bmBIT0 > +/* Interrupt Vector Register */ > +#define bmIV4 bmBIT6 > +#define bmIV3 bmBIT5 > +#define bmIV2 bmBIT4 > +#define bmIV1 bmBIT3 > +#define bmIV0 bmBIT2 > +/* End point Interrupt Request, End Point Interrupt Enable */ > +/* And End Point Valid Registers */ > +#define bmEP7 bmBIT7 > +#define bmEP6 bmBIT6 > +#define bmEP5 bmBIT5 > +#define bmEP4 bmBIT4 > +#define bmEP3 bmBIT3 > +#define bmEP2 bmBIT2 > +#define bmEP1 bmBIT1 > +#define bmEP0 bmBIT0 > +/* Global Interrupt Request & Enable Registers */ > +#define bmIBN bmBIT5 > +#define bmURES bmBIT4 > +#define bmSUSP bmBIT3 > +#define bmSUTOK bmBIT2 > +#define bmSOF bmBIT1 > +#define bmSUDAV bmBIT0 > +/* Global Control */ > +#define bmBREAK bmBIT3 > +#define bmBPPULSE bmBIT2 > +#define bmBPEN bmBIT1 > +#define bmAVEN bmBIT0 > +/* USB Control & Status Register */ > +#define bmRWAKEUP bmBIT7 > +#define bmDISCON bmBIT3 > +#define bmDISCOE bmBIT2 > +#define bmRENUM bmBIT1 > +#define bmSIGRESUME bmBIT0 > +/* End Point 0 Control & Status Register */ > +#define bmOUT bmBIT3 > +#define bmIN bmBIT2 > +#define bmHS bmBIT1 > +#define bmHSSTALL bmBIT0 > +/* End Point Control & Status Registers */ > +#define bmEPSTALL bmBIT0 > +#define bmEPBUSY bmBIT1 > +/* Fast Transfer Register */ > +#define bmFISO bmBIT7 > +#define bmFBLK bmBIT6 > +#define bmRPOL bmBIT5 > +#define bmRMOD1 bmBIT4 > +#define bmRMOD0 bmBIT3 > +#define bmWPOL bmBIT2 > +#define bmWMOD1 bmBIT1 > +#define bmWMOD0 bmBIT0 > +/* Endpoint Pairing Register */ > +#define bmISOSEND0 bmBIT7 > +#define bmPR6OUT bmBIT5 > +#define bmPR4OUT bmBIT4 > +#define bmPR2OUT bmBIT3 > +#define bmPR6IN bmBIT2 > +#define bmPR4IN bmBIT1 > +#define bmPR2IN bmBIT0 > +/* End point control offsets */ > +enum { IN0BUF_ID, > + IN1BUF_ID, > + IN2BUF_ID, > + IN3BUF_ID, > + IN4BUF_ID, > + IN5BUF_ID, > + IN6BUF_ID, > + IN7BUF_ID, > + OUT0BUF_ID, > + OUT1BUF_ID, > + OUT2BUF_ID, > + OUT3BUF_ID, > + OUT4BUF_ID, > + OUT5BUF_ID, > + OUT6BUF_ID, > + OUT7BUF_ID > +}; > + > +#define EP0CS EPIO[0].cntrl > +#define IN0BC EPIO[0].bytes > +#define IN1CS EPIO[1].cntrl > +#define IN1BC EPIO[1].bytes > +#define IN2CS EPIO[2].cntrl > +#define IN2BC EPIO[2].bytes > +#define IN3CS EPIO[3].cntrl > +#define IN3BC EPIO[3].bytes > +#define IN4CS EPIO[4].cntrl > +#define IN4BC EPIO[4].bytes > +#define IN5CS EPIO[5].cntrl > +#define IN5BC EPIO[5].bytes > +#define IN6CS EPIO[6].cntrl > +#define IN6BC EPIO[6].bytes > +#define IN7CS EPIO[7].cntrl > +#define IN7BC EPIO[7].bytes > +#define OUT0CS EPIO[8].cntrl > +#define OUT0BC EPIO[8].bytes > +#define OUT1CS EPIO[9].cntrl > +#define OUT1BC EPIO[9].bytes > +#define OUT2CS EPIO[10].cntrl > +#define OUT2BC EPIO[10].bytes > +#define OUT3CS EPIO[11].cntrl > +#define OUT3BC EPIO[11].bytes > +#define OUT4CS EPIO[12].cntrl > +#define OUT4BC EPIO[12].bytes > +#define OUT5CS EPIO[13].cntrl > +#define OUT5BC EPIO[13].bytes > +#define OUT6CS EPIO[14].cntrl > +#define OUT6BC EPIO[14].bytes > +#define OUT7CS EPIO[15].cntrl > +#define OUT7BC EPIO[15].bytes > + > +#endif /* EZREGS_H */ > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Join us December 9, 2009 for the Red Hat Virtual Experience, > a free event focused on virtualization and cloud computing. > Attend in-depth sessions from your desk. Your couch. Anywhere. > http://p.sf.net/sfu/redhat-sfdev2dev > ------------------------------------------------------------------------ > > _______________________________________________ > Fx2lib-devel mailing list > Fx2...@li... > https://lists.sourceforge.net/lists/listinfo/fx2lib-devel |