[BACK]Return to ichreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci

Annotation of sys/dev/pci/ichreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: ichreg.h,v 1.7 2005/12/18 12:09:04 grange Exp $       */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2004, 2005 Alexander Yurchenko <grange@openbsd.org>
        !             5:  *
        !             6:  * Permission to use, copy, modify, and distribute this software for any
        !             7:  * purpose with or without fee is hereby granted, provided that the above
        !             8:  * copyright notice and this permission notice appear in all copies.
        !             9:  *
        !            10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            17:  */
        !            18:
        !            19: #ifndef _DEV_PCI_ICHREG_H_
        !            20: #define _DEV_PCI_ICHREG_H_
        !            21:
        !            22: /*
        !            23:  * Intel I/O Controller Hub (ICH) register definitions.
        !            24:  */
        !            25:
        !            26: /*
        !            27:  * LPC interface bridge registers.
        !            28:  */
        !            29:
        !            30: /* PCI configuration registers */
        !            31: #define ICH_PMBASE     0x40            /* ACPI base address */
        !            32: #define ICH_ACPI_CNTL  0x44            /* ACPI control */
        !            33: #define ICH_ACPI_CNTL_ACPI_EN  (1 << 4)        /* ACPI enable */
        !            34: #define ICH_GEN_PMCON1 0xa0            /* general PM configuration */
        !            35: /* ICHx-M only */
        !            36: #define ICH_GEN_PMCON1_SS_EN   0x08            /* enable SpeedStep */
        !            37:
        !            38: /* Power management I/O registers */
        !            39: #define ICH_PM_TMR     0x08            /* PM timer */
        !            40: /* ICHx-M only */
        !            41: #define ICH_PM_CNTL    0x20            /* power management control */
        !            42: #define ICH_PM_ARB_DIS         0x01            /* disable arbiter */
        !            43: #define ICH_PM_SS_CNTL 0x50            /* SpeedStep control */
        !            44: #define ICH_PM_SS_STATE_LOW    0x01            /* low power state */
        !            45:
        !            46: #define ICH_PMSIZE     128             /* ACPI I/O space size */
        !            47:
        !            48: /*
        !            49:  * SMBus controller registers.
        !            50:  */
        !            51:
        !            52: /* PCI configuration registers */
        !            53: #define ICH_SMB_BASE   0x20            /* SMBus base address */
        !            54: #define ICH_SMB_HOSTC  0x40            /* host configuration */
        !            55: #define ICH_SMB_HOSTC_HSTEN    (1 << 0)        /* enable host controller */
        !            56: #define ICH_SMB_HOSTC_SMIEN    (1 << 1)        /* generate SMI */
        !            57: #define ICH_SMB_HOSTC_I2CEN    (1 << 2)        /* enable I2C commands */
        !            58:
        !            59: /* SMBus I/O registers */
        !            60: #define ICH_SMB_HS     0x00            /* host status */
        !            61: #define ICH_SMB_HS_BUSY                (1 << 0)        /* running a command */
        !            62: #define ICH_SMB_HS_INTR                (1 << 1)        /* command completed */
        !            63: #define ICH_SMB_HS_DEVERR      (1 << 2)        /* command error */
        !            64: #define ICH_SMB_HS_BUSERR      (1 << 3)        /* transaction collision */
        !            65: #define ICH_SMB_HS_FAILED      (1 << 4)        /* failed bus transaction */
        !            66: #define ICH_SMB_HS_SMBAL       (1 << 5)        /* SMBALERT# asserted */
        !            67: #define ICH_SMB_HS_INUSE       (1 << 6)        /* bus semaphore */
        !            68: #define ICH_SMB_HS_BDONE       (1 << 7)        /* byte received/transmitted */
        !            69: #define ICH_SMB_HS_BITS                "\020\001BUSY\002INTR\003DEVERR\004BUSERR\005FAILED\006SMBAL\007INUSE\010BDONE"
        !            70: #define ICH_SMB_HC     0x02            /* host control */
        !            71: #define ICH_SMB_HC_INTREN      (1 << 0)        /* enable interrupts */
        !            72: #define ICH_SMB_HC_KILL                (1 << 1)        /* kill current transaction */
        !            73: #define ICH_SMB_HC_CMD_QUICK   (0 << 2)        /* QUICK command */
        !            74: #define ICH_SMB_HC_CMD_BYTE    (1 << 2)        /* BYTE command */
        !            75: #define ICH_SMB_HC_CMD_BDATA   (2 << 2)        /* BYTE DATA command */
        !            76: #define ICH_SMB_HC_CMD_WDATA   (3 << 2)        /* WORD DATA command */
        !            77: #define ICH_SMB_HC_CMD_PCALL   (4 << 2)        /* PROCESS CALL command */
        !            78: #define ICH_SMB_HC_CMD_BLOCK   (5 << 2)        /* BLOCK command */
        !            79: #define ICH_SMB_HC_CMD_I2CREAD (6 << 2)        /* I2C READ command */
        !            80: #define ICH_SMB_HC_CMD_BLOCKP  (7 << 2)        /* BLOCK PROCESS command */
        !            81: #define ICH_SMB_HC_LASTB       (1 << 5)        /* last byte in block */
        !            82: #define ICH_SMB_HC_START       (1 << 6)        /* start transaction */
        !            83: #define ICH_SMB_HC_PECEN       (1 << 7)        /* enable PEC */
        !            84: #define ICH_SMB_HCMD   0x03            /* host command */
        !            85: #define ICH_SMB_TXSLVA 0x04            /* transmit slave address */
        !            86: #define ICH_SMB_TXSLVA_READ    (1 << 0)        /* read direction */
        !            87: #define ICH_SMB_TXSLVA_ADDR(x) (((x) & 0x7f) << 1) /* 7-bit address */
        !            88: #define ICH_SMB_HD0    0x05            /* host data 0 */
        !            89: #define ICH_SMB_HD1    0x06            /* host data 1 */
        !            90: #define ICH_SMB_HBDB   0x07            /* host block data byte */
        !            91: #define ICH_SMB_PEC    0x08            /* PEC data */
        !            92: #define ICH_SMB_RXSLVA 0x09            /* receive slave address */
        !            93: #define ICH_SMB_SD     0x0a            /* receive slave data */
        !            94: #define ICH_SMB_SD_MSG0(x)     ((x) & 0xff)    /* data message byte 0 */
        !            95: #define ICH_SMB_SD_MSG1(x)     ((x) >> 8)      /* data message byte 1 */
        !            96: #define ICH_SMB_AS     0x0c            /* auxiliary status */
        !            97: #define ICH_SMB_AS_CRCE                (1 << 0)        /* CRC error */
        !            98: #define ICH_SMB_AS_TCO         (1 << 1)        /* advanced TCO mode */
        !            99: #define ICH_SMB_AC     0x0d            /* auxiliary control */
        !           100: #define ICH_SMB_AC_AAC         (1 << 0)        /* automatically append CRC */
        !           101: #define ICH_SMB_AC_E32B                (1 << 1)        /* enable 32-byte buffer */
        !           102: #define ICH_SMB_SMLPC  0x0e            /* SMLink pin control */
        !           103: #define ICH_SMB_SMLPC_LINK0    (1 << 0)        /* SMLINK0 pin state */
        !           104: #define ICH_SMB_SMLPC_LINK1    (1 << 1)        /* SMLINK1 pin state */
        !           105: #define ICH_SMB_SMLPC_CLKC     (1 << 2)        /* SMLINK0 pin is untouched */
        !           106: #define ICH_SMB_SMBPC  0x0f            /* SMBus pin control */
        !           107: #define ICH_SMB_SMBPC_CLK      (1 << 0)        /* SMBCLK pin state */
        !           108: #define ICH_SMB_SMBPC_DATA     (1 << 1)        /* SMBDATA pin state */
        !           109: #define ICH_SMB_SMBPC_CLKC     (1 << 2)        /* SMBCLK pin is untouched */
        !           110: #define ICH_SMB_SS     0x10            /* slave status */
        !           111: #define ICH_SMB_SS_HN          (1 << 0)        /* Host Notify command */
        !           112: #define ICH_SMB_SCMD   0x11            /* slave command */
        !           113: #define ICH_SMB_SCMD_INTREN    (1 << 0)        /* enable interrupts on HN */
        !           114: #define ICH_SMB_SCMD_WKEN      (1 << 1)        /* wake on HN */
        !           115: #define ICH_SMB_SCMD_SMBALDS   (1 << 2)        /* disable SMBALERT# intr */
        !           116: #define ICH_SMB_NDADDR 0x14            /* notify device address */
        !           117: #define ICH_SMB_NDADDR_ADDR(x) ((x) >> 1)      /* 7-bit address */
        !           118: #define ICH_SMB_NDLOW  0x16            /* notify data low byte */
        !           119: #define ICH_SMB_NDHIGH 0x17            /* notify data high byte */
        !           120:
        !           121: /*
        !           122:  * 6300ESB watchdog timer registers.
        !           123:  */
        !           124:
        !           125: /* PCI configuration registers */
        !           126: #define ICH_WDT_BASE   0x10            /* memory space base address */
        !           127: #define ICH_WDT_CONF   0x60            /* configuration register */
        !           128: #define ICH_WDT_CONF_MASK      0xffff          /* 16-bit register */
        !           129: #define ICH_WDT_CONF_INT_MASK  0x3             /* interrupt type */
        !           130: #define ICH_WDT_CONF_INT_IRQ   0x0             /* IRQ (APIC 1, INT 10) */
        !           131: #define ICH_WDT_CONF_INT_SMI   0x2             /* SMI */
        !           132: #define ICH_WDT_CONF_INT_DIS   0x3             /* disabled */
        !           133: #define ICH_WDT_CONF_PRE       (1 << 2)        /* 2^5 clock divisor */
        !           134: #define ICH_WDT_CONF_OUTDIS    (1 << 5)        /* WDT_TOUT# output disabled */
        !           135: #define ICH_WDT_LOCK   0x68            /* lock register */
        !           136: #define ICH_WDT_LOCK_LOCKED    (1 << 0)        /* register locked */
        !           137: #define ICH_WDT_LOCK_ENABLED   (1 << 1)        /* WDT enabled */
        !           138: #define ICH_WDT_LOCK_FREERUN   (1 << 2)        /* free running mode */
        !           139:
        !           140: /* Memory mapped registers */
        !           141: #define ICH_WDT_PRE1   0x00            /* preload value 1 */
        !           142: #define ICH_WDT_PRE2   0x04            /* preload value 2 */
        !           143: #define ICH_WDT_GIS    0x08            /* general interrupt status */
        !           144: #define ICH_WDT_GIS_ACTIVE     (1 << 0)        /* interrupt active */
        !           145: #define ICH_WDT_RELOAD 0x0c            /* reload register */
        !           146: #define ICH_WDT_RELOAD_RLD     (1 << 8)        /* safe reload */
        !           147: #define ICH_WDT_RELOAD_TIMEOUT (1 << 9)        /* timeout occured */
        !           148:
        !           149: #endif /* !_DEV_PCI_ICHREG_H_ */

CVSweb