/************************************************/ /* */ /* File : rockbits.h */ /* Description : ROCK bits interpreter */ /* */ /* Author: Sfiligoi Igor */ /* */ /* Created : 14.01.1997 */ /* Last modified: 02.04.1997 */ /* */ /************************************************/ #ifndef ROCKBITS_H #define ROCKBITS_H #include <bits.h> #include "rockhard.h" #include "rockbits_private.h" /*********************************************************************/ /* bit values */ /*********************************************************************/ #define ROCKB_BIT_ON 0 #define ROCKB_BIT_OFF 1 /*********************************************************************/ /************** types *******************/ /*********************************************************************/ /*********************************************************************/ /* internal page */ /*********************************************************************/ typedef struct { unsigned char fltrst; /* 0/1 */ unsigned char intrst; /* 0/1 */ unsigned char auxrst; /* 0/1 */ unsigned char dfifo; /* 0/1 */ unsigned char efifo; /* 0/1 */ unsigned char xintf; /* 0/1 */ unsigned char tfifo; /* 0/1 */ unsigned char cintf; /* 0/1 */ } ROCKB_RESET_bits; typedef struct { unsigned char dff; /* 0/1 */ unsigned char dhf; /* 0/1 */ unsigned char def; /* 0/1 */ unsigned char eff; /* 0/1 */ unsigned char ehf; /* 0/1 */ unsigned char eef; /* 0/1 */ unsigned char tef; /* 0/1 */ unsigned char tff; /* 0/1 */ } ROCKB_FIFO_bits; typedef unsigned char ROCKB_WATCHDOG_bits; typedef struct { unsigned char efmode; /* 0/1/2/3 */ unsigned char boe; /* 0/1 */ unsigned char tkndis; /* 0/1 */ unsigned char inttrg; /* 0/1 */ unsigned char diag; /* 0/1 */ } ROCKB_CSR0_bits; typedef struct { unsigned char tknin; /* 0/1 */ unsigned char tknout; /* 0/1 */ unsigned char ceob; /* 0/1 */ unsigned char cerr; /* 0/1 */ unsigned char crst; /* 0/1 */ unsigned char crngt; /* 0/1 */ unsigned char cbusy; /* 0/1 */ unsigned char ctrgv; /* 0/1 */ } ROCKB_CSR1_bits; typedef struct { unsigned char efwren; /* 0/1 */ unsigned char auxon; /* 0/1 */ unsigned char timeout; /* 0/1 */ unsigned char elapsed; /* 0/1 */ unsigned char wscale; /* 0..7 */ } ROCKB_CSR2_bits; typedef unsigned char ROCKB_ELAPSED_bits; typedef struct { unsigned char halt; /* 0/1 */ unsigned char busy; /* 0/1 */ unsigned char synchf; /* 0/1 */ unsigned char xbusy; /* 0/1 */ unsigned char xberr; /* 0/1 */ unsigned char test; /* 0/1/2/3 */ } ROCKB_TRIGGER_bits; /*********************************************************************/ /* info page */ /*********************************************************************/ typedef struct { unsigned char tff; /* 0/1 */ unsigned char link; /* 0/1 */ unsigned short qtrg; /* 0..4095 */ } ROCKB_TQUE_bits; typedef struct { unsigned char cstate; /* 0..7 */ unsigned short ptrg; /* 0..4095 */ } ROCKB_TNOW_bits; typedef struct { unsigned char sof; /* 0/1 */ unsigned char eof; /* 0/1 */ unsigned char syncrespf; /* 0/1 */ unsigned char rocksfail; /* 0/1 */ unsigned char slvsfail; /* 0/1 */ unsigned char lwadd; /* 0..15 */ unsigned char xadd; /* 0..15 */ } ROCKB_ROCKINFO_bits; typedef struct { unsigned char last; /* 0/1 */ unsigned char cradd; /* 0..7 */ unsigned short goldenref; /* 0..4095 */ } ROCKB_GOLDEN_bits; /*********************************************************************/ /* FIFO page */ /*********************************************************************/ typedef struct { unsigned char nvd; /* 0/1 */ unsigned char ff; /* 0/1 */ unsigned char hf; /* 0/1 */ unsigned char ef; /* 0/1 */ unsigned int fifodata; /* 0..0x7ffffff */ } ROCKB_EDFIFO_bits; /*********************************************************************/ /************** page types *******************/ /*********************************************************************/ typedef struct { unsigned char fltrst; /* 0/1 */ unsigned char intrst; /* 0/1 */ unsigned char auxrst; /* 0/1 */ unsigned char dfifo; /* 0/1 */ unsigned char efifo; /* 0/1 */ unsigned char xintf; /* 0/1 */ unsigned char tfifo; /* 0/1 */ unsigned char cintf; /* 0/1 */ unsigned char dff; /* 0/1 */ unsigned char dhf; /* 0/1 */ unsigned char def; /* 0/1 */ unsigned char eff; /* 0/1 */ unsigned char ehf; /* 0/1 */ unsigned char eef; /* 0/1 */ unsigned char tef; /* 0/1 */ unsigned char tff; /* 0/1 */ unsigned char watchdog; /* 0..255 */ unsigned char efmode; /* 0/1/2/3 */ unsigned char boe; /* 0/1 */ unsigned char tkndis; /* 0/1 */ unsigned char inttrg; /* 0/1 */ unsigned char diag; /* 0/1 */ unsigned char tknin; /* 0/1 */ unsigned char tknout; /* 0/1 */ unsigned char ceob; /* 0/1 */ unsigned char cerr; /* 0/1 */ unsigned char crst; /* 0/1 */ unsigned char crngt; /* 0/1 */ unsigned char cbusy; /* 0/1 */ unsigned char ctrgv; /* 0/1 */ unsigned char efwren; /* 0/1 */ unsigned char auxon; /* 0/1 */ unsigned char timeout; /* 0/1 */ unsigned char elapsed; /* 0/1 */ unsigned char wscale; /* 0..7 */ unsigned char elapsedtime; /* 0..255 */ unsigned char halt; /* 0/1 */ unsigned char busy; /* 0/1 */ unsigned char synchf; /* 0/1 */ unsigned char xbusy; /* 0/1 */ unsigned char xberr; /* 0/1 */ unsigned char test; /* 0/1/2/3 */ } ROCKB_PAGE_INTERNAL_bits; typedef struct { unsigned char tff; /* 0/1 */ unsigned char link; /* 0/1 */ unsigned short qtrg; /* 0..4095 */ unsigned char cstate; /* 0..7 */ unsigned short ptrg; /* 0..4095 */ unsigned char sof; /* 0/1 */ unsigned char eof; /* 0/1 */ unsigned char syncrespf; /* 0/1 */ unsigned char rocksfail; /* 0/1 */ unsigned char slvsfail; /* 0/1 */ unsigned char lwadd; /* 0..15 */ unsigned char xadd; /* 0..15 */ unsigned char last; /* 0/1 */ unsigned char cradd; /* 0..7 */ unsigned short goldenref; /* 0..4095 */ } ROCKB_PAGE_INFO_bits; /*********************************************************************/ /************** conversion routines *******************/ /*********************************************************************/ /*********************************************************************/ /* internal page */ /*********************************************************************/ /* reset */ #define rockb_reset2nr(/*ROCKB_RESET_bits*/ reset) /* IN */ \ (bits_pos_bit(reset.cintf,ROCKB_RESET_CINTF) | \ bits_pos_bit(reset.xintf,ROCKB_RESET_XINTF) | \ bits_pos_bit(reset.tfifo,ROCKB_RESET_TFIFO) | \ bits_pos_bit(reset.efifo,ROCKB_RESET_EFIFO) | \ bits_pos_bit(reset.dfifo,ROCKB_RESET_DFIFO) | \ bits_pos_bit(reset.auxrst,ROCKB_RESET_AUXRST) | \ bits_pos_bit(reset.intrst,ROCKB_RESET_INTRST) | \ bits_pos_bit(reset.fltrst,ROCKB_RESET_FLTRST)) #define rockb_nr2reset(/*unsigned char*/ nr, /* IN */ \ /*ROCKB_RESET_bits*/ reset) /* OUT */ \ { \ reset.cintf = bits_get_bit(nr,ROCKB_RESET_CINTF); \ reset.xintf = bits_get_bit(nr,ROCKB_RESET_XINTF); \ reset.tfifo = bits_get_bit(nr,ROCKB_RESET_TFIFO); \ reset.efifo = bits_get_bit(nr,ROCKB_RESET_EFIFO); \ reset.dfifo = bits_get_bit(nr,ROCKB_RESET_DFIFO); \ reset.auxrst = bits_get_bit(nr,ROCKB_RESET_AUXRST); \ reset.intrst = bits_get_bit(nr,ROCKB_RESET_INTRST); \ reset.fltrst = bits_get_bit(nr,ROCKB_RESET_FLTRST); \ } /* FIFO */ #define rockb_fifo2nr(/*ROCKB_FIFO_bits*/ fifo) /* IN */ \ (bits_pos_bit(fifo.dff,ROCKB_FIFO_DFF) | \ bits_pos_bit(fifo.dhf,ROCKB_FIFO_DHF) | \ bits_pos_bit(fifo.def,ROCKB_FIFO_DEF) | \ bits_pos_bit(fifo.eff,ROCKB_FIFO_EFF) | \ bits_pos_bit(fifo.ehf,ROCKB_FIFO_EHF) | \ bits_pos_bit(fifo.eef,ROCKB_FIFO_EEF) | \ bits_pos_bit(fifo.tef,ROCKB_FIFO_TEF) | \ bits_pos_bit(fifo.tff,ROCKB_FIFO_TFF)) #define rockb_nr2fifo(/*unsigned char */ nr, /* IN */ \ /*ROCKB_FIFO_bits*/ fifo) /* OUT */ \ { \ fifo.dff = bits_get_bit(nr,ROCKB_FIFO_DFF); \ fifo.dhf = bits_get_bit(nr,ROCKB_FIFO_DHF); \ fifo.def = bits_get_bit(nr,ROCKB_FIFO_DEF); \ fifo.eff = bits_get_bit(nr,ROCKB_FIFO_EFF); \ fifo.ehf = bits_get_bit(nr,ROCKB_FIFO_EHF); \ fifo.eef = bits_get_bit(nr,ROCKB_FIFO_EEF); \ fifo.tef = bits_get_bit(nr,ROCKB_FIFO_TEF); \ fifo.tff = bits_get_bit(nr,ROCKB_FIFO_TFF); \ } /* watchdog */ /* CSR0 */ #define rockb_csr02nr(/*ROCKB_CSR0_bits*/ csr0) /* IN */ \ (0xC0 | \ bits_pos_bits_mask(csr0.efmode,ROCKB_CSR0_EFMODE,ROCKB_CSR0_EFMODE_mask) | \ bits_pos_bit(csr0.boe,ROCKB_CSR0_BOE) | \ bits_pos_bit(csr0.tkndis,ROCKB_CSR0_TKNDIS) | \ bits_pos_bit(csr0.inttrg,ROCKB_CSR0_INTTRG) | \ bits_pos_bit(csr0.diag,ROCKB_CSR0_DIAG)) #define rockb_nr2csr0(/*unsigned char */ nr, /* IN */ \ /*ROCKB_CSR0_bits*/ csr0) /* OUT */ \ { \ csr0.efmode = bits_get_bits_mask(nr,ROCKB_CSR0_EFMODE,ROCKB_CSR0_EFMODE_mask); \ csr0.boe = bits_get_bit(nr,ROCKB_CSR0_BOE); \ csr0.tkndis = bits_get_bit(nr,ROCKB_CSR0_TKNDIS); \ csr0.inttrg = bits_get_bit(nr,ROCKB_CSR0_INTTRG); \ csr0.diag = bits_get_bit(nr,ROCKB_CSR0_DIAG); \ } /* CSR1 */ #define rockb_csr12nr(/*ROCKB_CSR1_bits*/ csr1) /* IN */ \ (bits_pos_bit(csr1.tknin,ROCKB_CSR1_TKNIN) | \ bits_pos_bit(csr1.tknout,ROCKB_CSR1_TKNOUT) | \ bits_pos_bit(csr1.ceob,ROCKB_CSR1_CEOB) | \ bits_pos_bit(csr1.cerr,ROCKB_CSR1_CERR) | \ bits_pos_bit(csr1.crst,ROCKB_CSR1_CRST) | \ bits_pos_bit(csr1.crngt,ROCKB_CSR1_CRNGT) | \ bits_pos_bit(csr1.cbusy,ROCKB_CSR1_CBUSY) | \ bits_pos_bit(csr1.ctrgv,ROCKB_CSR1_CTRGV)) #define rockb_nr2csr1(/*unsigned char */ nr, /* IN */ \ /*ROCKB_CSR1_bits*/ csr1) /* OUT */ \ { \ csr1.tknin = bits_get_bit(nr,ROCKB_CSR1_TKNIN); \ csr1.tknout = bits_get_bit(nr,ROCKB_CSR1_TKNOUT); \ csr1.ceob = bits_get_bit(nr,ROCKB_CSR1_CEOB); \ csr1.cerr = bits_get_bit(nr,ROCKB_CSR1_CERR); \ csr1.crst = bits_get_bit(nr,ROCKB_CSR1_CRST); \ csr1.crngt = bits_get_bit(nr,ROCKB_CSR1_CRNGT); \ csr1.cbusy = bits_get_bit(nr,ROCKB_CSR1_CBUSY); \ csr1.ctrgv = bits_get_bit(nr,ROCKB_CSR1_CTRGV); \ } /* CSR2 */ #define rockb_csr22nr(/*ROCKB_CSR2_bits */ csr2) /* IN */ \ (0x80 | \ bits_pos_bit(csr2.efwren,ROCKB_CSR2_EFWREN) | \ bits_pos_bit(csr2.auxon,ROCKB_CSR2_AUXON) | \ bits_pos_bit(csr2.timeout,ROCKB_CSR2_TIMEOUT) | \ bits_pos_bit(csr2.elapsed,ROCKB_CSR2_ELAPSED) | \ bits_pos_bits_mask(csr2.wscale,ROCKB_CSR2_WSCALE,ROCKB_CSR2_WSCALE_mask)) #define rockb_nr2csr2(/*unsigned char */ nr, /* IN */ \ /*ROCKB_CSR2_bits*/ csr2) /* OUT */ \ { \ csr2.efwren = bits_get_bit(nr,ROCKB_CSR2_EFWREN); \ csr2.auxon = bits_get_bit(nr,ROCKB_CSR2_AUXON); \ csr2.timeout = bits_get_bit(nr,ROCKB_CSR2_TIMEOUT); \ csr2.elapsed = bits_get_bit(nr,ROCKB_CSR2_ELAPSED); \ csr2.wscale = bits_get_bits_mask(nr,ROCKB_CSR2_WSCALE,ROCKB_CSR2_WSCALE_mask); \ } /* elapsed */ /* trigger */ #define rockb_trigger2nr(/*ROCKB_TRIGGER_bits*/ trigger) /* IN */ \ (0x04 | \ bits_pos_bit(trigger.halt,ROCKB_TRIGGER_HALT) | \ bits_pos_bit(trigger.busy,ROCKB_TRIGGER_BUSY) | \ bits_pos_bit(trigger.synchf,ROCKB_TRIGGER_SYNCHF) | \ bits_pos_bit(trigger.xbusy,ROCKB_TRIGGER_XBUSY) | \ bits_pos_bit(trigger.xberr,ROCKB_TRIGGER_XBERR) | \ bits_pos_bits_mask(trigger.test,ROCKB_TRIGGER_TEST,ROCKB_TRIGGER_TEST_mask)) #define rockb_nr2trigger(/*unsigned char */ nr, /* IN */ \ /*ROCKB_TRIGGER_bits*/ trigger) /* OUT */ \ { \ trigger.halt = bits_get_bit(nr,ROCKB_TRIGGER_HALT); \ trigger.busy = bits_get_bit(nr,ROCKB_TRIGGER_BUSY); \ trigger.synchf = bits_get_bit(nr,ROCKB_TRIGGER_SYNCHF); \ trigger.xbusy = bits_get_bit(nr,ROCKB_TRIGGER_XBUSY); \ trigger.xberr = bits_get_bit(nr,ROCKB_TRIGGER_XBERR); \ trigger.test = bits_get_bits_mask(nr,ROCKB_TRIGGER_TEST,ROCKB_TRIGGER_TEST_mask); \ } /*********************************************************************/ /* info page */ /*********************************************************************/ /* tque */ #define rockb_tque2nr(/*ROCKB_TQUE_bits*/ tque) /* IN */ \ (bits_pos_bit(tque.tff,ROCKB_TQUE_TFF) | \ bits_pos_bit(tque.link,ROCKB_TQUE_LINK) | \ bits_pos_bits_mask(tque.qtrg,ROCKB_TQUE_QTRG,ROCKB_TQUE_QTRG_mask)) #define rockb_nr2tque(/*unsigned short */ nr, /* IN */ \ /*ROCKB_TQUE_bits*/ tque) /* OUT */ \ { \ tque.tff = bits_get_bit(nr,ROCKB_TQUE_TFF); \ tque.link = bits_get_bit(nr,ROCKB_TQUE_LINK); \ tque.qtrg = bits_get_bits_mask(nr,ROCKB_TQUE_QTRG,ROCKB_TQUE_QTRG_mask); \ } /* tnow */ #define rockb_tnow2nr(/*ROCKB_TNOW_bits*/ tnow) /* IN */ \ (bits_pos_bits_mask(tnow.cstate,ROCKB_TNOW_CSTATE,ROCKB_TNOW_CSTATE_mask) | \ bits_pos_bits_mask(tnow.ptrg,ROCKB_TNOW_PTRG,ROCKB_TNOW_PTRG_mask)) #define rockb_nr2tnow(/*unsigned short */ nr, /* IN */ \ /*ROCKB_TNOW_bits*/ tnow) /* OUT */ \ { \ tnow.cstate = bits_get_bits_mask(nr,ROCKB_TNOW_CSTATE,ROCKB_TNOW_CSTATE_mask); \ tnow.ptrg = bits_get_bits_mask(nr,ROCKB_TNOW_PTRG,ROCKB_TNOW_PTRG_mask); \ } /* rockinfo */ #define rockb_rockinfo2nr(/*ROCKB_ROCKINFO_bits*/ rockinfo) /* IN */ \ (bits_pos_bit(rockinfo.sof,ROCKB_ROCKINFO_SOF) | \ bits_pos_bit(rockinfo.eof,ROCKB_ROCKINFO_EOF) | \ bits_pos_bit(rockinfo.syncrespf,ROCKB_ROCKINFO_SYNCRESPF) | \ bits_pos_bit(rockinfo.rocksfail,ROCKB_ROCKINFO_ROCKSFAIL) | \ bits_pos_bit(rockinfo.slvsfail,ROCKB_ROCKINFO_SLVSFAIL) | \ bits_pos_bits_mask(rockinfo.lwadd,ROCKB_ROCKINFO_LWADD,ROCKB_ROCKINFO_LWADD_mask) | \ bits_pos_bits_mask(rockinfo.xadd,ROCKB_ROCKINFO_XADD,ROCKB_ROCKINFO_XADD_mask)) #define rockb_nr2rockinfo(/*unsigned short */ nr, /* IN */ \ /*ROCKB_ROCKINFO_bits*/ rockinfo) /* OUT */ \ { \ rockinfo.sof = bits_get_bit(nr,ROCKB_ROCKINFO_SOF); \ rockinfo.eof = bits_get_bit(nr,ROCKB_ROCKINFO_EOF); \ rockinfo.syncrespf = bits_get_bit(nr,ROCKB_ROCKINFO_SYNCRESPF); \ rockinfo.rocksfail = bits_get_bit(nr,ROCKB_ROCKINFO_ROCKSFAIL); \ rockinfo.slvsfail = bits_get_bit(nr,ROCKB_ROCKINFO_SLVSFAIL); \ rockinfo.lwadd = bits_get_bits_mask(nr,ROCKB_ROCKINFO_LWADD,ROCKB_ROCKINFO_LWADD_mask); \ rockinfo.xadd = bits_get_bits_mask(nr,ROCKB_ROCKINFO_XADD,ROCKB_ROCKINFO_XADD_mask); \ } /* golden */ #define rockb_golden2nr(/*ROCKB_GOLDEN_bits*/ golden) /* IN */ \ (bits_pos_bit(golden.last,ROCKB_GOLDEN_LAST) | \ bits_pos_bits_mask(golden.cradd,ROCKB_GOLDEN_CRADD,ROCKB_GOLDEN_CRADD_mask) | \ bits_pos_bits_mask(golden.goldenref,ROCKB_GOLDEN_GOLDENREF,ROCKB_GOLDEN_GOLDENREF_mask)) #define rockb_nr2golden(/*unsigned short */ nr, /* IN */ \ /*ROCKB_GOLDEN_bits*/ golden) /* OUT */ \ { \ golden.last = bits_get_bit(nr,ROCKB_GOLDEN_LAST); \ golden.cradd = bits_get_bits_mask(nr,ROCKB_GOLDEN_CRADD,ROCKB_GOLDEN_CRADD_mask); \ golden.goldenref = bits_get_bits_mask(nr,ROCKB_GOLDEN_GOLDENREF,ROCKB_GOLDEN_GOLDENREF_mask); \ } /*********************************************************************/ /* FIFO page */ /*********************************************************************/ #define rockb_edfifo2nr(/*ROCKB_EDFIFO_bits*/ edfifo) /* IN */ \ (bits_pos_bit(edfifo.nvd,ROCKB_EDFIFO_NVD) | \ bits_pos_bit(edfifo.ff,ROCKB_EDFIFO_FF) | \ bits_pos_bit(edfifo.hf,ROCKB_EDFIFO_HF) | \ bits_pos_bit(edfifo.ef,ROCKB_EDFIFO_EF) | \ bits_pos_bits_mask(edfifo.fifodata,ROCKB_EDFIFO_FIFODATA,ROCKB_EDFIFO_FIFODATA_mask)) #define rockb_nr2edfifo(/*unsigned int */ nr, /* IN */ \ /*ROCKB_EDFIFO_bits*/ edfifo) /* OUT */ \ { \ edfifo.nvd = bits_get_bit(nr,ROCKB_EDFIFO_NVD); \ edfifo.ff = bits_get_bit(nr,ROCKB_EDFIFO_FF); \ edfifo.hf = bits_get_bit(nr,ROCKB_EDFIFO_HF); \ edfifo.ef = bits_get_bit(nr,ROCKB_EDFIFO_EF); \ edfifo.fifodata = bits_get_bits_mask(nr,ROCKB_EDFIFO_FIFODATA,ROCKB_EDFIFO_FIFODATA_mask); \ } /*********************************************************************/ /************** get bit routines *******************/ /*********************************************************************/ /* reset */ #define rockb_get_cintf(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_RESET_CINTF) #define rockb_get_xintf(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_RESET_XINTF) #define rockb_get_tfifo(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_RESET_TFIFO) #define rockb_get_efifo(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_RESET_EFIFO) #define rockb_get_dfifo(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_RESET_DFIFO) #define rockb_get_auxrst(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_RESET_AUXRST) #define rockb_get_intrst(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_RESET_INTRST) #define rockb_get_fltrst(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_RESET_FLTRST) /* FIFO */ #define rockb_get_dff(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_FIFO_DFF) #define rockb_get_dhf(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_FIFO_DHF) #define rockb_get_def(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_FIFO_DEF) #define rockb_get_eff(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_FIFO_EFF) #define rockb_get_ehf(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_FIFO_EHF) #define rockb_get_eef(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_FIFO_EEF) #define rockb_get_tef(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_FIFO_TEF) #define rockb_get_tff(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_FIFO_TFF) /* CSR0 */ #define rockb_get_efmode(/*unsigned char */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_CSR0_EFMODE,ROCKB_CSR0_EFMODE_mask) #define rockb_get_boe(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR0_BOE) #define rockb_get_tkndis(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR0_TKNDIS) #define rockb_get_inttrg(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR0_INTTRG) #define rockb_get_diag(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR0_DIAG) /* CSR1 */ #define rockb_get_tknin(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR1_TKNIN) #define rockb_get_tknout(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR1_TKNOUT) #define rockb_get_ceob(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR1_CEOB) #define rockb_get_cerr(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR1_CERR) #define rockb_get_crst(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR1_CRST) #define rockb_get_crngt(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR1_CRNGT) #define rockb_get_cbusy(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR1_CBUSY) #define rockb_get_ctrgv(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR1_CTRGV) /* CSR2 */ #define rockb_get_efwren(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR2_EFWREN) #define rockb_get_auxon(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR2_AUXON) #define rockb_get_timeout(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR2_TIMEOUT) #define rockb_get_elapsed(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_CSR2_ELAPSED) #define rockb_get_wscale(/*unsigned char */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_CSR2_WSCALE,ROCKB_CSR2_WSCALE_mask) /* Trigger */ #define rockb_get_halt(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_TRIGGER_HALT) #define rockb_get_busy(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_TRIGGER_BUSY) #define rockb_get_synchf(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_TRIGGER_SYNCHF) #define rockb_get_xbusy(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_TRIGGER_XBUSY) #define rockb_get_xberr(/*unsigned char */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_TRIGGER_XBERR) #define rockb_get_test(/*unsigned char */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_TRIGGER_TEST,ROCKB_TRIGGER_TEST_mask) /* TQUE */ #define rockb_get_link(/*unsigned short */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_TQUE_LINK) #define rockb_get_qtrg(/*unsigned short */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_TQUE_QTRG,ROCKB_TQUE_QTRG_mask) /* TNOW */ #define rockb_get_cstate(/*unsigned short */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_TNOW_CSTATE,ROCKB_TNOW_CSTATE_mask) #define rockb_get_ptrg(/*unsigned short */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_TNOW_PTRG,ROCKB_TNOW_PTRG_mask) /* Rockinfo */ #define rockb_get_sof(/*unsigned short */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_ROCKINFO_SOF) #define rockb_get_eof(/*unsigned short */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_ROCKINFO_EOF) #define rockb_get_syncrespf(/*unsigned short */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_ROCKINFO_SYNCRESPF) #define rockb_get_rocksfail(/*unsigned short */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_ROCKINFO_ROCKSFAIL) #define rockb_get_slvsfail(/*unsigned short */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_ROCKINFO_SLVSFAIL) #define rockb_get_lwadd(/*unsigned short */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_ROCKINFO_LWADD,ROCKB_ROCKINFO_LWADD_mask) #define rockb_get_xadd(/*unsigned short */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_ROCKINFO_XADD,ROCKB_ROCKINFO_XADD_mask) /* Golden */ #define rockb_get_last(/*unsigned short */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_GOLDEN_LAST) #define rockb_get_cradd(/*unsigned short */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_GOLDEN_CRADD,ROCKB_GOLDEN_CRADD_mask) #define rockb_get_goldenref(/*unsigned short */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_GOLDEN_GOLDENREF,ROCKB_GOLDEN_GOLDENREF_mask) /* ED FIFO */ #define rockb_get_nvd(/*unsigned int */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_EDFIFO_NVD) #define rockb_get_ff(/*unsigned int */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_EDFIFO_FF) #define rockb_get_hf(/*unsigned int */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_EDFIFO_HF) #define rockb_get_ef(/*unsigned int */ nr) /* IN */ \ bits_get_bit(nr,ROCKB_EDFIFO_EF) #define rockb_get_fifodata(/*unsigned int */ nr) /* IN */ \ bits_get_bits_mask(nr,ROCKB_EDFIFO_FIFODATA,ROCKB_EDFIFO_FIFODATA_mask) /*********************************************************************/ /************** set bit routines *******************/ /*********************************************************************/ /* Reset */ #define rockb_set_cintf(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_RESET_CINTF,value) #define rockb_set_xintf(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_RESET_XINTF,value) #define rockb_set_tfifo(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_RESET_TFIFO,value) #define rockb_set_efifo(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_RESET_EFIFO,value) #define rockb_set_dfifo(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_RESET_DFIFO,value) #define rockb_set_auxrst(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_RESET_AUXRST,value) #define rockb_set_intrst(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_RESET_INTRST,value) #define rockb_set_fltrst(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_RESET_FLTRST,value) /* FIFO */ #define rockb_set_dff(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_FIFO_DFF,value) #define rockb_set_dhf(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_FIFO_DHF,value) #define rockb_set_def(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_FIFO_DEF,value) #define rockb_set_eff(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_FIFO_EFF,value) #define rockb_set_ehf(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_FIFO_EHF,value) #define rockb_set_eef(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_FIFO_EEF,value) #define rockb_set_tef(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_FIFO_TEF,value) #define rockb_set_tff(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_FIFO_TFF,value) /* CSR0 */ #define rockb_set_efmode(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_CSR0_EFMODE,ROCKB_CSR0_EFMODE_mask,value) #define rockb_set_boe(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR0_BOE,value) #define rockb_set_tkndis(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR0_TKNDIS,value) #define rockb_set_inttrg(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR0_INTTRG,value) #define rockb_set_diag(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR0_DIAG,value) /* CSR1 */ #define rockb_set_tknin(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR1_TKNIN,value) #define rockb_set_tknout(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR1_TKNOUT,value) #define rockb_set_ceob(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR1_CEOB,value) #define rockb_set_cerr(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR1_CERR,value) #define rockb_set_crst(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR1_CRST,value) #define rockb_set_crngt(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR1_CRNGT,value) #define rockb_set_cbusy(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR1_CBUSY,value) #define rockb_set_ctrgv(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR1_CTRGV,value) /* CSR2 */ #define rockb_set_efwren(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR2_EFWREN,value) #define rockb_set_auxon(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR2_AUXON,value) #define rockb_set_timeout(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR2_TIMOUT,value) #define rockb_set_elapsed(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_CSR2_ELAPSED,value) #define rockb_set_wscale(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_CSR2_WSCALE,ROCKB_CSR2_WSCALE_mask,value) /* TRIGGER */ #define rockb_set_halt(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_TRIGGER_HALT,value) #define rockb_set_busy(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_TRIGGER_BUSY,value) #define rockb_set_synchf(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_TRIGGER_SYNCHF,value) #define rockb_set_xbusy(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_TRIGGER_XBUSY,value) #define rockb_set_xberr(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_TRIGGER_XBERR,value) #define rockb_set_test(/*unsigned char */ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_TRIGGER_TEST,ROCKB_TRIGGER_TEST_mask,value) /* TQUE */ #define rockb_set_link(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_TQUE_LINK,value) #define rockb_set_qtrg(/*unsigned short*/ nr, /* IN */ \ /*unsigned short*/ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_TQUE_QTRG,ROCKB_TQUE_QTRG_mask,value) /* TNOW */ #define rockb_set_cstate(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_TNOW_CSTATE,ROCKB_TNOW_CSTATE_mask,value) #define rockb_set_ptrg(/*unsigned short*/ nr, /* IN */ \ /*unsigned short*/ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_TNOW_PTRG,ROCKB_TNOW_PTRG_mask,value) /* Rockinfo */ #define rockb_set_sof(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_ROCKINFO_SOF,value) #define rockb_set_eof(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_ROCKINFO_EOF,value) #define rockb_set_synchrespf(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_ROCKINFO_SYNCHRESPF,value) #define rockb_set_rocksfail(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_ROCKINFO_ROCKSFAIL,value) #define rockb_set_slvsfail(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_ROCKINFO_SLVSFAIL,value) #define rockb_set_lwadd(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_ROCKINFO_LWADD,ROCKB_ROCKINFO_LWADD_mask,value) #define rockb_set_xadd(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_ROCKINFO_XADD,ROCKB_ROCKINFO_XADD_mask,value) /* Golden */ #define rockb_set_last(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bit(nr,ROCKB_GOLDEN_LAST,value) #define rockb_set_cradd(/*unsigned short*/ nr, /* IN */ \ /*unsigned char */ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_GOLDEN_CRADD,ROCKB_GOLDEN_CRADD_mask,value) #define rockb_set_goldenref(/*unsigned short*/ nr, /* IN */ \ /*unsigned short*/ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_GOLDEN_GOLDENREF,ROCKB_GOLDEN_GOLDENREF_mask,value) /* ED FIFO */ #define rockb_set_nvd(/*unsigned int */ nr, /* IN */ \ /*unsigned char*/ value) /* IN */ \ bits_set_bit(nr,ROCKB_EDFIFO_NVD,value) #define rockb_set_ff(/*unsigned int */ nr, /* IN */ \ /*unsigned char*/ value) /* IN */ \ bits_set_bit(nr,ROCKB_EDFIFO_FF,value) #define rockb_set_hf(/*unsigned int */ nr, /* IN */ \ /*unsigned char*/ value) /* IN */ \ bits_set_bit(nr,ROCKB_EDFIFO_HF,value) #define rockb_set_ef(/*unsigned int */ nr, /* IN */ \ /*unsigned char*/ value) /* IN */ \ bits_set_bit(nr,ROCKB_EDFIFO_EF,value) #define rockb_set_fifodata(/*unsigned int */ nr, /* IN */ \ /*unsigned int */ value) /* IN */ \ bits_set_bits_mask(nr,ROCKB_EDFIFO_FIFODATA,ROCKB_EDFIFO_FIFODATA_mask,value) /*********************************************************************/ /************** conversion routines *******************/ /*********************************************************************/ #define rockb_bits2regs_internal(/*ROCKB_PAGE_INTERNAL_bits*/ bits, /* IN */ \ /*ROCKH_INTERNAL_regs */ regs) /* OUT */ \ { /* rockb_*2nr used in a strange way */ \ regs.reset=rockb_reset2nr(bits); \ regs.fifo=rockb_fifo2nr(bits); \ regs.watchdog=bits.watchdog; \ regs.csr0=rockb_csr02nr(bits); \ regs.csr1=rockb_csr12nr(bits); \ regs.csr2=rockb_csr22nr(bits); \ regs.elapsed=bits.elapsedtime; \ regs.trigger=rockb_trigger2nr(bits); \ } #define rockb_regs2bits_internal(/*ROCKH_INTERNAL_regs */ regs, /* IN */ \ /*ROCKB_PAGE_INTERNAL_bits*/ bits) /* OUT */ \ { /* rockb_nr2* used in a strange way */ \ rockb_nr2reset(regs.reset,bits); \ rockb_nr2fifo(regs.fifo,bits); \ bits.watchdog=regs.watchdog; \ rockb_nr2csr0(regs.csr0,bits); \ rockb_nr2csr1(regs.csr1,bits); \ rockb_nr2csr2(regs.csr2,bits); \ bits.elapsedtime=regs.elapsed; \ rockb_nr2trigger(regs.trigger,bits); \ } #define rockb_bits2regs_info(/*ROCKB_PAGE_INFO_bits*/ bits, /* IN */ \ /*ROCKH_INFO_regs */ regs) /* OUT */ \ { /* rockb_*2nr used in a strange way */ \ regs.tque=rockb_tque2nr(bits); \ regs.tnow=rockb_tnow2nr(bits); \ regs.rockinfo=rockb_rockinfo2nr(bits); \ regs.golden=rockb_golden2nr(bits); \ } #define rockb_regs2bits_info(/*ROCKH_INFO_regs */ regs, /* IN */ \ /*ROCKB_PAGE_INFO_bits*/ bits) /* OUT */ \ { /* rockb_nr2* used in a strange way */ \ rockb_nr2tque(regs.tque,bits); \ rockb_nr2tnow(regs.tnow,bits); \ rockb_nr2rockinfo(regs.rockinfo,bits); \ rockb_nr2golden(regs.golden,bits); \ } #endif /* ROCKBITS_H */