patch-2.1.34 linux/include/asm-sparc64/sysio.h
Next file: linux/include/asm-sparc64/system.h
Previous file: linux/include/asm-sparc64/string.h
Back to the patch index
Back to the overall index
- Lines: 338
- Date:
Fri Apr 11 10:47:40 1997
- Orig file:
v2.1.33/linux/include/asm-sparc64/sysio.h
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.1.33/linux/include/asm-sparc64/sysio.h linux/include/asm-sparc64/sysio.h
@@ -0,0 +1,337 @@
+/* $Id: sysio.h,v 1.2 1997/04/03 12:26:45 davem Exp $
+ * sysio.h: UltraSparc sun5 specific SBUS definitions.
+ *
+ * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
+ */
+
+#ifndef __SPARC64_SYSIO_H
+#define __SPARC64_SYSIO_H
+
+#include <linux/types.h>
+
+/* SUN5 SYSIO Register Set, one per controller probed. */
+struct sysio_regs {
+/*0x0000*/ u64 upa_id; /* SYSIO UPA Port ID Register */
+/*0x0008*/ u64 upa_cfg; /* SYSIO UPA Config Register */
+/*0x0010*/ u64 control; /* SYSIO Control Register */
+/*0x0018*/ u64 _unused1;
+/*0x0020*/ u64 ecc_control; /* ECC Control Register */
+/*0x0028*/ u64 _unused2;
+
+ /* Uncorrectable Error Fault Registers */
+/*0x0030*/ u64 ue_afsr; /* UE Async Fault Status */
+/*0x0038*/ u64 ue_afar; /* UE Async Fault Address */
+
+ /* Correctable Error Fault Registers */
+/*0x0040*/ u64 ce_afsr; /* CE Async Fault Status */
+/*0x0048*/ u64 ce_afar; /* CE Async Fault Address */
+
+ u64 __pad0[0x16];
+
+ /* Performance Monitoring Registers */
+/*0x0100*/ u64 pmon_control;
+/*0x0108*/ u64 pmon_counter;
+
+ u64 __pad1[0x3de];
+
+ /* SBUS Module Registers */
+/*0x2000*/ u64 sbus_control; /* SBUS Control Register */
+/*0x2008*/ u64 _unused3;
+/*0x2010*/ u64 sbus_afsr; /* SBUS Async Fault Status */
+/*0x2018*/ u64 sbus_afar; /* SBUS Async Fault Address */
+
+ /* SBUS Slot Configuration Registers.
+ * On Fusion/Electron/Pulsar desktops/servers slots 4-->6
+ * are for on-board devices, in particular for Electron/Pulsar
+ * they are:
+ *
+ * slot 4) Audio
+ * slot 5) MACIO
+ * slot 6) SLAVIO
+ *
+ * On Sunfire/Wildfire enterprise boxen these upper slots
+ * are unused.
+ */
+/*0x2020*/ u64 sbus_s0cfg; /* SBUS Slot 0 Config */
+/*0x2028*/ u64 sbus_s1cfg; /* SBUS Slot 1 Config */
+/*0x2030*/ u64 sbus_s2cfg; /* SBUS Slot 2 Config */
+/*0x2038*/ u64 sbus_s3cfg; /* SBUS Slot 3 Config */
+/*0x2040*/ u64 sbus_s4cfg; /* SBUS Slot 4 Config */
+/*0x2048*/ u64 sbus_s5cfg; /* SBUS Slot 5 Config */
+/*0x2050*/ u64 sbus_s6cfg; /* SBUS Slot 6 Config */
+
+ u64 __pad2[0x75];
+
+ /* SBUS IOMMU lives here */
+/*0x2400*/ u64 iommu_control; /* IOMMU Control */
+/*0x2408*/ u64 iommu_tsbbase; /* IOMMU TSB Base */
+/*0x2410*/ u64 iommu_flush; /* IOMMU Flush Register */
+
+ u64 __pad3[0x7d];
+
+ /* SBUS/IOMMU Streaming Buffer Registers */
+/*0x2800*/ u64 sbuf_control; /* StrBuffer Control */
+/*0x2808*/ u64 sbuf_pflush; /* StrBuffer Page Flush */
+/*0x2810*/ u64 sbus_fsync; /* StrBuffer Flush Synchronization Reg */
+
+ u64 __pad4[0x7d];
+
+ /* Interrupt mapping/control registers */
+/*0x2c00*/ u32 imap_slot0, _uim0; /* SBUS Slot 0 Int Mapping */
+/*0x2c08*/ u32 imap_slot1, _uim1; /* SBUS Slot 1 Int Mapping */
+/*0x2c10*/ u32 imap_slot2, _uim2; /* SBUS Slot 2 Int Mapping */
+/*0x2c18*/ u32 imap_slot3, _uim3; /* SBUS Slot 3 Int Mapping */
+
+ /* Interrupt Retry Timer. */
+/*0x2c20*/ u32 irq_retry, _irpad;
+
+ u64 __pad5[0x7b];
+
+ /* The following are only used on Fusion/Electron/Pulsar
+ * desktop systems, they mean nothing on Sunfire/Wildfire
+ */
+/*0x3000*/ u32 imap_scsi, _uis; /* SCSI Int Mapping */
+/*0x3008*/ u32 imap_eth, _uie; /* Ethernet Int Mapping */
+/*0x3010*/ u32 imap_bpp, _uip; /* Parallel Port Int Mapping */
+/*0x3018*/ u32 imap_audio, _uia; /* Audio Int Mapping */
+/*0x3020*/ u32 imap_pfail, _uipf; /* Power Fail Int Mapping */
+/*0x3028*/ u32 imap_kms, _uik; /* Kbd/Mouse/Serial Int Mapping */
+/*0x3030*/ u32 imap_flpy, _uif; /* Floppy Int Mapping */
+/*0x3038*/ u32 imap_shw, _uishw; /* Spare HW Int Mapping */
+/*0x3040*/ u32 imap_kbd, _uikbd; /* Kbd Only Int Mapping */
+/*0x3048*/ u32 imap_ms, _uims; /* Mouse Only Int Mapping */
+/*0x3050*/ u32 imap_ser, _uiser; /* Serial Only Int Mapping */
+/*0x3058*/ u64 _imap_unused;
+/*0x3060*/ u32 imap_tim0, _uit0; /* Timer 0 Int Mapping */
+/*0x3068*/ u32 imap_tim1, _uit1; /* Timer 1 Int Mapping */
+/*0x3070*/ u32 imap_ue, _uiue; /* UE Int Mapping */
+/*0x3078*/ u32 imap_ce, _uice; /* CE Int Mapping */
+/*0x3080*/ u32 imap_sberr, _uisbe; /* SBUS Err Int Mapping */
+/*0x3088*/ u32 imap_pmgmt, _uipm; /* Power Mgmt Int Mapping */
+/*0x3090*/ u32 imap_gfx, _uigfx; /* OB Graphics Int Mapping */
+/*0x3098*/ u32 imap_eupa, _uieupa; /* UPA Expansion Int Mapping */
+
+ u64 __pad6[0x6c];
+
+ /* Interrupt Clear Registers */
+/*0x3400*/ u64 iclr_unused0;
+/*0x3408*/ u32 iclr_slot0, _ucs0;
+ u64 __pad7[0x7];
+/*0x3448*/ u32 iclr_slot1, _ucs1;
+ u64 __pad8[0x7];
+/*0x3488*/ u32 iclr_slot2, _ucs2;
+ u64 __pad9[0x7];
+/*0x34c8*/ u32 iclr_slot3, _ucs3;
+ u64 __pad10[0x66];
+/*0x3800*/ u32 iclr_scsi, _ucscsi;
+/*0x3808*/ u32 iclr_eth, _uceth;
+/*0x3810*/ u32 iclr_bpp, _ucbpp;
+/*0x3818*/ u32 iclr_audio, _ucaudio;
+/*0x3820*/ u32 iclr_pfail, _ucpfail;
+/*0x3828*/ u32 iclr_kms, _uckms;
+/*0x3830*/ u32 iclr_flpt, _ucflpy;
+/*0x3838*/ u32 iclr_shw, _ucshw;
+/*0x3840*/ u32 iclr_kbd, _uckbd;
+/*0x3848*/ u32 iclr_ms, _ucms;
+/*0x3850*/ u32 iclr_ser, _ucser;
+/*0x3858*/ u64 iclr_unused1;
+/*0x3860*/ u32 iclr_tim0, _uctim0;
+/*0x3868*/ u32 iclr_tim1, _uctim1;
+/*0x3870*/ u32 iclr_ue, _ucue;
+/*0x3878*/ u32 iclr_ce, _ucce;
+/*0x3880*/ u32 iclr_serr, _ucserr;
+/*0x3888*/ u32 iclr_pmgmt, _ucpmgmt;
+
+ u64 __pad11[0x6e];
+
+ /* Counters/Timers */
+/*0x3c00*/ u32 tim0_cnt, _tim0_u0;
+/*0x3c08*/ u32 tim0_lim, _tim0_u1;
+/*0x3c10*/ u32 tim1_cnt, _tim1_u0;
+/*0x3c18*/ u32 tim1_lim, _tim1_u1;
+
+ u64 __pad12[0x7c];
+
+ /* DMA Scoreboard Diagnostic Registers */
+/*0x4000*/ u64 dscore_reg0; /* DMA Scoreboard Diag Reg 0 */
+/*0x4008*/ u64 dscore_reg1; /* DMA Scoreboard Diag Reg 1 */
+
+ u64 __pad13[0x7e];
+
+ /* SBUS IOMMU Diagnostic Registers */
+/*0x4400*/ u64 sbus_vdiag; /* SBUS VADDR Diagnostic Register */
+/*0x4408*/ u64 sbus_tcompare; /* SBUS IOMMU TLB Tag Compare */
+
+ u64 __pad14[0x1e];
+
+ /* More IOMMU diagnostic things */
+/*0x4500*/ u64 iommu_lru[16]; /* IOMMU LRU Queue Diagnostic Access */
+/*0x4580*/ u64 iommu_tag[16]; /* IOMMU TLB Tag Diagnostic Access */
+/*0x4600*/ u64 iommu_data[32]; /* IOMMU TLB Data RAM Diagnostic Access */
+
+ /* Interrupt State Diagnostics */
+/*0x4800*/ u64 sbus_istate;
+/*0x4808*/ u64 obio_istate;
+
+ u64 __pad15[0xfe];
+
+ /* Streaming Buffer Diagnostic Area */
+/*0x5000*/ u64 sbuf_data[128]; /* StrBuffer Data Ram Diagnostic */
+/*0x5400*/ u64 sbuf_errs[128]; /* StrBuffer Error Status Diagnostics */
+/*0x5800*/ u64 sbuf_ptag[16]; /* StrBuffer Page Tag Diagnostics */
+/*0x5880*/ u64 _unusedXXX[16];
+/*0x5900*/ u64 sbuf_ltag[16]; /* StrBuffer Line Tag Diagnostics */
+};
+
+/* SYSIO UPA Port ID */
+#define SYSIO_UPPID_FESC 0xff00000000000000 /* FCode escape, 0xfc */
+#define SYSIO_UPPID_RESV1 0x00fffff800000000 /* Reserved */
+#define SYSIO_UPPID_ENV 0x0000000400000000 /* Cannot generate ECC */
+#define SYSIO_UPPID_ORD 0x0000000200000000 /* One Outstanding Read */
+#define SYSIO_UPPID_RESV2 0x0000000180000000 /* Reserved */
+#define SYSIO_UPPID_PDQ 0x000000007e000000 /* Data Queue size */
+#define SYSIO_UPPID_PRQ 0x0000000001e00000 /* Request Queue size */
+#define SYSIO_UPPID_UCAP 0x00000000001f0000 /* UPA Capabilities */
+#define SYSIO_UPPID_JEDEC 0x000000000000ffff /* JEDEC ID for SYSIO */
+
+/* SYSIO UPA Configuration Register */
+#define SYSIO_UPCFG_RESV 0xffffffffffffff00 /* Reserved */
+#define SYSIO_UPCFG_SCIQ1 0x00000000000000f0 /* Unused, always zero */
+#define SYSIO_UPCFG_SCIQ2 0x000000000000000f /* Requests Queue size (0x2) */
+
+/* SYSIO Control Register */
+#define SYSIO_CONTROL_IMPL 0xf000000000000000 /* Implementation of this SYSIO */
+#define SYSIO_CONTROL_VER 0x0f00000000000000 /* Version of this SYSIO */
+#define SYSIO_CONTROL_MID 0x00f8000000000000 /* UPA Module ID of SYSIO */
+#define SYSIO_CONTROL_IGN 0x0007c00000000000 /* Interrupt Group Number */
+#define SYSIO_CONTROL_RESV 0x00003ffffffffff0 /* Reserved */
+#define SYSIO_CONTROL_APCKEN 0x0000000000000008 /* Address Parity Check Enable */
+#define SYSIO_CONTROL_APERR 0x0000000000000004 /* Incoming System Addr Parerr */
+#define SYSIO_CONTROL_IAP 0x0000000000000002 /* Invert UPA Parity */
+#define SYSIO_CONTROL_MODE 0x0000000000000001 /* SYSIO clock mode */
+
+/* SYSIO ECC Control Register */
+#define SYSIO_ECNTRL_ECCEN 0x8000000000000000 /* Enable ECC Checking */
+#define SYSIO_ECNTRL_UEEN 0x4000000000000000 /* Enable UE Interrupts */
+#define SYSIO_ECNTRL_CEEN 0x2000000000000000 /* Enable CE Interrupts */
+
+/* Uncorrectable Error AFSR, AFAR holds low 40bits of faulting physical address. */
+#define SYSIO_UEAFSR_PPIO 0x8000000000000000 /* Primary PIO is cause */
+#define SYSIO_UEAFSR_PDRD 0x4000000000000000 /* Primary DVMA read is cause */
+#define SYSIO_UEAFSR_PDWR 0x2000000000000000 /* Primary DVMA write is cause */
+#define SYSIO_UEAFSR_SPIO 0x1000000000000000 /* Secondary PIO is cause */
+#define SYSIO_UEAFSR_SDRD 0x0800000000000000 /* Secondary DVMA read is cause */
+#define SYSIO_UEAFSR_SDWR 0x0400000000000000 /* Secondary DVMA write is cause*/
+#define SYSIO_UEAFSR_RESV1 0x03ff000000000000 /* Reserved */
+#define SYSIO_UEAFSR_DOFF 0x0000e00000000000 /* Doubleword Offset */
+#define SYSIO_UEAFSR_SIZE 0x00001c0000000000 /* Bad transfer size is 2**SIZE */
+#define SYSIO_UEAFSR_MID 0x000003e000000000 /* UPA MID causing the fault */
+#define SYSIO_UEAFSR_RESV2 0x0000001fffffffff /* Reserved */
+
+/* Correctable Error AFSR, AFAR holds low 40bits of faulting physical address. */
+#define SYSIO_CEAFSR_PPIO 0x8000000000000000 /* Primary PIO is cause */
+#define SYSIO_CEAFSR_PDRD 0x4000000000000000 /* Primary DVMA read is cause */
+#define SYSIO_CEAFSR_PDWR 0x2000000000000000 /* Primary DVMA write is cause */
+#define SYSIO_CEAFSR_SPIO 0x1000000000000000 /* Secondary PIO is cause */
+#define SYSIO_CEAFSR_SDRD 0x0800000000000000 /* Secondary DVMA read is cause */
+#define SYSIO_CEAFSR_SDWR 0x0400000000000000 /* Secondary DVMA write is cause*/
+#define SYSIO_CEAFSR_RESV1 0x0300000000000000 /* Reserved */
+#define SYSIO_CEAFSR_ESYND 0x00ff000000000000 /* Syndrome Bits */
+#define SYSIO_CEAFSR_DOFF 0x0000e00000000000 /* Double Offset */
+#define SYSIO_CEAFSR_SIZE 0x00001c0000000000 /* Bad transfer size is 2**SIZE */
+#define SYSIO_CEAFSR_MID 0x000003e000000000 /* UPA MID causing the fault */
+#define SYSIO_CEAFSR_RESV2 0x0000001fffffffff /* Reserved */
+
+/* DMA Scoreboard Diagnostic Register(s) */
+#define SYSIO_DSCORE_VALID 0x0040000000000000 /* Entry is valid */
+#define SYSIO_DSCORE_C 0x0020000000000000 /* Transaction cacheable */
+#define SYSIO_DSCORE_READ 0x0010000000000000 /* Transaction was a read */
+#define SYSIO_DSCORE_TAG 0x000f000000000000 /* Transaction ID */
+#define SYSIO_DSCORE_ADDR 0x0000ffffffffff80 /* Transaction PADDR */
+#define SYSIO_DSCORE_SIZE 0x0000000000000030 /* Transaction size */
+#define SYSIO_DSCORE_SRC 0x000000000000000f /* Transaction source */
+
+/* SYSIO SBUS Control Register */
+#define SYSIO_SBCNTRL_IMPL 0xf000000000000000 /* Implementation */
+#define SYSIO_SBCNTRL_REV 0x0f00000000000000 /* Revision */
+#define SYSIO_SBCNTRL_RESV1 0x00c0000000000000 /* Reserved */
+#define SYSIO_SBCNTRL_DPERR 0x003f000000000000 /* DMA Write Parity Error */
+#define SYSIO_SBCNTRL_RESV2 0x0000800000000000 /* Reserved */
+#define SYSIO_SBCNTRL_PPERR 0x00007f0000000000 /* PIO Load Parity Error */
+#define SYSIO_SBCNTRL_RESV 0x000000fffffffc00 /* Reserved */
+#define SYSIO_SBCNTRL_WEN 0x0000000000000200 /* Power Mgmt Wake Enable */
+#define SYSIO_SBCNTRL_EEN 0x0000000000000100 /* SBUS Error Interrupt Enable */
+#define SYSIO_SBCNTRL_RESV3 0x00000000000000c0 /* Reserved */
+#define SYSIO_SBCNTRL_AEN 0x000000000000003f /* SBUS DVMA Arbitration Enable */
+
+/* SYSIO SBUS AFSR, AFAR holds low 40 bits of physical address causing the fault. */
+#define SYSIO_SBAFSR_PLE 0x8000000000000000 /* Primary Late PIO Error */
+#define SYSIO_SBAFSR_PTO 0x4000000000000000 /* Primary SBUS Timeout */
+#define SYSIO_SBAFSR_PBERR 0x2000000000000000 /* Primary SBUS Error ACK */
+#define SYSIO_SBAFSR_SLE 0x1000000000000000 /* Secondary Late PIO Error */
+#define SYSIO_SBAFSR_STO 0x0800000000000000 /* Secondary SBUS Timeout */
+#define SYSIO_SBAFSR_SBERR 0x0400000000000000 /* Secondary SBUS Error ACK */
+#define SYSIO_SBAFSR_RESV1 0x03ff000000000000 /* Reserved */
+#define SYSIO_SBAFSR_RD 0x0000800000000000 /* Primary was late PIO read */
+#define SYSIO_SBAFSR_RESV2 0x0000600000000000 /* Reserved */
+#define SYSIO_SBAFSR_SIZE 0x00001c0000000000 /* Size of transfer */
+#define SYSIO_SBAFSR_MID 0x000003e000000000 /* MID causing the error */
+#define SYSIO_SBAFSR_RESV3 0x0000001fffffffff /* Reserved */
+
+/* SYSIO SBUS Slot Configuration Register */
+#define SYSIO_SBSCFG_RESV1 0xfffffffff8000000 /* Reserved */
+#define SYSIO_SBSCFG_SADDR 0x0000000007ff0000 /* Segment Address (PA[40:30]) */
+#define SYSIO_SBSCFG_CP 0x0000000000008000 /* Bypasses are cacheable */
+#define SYSIO_SBSCFG_ETM 0x0000000000004000 /* Ext Transfer Mode supported */
+#define SYSIO_SBSCFG_PE 0x0000000000002000 /* SBUS Parity Checking Enable */
+#define SYSIO_SBSCFG_RESV2 0x0000000000001fe0 /* Reserved */
+#define SYSIO_SBSCFG_BA64 0x0000000000000010 /* 64-byte bursts supported */
+#define SYSIO_SBSCFG_BA32 0x0000000000000008 /* 32-byte bursts supported */
+#define SYSIO_SBSCFG_BA16 0x0000000000000004 /* 16-byte bursts supported */
+#define SYSIO_SBSCFG_BA8 0x0000000000000002 /* 8-byte bursts supported */
+#define SYSIO_SBSCFG_BY 0x0000000000000001 /* IOMMU Bypass Enable */
+
+/* IOMMU things defined fully in asm-sparc64/iommu.h */
+
+/* Streaming Buffer Control Register */
+#define SYSIO_SBUFCTRL_IMPL 0xf000000000000000 /* Implementation */
+#define SYSIO_SBUFCTRL_REV 0x0f00000000000000 /* Revision */
+#define SYSIO_SBUFCTRL_DE 0x0000000000000002 /* Diag Mode Enable */
+#define SYSIO_SBUFCTRL_SB_EN 0x0000000000000001 /* Streaming Buffer Enable */
+
+/* Streaming Buffer Page Invalidate/Flush Register */
+#define SYSIO_SBUFFLUSH_ADDR 0x00000000ffffe000 /* DVMA Page to be flushed */
+#define SYSIO_SBUFFLUSH_RESV 0x0000000000001fff /* Ignored bits */
+
+/* Streaming Buffer Flush Synchronization Register */
+#define SYSIO_SBUFSYNC_ADDR 0x000001fffffffffc /* Physical address to update */
+#define SYSIO_SBUFSYNC_RESV 0x0000000000000003 /* Ignored bits */
+
+/* SYSIO Interrupt mapping register(s). */
+#define SYSIO_IMAP_VALID 0x80000000 /* This enables delivery. */
+#define SYSIO_IMAP_TID 0x7c000000 /* Target ID (MID to send it to) */
+#define SYSIO_IMAP_RESV 0x03fff800 /* Reserved. */
+#define SYSIO_IMAP_IGN 0x000007c0 /* Interrupt Group Number. */
+#define SYSIO_IMAP_INO 0x0000003f /* Interrupt Number Offset. */
+#define SYSIO_IMAP_INR 0x000007ff /* Interrupt # (Gfx/UPA_slave only)*/
+
+/* SYSIO Interrupt clear pseudo register(s). */
+#define SYSIO_ICLR_IDLE 0x00000000 /* Transition to idle state. */
+#define SYSIO_ICLR_TRANSMIT 0x00000001 /* Transition to transmit state. */
+#define SYSIO_ICLR_RESV 0x00000002 /* Reserved. */
+#define SYSIO_ICLR_PENDING 0x00000003 /* Transition to pending state. */
+
+/* SYSIO Interrupt Retry Timer register. */
+#define SYSIO_IRETRY_LIMIT 0x000000ff /* The retry interval. */
+
+/* SYSIO Interrupt State registers. XXX fields to be documented later */
+
+/* SYSIO Counter register. XXX fields to be documented later */
+
+/* SYSIO Limit register. XXX fields to be documented later */
+
+/* SYSIO Performance Monitor Control register. XXX fields to be documented later */
+
+/* SYSIO Performance Monitor Counter register. XXX fields to be documented later */
+
+#endif /* !(__SPARC64_SYSIO_H) */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov