File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / kernel / sys / pcl720.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:38 2012 UTC (12 years, 4 months ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    1: /* Copyright (c) 1995 Vixie Enterprises
    2:  *
    3:  * Permission to use, copy, modify, and distribute this software for any
    4:  * purpose with or without fee is hereby granted, provided that the above
    5:  * copyright notice and this permission notice appear in all copies, and that
    6:  * the name of Vixie Enterprises not be used in advertising or publicity
    7:  * pertaining to distribution of the document or software without specific,
    8:  * written prior permission.
    9:  * 
   10:  * THE SOFTWARE IS PROVIDED "AS IS" AND VIXIE ENTERPRISES DISCLAIMS ALL
   11:  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
   12:  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL VIXIE ENTERPRISES
   13:  * BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
   14:  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
   15:  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
   16:  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
   17:  * SOFTWARE.
   18:  */
   19: 
   20: #ifndef _PCL720_DEFINED
   21: #define _PCL720_DEFINED
   22: 
   23: #define	pcl720_data(base,bit)	(base+(bit>>3))
   24: #define pcl720_data_0_7(base)	(base+0)
   25: #define pcl720_data_8_15(base)	(base+1)
   26: #define pcl720_data_16_23(base)	(base+2)
   27: #define pcl720_data_24_31(base)	(base+3)
   28: #define pcl720_cntr(base,cntr)	(base+4+cntr)	/* cntr: 0..2 */
   29: #define pcl720_cntr_0(base)	(base+4)
   30: #define pcl720_cntr_1(base)	(base+5)
   31: #define pcl720_cntr_2(base)	(base+6)
   32: #define pcl720_ctrl(base)	(base+7)
   33: 
   34: #ifndef DEBUG_PCL720
   35: #define	pcl720_inb(x)		inb(x)
   36: #define	pcl720_outb(x,y)	outb(x,y)
   37: #else
   38: static unsigned char pcl720_inb(int addr) {
   39: 	unsigned char x = inb(addr);
   40: 	fprintf(DEBUG_PCL720, "inb(0x%x) -> 0x%x\n", addr, x);
   41: 	return (x);
   42: }
   43: static void pcl720_outb(int addr, unsigned char x) {
   44: 	outb(addr, x);
   45: 	fprintf(DEBUG_PCL720, "outb(0x%x, 0x%x)\n", addr, x);
   46: }
   47: #endif
   48: 
   49: #define	pcl720_load(Base,Cntr,Mode,Val) \
   50: 	({	register unsigned int	b = Base, c = Cntr, v = Val; \
   51: 		i8253_ctrl ctrl; \
   52: 		\
   53: 		ctrl.s.bcd = i8253_binary; \
   54: 		ctrl.s.mode = Mode; \
   55: 		ctrl.s.rl = i8253_lmb; \
   56: 		ctrl.s.cntr = c; \
   57: 		pcl720_outb(pcl720_ctrl(b), ctrl.i); \
   58: 		pcl720_outb(pcl720_cntr(b,c), v); \
   59: 		pcl720_outb(pcl720_cntr(b,c), v >> 8); \
   60: 		v; \
   61: 	})
   62: 
   63: #define	pcl720_read(Base,Cntr) \
   64: 	({	register unsigned int	b = Base, v; \
   65: 		i8253_ctrl ctrl; \
   66: 		\
   67: 		ctrl.s.rl = i8253_latch; \
   68: 		ctrl.s.cntr = i8253_cntr_0; \
   69: 		pcl720_outb(pcl720_ctrl(b), ctrl.i); \
   70: 		v = pcl720_inb(pcl720_cntr_0(b)); \
   71: 		v |= (pcl720_inb(pcl720_cntr_0(b)) << 8); \
   72: 		v; \
   73: 	})
   74: 
   75: #define	pcl720_input(Base) \
   76: 	({	register unsigned int	b = Base, v; \
   77: 		\
   78: 		v = pcl720_inb(pcl720_data_0_7(b)); \
   79: 		v |= (pcl720_inb(pcl720_data_8_15(b)) << 8); \
   80: 		v |= (pcl720_inb(pcl720_data_16_23(b)) << 16); \
   81: 		v |= (pcl720_inb(pcl720_data_24_31(b)) << 24); \
   82: 		v; \
   83: 	})
   84: 
   85: #define	pcl720_output(Base,Value) \
   86: 	({	register unsigned int	b = Base, v = Value; \
   87: 		\
   88: 		pcl720_outb(pcl720_data_0_7(b), v); \
   89: 		pcl720_outb(pcl720_data_8_15(b), v << 8); \
   90: 		pcl720_outb(pcl720_data_16_23(b), v << 16); \
   91: 		pcl720_outb(pcl720_data_24_31(b), v << 24); \
   92: 		v; \
   93: 	})
   94: 
   95: #endif /*_PCL720_DEFINED*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>