Lines Matching refs:enc

76 	struct ahci_enclosure *enc = device_get_softc(dev);
81 enc->dev = dev;
82 enc->quirks = ctlr->quirks;
83 enc->channels = ctlr->channels;
84 enc->ichannels = ctlr->ichannels;
85 mtx_init(&enc->mtx, "AHCI enclosure lock", NULL, MTX_DEF);
87 if (!(enc->r_memc = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
89 mtx_destroy(&enc->mtx);
92 enc->capsem = ATA_INL(enc->r_memc, 0);
94 if (!(enc->r_memt = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
99 if ((enc->capsem & (AHCI_EM_XMT | AHCI_EM_SMB)) == 0) {
101 if (!(enc->r_memr = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
107 enc->r_memr = NULL;
108 mtx_lock(&enc->mtx);
122 enc->sim = cam_sim_alloc(ahciemaction, ahciempoll, "ahciem", enc,
123 device_get_unit(dev), &enc->mtx,
125 if (enc->sim == NULL) {
131 if (xpt_bus_register(enc->sim, dev, 0) != CAM_SUCCESS) {
136 if (xpt_create_path(&enc->path, /*periph*/NULL, cam_sim_path(enc->sim),
142 mtx_unlock(&enc->mtx);
145 (enc->capsem & AHCI_EM_PM) ? " PM":"",
146 (enc->capsem & AHCI_EM_ALHD) ? " ALHD":"",
147 (enc->capsem & AHCI_EM_XMT) ? " XMT":"",
148 (enc->capsem & AHCI_EM_SMB) ? " SMB":"",
149 (enc->capsem & AHCI_EM_SGPIO) ? " SGPIO":"",
150 (enc->capsem & AHCI_EM_SES2) ? " SES-2":"",
151 (enc->capsem & AHCI_EM_SAFTE) ? " SAF-TE":"",
152 (enc->capsem & AHCI_EM_LED) ? " LED":"");
154 if ((enc->capsem & AHCI_EM_LED)) {
155 for (c = 0; c < enc->channels; c++) {
156 if ((enc->ichannels & (1 << c)) == 0)
159 enc->leds[c * AHCI_NUM_LEDS + i].dev = dev;
160 enc->leds[c * AHCI_NUM_LEDS + i].num =
163 if ((enc->capsem & AHCI_EM_ALHD) == 0) {
166 enc->leds[c * AHCI_NUM_LEDS + 0].led =
168 &enc->leds[c * AHCI_NUM_LEDS + 0], buf);
172 enc->leds[c * AHCI_NUM_LEDS + 1].led =
174 &enc->leds[c * AHCI_NUM_LEDS + 1], buf);
177 enc->leds[c * AHCI_NUM_LEDS + 2].led =
179 &enc->leds[c * AHCI_NUM_LEDS + 2], buf);
185 xpt_bus_deregister(cam_sim_path(enc->sim));
187 cam_sim_free(enc->sim, /*free_devq*/TRUE);
189 mtx_unlock(&enc->mtx);
190 if (enc->r_memr)
191 bus_release_resource(dev, SYS_RES_MEMORY, 2, enc->r_memr);
193 if (enc->r_memt)
194 bus_release_resource(dev, SYS_RES_MEMORY, 1, enc->r_memt);
195 bus_release_resource(dev, SYS_RES_MEMORY, 0, enc->r_memc);
196 mtx_destroy(&enc->mtx);
203 struct ahci_enclosure *enc = device_get_softc(dev);
206 for (i = 0; i < enc->channels * AHCI_NUM_LEDS; i++) {
207 if (enc->leds[i].led)
208 led_destroy(enc->leds[i].led);
210 mtx_lock(&enc->mtx);
211 xpt_async(AC_LOST_DEVICE, enc->path, NULL);
212 xpt_free_path(enc->path);
213 xpt_bus_deregister(cam_sim_path(enc->sim));
214 cam_sim_free(enc->sim, /*free_devq*/TRUE);
215 mtx_unlock(&enc->mtx);
217 bus_release_resource(dev, SYS_RES_MEMORY, 0, enc->r_memc);
218 bus_release_resource(dev, SYS_RES_MEMORY, 1, enc->r_memt);
219 if (enc->r_memr)
220 bus_release_resource(dev, SYS_RES_MEMORY, 2, enc->r_memr);
221 mtx_destroy(&enc->mtx);
228 struct ahci_enclosure *enc;
231 enc = device_get_softc(dev);
232 ATA_OUTL(enc->r_memc, 0, AHCI_EM_RST);
234 while ((ATA_INL(enc->r_memc, 0) & AHCI_EM_RST) &&
241 for (i = 0; i < enc->channels; i++)
249 struct ahci_enclosure *enc = device_get_softc(dev);
251 mtx_lock(&enc->mtx);
252 xpt_freeze_simq(enc->sim, 1);
253 mtx_unlock(&enc->mtx);
260 struct ahci_enclosure *enc = device_get_softc(dev);
262 mtx_lock(&enc->mtx);
264 xpt_release_simq(enc->sim, TRUE);
265 mtx_unlock(&enc->mtx);
288 struct ahci_enclosure *enc;
292 enc = device_get_softc(dev);
295 if (enc->status[c][2] & SESCTL_RQSACT) /* Activity */
297 if (enc->status[c][1] & SESCTL_RQSRR) /* Rebuild */
299 else if (enc->status[c][2] & SESCTL_RQSID) /* Identification */
301 else if (enc->status[c][3] & SESCTL_RQSFLT) /* Fault */
305 while (ATA_INL(enc->r_memc, 0) & (AHCI_EM_TM | AHCI_EM_RST) &&
310 ATA_OUTL(enc->r_memt, 0, (1 << 8) | (0 << 16) | (0 << 24));
311 ATA_OUTL(enc->r_memt, 4, c | (0 << 8) | (val << 16));
312 ATA_OUTL(enc->r_memc, 0, AHCI_EM_TM);
319 struct ahci_enclosure *enc;
323 enc = device_get_softc(led->dev);
329 enc->status[c][2] |= 0x80;
331 enc->status[c][2] &= ~0x80;
334 enc->status[c][2] |= SESCTL_RQSID;
336 enc->status[c][2] &= ~SESCTL_RQSID;
339 enc->status[c][3] |= SESCTL_RQSFLT;
341 enc->status[c][3] &= SESCTL_RQSFLT;
366 struct ahci_enclosure *enc;
376 enc = device_get_softc(dev);
443 td->etype_maxelt = enc->channels;
454 ccb->ataio.cmd.sector_count >= (3 + enc->channels)) {
457 scsi_ulto2b(4 + 4 * (1 + enc->channels),
459 for (i = 0; i < enc->channels; i++) {
461 memcpy(ads, enc->status[i], 4);
486 ccb->ataio.cmd.sector_count >= (3 + enc->channels)) {
488 for (i = 0; i < enc->channels; i++) {
491 enc->status[i][0] = 0;
492 enc->status[i][1] = ads->bytes[0] &
494 enc->status[i][2] = ads->bytes[1] &
496 enc->status[i][3] = ads->bytes[2] &
500 enc->status[i][0] = 0;
501 enc->status[i][1] = ads0->bytes[0] &
503 enc->status[i][2] = ads0->bytes[1] &
505 enc->status[i][3] = ads0->bytes[2] &
517 ccb->ataio.cmd.sector_count >= (6 + 3 * enc->channels)) {
520 scsi_ulto2b(4 + 15 + 11 * enc->channels, page->hdr.length);
524 for (i = 0; i < enc->channels; i++) {
536 ccb->ataio.cmd.sector_count >= (2 + 3 * enc->channels)) {
539 scsi_ulto2b(4 + (sizeof(*elma) + sizeof(*elmb)) * enc->channels,
541 for (i = 0; i < enc->channels; i++) {
572 struct ahci_enclosure *enc;
575 enc = device_get_softc(dev);
587 if (enc->capsem & AHCI_EM_LED) {
601 struct ahci_enclosure *enc;
606 enc = cam_sim_softc(sim);
607 dev = enc->dev;