13d808a52Ssubhan /* 23d808a52Ssubhan * CDDL HEADER START 33d808a52Ssubhan * 43d808a52Ssubhan * The contents of this file are subject to the terms of the 53d808a52Ssubhan * Common Development and Distribution License (the "License"). 63d808a52Ssubhan * You may not use this file except in compliance with the License. 73d808a52Ssubhan * 83d808a52Ssubhan * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 93d808a52Ssubhan * or http://www.opensolaris.org/os/licensing. 103d808a52Ssubhan * See the License for the specific language governing permissions 113d808a52Ssubhan * and limitations under the License. 123d808a52Ssubhan * 133d808a52Ssubhan * When distributing Covered Code, include this CDDL HEADER in each 143d808a52Ssubhan * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 153d808a52Ssubhan * If applicable, add the following below this CDDL HEADER, with the 163d808a52Ssubhan * fields enclosed by brackets "[]" replaced with your own identifying 173d808a52Ssubhan * information: Portions Copyright [yyyy] [name of copyright owner] 183d808a52Ssubhan * 193d808a52Ssubhan * CDDL HEADER END 203d808a52Ssubhan */ 213d808a52Ssubhan /* 22*abe610a3SMichael Bergknoff * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 233d808a52Ssubhan * Use is subject to license terms. 243d808a52Ssubhan * 253d808a52Ssubhan * Opl Platform header file. 263d808a52Ssubhan * 273d808a52Ssubhan * called when : 283d808a52Ssubhan * machine_type == MTYPE_OPL 293d808a52Ssubhan */ 303d808a52Ssubhan 313d808a52Ssubhan #ifndef _OPL_PICL_H 323d808a52Ssubhan #define _OPL_PICL_H 333d808a52Ssubhan 343d808a52Ssubhan #ifdef __cplusplus 353d808a52Ssubhan extern "C" { 363d808a52Ssubhan #endif 373d808a52Ssubhan 383d808a52Ssubhan /* 393d808a52Ssubhan * Property names 403d808a52Ssubhan */ 413d808a52Ssubhan #define OBP_PROP_REG "reg" 423d808a52Ssubhan #define OBP_PROP_CLOCK_FREQ "clock-frequency" 433d808a52Ssubhan #define OBP_PROP_BOARD_NUM "board#" 443d808a52Ssubhan #define OBP_PROP_REVISION_ID "revision-id" 453d808a52Ssubhan #define OBP_PROP_VENDOR_ID "vendor-id" 463d808a52Ssubhan #define OBP_PROP_DEVICE_ID "device-id" 473d808a52Ssubhan #define OBP_PROP_VERSION_NUM "version#" 483d808a52Ssubhan #define OBP_PROP_BOARD_TYPE "board_type" 493d808a52Ssubhan #define OBP_PROP_ECACHE_SIZE "ecache-size" 503d808a52Ssubhan #define OBP_PROP_IMPLEMENTATION "implementation#" 513d808a52Ssubhan #define OBP_PROP_MASK "mask#" 523d808a52Ssubhan #define OBP_PROP_COMPATIBLE "compatible" 533d808a52Ssubhan #define OBP_PROP_BANNER_NAME "banner-name" 543d808a52Ssubhan #define OBP_PROP_MODEL "model" 553d808a52Ssubhan #define OBP_PROP_66MHZ_CAPABLE "66mhz-capable" 563d808a52Ssubhan #define OBP_PROP_VERSION "version" 573d808a52Ssubhan #define OBP_PROP_INSTANCE "instance" 583d808a52Ssubhan 593d808a52Ssubhan /* PCI BUS types */ 603d808a52Ssubhan 61a7480016Smb #define PCI_UNKN -1 623d808a52Ssubhan #define PCI 10 633d808a52Ssubhan #define PCIX 20 643d808a52Ssubhan #define PCIE 30 653d808a52Ssubhan 663d808a52Ssubhan /* PCI device defines */ 673d808a52Ssubhan 683d808a52Ssubhan #define PCI_CONF_VENID 0x0 /* vendor id, 2 bytes */ 693d808a52Ssubhan #define PCI_CONF_DEVID 0x2 /* device id, 2 bytes */ 703d808a52Ssubhan #define PCI_CONF_CAP_PTR 0x34 /* 1 byte capability pointer */ 713d808a52Ssubhan #define PCI_CAP_ID_PCI_E 0x10 /* PCI Express supported */ 723d808a52Ssubhan #define PCIE_LINKCAP 0x0C /* Link Capability */ 733d808a52Ssubhan #define PCIE_LINKSTS 0x12 /* Link Status */ 743d808a52Ssubhan #define PCI_CAP_MASK 0xff /* CAP Mask */ 753d808a52Ssubhan #define PCI_DEV_MASK 0xF800 /* Dev# Mask */ 763d808a52Ssubhan #define PCI_FUNC_MASK 0x700 /* Func# Mask */ 773d808a52Ssubhan #define PCI_BUS_MASK 0x1ff0000 /* Bus# Mask */ 783d808a52Ssubhan #define PCI_LINK_MASK 0x1f /* Link Mask */ 793d808a52Ssubhan 803d808a52Ssubhan #define PCI_LINK_SHIFT 4 /* Link shift Bits */ 81*abe610a3SMichael Bergknoff #define PCI_FREQ_33 33 /* legacy PCI default freq */ 823d808a52Ssubhan #define PCI_FREQ_66 66 /* PCI default freq */ 833d808a52Ssubhan #define PCI_FREQ_100 100 843d808a52Ssubhan 853d808a52Ssubhan /* PCI frequencies */ 863d808a52Ssubhan 873d808a52Ssubhan #define PCI_FREQ_133 133 883d808a52Ssubhan #define PCI_FREQ_266 266 893d808a52Ssubhan #define PCI_FREQ_533 533 903d808a52Ssubhan 913d808a52Ssubhan /* PCI frequency shift bits */ 923d808a52Ssubhan 933d808a52Ssubhan #define PCI_SHIFT_133 17 943d808a52Ssubhan #define PCI_SHIFT_266 30 953d808a52Ssubhan #define PCI_SHIFT_533 31 963d808a52Ssubhan 973d808a52Ssubhan /* PCI frequency modes */ 983d808a52Ssubhan 993d808a52Ssubhan #define PCI_MODE_66 1 1003d808a52Ssubhan #define PCI_MODE_100 2 1013d808a52Ssubhan #define PCI_MODE_133 3 1023d808a52Ssubhan 1033d808a52Ssubhan /* PCI frequency SEC status masks */ 1043d808a52Ssubhan 1053d808a52Ssubhan #define PCI_SEC_133 0x2 1063d808a52Ssubhan #define PCI_SEC_266 0x4000 1073d808a52Ssubhan #define PCI_SEC_533 0x8000 1083d808a52Ssubhan #define PCI_LEAF_ULONG 1UL 1093d808a52Ssubhan 1103d808a52Ssubhan 1113d808a52Ssubhan /* Invalid property value */ 1123d808a52Ssubhan #define PROP_INVALID -1 1133d808a52Ssubhan 1143d808a52Ssubhan /* Macros */ 1153d808a52Ssubhan 1163d808a52Ssubhan #define IS_PCI(name) \ 1173d808a52Ssubhan (((name) != NULL) && (strncmp((name), "pci", 3) == 0)) 1183d808a52Ssubhan 1193d808a52Ssubhan #define IS_EBUS(class) \ 1203d808a52Ssubhan (((class) != NULL) && (strncmp((class), "ebus", 4) == 0)) 1213d808a52Ssubhan 1223d808a52Ssubhan #define ROUND_TO_MHZ(x) (((x) + 500000)/ 1000000) 1233d808a52Ssubhan 1243d808a52Ssubhan #define PRINT_FREQ_FMT(arg_1, arg_2) \ 1253d808a52Ssubhan if (((arg_1) != 0) && \ 1263d808a52Ssubhan ((arg_2) != 0)) \ 1273d808a52Ssubhan log_printf("%4d, %4d ", (arg_1), (arg_2)); \ 1283d808a52Ssubhan else if ((arg_2) != 0) \ 1293d808a52Ssubhan log_printf(" --, %4d ", (arg_2)); \ 1303d808a52Ssubhan else if ((arg_1) != 0) \ 1313d808a52Ssubhan log_printf("%4d, -- ", (arg_1)); \ 1323d808a52Ssubhan else \ 1333d808a52Ssubhan log_printf(" --, -- "); 1343d808a52Ssubhan 1353d808a52Ssubhan #define PRINT_FMT(arg_1, arg_2) \ 1363d808a52Ssubhan if (((arg_1) != PROP_INVALID) && \ 1373d808a52Ssubhan ((arg_2) != PROP_INVALID)) \ 1383d808a52Ssubhan log_printf("%4d, %4d ", (arg_1), (arg_2)); \ 1393d808a52Ssubhan else if ((arg_2) != PROP_INVALID) \ 1403d808a52Ssubhan log_printf(" --, %4d ", (arg_2)); \ 1413d808a52Ssubhan else if ((arg_1) != PROP_INVALID) \ 1423d808a52Ssubhan log_printf("%4d, -- ", (arg_1)); \ 1433d808a52Ssubhan else \ 1443d808a52Ssubhan log_printf(" --, -- "); 1453d808a52Ssubhan 1463d808a52Ssubhan 1473d808a52Ssubhan 1483d808a52Ssubhan #ifdef __cplusplus 1493d808a52Ssubhan } 1503d808a52Ssubhan #endif 1513d808a52Ssubhan 1523d808a52Ssubhan #endif /* _OPL_PICL_H */ 153