prnio.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
843e19887f64dde75055cf8842fc4db2171eff45johnlev/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * CDDL HEADER START
843e19887f64dde75055cf8842fc4db2171eff45johnlev *
843e19887f64dde75055cf8842fc4db2171eff45johnlev * The contents of this file are subject to the terms of the
843e19887f64dde75055cf8842fc4db2171eff45johnlev * Common Development and Distribution License, Version 1.0 only
843e19887f64dde75055cf8842fc4db2171eff45johnlev * (the "License"). You may not use this file except in compliance
843e19887f64dde75055cf8842fc4db2171eff45johnlev * with the License.
843e19887f64dde75055cf8842fc4db2171eff45johnlev *
843e19887f64dde75055cf8842fc4db2171eff45johnlev * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
843e19887f64dde75055cf8842fc4db2171eff45johnlev * or http://www.opensolaris.org/os/licensing.
843e19887f64dde75055cf8842fc4db2171eff45johnlev * See the License for the specific language governing permissions
843e19887f64dde75055cf8842fc4db2171eff45johnlev * and limitations under the License.
843e19887f64dde75055cf8842fc4db2171eff45johnlev *
843e19887f64dde75055cf8842fc4db2171eff45johnlev * When distributing Covered Code, include this CDDL HEADER in each
843e19887f64dde75055cf8842fc4db2171eff45johnlev * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
843e19887f64dde75055cf8842fc4db2171eff45johnlev * If applicable, add the following below this CDDL HEADER, with the
843e19887f64dde75055cf8842fc4db2171eff45johnlev * fields enclosed by brackets "[]" replaced with your own identifying
843e19887f64dde75055cf8842fc4db2171eff45johnlev * information: Portions Copyright [yyyy] [name of copyright owner]
843e19887f64dde75055cf8842fc4db2171eff45johnlev *
843e19887f64dde75055cf8842fc4db2171eff45johnlev * CDDL HEADER END
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * Copyright (c) 2001 by Sun Microsystems, Inc.
843e19887f64dde75055cf8842fc4db2171eff45johnlev * All rights reserved.
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
843e19887f64dde75055cf8842fc4db2171eff45johnlev
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#ifndef _SYS_PRNIO_H
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define _SYS_PRNIO_H
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#pragma ident "%Z%%M% %I% %E% SMI"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/*
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab * Printing system I/O interface
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#include <sys/types.h>
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#include <sys/ioccom.h>
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#ifdef __cplusplus
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabextern "C" {
843e19887f64dde75055cf8842fc4db2171eff45johnlev#endif
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC 'p'
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC_GET_IFCAP _IOR(PRNIOC, 90, uint_t)
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC_SET_IFCAP _IOR(PRNIOC, 91, uint_t)
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC_GET_IFINFO _IOWR(PRNIOC, 92, struct prn_interface_info)
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC_GET_STATUS _IOR(PRNIOC, 93, uint_t)
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC_GET_1284_DEVID _IOWR(PRNIOC, 94, struct prn_1284_device_id)
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC_GET_1284_STATUS _IOR(PRNIOC, 95, uchar_t)
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC_GET_TIMEOUTS _IOR(PRNIOC, 96, struct prn_timeouts)
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC_SET_TIMEOUTS _IOW(PRNIOC, 97, struct prn_timeouts)
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRNIOC_RESET _IO(PRNIOC, 98)
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * interface capabilities
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_BIDI 0x0001 /* bi-directional operation is supported */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_HOTPLUG 0x0002 /* interface allows device hotplugging */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_1284_DEVID 0x0004 /* device can return 1284 device ID */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_1284_STATUS 0x0008 /* device can return status lines state */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_TIMEOUTS 0x0010 /* timeouts are supported */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_STREAMS 0x0020 /* special flush semantics */
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * printer interface info
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
843e19887f64dde75055cf8842fc4db2171eff45johnlevstruct prn_interface_info {
843e19887f64dde75055cf8842fc4db2171eff45johnlev uint_t if_len; /* length of buffer */
843e19887f64dde75055cf8842fc4db2171eff45johnlev uint_t if_rlen; /* actual length of info string */
843e19887f64dde75055cf8842fc4db2171eff45johnlev char *if_data; /* buffer address */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#ifndef _LP64
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab int if_filler; /* preserve struct size in 32 bit */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#endif
843e19887f64dde75055cf8842fc4db2171eff45johnlev};
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * printer interface info string (recommended values)
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_PARALLEL "parallel" /* parallel port (Centronics or 1284) */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_SERIAL "serial" /* serial port (EIA-232, EIA-485) */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_USB "USB" /* USB */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_1394 "1394" /* IEEE 1394 (Firewire) */
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/*
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab * status bits for PRNIOC_GET_STATUS
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab */
5d2eda970e48f8985448151c73e699614ce9f357John Levon#define PRN_ONLINE 0x01 /* device is connected */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PRN_READY 0x02 /* device is ready to communicate */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
5d2eda970e48f8985448151c73e699614ce9f357John Levon/*
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab * 1284 pins status bits
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_1284_NOFAULT 0x08 /* device is not in error state */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_1284_SELECT 0x10 /* device selected */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_1284_PE 0x20 /* paper error */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PRN_1284_BUSY 0x80 /* device busy */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
5d2eda970e48f8985448151c73e699614ce9f357John Levon/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * IEEE 1284 device ID
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
5d2eda970e48f8985448151c73e699614ce9f357John Levonstruct prn_1284_device_id {
5d2eda970e48f8985448151c73e699614ce9f357John Levon uint_t id_len; /* length of buffer */
843e19887f64dde75055cf8842fc4db2171eff45johnlev uint_t id_rlen; /* actual length of device ID string */
843e19887f64dde75055cf8842fc4db2171eff45johnlev char *id_data; /* buffer address */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#ifndef _LP64
843e19887f64dde75055cf8842fc4db2171eff45johnlev int id_filler; /* preserve struct size in 32 bit */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#endif
843e19887f64dde75055cf8842fc4db2171eff45johnlev};
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * printer driver timeouts
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
843e19887f64dde75055cf8842fc4db2171eff45johnlevstruct prn_timeouts {
843e19887f64dde75055cf8842fc4db2171eff45johnlev uint_t tmo_forward; /* forward transfer timeout */
843e19887f64dde75055cf8842fc4db2171eff45johnlev uint_t tmo_reverse; /* reverse transfer timeout */
843e19887f64dde75055cf8842fc4db2171eff45johnlev};
843e19887f64dde75055cf8842fc4db2171eff45johnlev
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/*
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab * driver support for 32-bit applications
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#ifdef _KERNEL
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabstruct prn_interface_info32 {
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab uint_t if_len; /* length of buffer */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab uint_t if_rlen; /* actual length of info string */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab caddr32_t if_data; /* buffer address */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab};
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabstruct prn_1284_device_id32 {
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab uint_t id_len; /* length of buffer */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab uint_t id_rlen; /* actual length of device id string */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab caddr32_t id_data; /* buffer address */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab};
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#endif
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#ifdef __cplusplus
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab}
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#endif
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#endif /* _SYS_PRNIO_H */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab