1#!/bin/ksh
2#
3# This file and its contents are supplied under the terms of the
4# Common Development and Distribution License ("CDDL"), version 1.0.
5# You may only use this file in accordance with the terms of version
6# 1.0 of the CDDL.
7#
8# A full copy of the text of the CDDL should have accompanied this
9# source.  A copy of the CDDL is also available via the Internet at
10# http://www.illumos.org/license/CDDL.
11#
12
13#
14# Copyright (c) 2013, Joyent, Inc. All rights reserved.
15#
16
17function do_node
18{
19  cat <<EOF
20    <node instance='${1}'>
21      <propgroup name='protocol' version='1' name-stability='Private'
22        data-stability='Private'>
23        <propval name='label' type='string' value='${2}' />
24      </propgroup>
25      <propgroup name='binding' version='1' name-stability='Private'
26        data-stability='Private'>
27        <propval name='driver' type='string' value='mpt_sas' />
28        <propval name='devctl' type='string' value='${3}' />
29        <propval name='enclosure' type='uint32' value='${4}' />
30        <propval name='slot' type='uint32' value='${5}' />
31      </propgroup>
32    </node>
33EOF
34}
35
36
37cat <<EOF
38<topology name='disk' scheme='hc'>
39  <range name='bay' min='0' max='15'>
40    <facility name='fail' type='indicator' provider='fac_prov_mptsas' >
41      <propgroup name='facility' version='1' name-stability='Private'
42        data-stability='Private' >
43        <propval name='type' type='uint32' value='0' />
44        <propmethod name='mptsas_led_mode' version='0' propname='mode'
45          proptype='uint32' mutable='1'>
46        </propmethod>
47      </propgroup>
48    </facility>
49    <facility name='ident' type='indicator' provider='fac_prov_mptsas' >
50      <propgroup name='facility' version='1' name-stability='Private'
51        data-stability='Private' >
52        <propval name='type' type='uint32' value='1' />
53        <propmethod name='mptsas_led_mode' version='0' propname='mode'
54          proptype='uint32' mutable='1'>
55        </propmethod>
56      </propgroup>
57    </facility>
58    <facility name='ok2rm' type='indicator' provider='fac_prov_mptsas' >
59      <propgroup name='facility' version='1' name-stability='Private'
60        data-stability='Private' >
61        <propval name='type' type='uint32' value='2' />
62        <propmethod name='mptsas_led_mode' version='0' propname='mode'
63          proptype='uint32' mutable='1'>
64        </propmethod>
65      </propgroup>
66    </facility>
67EOF
68
69enclosure=1
70bay=0
71slot=0
72devctl0='/devices/pci@0,0/pci8086,3c02@1/pci15d9,691@0:devctl'
73devctl1='/devices/pci@0,0/pci8086,e02@1/pci15d9,691@0:devctl'
74while (( slot <= 7 )); do
75  do_node $bay "Front Disk $bay" "$devctl0|$devctl1" $enclosure $slot
76  (( bay = bay + 1 ))
77  (( slot = slot + 1 ))
78done
79
80slot=0
81devctl0='/devices/pci@0,0/pci8086,3c06@2,2/pci15d9,691@0:devctl'
82devctl1='/devices/pci@0,0/pci8086,e06@2,2/pci15d9,691@0:devctl'
83while (( slot <= 7 )); do
84  do_node $bay "Front Disk $bay" "$devctl0|$devctl1" $enclosure $slot
85  (( bay = bay + 1 ))
86  (( slot = slot + 1 ))
87done
88
89cat <<EOF
90    <dependents grouping='children'>
91      <range name='disk' min='0' max='0'>
92        <enum-method name='disk' version='1' />
93      </range>
94    </dependents>
95  </range>
96</topology>
97EOF
98