diff options
Diffstat (limited to 'usr/src/uts/common/sys/openpromio.h')
| -rw-r--r-- | usr/src/uts/common/sys/openpromio.h | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/usr/src/uts/common/sys/openpromio.h b/usr/src/uts/common/sys/openpromio.h new file mode 100644 index 0000000000..a3b207e055 --- /dev/null +++ b/usr/src/uts/common/sys/openpromio.h @@ -0,0 +1,136 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 1989-2000, 2003 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_OPENPROMIO_H +#define _SYS_OPENPROMIO_H + +#pragma ident "%Z%%M% %I% %E% SMI" +/* From SunOS 4.1.1 <sundev/openpromio.h> */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * XXX HACK ALERT + * + * You might think that this interface could support setting non-ASCII + * property values. Unfortunately the 4.0.3c openprom driver SETOPT + * code ignores oprom_size and uses strlen() to compute the length of + * the value. The 4.0.3c openprom eeprom command makes its contribution + * by not setting oprom_size to anything meaningful. So, if we want the + * driver to trust oprom_size we have to use SETOPT2. XXX. + */ +struct openpromio { + uint_t oprom_size; /* real size of following array */ + union { + char b[1]; /* For property names and values */ + /* NB: Adjacent, Null terminated */ + int i; + } opio_u; +}; + +#define oprom_array opio_u.b +#define oprom_node opio_u.i +#define oprom_len opio_u.i + +/* + * OPROMMAXPARAM is used as a limit by the driver, and it has been + * increased to be 4 times the largest possible size of a property, + * which is 8K (nvramrc property). + */ +#define OPROMMAXPARAM 32768 /* max size of array */ + +/* + * Note that all OPROM ioctl codes are type void. Since the amount + * of data copied in/out may (and does) vary, the openprom driver + * handles the copyin/copyout itself. + */ +#define OIOC ('O'<<8) +#define OPROMGETOPT (OIOC | 1) +#define OPROMSETOPT (OIOC | 2) +#define OPROMNXTOPT (OIOC | 3) +#define OPROMSETOPT2 (OIOC | 4) /* working OPROMSETOPT */ +#define OPROMNEXT (OIOC | 5) /* interface to raw config_ops */ +#define OPROMCHILD (OIOC | 6) /* interface to raw config_ops */ +#define OPROMGETPROP (OIOC | 7) /* interface to raw config_ops */ +#define OPROMNXTPROP (OIOC | 8) /* interface to raw config_ops */ +#define OPROMU2P (OIOC | 9) /* NOT SUPPORTED after 4.x */ +#define OPROMGETCONS (OIOC | 10) /* enquire which console device */ +#define OPROMGETFBNAME (OIOC | 11) /* Frame buffer OBP pathname */ +#define OPROMGETBOOTARGS (OIOC | 12) /* Get boot arguments */ +#define OPROMGETVERSION (OIOC | 13) /* Get OpenProm Version string */ +#define OPROMPATH2DRV (OIOC | 14) /* Convert prom path to driver name */ +#define OPROMDEV2PROMNAME (OIOC | 15) /* Convert devfs path to prom path */ +#define OPROMPROM2DEVNAME (OIOC | 16) /* Convert devfs path to prom path */ +#define OPROMGETPROPLEN (OIOC | 17) /* interface to raw config_ops */ +#define OPROMREADY64 (OIOC | 18) /* is prom 64-bit ready? */ +#define OPROMSETNODEID (OIOC | 19) /* set current node_id */ +#define OPROMSNAPSHOT (OIOC | 20) /* create a snapshot */ +#define OPROMCOPYOUT (OIOC | 21) /* copyout and free snapshot */ +#define OPROMLISTKEYS (OIOC | 22) /* asr-list-keys */ +#define OPROMLISTKEYSLEN (OIOC | 23) /* asr-list-keys-len */ +#define OPROMEXPORT (OIOC | 24) /* asr-export */ +#define OPROMEXPORTLEN (OIOC | 25) /* asr-export-len */ + +/* + * Return values from OPROMGETCONS: + */ + +#define OPROMCONS_NOT_WSCONS 0 +#define OPROMCONS_STDIN_IS_KBD 0x1 /* stdin device is kbd */ +#define OPROMCONS_STDOUT_IS_FB 0x2 /* stdout is a framebuffer */ +#define OPROMCONS_OPENPROM 0x4 /* supports openboot */ + +#if defined(__sparc) + +/* + * Data structure returned in oprom_array, from OPROMREADY64: + * + * With return codes 1 and 2, also returns nodeid, a nodeid + * of a flashprom node, and a message string with the minimum version + * requirement for this platform. + */ +struct openprom_opr64 { + int return_code; /* See below */ + int nodeid; /* Valid with positive return codes */ + char message[1]; /* NULL terminated message string */ +}; + +/* + * return_code values from OPROMREADY64: + */ +#define OP64R_READY 0 /* ready or not applicable */ +#define OP64R_UPGRADE_REQUIRED 1 /* Upgrade required */ +#define OP64R_UPGRADE_RECOMMENDED 2 /* Upgrade recommended */ + +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_OPENPROMIO_H */ |
