xref: /titanic_41/usr/src/cmd/pcitool/pcitool_ui.h (revision d5ace9454616652a717c9831d949dffa319381f9)
1*d5ace945SErwin T Tsaur /*
2*d5ace945SErwin T Tsaur  * CDDL HEADER START
3*d5ace945SErwin T Tsaur  *
4*d5ace945SErwin T Tsaur  * The contents of this file are subject to the terms of the
5*d5ace945SErwin T Tsaur  * Common Development and Distribution License (the "License").
6*d5ace945SErwin T Tsaur  * You may not use this file except in compliance with the License.
7*d5ace945SErwin T Tsaur  *
8*d5ace945SErwin T Tsaur  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*d5ace945SErwin T Tsaur  * or http://www.opensolaris.org/os/licensing.
10*d5ace945SErwin T Tsaur  * See the License for the specific language governing permissions
11*d5ace945SErwin T Tsaur  * and limitations under the License.
12*d5ace945SErwin T Tsaur  *
13*d5ace945SErwin T Tsaur  * When distributing Covered Code, include this CDDL HEADER in each
14*d5ace945SErwin T Tsaur  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*d5ace945SErwin T Tsaur  * If applicable, add the following below this CDDL HEADER, with the
16*d5ace945SErwin T Tsaur  * fields enclosed by brackets "[]" replaced with your own identifying
17*d5ace945SErwin T Tsaur  * information: Portions Copyright [yyyy] [name of copyright owner]
18*d5ace945SErwin T Tsaur  *
19*d5ace945SErwin T Tsaur  * CDDL HEADER END
20*d5ace945SErwin T Tsaur  */
21*d5ace945SErwin T Tsaur /*
22*d5ace945SErwin T Tsaur  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23*d5ace945SErwin T Tsaur  * Use is subject to license terms.
24*d5ace945SErwin T Tsaur  */
25*d5ace945SErwin T Tsaur 
26*d5ace945SErwin T Tsaur #ifndef	_PCITOOL_UI_H
27*d5ace945SErwin T Tsaur #define	_PCITOOL_UI_H
28*d5ace945SErwin T Tsaur 
29*d5ace945SErwin T Tsaur #ifdef	__cplusplus
30*d5ace945SErwin T Tsaur extern "C" {
31*d5ace945SErwin T Tsaur #endif
32*d5ace945SErwin T Tsaur 
33*d5ace945SErwin T Tsaur /*
34*d5ace945SErwin T Tsaur  * This defines the interface between the pcitool_ui.c module which parses the
35*d5ace945SErwin T Tsaur  * commandline options, and the other pcitool modules which process them.
36*d5ace945SErwin T Tsaur  */
37*d5ace945SErwin T Tsaur #define	SUCCESS	0	/* This does not conflict with errno values. */
38*d5ace945SErwin T Tsaur #define	FAILURE	-1	/* General failure. */
39*d5ace945SErwin T Tsaur 
40*d5ace945SErwin T Tsaur /*
41*d5ace945SErwin T Tsaur  * Flags which get set in the flags field of pcitool_uiargs_t. There is a flag
42*d5ace945SErwin T Tsaur  * for each option specified on the commandline.
43*d5ace945SErwin T Tsaur  */
44*d5ace945SErwin T Tsaur #define	NEXUS_FLAG	0x1
45*d5ace945SErwin T Tsaur #define	LEAF_FLAG	0x2
46*d5ace945SErwin T Tsaur #define	INTR_FLAG	0x4
47*d5ace945SErwin T Tsaur #define	PROBEDEV_FLAG	0x8		/* Probe a specific device */
48*d5ace945SErwin T Tsaur #define	PROBETREE_FLAG	0x10		/* Probe all devs on a tree */
49*d5ace945SErwin T Tsaur #define	PROBEALL_FLAG	0x20		/* Probe devs on all trees */
50*d5ace945SErwin T Tsaur #define	PROBERNG_FLAG	0x40		/* Probe devs within bus ranges */
51*d5ace945SErwin T Tsaur 					/* - mod to PROBEALL and PROBETREE */
52*d5ace945SErwin T Tsaur #define	PROBE_FLAGS	(PROBEDEV_FLAG | PROBETREE_FLAG | PROBEALL_FLAG | \
53*d5ace945SErwin T Tsaur 				PROBERNG_FLAG)
54*d5ace945SErwin T Tsaur #define	ALL_COMMANDS	(NEXUS_FLAG | LEAF_FLAG | INTR_FLAG | PROBE_FLAGS)
55*d5ace945SErwin T Tsaur #define	READ_FLAG	0x80
56*d5ace945SErwin T Tsaur #define	WRITE_FLAG	0x100
57*d5ace945SErwin T Tsaur #define	OFFSET_FLAG	0x200
58*d5ace945SErwin T Tsaur #define	SIZE_FLAG	0x400
59*d5ace945SErwin T Tsaur #define	ENDIAN_FLAG	0x800
60*d5ace945SErwin T Tsaur #define	BYTEDUMP_FLAG	0x1000
61*d5ace945SErwin T Tsaur #define	CHARDUMP_FLAG	0x2000
62*d5ace945SErwin T Tsaur #define	ERRCONT_FLAG	0x4000
63*d5ace945SErwin T Tsaur #define	VERBOSE_FLAG	0x8000
64*d5ace945SErwin T Tsaur #define	QUIET_FLAG	0x10000
65*d5ace945SErwin T Tsaur #define	LOOP_FLAG	0x20000
66*d5ace945SErwin T Tsaur #define	SHOWCTLR_FLAG	0x40000
67*d5ace945SErwin T Tsaur #define	SETGRP_FLAG	0x80000
68*d5ace945SErwin T Tsaur 
69*d5ace945SErwin T Tsaur /* Values specified by suboption parser. */
70*d5ace945SErwin T Tsaur #define	BANK_SPEC_FLAG	(0x10000ULL << 32)
71*d5ace945SErwin T Tsaur #define	BASE_SPEC_FLAG	(0x20000ULL << 32)
72*d5ace945SErwin T Tsaur #define	BUS_SPEC_FLAG	(0x40000ULL << 32)
73*d5ace945SErwin T Tsaur #define	DEV_SPEC_FLAG	(0x80000ULL << 32)
74*d5ace945SErwin T Tsaur #define	FUNC_SPEC_FLAG	(0x100000ULL << 32)
75*d5ace945SErwin T Tsaur #define	CPU_SPEC_FLAG	(0x200000ULL << 32)
76*d5ace945SErwin T Tsaur #define	INO_SPEC_FLAG	(0x400000ULL << 32)
77*d5ace945SErwin T Tsaur 
78*d5ace945SErwin T Tsaur /* Macros for a few heavily-used flags. */
79*d5ace945SErwin T Tsaur #define	IS_VERBOSE(flags)	(flags & VERBOSE_FLAG)
80*d5ace945SErwin T Tsaur #define	IS_QUIET(flags)		(flags & QUIET_FLAG)
81*d5ace945SErwin T Tsaur #define	IS_LOOP(flags)		(flags & LOOP_FLAG)
82*d5ace945SErwin T Tsaur 
83*d5ace945SErwin T Tsaur /*
84*d5ace945SErwin T Tsaur  * This is the structure of flags and parsed values returned from pcitool_ui.c
85*d5ace945SErwin T Tsaur  */
86*d5ace945SErwin T Tsaur typedef struct uiargs {
87*d5ace945SErwin T Tsaur 	uint64_t	write_value;
88*d5ace945SErwin T Tsaur 	uint64_t	base_address;
89*d5ace945SErwin T Tsaur 	uint64_t	flags;
90*d5ace945SErwin T Tsaur 	uint32_t	offset;
91*d5ace945SErwin T Tsaur 	uint32_t	bytedump_amt;
92*d5ace945SErwin T Tsaur 	uint32_t	intr_cpu;
93*d5ace945SErwin T Tsaur 	uint8_t		bus;
94*d5ace945SErwin T Tsaur 	uint8_t		device;
95*d5ace945SErwin T Tsaur 	uint8_t		function;
96*d5ace945SErwin T Tsaur 	uint8_t		size;
97*d5ace945SErwin T Tsaur 	uint8_t		bank;
98*d5ace945SErwin T Tsaur 	uint8_t		intr_ino;
99*d5ace945SErwin T Tsaur 	boolean_t	big_endian;
100*d5ace945SErwin T Tsaur } pcitool_uiargs_t;
101*d5ace945SErwin T Tsaur 
102*d5ace945SErwin T Tsaur /* Exported functions. */
103*d5ace945SErwin T Tsaur 
104*d5ace945SErwin T Tsaur int get_commandline_args(int argc, char *argv[], pcitool_uiargs_t *parsed_args);
105*d5ace945SErwin T Tsaur void usage(char *name);
106*d5ace945SErwin T Tsaur 
107*d5ace945SErwin T Tsaur #ifdef	__cplusplus
108*d5ace945SErwin T Tsaur }
109*d5ace945SErwin T Tsaur #endif
110*d5ace945SErwin T Tsaur 
111*d5ace945SErwin T Tsaur #endif	/* _PCITOOL_UI_H */
112