xref: /onnv-gate/usr/src/cmd/picl/plugins/sun4u/psvc/psvcobj/psvc_objects.h (revision 958:e23be1072975)
10Sstevel@tonic-gate /*
20Sstevel@tonic-gate  * CDDL HEADER START
30Sstevel@tonic-gate  *
40Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
50Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
60Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
70Sstevel@tonic-gate  * with the License.
80Sstevel@tonic-gate  *
90Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
100Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
110Sstevel@tonic-gate  * See the License for the specific language governing permissions
120Sstevel@tonic-gate  * and limitations under the License.
130Sstevel@tonic-gate  *
140Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
150Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
160Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
170Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
180Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
190Sstevel@tonic-gate  *
200Sstevel@tonic-gate  * CDDL HEADER END
210Sstevel@tonic-gate  */
220Sstevel@tonic-gate /*
23796Smathue  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
240Sstevel@tonic-gate  * Use is subject to license terms.
250Sstevel@tonic-gate  */
260Sstevel@tonic-gate 
270Sstevel@tonic-gate #ifndef	_PSVC_OBJECTS_H
280Sstevel@tonic-gate #define	_PSVC_OBJECTS_H
290Sstevel@tonic-gate 
300Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
310Sstevel@tonic-gate 
320Sstevel@tonic-gate #ifdef	__cplusplus
330Sstevel@tonic-gate extern "C" {
340Sstevel@tonic-gate #endif
350Sstevel@tonic-gate 
360Sstevel@tonic-gate /*
370Sstevel@tonic-gate  * Platform Services Framework definitions
380Sstevel@tonic-gate  */
390Sstevel@tonic-gate 
400Sstevel@tonic-gate #include <sys/types.h>
410Sstevel@tonic-gate #include <pthread.h>
420Sstevel@tonic-gate 
430Sstevel@tonic-gate typedef struct psvc_opaque *psvc_opaque_t;
440Sstevel@tonic-gate 
450Sstevel@tonic-gate /* Return values */
460Sstevel@tonic-gate #define	PSVC_SUCCESS 0
470Sstevel@tonic-gate #define	PSVC_FAILURE -1
480Sstevel@tonic-gate #define	PSVC_NOT_USED -1
490Sstevel@tonic-gate 
500Sstevel@tonic-gate /* Class definitions */
510Sstevel@tonic-gate #define	PSVC_TEMPERATURE_SENSOR_CLASS 0
520Sstevel@tonic-gate #define	PSVC_FAN_CLASS 1
530Sstevel@tonic-gate #define	PSVC_LED_CLASS 2
540Sstevel@tonic-gate #define	PSVC_SYSTEM_CLASS 3
550Sstevel@tonic-gate #define	PSVC_DIGITAL_SENSOR_CLASS 4
560Sstevel@tonic-gate #define	PSVC_DIGITAL_CONTROL_CLASS 5
570Sstevel@tonic-gate #define	PSVC_BOOLEAN_GPIO_CLASS 6
580Sstevel@tonic-gate #define	PSVC_FAN_TACHOMETER_CLASS 7
590Sstevel@tonic-gate #define	PSVC_ON_OFF_SWITCH_CLASS 8
600Sstevel@tonic-gate #define	PSVC_KEYSWITCH_CLASS 9
610Sstevel@tonic-gate #define	PSVC_8BIT_GPIO_CLASS 10
620Sstevel@tonic-gate #define	PSVC_PHYSICAL_DEVICE_CLASS 11
630Sstevel@tonic-gate 
640Sstevel@tonic-gate #define	PSVC_CHASSIS "SYSTEM"
650Sstevel@tonic-gate 
660Sstevel@tonic-gate /* Associations */
670Sstevel@tonic-gate #define	PSVC_PRESENCE_SENSOR 0
680Sstevel@tonic-gate #define	PSVC_FAN_ONOFF_SENSOR 1
690Sstevel@tonic-gate #define	PSVC_FAN_SPEED_TACHOMETER 2
700Sstevel@tonic-gate #define	PSVC_FAN_PRIM_SEC_SELECTOR 3
710Sstevel@tonic-gate #define	PSVC_DEV_TEMP_SENSOR 4
720Sstevel@tonic-gate #define	PSVC_FAN_DRIVE_CONTROL 5
730Sstevel@tonic-gate #define	PSVC_KS_NORMAL_POS_SENSOR 6
740Sstevel@tonic-gate #define	PSVC_KS_DIAG_POS_SENSOR 7
750Sstevel@tonic-gate #define	PSVC_KS_LOCK_POS_SENSOR 8
760Sstevel@tonic-gate #define	PSVC_KS_OFF_POS_SENSOR 9
770Sstevel@tonic-gate #define	PSVC_SLOT_FAULT_LED 10
780Sstevel@tonic-gate #define	PSVC_SLOT_REMOVE_LED 11
790Sstevel@tonic-gate #define	PSVC_TS_OVERTEMP_LED 12
800Sstevel@tonic-gate #define	PSVC_PS_I_SENSOR 13
810Sstevel@tonic-gate #define	PSVC_DEV_FAULT_SENSOR 14
820Sstevel@tonic-gate #define	PSVC_DEV_FAULT_LED 15
830Sstevel@tonic-gate #define	PSVC_TABLE 16
840Sstevel@tonic-gate #define	PSVC_PARENT 17
850Sstevel@tonic-gate #define	PSVC_CPU 18
860Sstevel@tonic-gate #define	PSVC_ALTERNATE 19
870Sstevel@tonic-gate #define	PSVC_HOTPLUG_ENABLE_SWITCH 20
880Sstevel@tonic-gate #define	PSVC_PS 21
890Sstevel@tonic-gate #define	PSVC_FAN 22
900Sstevel@tonic-gate #define	PSVC_TS 23
910Sstevel@tonic-gate #define	PSVC_DISK 24
920Sstevel@tonic-gate #define	PSVC_LED 25
930Sstevel@tonic-gate #define	PSVC_FSP_LED 26
940Sstevel@tonic-gate #define	PSVC_KEYSWITCH 27
950Sstevel@tonic-gate #define	PSVC_PCI_CARD 28
960Sstevel@tonic-gate #define	PSVC_PHYSICAL_DEVICE 29
970Sstevel@tonic-gate #define	PSVC_DEV_TYPE_SENSOR 30
980Sstevel@tonic-gate #define	PSVC_FAN_TRAY_FANS 31
990Sstevel@tonic-gate #define	PSVC_FRU 32
1000Sstevel@tonic-gate 
1010Sstevel@tonic-gate 
1020Sstevel@tonic-gate /* Device "feature" definitions */
103796Smathue #define	PSVC_DEV_PERM		0x0000000000000001ULL /* Permanently in sys */
104796Smathue #define	PSVC_DEV_HOTPLUG	0x0000000000000002ULL /* Hot-pluggable device */
105796Smathue #define	PSVC_DEV_OPTION	0x0000000000000004ULL /* Option (not hot-pluggable) */
106796Smathue #define	PSVC_DEV_PRIMARY	0x0000000000000010ULL /* Primary device */
107796Smathue #define	PSVC_DEV_SECONDARY	0x0000000000000020ULL /* Secondary device */
108796Smathue #define	PSVC_DEV_RDONLY    	0x0000000000000100ULL /* Read only device */
109796Smathue #define	PSVC_DEV_RDWR		0x0000000000000400ULL /* read/write device */
110796Smathue #define	PSVC_DEV_FRU		0x0000000000000800ULL /* device is a FRU */
111796Smathue #define	PSVC_LOW_WARN		0x0000000000001000ULL
112796Smathue #define	PSVC_LOW_SHUT		0x0000000000002000ULL
113796Smathue #define	PSVC_HIGH_WARN		0x0000000000004000ULL
114796Smathue #define	PSVC_HIGH_SHUT		0x0000000000008000ULL
115796Smathue #define	PSVC_CONVERSION_TABLE	0x0000000000010000ULL /* Conversion table */
116796Smathue #define	PSVC_OPT_TEMP		0x0000000000020000ULL /* Optimal Temperature */
117796Smathue #define	PSVC_HW_LOW_SHUT	0x0000000000040000ULL
118796Smathue #define	PSVC_HW_HIGH_SHUT	0x0000000000080000ULL
119796Smathue #define	PSVC_FAN_DRIVE_PR	0x0001000000000000ULL
120796Smathue #define	PSVC_TEMP_DRIVEN	0x0002000000000000ULL /* Temperature driven */
121796Smathue #define	PSVC_SPEED_CTRL_PR	0x0004000000000000ULL /* Variable speed ctrl */
122796Smathue #define	PSVC_FAN_ON_OFF		0x0008000000000000ULL /* On/off fans */
123796Smathue #define	PSVC_CLOSED_LOOP_CTRL	0x0010000000000000ULL /* Closed loop control */
124796Smathue #define	PSVC_FAN_DRIVE_TABLE_PR 0x0010000000000000ULL /* oC to fan input tbl */
125796Smathue #define	PSVC_DIE_TEMP		0x0001000000000000ULL
126796Smathue #define	PSVC_AMB_TEMP		0x0002000000000000ULL
127796Smathue #define	PSVC_DIGI_SENSOR	0x0100000000000000ULL /* A to D converter */
128796Smathue #define	PSVC_BI_STATE		0x0001000000000000ULL
129796Smathue #define	PSVC_TRI_STATE		0x0002000000000000ULL
130796Smathue #define	PSVC_GREEN		0x0010000000000000ULL
131796Smathue #define	PSVC_AMBER		0x0020000000000000ULL
132796Smathue #define	PSVC_OUTPUT		0x0100000000000000ULL
133796Smathue #define	PSVC_INPUT		0x0200000000000000ULL
134796Smathue #define	PSVC_BIDIR		0x0400000000000000ULL
135796Smathue #define	PSVC_BIT_POS	0x0001000000000000ULL /* One bit per key positon */
136796Smathue #define	PSVC_VAL_POS	0x0002000000000000ULL /* One value per key position */
137796Smathue #define	PSVC_NORMAL_POS_AV	0x0010000000000000ULL
138796Smathue #define	PSVC_DIAG_POS_AV	0x0020000000000000ULL
139796Smathue #define	PSVC_LOCK_POS_AV	0x0040000000000000ULL
140796Smathue #define	PSVC_OFF_POS_AV		0x0080000000000000ULL
141796Smathue #define	PSVC_GPIO_PORT		0x0001000000000000ULL
142796Smathue #define	PSVC_GPIO_REG		0x0002000000000000ULL
1430Sstevel@tonic-gate 
1440Sstevel@tonic-gate 
1450Sstevel@tonic-gate /* LED colors */
1460Sstevel@tonic-gate #define	PSVC_LED_GREEN "GREEN"
1470Sstevel@tonic-gate #define	PSVC_LED_AMBER "AMBER"
1480Sstevel@tonic-gate #define	PSVC_LED_WHITE "WHITE"
1490Sstevel@tonic-gate #define	PSVC_LED_RED "RED"
1500Sstevel@tonic-gate 
1510Sstevel@tonic-gate /* States */
1520Sstevel@tonic-gate #define	PSVC_OK	"OK"
1530Sstevel@tonic-gate #define	PSVC_ERROR	"ERROR"
1540Sstevel@tonic-gate #define	PSVC_DEGRADED "DEGRADED"
1550Sstevel@tonic-gate #define	PSVC_STOPPED "STOPPED"
1560Sstevel@tonic-gate #define	PSVC_OVERHEATING "OVERHEATING"
1570Sstevel@tonic-gate #define	PSVC_OFF "OFF"
1580Sstevel@tonic-gate #define	PSVC_ON "ON"
1590Sstevel@tonic-gate #define	PSVC_HOTPLUGGED "HOTPLUGGED"	/* hotplugged, but not yet enabled */
1600Sstevel@tonic-gate 
1610Sstevel@tonic-gate /*
1620Sstevel@tonic-gate  * The Following States are for the Locking Object created by PSARC 2002/003
1630Sstevel@tonic-gate  */
1640Sstevel@tonic-gate #define	PSVC_LOCK_RUNNING "running"
1650Sstevel@tonic-gate #define	PSVC_LOCK_ENABLED "enabled"
1660Sstevel@tonic-gate #define	PSVC_LOCK_DISABLED "disabled"
1670Sstevel@tonic-gate 
1680Sstevel@tonic-gate /* LED states */
1690Sstevel@tonic-gate #define	PSVC_LED_OFF PSVC_OFF
1700Sstevel@tonic-gate #define	PSVC_LED_ON PSVC_ON
1710Sstevel@tonic-gate #define	PSVC_LED_SLOW_BLINK "SLOW_BLINK"
1720Sstevel@tonic-gate #define	PSVC_LED_FAST_BLINK "FAST_BLINK"
1730Sstevel@tonic-gate 
1740Sstevel@tonic-gate /* On/Off switch states */
1750Sstevel@tonic-gate #define	PSVC_SWITCH_OFF PSVC_OFF
1760Sstevel@tonic-gate #define	PSVC_SWITCH_ON PSVC_ON
1770Sstevel@tonic-gate 
1780Sstevel@tonic-gate /* Keyswitch positions */
1790Sstevel@tonic-gate #define	PSVC_OFF_POS PSVC_OFF
1800Sstevel@tonic-gate #define	PSVC_NORMAL_POS "NORMAL"
1810Sstevel@tonic-gate #define	PSVC_LOCKED_POS "LOCKED"
1820Sstevel@tonic-gate #define	PSVC_DIAG_POS "DIAG"
1830Sstevel@tonic-gate 
1840Sstevel@tonic-gate /* Fault strings */
1850Sstevel@tonic-gate #define	PSVC_NO_FAULT "NO_FAULT"
1860Sstevel@tonic-gate #define	PSVC_GEN_FAULT "DEVICE_FAULT"
1870Sstevel@tonic-gate #define	PSVC_PS_LLO_FLT "PS_LLO_FAULT"
1880Sstevel@tonic-gate #define	PSVC_PS_FAN_FLT "PS_FAN_FAULT"
1890Sstevel@tonic-gate #define	PSVC_PS_TEMP_FLT "PS_TEMP_FAULT"
1900Sstevel@tonic-gate #define	PSVC_PS_ISHARE_FLT "PS_ISHARE_FAULT"
1910Sstevel@tonic-gate #define	PSVC_PS_TYPE_FLT "PS_TYPE_FLT"
1920Sstevel@tonic-gate #define	PSVC_TEMP_LO_WARN "TEMP_LOW_WARNING"
1930Sstevel@tonic-gate #define	PSVC_TEMP_LO_SHUT "TEMP_LOW_SHUTDOWN"
1940Sstevel@tonic-gate #define	PSVC_TEMP_HI_WARN "TEMP_HIGH_WARNING"
1950Sstevel@tonic-gate #define	PSVC_TEMP_HI_SHUT "TEMP_HIGH_SHUTDOWN"
1960Sstevel@tonic-gate 
1970Sstevel@tonic-gate /*
1980Sstevel@tonic-gate  * When Adding Attributes be sure to add the string value of the
1990Sstevel@tonic-gate  * Attribute to attr_str_tab in psvc_objects_class.h
2000Sstevel@tonic-gate  */
2010Sstevel@tonic-gate 
2020Sstevel@tonic-gate /* Attribute names */
2030Sstevel@tonic-gate #define	PSVC_CLASS_ATTR				0	/* "_class" */
2040Sstevel@tonic-gate #define	PSVC_SUBCLASS_ATTR			1	/* "Subclass" */
2050Sstevel@tonic-gate #define	PSVC_PRESENCE_ATTR			2	/* "Presence" */
2060Sstevel@tonic-gate #define	PSVC_PREV_PRESENCE_ATTR			3	/* Previous-presence */
2070Sstevel@tonic-gate #define	PSVC_STATE_ATTR				4	/* "State" */
2080Sstevel@tonic-gate #define	PSVC_PREV_STATE_ATTR			5	/* "Previous-state" */
2090Sstevel@tonic-gate #define	PSVC_ENABLE_ATTR			6	/* "Enabled" */
2100Sstevel@tonic-gate #define	PSVC_FAULTID_ATTR			7	/* "FaultInformation" */
2110Sstevel@tonic-gate #define	PSVC_FEATURES_ATTR			8	/* "Features" */
2120Sstevel@tonic-gate #define	PSVC_LABEL_ATTR				9	/* "Label" */
2130Sstevel@tonic-gate #define	PSVC_FRUID_ATTR				10	/* "Fruid" */
2140Sstevel@tonic-gate #define	PSVC_INSTANCE_ATTR			11	/* "Instance" */
2150Sstevel@tonic-gate #define	PSVC_LED_COLOR_ATTR			12	/* "Led-color" */
2160Sstevel@tonic-gate #define	PSVC_LO_WARN_ATTR			13	/* "Lo-warn" */
2170Sstevel@tonic-gate #define	PSVC_LO_SHUT_ATTR			14	/* "Lo-shut" */
2180Sstevel@tonic-gate #define	PSVC_HI_WARN_ATTR			15	/* "Hi-warn" */
2190Sstevel@tonic-gate #define	PSVC_HI_SHUT_ATTR			16	/* "Hi-shut" */
2200Sstevel@tonic-gate #define	PSVC_OPTIMAL_TEMP_ATTR			17	/* "Opt-temp" */
2210Sstevel@tonic-gate #define	PSVC_HW_HI_SHUT_ATTR			18	/* "Hw-hi-shut" */
2220Sstevel@tonic-gate #define	PSVC_HW_LO_SHUT_ATTR			19	/* "Hw-lo-shut" */
2230Sstevel@tonic-gate #define	PSVC_SETPOINT_ATTR			20	/* "Setpoint" */
2240Sstevel@tonic-gate #define	PSVC_HYSTERESIS_ATTR			21	/* "Hysteresis" */
2250Sstevel@tonic-gate #define	PSVC_LOOPGAIN_ATTR			22	/* "Loopgain" */
2260Sstevel@tonic-gate #define	PSVC_LOOPBIAS_ATTR			23	/* "Loopbias" */
2270Sstevel@tonic-gate #define	PSVC_TEMP_DIFFERENTIAL_ATTR		24 /* "Temp_differential" */
2280Sstevel@tonic-gate #define	PSVC_TEMP_DIFFERENTIAL_INDEX_ATTR	25 /* Temp_differential_index */
2290Sstevel@tonic-gate #define	PSVC_SENSOR_VALUE_ATTR			26	/* "Sensor-value" */
2300Sstevel@tonic-gate #define	PSVC_GPIO_VALUE_ATTR			27	/* "Gpio-value" */
2310Sstevel@tonic-gate #define	PSVC_GPIO_BITS				28	/* "#Bits" */
2320Sstevel@tonic-gate #define	PSVC_CONTROL_VALUE_ATTR			29	/* "Control-value" */
2330Sstevel@tonic-gate #define	PSVC_LED_STATE_ATTR			30	/* "Led-state" */
2340Sstevel@tonic-gate #define	PSVC_SWITCH_STATE_ATTR			31	/* "Switch-state" */
2350Sstevel@tonic-gate #define	PSVC_PROBE_RESULT_ATTR			32	/* "Probe-result" */
2360Sstevel@tonic-gate #define	PSVC_TABLE_VALUE_ATTR			33	/* "Table_value" */
2370Sstevel@tonic-gate #define	PSVC_ASSOC_ID_ATTR			34	/* "Assoc_id" */
2380Sstevel@tonic-gate #define	PSVC_ASSOC_MATCHES_ATTR			35	/* "Assoc_matches" */
2390Sstevel@tonic-gate #define	PSVC_ADDR_SPEC_ATTR			36	/* "Addr-spec" */
2400Sstevel@tonic-gate #define	PSVC_OBJECT_ID_ATTR			37	/* "Object-id" */
2410Sstevel@tonic-gate #define	PSVC_LIT_COUNT_ATTR			38	/* "Led-lit-count" */
2420Sstevel@tonic-gate #define	PSVC_FRU_INFO_ATTR			39	/* "FRU-info" */
2430Sstevel@tonic-gate 
2440Sstevel@tonic-gate #define	PSVC_LED_IS_LOCATOR_ATTR		40	/* "IsLocator" */
2450Sstevel@tonic-gate #define	PSVC_LED_LOCATOR_NAME_ATTR		41	/* "LocatorName" */
2460Sstevel@tonic-gate #define	PSVC_LOCATOR_TRUE	"true"
2470Sstevel@tonic-gate 
2480Sstevel@tonic-gate /* PSVC_PRESENCE_ATTR values */
2490Sstevel@tonic-gate #define	PSVC_ABSENT 0
2500Sstevel@tonic-gate #define	PSVC_PRESENT 1
2510Sstevel@tonic-gate 
2520Sstevel@tonic-gate /* PSVC_ENABLE_ATTR values */
2530Sstevel@tonic-gate #define	PSVC_DISABLED 0
2540Sstevel@tonic-gate #define	PSVC_ENABLED 1
2550Sstevel@tonic-gate 
2560Sstevel@tonic-gate /* PSVC_PROBE_RESULT_ATTR values */
2570Sstevel@tonic-gate #define	PSVC_DEV_PROBE_SUCCESS PSVC_SUCCESS
2580Sstevel@tonic-gate #define	PSVC_DEV_PROBE_FAILED  PSVC_FAILURE
2590Sstevel@tonic-gate 
2600Sstevel@tonic-gate /* Size of fan temperature differential array */
2610Sstevel@tonic-gate #define	PSVC_MAXERRORS 2
2620Sstevel@tonic-gate 
2630Sstevel@tonic-gate /* Address specification macros */
2640Sstevel@tonic-gate #define	PSVC_VERSION 0		/* Current version */
2650Sstevel@tonic-gate 
2660Sstevel@tonic-gate #define	PSVC_VERSION_SHIFT 0
2670Sstevel@tonic-gate #define	PSVC_ACTIVE_LOW_SHIFT 7
2680Sstevel@tonic-gate #define	PSVC_BIT_NUM_SHIFT 4
2690Sstevel@tonic-gate #define	PSVC_INVERT_SHIFT 4
2700Sstevel@tonic-gate #define	PSVC_PORT_SHIFT 8
2710Sstevel@tonic-gate #define	PSVC_BITSHIFT_SHIFT 12
2720Sstevel@tonic-gate #define	PSVC_BYTEMASK_SHIFT 16
2730Sstevel@tonic-gate #define	PSVC_REG_SHIFT 24
2740Sstevel@tonic-gate #define	PSVC_TYPE_SHIFT 32
2750Sstevel@tonic-gate #define	PSVC_BUSADDR_SHIFT 40
2760Sstevel@tonic-gate #define	PSVC_BUSNUM_SHIFT 48
2770Sstevel@tonic-gate #define	PSVC_CNTLR_SHIFT 56
2780Sstevel@tonic-gate 
2790Sstevel@tonic-gate #define	PSVC_GET_VERSION(X) ((X >> PSVC_VERSION_SHIFT) & 0xF)
2800Sstevel@tonic-gate #define	PSVC_IS_ACTIVE_LOW(X) ((X >> PSVC_ACTIVE_LOW_SHIFT) & 0x1)
2810Sstevel@tonic-gate #define	PSVC_GET_BIT_NUM(X)  ((X >> PSVC_BIT_NUM_SHIFT) & 0x7)
2820Sstevel@tonic-gate #define	PSVC_HP_INVERT(X) (((X >> PSVC_INVERT_SHIFT) & 0x7) == 1)
2830Sstevel@tonic-gate #define	PSVC_GET_ASPEC_PORT(X) ((X >> PSVC_PORT_SHIFT) & 0xF)
2840Sstevel@tonic-gate #define	PSVC_GET_ASPEC_BITSHIFT(X) ((X >> PSVC_BITSHIFT_SHIFT) & 0xF)
2850Sstevel@tonic-gate #define	PSVC_GET_ASPEC_BYTEMASK(X) ((X >> PSVC_BYTEMASK_SHIFT) & 0xFF)
2860Sstevel@tonic-gate #define	PSVC_GET_ASPEC_REG(X) ((X >> PSVC_REG_SHIFT) & 0xFF)
2870Sstevel@tonic-gate #define	PSVC_GET_ASPEC_TYPE(X) ((X >> PSVC_TYPE_SHIFT) & 0xFF)
2880Sstevel@tonic-gate #define	PSVC_GET_ASPEC_BUSADDR(X) ((X >> PSVC_BUSADDR_SHIFT) & 0xFF)
2890Sstevel@tonic-gate #define	PSVC_GET_ASPEC_BUSNUM(X) ((X >> PSVC_BUSNUM_SHIFT) & 0xFF)
2900Sstevel@tonic-gate #define	PSVC_GET_ASPEC_CNTLR(X) ((X >> PSVC_CNTLR_SHIFT) & 0xFF)
2910Sstevel@tonic-gate 
2920Sstevel@tonic-gate 
2930Sstevel@tonic-gate /* Address spec device_types */
2940Sstevel@tonic-gate #define	PSVC_I2C_AT24		0
2950Sstevel@tonic-gate #define	PSVC_I2C_HPC3130	1
2960Sstevel@tonic-gate #define	PSVC_I2C_LM75		2
2970Sstevel@tonic-gate #define	PSVC_I2C_LTC1427	3
2980Sstevel@tonic-gate #define	PSVC_I2C_MAX1617	4
2990Sstevel@tonic-gate #define	PSVC_I2C_PCF8574	5
3000Sstevel@tonic-gate #define	PSVC_I2C_PCF8591	6
3010Sstevel@tonic-gate #define	PSVC_I2C_SSC050		7
3020Sstevel@tonic-gate #define	PSVC_I2C_TDA8444	8
3030Sstevel@tonic-gate #define	PSVC_I2C_SSC100		9
3040Sstevel@tonic-gate 
3050Sstevel@tonic-gate /* numbers of attempts for retrying requests over the I2C bus */
306*958Sjfrank #define	PSVC_NUM_OF_RETRIES	5
307*958Sjfrank #define	PSVC_THRESHOLD_COUNTER	5
3080Sstevel@tonic-gate 
3090Sstevel@tonic-gate /* Prototypes */
3100Sstevel@tonic-gate #ifndef LIBRARY_BUILD
3110Sstevel@tonic-gate int32_t psvc_init(psvc_opaque_t *);
3120Sstevel@tonic-gate int32_t psvc_fini(psvc_opaque_t);
3130Sstevel@tonic-gate int32_t psvc_get_attr(psvc_opaque_t, char *, int32_t, void *, ...);
3140Sstevel@tonic-gate int32_t psvc_set_attr(psvc_opaque_t, char *, int32_t, void *);
3150Sstevel@tonic-gate void psvcplugin_add_children(char *parent_path);
3160Sstevel@tonic-gate void psvcplugin_lookup(char *name, char *parent, picl_nodehdl_t *node);
3170Sstevel@tonic-gate #endif
3180Sstevel@tonic-gate 
3190Sstevel@tonic-gate /* FRU reading structure */
3200Sstevel@tonic-gate typedef struct {
3210Sstevel@tonic-gate 	int32_t buf_start;
3220Sstevel@tonic-gate 	char *buf;
3230Sstevel@tonic-gate 	int32_t read_size;
3240Sstevel@tonic-gate }fru_info_t;
3250Sstevel@tonic-gate 
3260Sstevel@tonic-gate /* Mutex used for Daktari Fan speed reading */
3270Sstevel@tonic-gate extern pthread_mutex_t fan_mutex;
3280Sstevel@tonic-gate 
3290Sstevel@tonic-gate #ifdef	__cplusplus
3300Sstevel@tonic-gate }
3310Sstevel@tonic-gate #endif
3320Sstevel@tonic-gate 
3330Sstevel@tonic-gate #endif /* _PSVC_OBJECTS_H */
334