03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER START
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * The contents of this file are subject to the terms of the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Common Development and Distribution License (the "License").
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You may not use this file except in compliance with the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * or http://www.opensolaris.org/os/licensing.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * See the License for the specific language governing permissions
03831d35f7499c87d51205817c93e9a8d42c4baestevel * and limitations under the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * When distributing Covered Code, include this CDDL HEADER in each
03831d35f7499c87d51205817c93e9a8d42c4baestevel * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * If applicable, add the following below this CDDL HEADER, with the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * fields enclosed by brackets "[]" replaced with your own identifying
03831d35f7499c87d51205817c93e9a8d42c4baestevel * information: Portions Copyright [yyyy] [name of copyright owner]
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER END
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Use is subject to license terms.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifndef _SYS_SCHPC_MSG_H
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define _SYS_SCHPC_MSG_H
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * This header file describes the messages that are sent between the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * schpc Hot Plug Controller Driver running on the domain and the System
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Controller.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef __cplusplus
03831d35f7499c87d51205817c93e9a8d42c4baestevelextern "C" {
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Format of the Get Slot Status specific part of
03831d35f7499c87d51205817c93e9a8d42c4baestevel * PCI Hot Plug message.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint16_t slot_power_on :1, /* Slot Power is on */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_powergood :1, /* Slot Power is good */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_powerfault :1, /* Slot Power has faulted */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_empty :1, /* No occupant in slot */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_freq_cap :2, /* Slot's Freq Capability */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_freq_setting :2, /* Slot Freq setting */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_condition :2, /* Condition of slot */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_HEALTHY :1, /* Value of HEALTHY# sig */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_ENUM :1, /* Value of ENUM# sig */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_mode_cap :1, /* Conven or PCI-X */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_mode_setting :1, /* Conven or PCI-X */
03831d35f7499c87d51205817c93e9a8d42c4baestevel reserved :2;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t slot_replystatus;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} pci_getslot_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Format of the Set Slot Status specific part of
03831d35f7499c87d51205817c93e9a8d42c4baestevel * PCI Hot Plug message.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint16_t slot_power_on :1, /* Connect Slot to bus */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_power_off :1, /* Disconnect from bus */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_led_power :2, /* Slot Power LED */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_led_service :2, /* OK To Remove LED */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_led_fault :2, /* Fault LED */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_disable_ENUM :1, /* Disable ENUM Event */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_enable_ENUM :1, /* Enable ENUM Event */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_disable_HEALTHY :1, /* Disable HEALTHY EVENT */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_enable_HEALTHY :1, /* Enable HEALTHY EVENT */
03831d35f7499c87d51205817c93e9a8d42c4baestevel reserved :4;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t slot_replystatus;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} pci_setslot_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Format of the Slot Event specific part of
03831d35f7499c87d51205817c93e9a8d42c4baestevel * the PCI Hot Plug message.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint16_t slot_power :1, /* Slot Power has changed */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_presence :1, /* occupant has been */
03831d35f7499c87d51205817c93e9a8d42c4baestevel /* inserted or removed */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_ENUM :1, /* ENUM# has changed */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_HEALTHY :1, /* HEALTHY# has changed */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_powergood :1, /* Power is good */
03831d35f7499c87d51205817c93e9a8d42c4baestevel slot_powerfault :1, /* Power has faulted */
03831d35f7499c87d51205817c93e9a8d42c4baestevel reserved :10;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} pci_slotevent_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * PCI Hot Plug message
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t pcimsg_node;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t pcimsg_board;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t pcimsg_slot;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t pcimsg_revision;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t pcimsg_command;
03831d35f7499c87d51205817c93e9a8d42c4baestevel union {
03831d35f7499c87d51205817c93e9a8d42c4baestevel pci_setslot_t pcimsg_setslot;
03831d35f7499c87d51205817c93e9a8d42c4baestevel pci_getslot_t pcimsg_getslot;
03831d35f7499c87d51205817c93e9a8d42c4baestevel pci_slotevent_t pcimsg_slotevent;
03831d35f7499c87d51205817c93e9a8d42c4baestevel } pcimsg_type;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} pcimsg_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Keys for the outgoing and incoming mailboxes
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define KEY_PCSC 0x50435343 /* Outgoing Mailbox 'PCSC' */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define KEY_SCPC 0x53435043 /* Incoming Mailbox 'SCPC' */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * default timeout in seconds for mboxsc_getmsg calls
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCSC_TIMEOUT 30
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Commands */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_GETSLOTSTATUS 0x1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_SETSLOTSTATUS 0x2
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_SLOTEVENT 0x3
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Message Revisions */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_REVISION 0x10
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_REVISION_1_0 0x10
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Values for the slot_condition field of the get slot status command.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_SLOTCOND_UNKNOWN 0x0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_SLOTCOND_GOOD 0x1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_SLOTCOND_REC_FAIL 0x2
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_SLOTCOND_OCC_FAIL 0x3
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Values for the slot_freq_cap and slot_freq_setting fields of the get
03831d35f7499c87d51205817c93e9a8d42c4baestevel * slot status command.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_FREQ_33MHZ 0x0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_FREQ_66MHZ 0x1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_FREQ_90MHZ 0x2
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_FREQ_133MHZ 0x3
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Values for the slot_mode_cap and slot_mode_setting of the get
03831d35f7499c87d51205817c93e9a8d42c4baestevel * slot status command.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_MODE_CONVEN 0x0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_MODE_PCIX 0x1
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Values for the PRSNT signals.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_PRSNT_NOADAPTER 0x0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_PRSNT_25W 0x1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_PRSNT_15W 0x2
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_PRSNT_7_5W 0x3
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Values to turn on and off slot characteristics.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_ON 0x1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_OFF 0x0
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Values to set the power, service and fault LEDs
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_LED_OFF 0x00
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_LED_ON 0x01
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_LED_FLASH 0x02
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Return values for the slot_replystatus field for the get/set slot status
03831d35f7499c87d51205817c93e9a8d42c4baestevel * commands.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_REPLY_GOOD 0x0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PCIMSG_REPLY_FAIL 0x1
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef __cplusplus
03831d35f7499c87d51205817c93e9a8d42c4baestevel}
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif /* _SYS_SCHPC_MSG_H */