Annotation of embedaddon/ntp/kernel/sys/pcl720.h, revision 1.1.1.1

1.1       misho       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>