03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER START
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 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * See the License for the specific language governing permissions
03831d35f7499c87d51205817c93e9a8d42c4baestevel * and limitations under the License.
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 * CDDL HEADER END
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Use is subject to license terms.
03831d35f7499c87d51205817c93e9a8d42c4baestevel#pragma ident "%Z%%M% %I% %E% SMI"
03831d35f7499c87d51205817c93e9a8d42c4baestevelextern "C" {
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_STATE if (sbdp_debug & SBDPDBG_STATE) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_QR if (sbdp_debug & SBDPDBG_QR) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_CPU if (sbdp_debug & SBDPDBG_CPU) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_MEM if (sbdp_debug & SBDPDBG_MEM) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_IO if (sbdp_debug & SBDPDBG_IO) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_MBOX if (sbdp_debug & SBDPDBG_MBOX) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_ERR if (sbdp_debug & SBDPDBG_ERR) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_MISC if (sbdp_debug & SBDPDBG_MISC) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_FUNC if (sbdp_debug & SBDPDBG_FUNC) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#else /* DEBUG */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif /* DEBUG */
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CPU present macros
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CPU reset macros
03831d35f7499c87d51205817c93e9a8d42c4baestevel * These definitions come from the SC. Should the SC change them
03831d35f7499c87d51205817c93e9a8d42c4baestevel * then we need to changed them
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DIAG_NVCI 0xffff /* Use stored value in nvci */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_PLATFORM_OPTS(s_platopts) ((s_platopts) = SBDP_INIT_PLATOPTS, \
03831d35f7499c87d51205817c93e9a8d42c4baestevel sbdp_bank_t *banks; /* pointer to the banks of this seg */
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint64_t bpa; /* base physical addr for this board */
03831d35f7499c87d51205817c93e9a8d42c4baestevel int valid_cp; /* Is this a valid copy of show_board */
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Suspend states used internally by sbdp_suspend and
03831d35f7499c87d51205817c93e9a8d42c4baestevel * sbdp_resume
03831d35f7499c87d51205817c93e9a8d42c4baestevel * specific suspend/resume interface handle
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_set_err(sbd_error_t *ep, int ecode, char *rsc);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_walk_prom_tree(pnode_t, int(*)(pnode_t, void *, uint_t), void *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_detach_bd(int node, int board, sbd_error_t *sep);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_attach_bd(int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_swap_list_of_banks(sbdp_bd_t *, sbdp_bd_t *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_cleanup_bd(int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_cpu_in_reset(int, int, int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_is_cpu_in_reset(int, int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_set_cpu_present(int, int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_is_cpu_present(int, int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_passthru_test_quiesce(sbdp_handle_t *hp, void *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelpnode_t sbdp_find_nearby_cpu_by_portid(pnode_t, processorid_t);
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif /* _SBDP_PRIV_H */