/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (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 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_CONSMS_H #define _SYS_CONSMS_H #pragma ident "%Z%%M% %I% %E% SMI" #ifdef __cplusplus extern "C" { #endif /* * Those default values are taken from lower mice drivers. */ #define CONSMS_SR_DEFAULT_HEIGHT 768 #define CONSMS_SR_DEFAULT_WIDTH 1024 #define CONSMS_PARMS_DEFAULT_JITTER 0 #define CONSMS_PARMS_DEFAULT_SPEED_LAW 0 #define CONSMS_PARMS_DEFAULT_SPEED_LIMIT 48 #define CONSMS_MAX(x, y) ((x) > (y) ? (x) : (y)) /* * These states are only used when an underlying mouse * is being linked under the virtual mouse (/dev/mouse), * in order to set some cached state variables. And these * states go in a sequential way. */ typedef enum { LQS_START = 0, /* begin of initializing */ LQS_BUTTON_COUNT_PENDING = 1, /* wait for button count ACK */ LQS_WHEEL_COUNT_PENDING = 2, /* wait for wheel count ACK */ LQS_SET_VUID_FORMAT_PENDING = 3, /* wait for set format ACK */ LQS_SET_WHEEL_STATE_PENDING = 4, /* wait for wheel state ACK */ LQS_SET_PARMS_PENDING = 5, /* wait for parameters ACK */ LQS_SET_RESOLUTION_PENDING = 6, /* wait for resolution ACK */ LQS_DONE = 7 /* mark end of initialization */ } consms_lq_state_t; struct consms_lq; typedef void (*ioc_reply_func_t)(struct consms_lq *, mblk_t *); /* * This structure contains information * for each underlying physical mouse * (lower queue). */ typedef struct consms_lq { struct consms_lq *lq_next; /* next lower queue */ consms_lq_state_t lq_state; /* used during initializing */ queue_t *lq_queue; /* lower write q */ ioc_reply_func_t lq_ioc_reply_func; /* reply function */ mblk_t *lq_pending_plink; /* pending msg */ queue_t *lq_pending_queue; /* upper write q */ int lq_num_buttons; /* number of buttons */ int lq_num_wheels; /* number of wheels */ ushort_t lq_wheel_state_bf; /* enabled/disabled */ } consms_lq_t; /* * This structure is used to remember the * COPYIN and COPYOUT request mp from lower * queue during transparent ioctl. */ typedef struct consms_response { struct consms_response *rsp_next; mblk_t *rsp_mp; /* response mp (M_COPYIN or M_COPYOUT) */ queue_t *rsp_queue; /* lower read q giving this response */ } consms_response_t; /* * This structure contains information for * each ioctl message from upper layer * (usually, X server). */ typedef struct consms_msg { struct consms_msg *msg_next; uint_t msg_id; /* taken from request message */ int msg_num_requests; /* # of lower queues dispatched */ int msg_num_responses; /* # of responses from lower queues */ mblk_t *msg_request; /* pending request message from upper */ queue_t *msg_queue; /* upper write q used for qrely() */ /* * ack_mp is just used for IOCACK * and rsp_list is only used for COPYIN * or COPYOUT responses from lowers */ mblk_t *msg_ack_mp; /* IOCACK from lower */ consms_response_t *msg_rsp_list; /* responses from lower */ } consms_msg_t; /* * This structure contains information * about virtual mouse (lower queue list, * and virtual mouse state variables). */ typedef struct consms_state { consms_lq_t *consms_lqs; /* lower queues */ int consms_num_lqs; /* # of lower queues */ /* virtual mouse state variables */ int consms_vuid_format; /* NATIVE or VUID_FIRM */ int consms_num_buttons; /* max number of buttons */ int consms_num_wheels; /* max number of wheels */ ushort_t consms_wheel_state_bf; /* wheel enabled or disabled */ Ms_parms consms_ms_parms; /* parameters for usb mouse */ Ms_screen_resolution consms_ms_sr; /* for absolute mouse */ } consms_state_t; #ifdef __cplusplus } #endif #endif /* _SYS_CONSMS_H */