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