127 nulldev, /* probe */
128 tphci_attach, /* attach and detach are mandatory */
129 tphci_detach,
130 nodev, /* reset */
131 &tphci_cb_ops, /* cb_ops */
132 &tphci_bus_ops, /* bus_ops */
133 NULL, /* power */
134 ddi_quiesce_not_needed, /* quiesce */
135 };
136
137 extern struct mod_ops mod_driverops;
138
139 static struct modldrv modldrv = {
140 &mod_driverops,
141 "test phci driver",
142 &tphci_ops
143 };
144
145 static struct modlinkage modlinkage = {
146 MODREV_1,
147 &modldrv,
148 NULL
149 };
150
151 int
152 _init(void)
153 {
154 int rval;
155
156 if ((rval = ddi_soft_state_init(&tphci_state,
157 sizeof (struct tphci_state), 2)) != 0) {
158 return (rval);
159 }
160
161 if ((rval = mod_install(&modlinkage)) != 0) {
162 ddi_soft_state_fini(&tphci_state);
163 }
164 return (rval);
165 }
166
167
168 int
|
127 nulldev, /* probe */
128 tphci_attach, /* attach and detach are mandatory */
129 tphci_detach,
130 nodev, /* reset */
131 &tphci_cb_ops, /* cb_ops */
132 &tphci_bus_ops, /* bus_ops */
133 NULL, /* power */
134 ddi_quiesce_not_needed, /* quiesce */
135 };
136
137 extern struct mod_ops mod_driverops;
138
139 static struct modldrv modldrv = {
140 &mod_driverops,
141 "test phci driver",
142 &tphci_ops
143 };
144
145 static struct modlinkage modlinkage = {
146 MODREV_1,
147 { &modldrv, NULL }
148 };
149
150 int
151 _init(void)
152 {
153 int rval;
154
155 if ((rval = ddi_soft_state_init(&tphci_state,
156 sizeof (struct tphci_state), 2)) != 0) {
157 return (rval);
158 }
159
160 if ((rval = mod_install(&modlinkage)) != 0) {
161 ddi_soft_state_fini(&tphci_state);
162 }
163 return (rval);
164 }
165
166
167 int
|