1*f899e573SVuong Nguyen /* 2*f899e573SVuong Nguyen * CDDL HEADER START 3*f899e573SVuong Nguyen * 4*f899e573SVuong Nguyen * The contents of this file are subject to the terms of the 5*f899e573SVuong Nguyen * Common Development and Distribution License (the "License"). 6*f899e573SVuong Nguyen * You may not use this file except in compliance with the License. 7*f899e573SVuong Nguyen * 8*f899e573SVuong Nguyen * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*f899e573SVuong Nguyen * or http://www.opensolaris.org/os/licensing. 10*f899e573SVuong Nguyen * See the License for the specific language governing permissions 11*f899e573SVuong Nguyen * and limitations under the License. 12*f899e573SVuong Nguyen * 13*f899e573SVuong Nguyen * When distributing Covered Code, include this CDDL HEADER in each 14*f899e573SVuong Nguyen * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*f899e573SVuong Nguyen * If applicable, add the following below this CDDL HEADER, with the 16*f899e573SVuong Nguyen * fields enclosed by brackets "[]" replaced with your own identifying 17*f899e573SVuong Nguyen * information: Portions Copyright [yyyy] [name of copyright owner] 18*f899e573SVuong Nguyen * 19*f899e573SVuong Nguyen * CDDL HEADER END 20*f899e573SVuong Nguyen */ 21*f899e573SVuong Nguyen 22*f899e573SVuong Nguyen /* 23*f899e573SVuong Nguyen * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24*f899e573SVuong Nguyen * Use is subject to license terms. 25*f899e573SVuong Nguyen */ 26*f899e573SVuong Nguyen 27*f899e573SVuong Nguyen #ifndef _MEM_ADDR_H 28*f899e573SVuong Nguyen #define _MEM_ADDR_H 29*f899e573SVuong Nguyen 30*f899e573SVuong Nguyen #ifdef __cplusplus 31*f899e573SVuong Nguyen extern "C" { 32*f899e573SVuong Nguyen #endif 33*f899e573SVuong Nguyen 34*f899e573SVuong Nguyen #include "intel_nhm.h" 35*f899e573SVuong Nguyen 36*f899e573SVuong Nguyen #ifdef _KERNEL 37*f899e573SVuong Nguyen 38*f899e573SVuong Nguyen extern uint64_t rankaddr_to_dimm(uint64_t rankaddr, int node, 39*f899e573SVuong Nguyen int channel, int dimm, int writing, uint64_t *bank, 40*f899e573SVuong Nguyen uint64_t *row, uint64_t *column); 41*f899e573SVuong Nguyen extern uint64_t dimm_to_rankaddr(int node, int channel, 42*f899e573SVuong Nguyen int dimm, uint64_t rowaddr, uint64_t bankaddr, 43*f899e573SVuong Nguyen uint64_t coladr, int *log_chan); 44*f899e573SVuong Nguyen extern uint64_t rankaddr_to_phyaddr(int node, int log_chan, 45*f899e573SVuong Nguyen int dimm, int rank, int rankaddr); 46*f899e573SVuong Nguyen extern uint64_t caddr_to_dimm(int node, int channel, uint64_t caddr, 47*f899e573SVuong Nguyen int *rank_p, uint64_t *rank_addr_p); 48*f899e573SVuong Nguyen 49*f899e573SVuong Nguyen #pragma weak caddr_to_dimm 50*f899e573SVuong Nguyen #pragma weak rankaddr_to_dimm 51*f899e573SVuong Nguyen #pragma weak dimm_to_rankaddr 52*f899e573SVuong Nguyen #pragma weak rankaddr_to_phyaddr 53*f899e573SVuong Nguyen 54*f899e573SVuong Nguyen extern char closed_page; 55*f899e573SVuong Nguyen extern char ecc_enabled; 56*f899e573SVuong Nguyen extern char divby3_enabled; 57*f899e573SVuong Nguyen extern char lockstep[2]; 58*f899e573SVuong Nguyen extern char mirror_mode[2]; 59*f899e573SVuong Nguyen extern char spare_channel[2]; 60*f899e573SVuong Nguyen extern sad_t sad[MAX_SAD_DRAM_RULE]; 61*f899e573SVuong Nguyen extern tad_t tad[MAX_CPU_NODES][MAX_TAD_DRAM_RULE]; 62*f899e573SVuong Nguyen extern sag_ch_t sag_ch[MAX_CPU_NODES][CHANNELS_PER_MEMORY_CONTROLLER] 63*f899e573SVuong Nguyen [MAX_TAD_DRAM_RULE]; 64*f899e573SVuong Nguyen extern rir_t rir[MAX_CPU_NODES][CHANNELS_PER_MEMORY_CONTROLLER] 65*f899e573SVuong Nguyen [MAX_TAD_DRAM_RULE]; 66*f899e573SVuong Nguyen extern dod_t dod_reg[MAX_CPU_NODES][CHANNELS_PER_MEMORY_CONTROLLER] 67*f899e573SVuong Nguyen [MAX_DIMMS_PER_CHANNEL]; 68*f899e573SVuong Nguyen 69*f899e573SVuong Nguyen #endif /* _KERNEL */ 70*f899e573SVuong Nguyen 71*f899e573SVuong Nguyen #define CAS_MASK 0xFFFFFF 72*f899e573SVuong Nguyen #define BANK_MASK 0xFF 73*f899e573SVuong Nguyen #define RAS_MASK 0xFFFFF 74*f899e573SVuong Nguyen #define RANK_MASK 0x7FF 75*f899e573SVuong Nguyen 76*f899e573SVuong Nguyen #ifdef __cplusplus 77*f899e573SVuong Nguyen } 78*f899e573SVuong Nguyen #endif 79*f899e573SVuong Nguyen 80*f899e573SVuong Nguyen #endif /* _MEM_ADDR_H */ 81