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 #ifdef __cplusplus 317c478bd9Sstevel@tonic-gate extern "C" { 327c478bd9Sstevel@tonic-gate #endif 337c478bd9Sstevel@tonic-gate 343ccda647Slclee #include <sys/cmlb.h> 3543369e13Slclee #include <sys/dktp/tgdk.h> 3643369e13Slclee 377c478bd9Sstevel@tonic-gate #define CMDK_UNITSHF 6 387c478bd9Sstevel@tonic-gate #define CMDK_MAXPART (1 << CMDK_UNITSHF) 397c478bd9Sstevel@tonic-gate 403ccda647Slclee /* 413ccda647Slclee * Model number is 40 ASCII characters 423ccda647Slclee * Serial number is 20 ASCII characters 433ccda647Slclee */ 443ccda647Slclee #define CMDK_HWIDLEN (64) 457c478bd9Sstevel@tonic-gate 467c478bd9Sstevel@tonic-gate struct cmdk { 473ccda647Slclee /* set during probe */ 487c478bd9Sstevel@tonic-gate dev_info_t *dk_dip; 497c478bd9Sstevel@tonic-gate dev_t dk_dev; 503ccda647Slclee struct tgdk_obj *dk_tgobjp; /* target disk object pointer */ 517c478bd9Sstevel@tonic-gate 523ccda647Slclee /* set during attach */ 533ccda647Slclee cmlb_handle_t dk_cmlbhandle; 543ccda647Slclee ddi_devid_t dk_devid; 557c478bd9Sstevel@tonic-gate 563ccda647Slclee kmutex_t dk_mutex; /* mutex for cmdk struct */ 577c478bd9Sstevel@tonic-gate 583ccda647Slclee long dk_flag; 593ccda647Slclee uint64_t dk_open_reg[OTYPCNT]; /* bit per partition: 2^6 */ 603ccda647Slclee ulong_t dk_open_lyr[CMDK_MAXPART]; /* OTYP_LYR cnt/partition */ 613ccda647Slclee uint64_t dk_open_exl; /* bit per partition: 2^6 */ 623ccda647Slclee 633ccda647Slclee struct bbh_obj dk_bbh_obj; 643ccda647Slclee 653ccda647Slclee /* 663ccda647Slclee * BBH variables 673ccda647Slclee * protected by dk_bbh_mutex 683ccda647Slclee */ 693ccda647Slclee krwlock_t dk_bbh_mutex; /* bbh mutex */ 703ccda647Slclee tgdk_iob_handle dk_alts_hdl; /* iob for V_ALTSCTR */ 713ccda647Slclee uint32_t dk_altused; /* num entries in V_ALTSCTR */ 723ccda647Slclee uint32_t *dk_slc_cnt; /* entries per slice */ 733ccda647Slclee struct alts_ent **dk_slc_ent; /* link to remap data */ 74*2df1fe9cSrandyf 75*2df1fe9cSrandyf /* 76*2df1fe9cSrandyf * for power management 77*2df1fe9cSrandyf */ 78*2df1fe9cSrandyf kmutex_t dk_pm_mutex; 79*2df1fe9cSrandyf kcondvar_t dk_suspend_cv; 80*2df1fe9cSrandyf uint32_t dk_pm_level; 81*2df1fe9cSrandyf uint32_t dk_pm_is_enabled; 827c478bd9Sstevel@tonic-gate }; 837c478bd9Sstevel@tonic-gate 84*2df1fe9cSrandyf /* 85*2df1fe9cSrandyf * Power Management definitions 86*2df1fe9cSrandyf */ 87*2df1fe9cSrandyf #define CMDK_SPINDLE_UNINIT ((uint_t)(-1)) 88*2df1fe9cSrandyf #define CMDK_SPINDLE_OFF 0x0 89*2df1fe9cSrandyf #define CMDK_SPINDLE_ON 0x1 90*2df1fe9cSrandyf 917c478bd9Sstevel@tonic-gate /* common disk flags definitions */ 927c478bd9Sstevel@tonic-gate #define CMDK_OPEN 0x1 93*2df1fe9cSrandyf #define CMDK_SUSPEND 0x2 947c478bd9Sstevel@tonic-gate #define CMDK_TGDK_OPEN 0x4 957c478bd9Sstevel@tonic-gate 967c478bd9Sstevel@tonic-gate #define CMDKUNIT(dev) (getminor((dev)) >> CMDK_UNITSHF) 977c478bd9Sstevel@tonic-gate #define CMDKPART(dev) (getminor((dev)) & (CMDK_MAXPART - 1)) 987c478bd9Sstevel@tonic-gate 997c478bd9Sstevel@tonic-gate #ifdef __cplusplus 1007c478bd9Sstevel@tonic-gate } 1017c478bd9Sstevel@tonic-gate #endif 1027c478bd9Sstevel@tonic-gate 1037c478bd9Sstevel@tonic-gate #endif /* _SYS_DKTP_CMDK_H */ 104