17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * CDDL HEADER START 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*2df1fe9cSrandyf * Common Development and Distribution License (the "License"). 6*2df1fe9cSrandyf * You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate * 87c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate * and limitations under the License. 127c478bd9Sstevel@tonic-gate * 137c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate * 197c478bd9Sstevel@tonic-gate * CDDL HEADER END 207c478bd9Sstevel@tonic-gate */ 21*2df1fe9cSrandyf 227c478bd9Sstevel@tonic-gate /* 23*2df1fe9cSrandyf * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 247c478bd9Sstevel@tonic-gate * Use is subject to license terms. 257c478bd9Sstevel@tonic-gate */ 267c478bd9Sstevel@tonic-gate 277c478bd9Sstevel@tonic-gate #ifndef _SYS_DKTP_CMDK_H 287c478bd9Sstevel@tonic-gate #define _SYS_DKTP_CMDK_H 297c478bd9Sstevel@tonic-gate 307c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 317c478bd9Sstevel@tonic-gate 327c478bd9Sstevel@tonic-gate #ifdef __cplusplus 337c478bd9Sstevel@tonic-gate extern "C" { 347c478bd9Sstevel@tonic-gate #endif 357c478bd9Sstevel@tonic-gate 363ccda647Slclee #include <sys/cmlb.h> 3743369e13Slclee #include <sys/dktp/tgdk.h> 3843369e13Slclee 397c478bd9Sstevel@tonic-gate #define CMDK_UNITSHF 6 407c478bd9Sstevel@tonic-gate #define CMDK_MAXPART (1 << CMDK_UNITSHF) 417c478bd9Sstevel@tonic-gate 423ccda647Slclee /* 433ccda647Slclee * Model number is 40 ASCII characters 443ccda647Slclee * Serial number is 20 ASCII characters 453ccda647Slclee */ 463ccda647Slclee #define CMDK_HWIDLEN (64) 477c478bd9Sstevel@tonic-gate 487c478bd9Sstevel@tonic-gate struct cmdk { 493ccda647Slclee /* set during probe */ 507c478bd9Sstevel@tonic-gate dev_info_t *dk_dip; 517c478bd9Sstevel@tonic-gate dev_t dk_dev; 5243369e13Slclee struct tgdk_obj *dk_tgobjp; /* target disk object pointer */ 537c478bd9Sstevel@tonic-gate 543ccda647Slclee /* set during attach */ 553ccda647Slclee cmlb_handle_t dk_cmlbhandle; 563ccda647Slclee ddi_devid_t dk_devid; 573ccda647Slclee 583ccda647Slclee kmutex_t dk_mutex; /* mutex for cmdk struct */ 593ccda647Slclee 603ccda647Slclee long dk_flag; 613ccda647Slclee uint64_t dk_open_reg[OTYPCNT]; /* bit per partition: 2^6 */ 623ccda647Slclee ulong_t dk_open_lyr[CMDK_MAXPART]; /* OTYP_LYR cnt/partition */ 633ccda647Slclee uint64_t dk_open_exl; /* bit per partition: 2^6 */ 643ccda647Slclee 653ccda647Slclee struct bbh_obj dk_bbh_obj; 663ccda647Slclee 673ccda647Slclee /* 683ccda647Slclee * BBH variables 693ccda647Slclee * protected by dk_bbh_mutex 703ccda647Slclee */ 713ccda647Slclee krwlock_t dk_bbh_mutex; /* bbh mutex */ 723ccda647Slclee tgdk_iob_handle dk_alts_hdl; /* iob for V_ALTSCTR */ 733ccda647Slclee uint32_t dk_altused; /* num entries in V_ALTSCTR */ 743ccda647Slclee uint32_t *dk_slc_cnt; /* entries per slice */ 753ccda647Slclee struct alts_ent **dk_slc_ent; /* link to remap data */ 76*2df1fe9cSrandyf 77*2df1fe9cSrandyf /* 78*2df1fe9cSrandyf * for power management 79*2df1fe9cSrandyf */ 80*2df1fe9cSrandyf kmutex_t dk_pm_mutex; 81*2df1fe9cSrandyf kcondvar_t dk_suspend_cv; 82*2df1fe9cSrandyf uint32_t dk_pm_level; 83*2df1fe9cSrandyf uint32_t dk_pm_is_enabled; 847c478bd9Sstevel@tonic-gate }; 857c478bd9Sstevel@tonic-gate 86*2df1fe9cSrandyf /* 87*2df1fe9cSrandyf * Power Management definitions 88*2df1fe9cSrandyf */ 89*2df1fe9cSrandyf #define CMDK_SPINDLE_UNINIT ((uint_t)(-1)) 90*2df1fe9cSrandyf #define CMDK_SPINDLE_OFF 0x0 91*2df1fe9cSrandyf #define CMDK_SPINDLE_ON 0x1 92*2df1fe9cSrandyf 937c478bd9Sstevel@tonic-gate /* common disk flags definitions */ 947c478bd9Sstevel@tonic-gate #define CMDK_OPEN 0x1 95*2df1fe9cSrandyf #define CMDK_SUSPEND 0x2 967c478bd9Sstevel@tonic-gate #define CMDK_TGDK_OPEN 0x4 977c478bd9Sstevel@tonic-gate 987c478bd9Sstevel@tonic-gate #define CMDKUNIT(dev) (getminor((dev)) >> CMDK_UNITSHF) 997c478bd9Sstevel@tonic-gate #define CMDKPART(dev) (getminor((dev)) & (CMDK_MAXPART - 1)) 1007c478bd9Sstevel@tonic-gate 1017c478bd9Sstevel@tonic-gate #ifdef __cplusplus 1027c478bd9Sstevel@tonic-gate } 1037c478bd9Sstevel@tonic-gate #endif 1047c478bd9Sstevel@tonic-gate 1057c478bd9Sstevel@tonic-gate #endif /* _SYS_DKTP_CMDK_H */ 106