#!/usr/bin/perl -w
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
$num_bays = 48;
$bay_label = "HD_ID_";
sub calc_sfx_prop
{
my $name = shift;
my $bay = shift;
my $sid = shift;
my @names = (
"+PRSNT", "-PRSNT",
"+OK2RM", "-OK2RM",
"+FAULT", "-FAULT");
my @masks = (
"amask=0x0001", "dmask=0x0001",
"amask=0x0008", "dmask=0x0008",
"amask=0x0002", "dmask=0x0002");
my @states = (
"absent>present", "present>configured",
"configured>unconfigured", "unconfigured>configured",
"unconfigured>absent", "configured>absent",
"present>absent", "absent>configured");
my @actions = (
"+PRSNT&+OK2RM", "+PRSNT&-OK2RM",
"+OK2RM", "-OK2RM",
"-OK2RM&-PRSNT", "-OK2RM&-PRSNT",
"-OK2RM&-PRSNT", "-OK2RM&+PRSNT");
printf "\n";
printf " \n", $name;
printf " \n", $bay;
for ($i = 0; $i < 6; $i++) {
printf " \n", $i, $names[$i];
printf " \n",
$i, $sid, $masks[$i];
}
for ($i = 0; $i < 8; $i++) {
printf " \n", $i, $states[$i];
printf " \n", $i, $actions[$i];
}
printf " \n\n";
}
print <
EOF
my @pci0=(0, 0, 0, 0x3c, 0x3c, 0x3c);
my @pci1=(0x377, 0x375, 0x376, 0x377, 0x375, 0x376);
my @pci2=(0xa, 0xb, 0xf, 0xa, 0xb, 0xf);
for ($bay = 0; $bay < $num_bays; $bay++) {
$sid = 90 + $bay;
$target = $bay % 8;
$controller = $bay / 8;
# set hba path, target path, bay path, and attachment point
$hpath = sprintf("/pci\@%x,0/pci10de,%x\@%x/pci1000,1000\@0",
$pci0[$controller], $pci1[$controller], $pci2[$controller]);
$tpath = sprintf("/sd\@%x,0", $target);
$apoint = sprintf(":scsi::dsk/c%dt%dd0",
$controller + 1, $target);
print <
EOF
calc_sfx_prop("sfx4500", $bay, $sid);
print <
EOF
}
print <
EOF