summaryrefslogtreecommitdiff
path: root/sys/dev/pci/amdpm.c
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2006-03-08 22:59:15 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2006-03-08 22:59:15 +0000
commit7b3c2366102ddf47b5058f0611ac4b2937a05cc9 (patch)
tree604f60402b1d6bb642a010d1b32206f659fa402f /sys/dev/pci/amdpm.c
parente52c809df2fb2ec442172158ac9da014bf28af77 (diff)
amdpmreg.h is only used by amdpm.c, so merge the header into the c file.
this unclutters the tree a bit. ok deraadt@
Diffstat (limited to 'sys/dev/pci/amdpm.c')
-rw-r--r--sys/dev/pci/amdpm.c64
1 files changed, 63 insertions, 1 deletions
diff --git a/sys/dev/pci/amdpm.c b/sys/dev/pci/amdpm.c
index 0dbe57de5d9..a1263748efd 100644
--- a/sys/dev/pci/amdpm.c
+++ b/sys/dev/pci/amdpm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: amdpm.c,v 1.15 2006/03/08 09:58:44 dlg Exp $ */
+/* $OpenBSD: amdpm.c,v 1.16 2006/03/08 22:59:14 dlg Exp $ */
/*
* Copyright (c) 2006 Alexander Yurchenko <grange@openbsd.org>
@@ -90,6 +90,68 @@ u_int amdpm_get_timecount(struct timecounter *tc);
#define AMDPM_FREQUENCY 3579545
#endif
+
+#define AMDPM_CONFREG 0x40
+
+/* 0x40: General Configuration 1 Register */
+#define AMDPM_RNGEN 0x00000080 /* random number generator enable */
+#define AMDPM_STOPTMR 0x00000040 /* stop free-running timer */
+
+/* 0x41: General Configuration 2 Register */
+#define AMDPM_PMIOEN 0x00008000 /* system management IO space enable */
+#define AMDPM_TMRRST 0x00004000 /* reset free-running timer */
+#define AMDPM_TMR32 0x00000800 /* extended (32 bit) timer enable */
+
+/* 0x42: SCI Interrupt Configuration Register */
+/* 0x43: Previous Power State Register */
+
+#define AMDPM_PMPTR 0x58 /* PMxx System Management IO space
+ Pointer */
+#define NFPM_PMPTR 0x14 /* nForce System Management IO space
+ POinter */
+#define AMDPM_PMBASE(x) ((x) & 0xff00) /* PMxx base address */
+#define AMDPM_PMSIZE 256 /* PMxx space size */
+
+/* Registers in PMxx space */
+#define AMDPM_TMR 0x08 /* 24/32 bit timer register */
+
+#define AMDPM_RNGDATA 0xf0 /* 32 bit random data register */
+#define AMDPM_RNGSTAT 0xf4 /* RNG status register */
+#define AMDPM_RNGDONE 0x00000001 /* Random number generation complete */
+
+#define AMDPM_SMB_REGS 0xe0 /* offset of SMB register space */
+#define AMDPM_SMB_SIZE 0xf /* size of SMB register space */
+#define AMDPM_SMBSTAT 0x0 /* SMBus status */
+#define AMDPM_SMBSTAT_ABRT (1 << 0) /* transfer abort */
+#define AMDPM_SMBSTAT_COL (1 << 1) /* collision */
+#define AMDPM_SMBSTAT_PRERR (1 << 2) /* protocol error */
+#define AMDPM_SMBSTAT_HBSY (1 << 3) /* host controller busy */
+#define AMDPM_SMBSTAT_CYC (1 << 4) /* cycle complete */
+#define AMDPM_SMBSTAT_TO (1 << 5) /* timeout */
+#define AMDPM_SMBSTAT_SNP (1 << 8) /* snoop address match */
+#define AMDPM_SMBSTAT_SLV (1 << 9) /* slave address match */
+#define AMDPM_SMBSTAT_SMBA (1 << 10) /* SMBALERT# asserted */
+#define AMDPM_SMBSTAT_BSY (1 << 11) /* bus busy */
+#define AMDPM_SMBSTAT_BITS "\020\001ABRT\002COL\003PRERR\004HBSY\005CYC\006TO\011SNP\012SLV\013SMBA\014BSY"
+#define AMDPM_SMBCTL 0x2 /* SMBus control */
+#define AMDPM_SMBCTL_CMD_QUICK 0 /* QUICK command */
+#define AMDPM_SMBCTL_CMD_BYTE 1 /* BYTE command */
+#define AMDPM_SMBCTL_CMD_BDATA 2 /* BYTE DATA command */
+#define AMDPM_SMBCTL_CMD_WDATA 3 /* WORD DATA command */
+#define AMDPM_SMBCTL_CMD_PCALL 4 /* PROCESS CALL command */
+#define AMDPM_SMBCTL_CMD_BLOCK 5 /* BLOCK command */
+#define AMDPM_SMBCTL_START (1 << 3) /* start transfer */
+#define AMDPM_SMBCTL_CYCEN (1 << 4) /* intr on cycle complete */
+#define AMDPM_SMBCTL_ABORT (1 << 5) /* abort transfer */
+#define AMDPM_SMBCTL_SNPEN (1 << 8) /* intr on snoop addr match */
+#define AMDPM_SMBCTL_SLVEN (1 << 9) /* intr on slave addr match */
+#define AMDPM_SMBCTL_SMBAEN (1 << 10) /* intr on SMBALERT# */
+#define AMDPM_SMBADDR 0x4 /* SMBus address */
+#define AMDPM_SMBADDR_READ (1 << 0) /* read direction */
+#define AMDPM_SMBADDR_ADDR(x) (((x) & 0x7f) << 1) /* 7-bit address */
+#define AMDPM_SMBDATA 0x6 /* SMBus data */
+#define AMDPM_SMBCMD 0x8 /* SMBus command */
+
static struct timecounter amdpm_timecounter = {
amdpm_get_timecount, /* get_timecount */
0, /* no poll_pps */