Annotation of kernel/machdep/ppc/powermac.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
        !             7:  * Reserved.  This file contains Original Code and/or Modifications of
        !             8:  * Original Code as defined in and that are subject to the Apple Public
        !             9:  * Source License Version 1.1 (the "License").  You may not use this file
        !            10:  * except in compliance with the License.  Please obtain a copy of the
        !            11:  * License at http://www.apple.com/publicsource and read it before using
        !            12:  * this file.
        !            13:  * 
        !            14:  * The Original Code and all software distributed under the License are
        !            15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            19:  * License for the specific language governing rights and limitations
        !            20:  * under the License.
        !            21:  * 
        !            22:  * @APPLE_LICENSE_HEADER_END@
        !            23:  */
        !            24: 
        !            25: #ifndef _POWERMAC_H_
        !            26: #define _POWERMAC_H_
        !            27: 
        !            28: #ifndef __ASSEMBLER__
        !            29: 
        !            30: #include <mach/ppc/vm_types.h>
        !            31: #include <machdep/ppc/boot.h>
        !            32: #include <machdep/ppc/dbdma.h>
        !            33: 
        !            34: /*
        !            35:  * Machine class 
        !            36:  */
        !            37: 
        !            38: #define        POWERMAC_CLASS_PDM              1       /* PowerMac 61/71/8100 */
        !            39: #define        POWERMAC_CLASS_PERFORMA         2       /* PowerMac 52/6200 */
        !            40: #define        POWERMAC_CLASS_POWERSURGE       3       /* PowerMac 72/75/85/9500 */
        !            41: #define        POWERMAC_CLASS_POWEREXPRESS     4       /* PowerMac 9700 */
        !            42: #define        POWERMAC_CLASS_POWERBOOK        5       /* PowerBook 2300/5300 */
        !            43: #define        POWERMAC_CLASS_GOSSAMER         6       /* PowerMac G3 Desk/Mini-Twr */
        !            44: #define        POWERMAC_CLASS_POWERSTAR        7       /* PowerBook 2400/3400/G3 */
        !            45: #define        POWERMAC_CLASS_YOSEMITE         8       /* 1st Gen New World */
        !            46: 
        !            47: /* Some macros for easy machine identification */
        !            48: #define IsPowerSurge() (powermac_info.class == POWERMAC_CLASS_POWERSURGE)
        !            49:  
        !            50: #define IsPEx()                (powermac_info.class == POWERMAC_CLASS_POWEREXPRESS)
        !            51: 
        !            52: #define IsPowerBook()  (powermac_info.class == POWERMAC_CLASS_POWERBOOK)
        !            53:  
        !            54: #define IsGossamer()   (powermac_info.class == POWERMAC_CLASS_GOSSAMER)
        !            55: 
        !            56: #define IsPowerStar()  (powermac_info.class == POWERMAC_CLASS_POWERSTAR)
        !            57: 
        !            58: #define IsYosemite()   (powermac_info.class == POWERMAC_CLASS_YOSEMITE)
        !            59: 
        !            60: // This is not safe until the PMU or Cuda driver have been set up.
        !            61: #define HasPMU()        (powermac_info.hasPMU)
        !            62: 
        !            63: typedef struct powermac_info {
        !            64:        int             class;                  /* Machine type */
        !            65: 
        !            66:        unsigned int    bus_clock_rate_hz;      /* Bus frequency */
        !            67:         unsigned int    dec_clock_period;       /* Fixed point number 8.24 */
        !            68: 
        !            69:         /* to convert from real time ticks to nsec convert by this*/
        !            70:        unsigned int    proc_clock_to_nsec_numerator; 
        !            71:        unsigned int    proc_clock_to_nsec_denominator; 
        !            72:        
        !            73:        int             machine;                /* Gestalt value .. */
        !            74:        int             hasPMU;                 // Flag for machines with PMU
        !            75:        int             viaIRQ;                 // irq number for the via
        !            76: } powermac_info_t;
        !            77: 
        !            78: extern powermac_info_t powermac_info;
        !            79: 
        !            80: /* This may be merged in struct powermac_info in the future */
        !            81: typedef struct powermac_machine_info {
        !            82:        unsigned long   dcache_block_size;  /* number of bytes */
        !            83:        unsigned long   dcache_size;        /* number of bytes */
        !            84:        unsigned long   icache_size;        /* number of bytes */
        !            85:        unsigned long   caches_unified;     /* boolean_t */
        !            86:        unsigned long   processor_version;  /* contents of PVR */
        !            87:        unsigned long   cpu_clock_rate_hz;
        !            88:        unsigned long   dec_clock_rate_hz;
        !            89:        unsigned long   bus_clock_rate_hz;
        !            90:        unsigned long   l2_clock_rate_hz;
        !            91:        unsigned long   bus_clock_rate_hz_num;
        !            92:        unsigned long   bus_clock_rate_hz_den;
        !            93:        unsigned long   cpu_pll;                /* cpu pll mode * 2 */
        !            94:        unsigned long   l2_pll;                 /* l2 pll mode * 2 */
        !            95:        unsigned long   l2_cache_size;
        !            96:        unsigned long   l2_cache_type;
        !            97: } powermac_machine_info_t;
        !            98: 
        !            99: extern powermac_machine_info_t powermac_machine_info;
        !           100: 
        !           101: // Types of L2 Caches
        !           102: #define L2_CACHE_NONE     (0)
        !           103: #define L2_CACHE_MB       (1)
        !           104: #define L2_CACHE_INLINE   (2)
        !           105: #define L2_CACHE_BACKSIDE (3)
        !           106: 
        !           107: 
        !           108: typedef struct powermac_io_info {
        !           109:        int             io_size;
        !           110:         vm_offset_t     io_base_phys;            /* IO region */
        !           111:         vm_offset_t     io_base_virt;            /* IO region */
        !           112: 
        !           113:         vm_offset_t     io_base2;                // IO region for O'Hare 2
        !           114: 
        !           115:         vm_offset_t     mem_cntlr_base_phys;
        !           116:         vm_offset_t     int_cntlr_base_phys;
        !           117: 
        !           118:         vm_offset_t     dma_base_phys;
        !           119: 
        !           120:   /* Remove All this dma stuff later */
        !           121:        int             dma_buffer_alignment;   /* preallocated DMA region */
        !           122:        int             dma_buffer_size;        /* preallocated DMA region */
        !           123:        vm_offset_t     dma_buffer_phys;        /* preallocated DMA region */
        !           124:        vm_offset_t     dma_buffer_virt;        /* preallocated DMA region */
        !           125: 
        !           126:         vm_offset_t     serial_base_phys;
        !           127:         vm_offset_t     scsi_int_base_phys;
        !           128:         vm_offset_t     scsi_int_dma_base_phys;
        !           129:         vm_offset_t     scsi_ext_base_phys;
        !           130:         vm_offset_t     audio_base_phys;
        !           131:         vm_offset_t     floppy_base_phys;
        !           132:         vm_offset_t     ethernet_base_phys;
        !           133:         vm_offset_t     via_base_phys;
        !           134: 
        !           135:         vm_offset_t     nvram_addr_reg_phys;
        !           136:         vm_offset_t     nvram_data_reg_phys;
        !           137: 
        !           138:         vm_offset_t     ide0_base_phys;
        !           139:         vm_offset_t     ide1_base_phys;
        !           140:        int             nvram_XPRAM_NVPartition;
        !           141:        int             nvram_NameRegistry_NVPartition;
        !           142:        int             nvram_OpenFirmware_NVPartition;
        !           143: } powermac_io_info_t;
        !           144: 
        !           145: extern powermac_io_info_t powermac_io_info;
        !           146: 
        !           147: /* For compatability right now, keep these defines */
        !           148: #define PCI_IO_BASE_PHYS        (powermac_io_info.io_base_phys)
        !           149: 
        !           150: #define PCI_DMA_BASE_PHYS       (powermac_io_info.dma_base_phys)
        !           151: 
        !           152: /* SCC registers (serial line) - physical addr is for probe */
        !           153: #define PCI_SCC_BASE_PHYS       (powermac_io_info.serial_base_phys)
        !           154: 
        !           155: /* ASC registers (external scsi) - physical address for probe */
        !           156: #define PCI_ASC_BASE_PHYS       (powermac_io_info.scsi_ext_base_phys)
        !           157: 
        !           158: /* MESH (internal scsi) controller */
        !           159: #define PCI_MESH_BASE_PHYS      (powermac_io_info.scsi_int_base_phys)
        !           160: #define PCI_MESH_DMA_BASE_PHYS  (powermac_io_info.scsi_int_dma_base_phys)
        !           161: 
        !           162: /* audio controller */
        !           163: #define PCI_AUDIO_BASE_PHYS     (powermac_io_info.audio_base_phys)
        !           164: 
        !           165: /* floppy controller */
        !           166: #define PCI_FLOPPY_BASE_PHYS    (powermac_io_info.floppy_base_phys)
        !           167: 
        !           168: /* Ethernet controller */
        !           169: #define PCI_ETHERNET_BASE_PHYS  (powermac_io_info.ethernet_base_phys)
        !           170: #define PCI_ETHERNET_ADDR_PHYS  (0xF3019000)
        !           171: 
        !           172: /* VIA controls, misc stuff (including CUDA) */
        !           173: #define PCI_VIA_BASE_PHYS       (powermac_io_info.via_base_phys)
        !           174: 
        !           175: #define        PCI_VIA1_AUXCONTROL     (POWERMAC_IO(powermac_io_info.via_base_phys + 0x01600))
        !           176: #define        PCI_VIA1_T1COUNTERLOW   (POWERMAC_IO(powermac_io_info.via_base_phys + 0x00800))
        !           177: #define        PCI_VIA1_T1COUNTERHIGH  (POWERMAC_IO(powermac_io_info.via_base_phys + 0x00A00))
        !           178: #define        PCI_VIA1_T1LATCHLOW     (POWERMAC_IO(powermac_io_info.via_base_phys + 0x00C00))
        !           179: #define        PCI_VIA1_T1LATCHHIGH    (POWERMAC_IO(powermac_io_info.via_base_phys + 0x00E00))
        !           180: #define PCI_VIA1_IER            (POWERMAC_IO(powermac_io_info.via_base_phys + 0x01c00))
        !           181: #define PCI_VIA1_IFR            (POWERMAC_IO(powermac_io_info.via_base_phys + 0x01a00))
        !           182: #define PCI_VIA1_PCR            (POWERMAC_IO(powermac_io_info.via_base_phys + 0x01800))
        !           183: 
        !           184: /* NVRAM Addrs and Partitions */
        !           185: #define PCI_NVRAM_ADDR_PHYS     (powermac_io_info.nvram_addr_reg_phys)
        !           186: #define PCI_NVRAM_DATA_PHYS     (powermac_io_info.nvram_data_reg_phys)
        !           187: 
        !           188: #define NVRAM_XPRAM_Offset (powermac_io_info.nvram_XPRAM_NVPartition)
        !           189: #define NVRAM_NameRegistry_Offset (powermac_io_info.nvram_NameRegistry_NVPartition)
        !           190: #define NVRAM_OpenFirmware_Offset (powermac_io_info.nvram_OpenFirmware_NVPartition)
        !           191: 
        !           192: 
        !           193: 
        !           194: /* IDE controller */
        !           195: #define PCI_IDE0_BASE_PHYS     (powermac_io_info.ide0_base_phys)
        !           196: #define PCI_IDE1_BASE_PHYS     (powermac_io_info.ide1_base_phys)
        !           197: 
        !           198: 
        !           199: extern void NO_ENTRY(void);
        !           200: 
        !           201: typedef struct {
        !           202:        void (*configure_machine)(void);
        !           203:        void (*machine_initialize_interrupt)(void);
        !           204:        void (*machine_initialize_network)(void);
        !           205:        void (*machine_initialize_processors)(boot_args *args);
        !           206:        int  (*machine_initialize_rtclock)(void);
        !           207:        powermac_dbdma_channels_t *powermac_dbdma_channels;
        !           208: } powermac_init_t;
        !           209: 
        !           210: extern powermac_init_t *powermac_init_p;
        !           211: 
        !           212: 
        !           213: /* Macro to convert from a physical I/O address into a virtual I/O address */
        !           214: #define POWERMAC_IO(addr)      (powermac_io_info.io_base_virt +        \
        !           215:                                 (addr - powermac_io_info.io_base_phys))
        !           216: 
        !           217: /*
        !           218:  * prototypes
        !           219:  */
        !           220: 
        !           221: /* Used to initialise IO once DMA and IO virtual space has been assigned */
        !           222: extern void powermac_io_init(vm_offset_t powermac_io_base_v);
        !           223: 
        !           224: extern void powermac_powerdown(void);
        !           225: extern void powermac_reboot(void);
        !           226: 
        !           227: /* Non-cached version of bcopy */
        !           228: extern void    bcopy_nc(char *from, char *to, int size);
        !           229: 
        !           230: /* Some useful typedefs for accessing control registers */
        !           231: 
        !           232: typedef volatile unsigned char v_u_char;
        !           233: typedef volatile unsigned short v_u_short;
        !           234: typedef volatile unsigned int  v_u_int;
        !           235: typedef volatile unsigned long  v_u_long;
        !           236: 
        !           237: /* And some useful defines for reading 'volatile' structures,
        !           238:  * don't forget to be be careful about sync()s and eieio()s
        !           239:  */
        !           240: #define reg8(reg) (*(v_u_char *)reg)
        !           241: #define reg16(reg) (*(v_u_short *)reg)
        !           242: #define reg32(reg) (*(v_u_int *)reg)
        !           243: 
        !           244: /* VIA1_AUXCONTROL values same across several powermacs */
        !           245: #define        VIA1_AUX_AUTOT1LATCH 0x40       /* Autoreload of T1 from latches */
        !           246: 
        !           247: #endif /* !(__ASSEMBLER__) */
        !           248: #endif /* _POWERMAC_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.