Deleted Added
full compact
ida.c (60041) ida.c (63934)
1/*-
2 * Copyright (c) 1999,2000 Jonathan Lemon
3 * All rights reserved.
4 *
5 # Derived from the original IDA Compaq RAID driver, which is
6 * Copyright (c) 1996, 1997, 1998, 1999
7 * Mark Dawson and David James. All rights reserved.
8 *

--- 13 unchanged lines hidden (view full) ---

22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
1/*-
2 * Copyright (c) 1999,2000 Jonathan Lemon
3 * All rights reserved.
4 *
5 # Derived from the original IDA Compaq RAID driver, which is
6 * Copyright (c) 1996, 1997, 1998, 1999
7 * Mark Dawson and David James. All rights reserved.
8 *

--- 13 unchanged lines hidden (view full) ---

22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * $FreeBSD: head/sys/dev/ida/ida.c 60041 2000-05-05 09:59:14Z phk $
30 * $FreeBSD: head/sys/dev/ida/ida.c 63934 2000-07-27 22:24:44Z jlemon $
31 */
32
33/*
34 * Generic driver for Compaq SMART RAID adapters.
35 *
36 * Specific probe routines are in:
37 * pci/ida_pci.c
38 * i386/eisa/ida_eisa.c

--- 216 unchanged lines hidden (view full) ---

255 device_printf(ida->dev, "CMD_GET_CTRL_INFO failed.\n");
256 return;
257 }
258
259 device_printf(ida->dev, "drives=%d firm_rev=%c%c%c%c\n",
260 cinfo.num_drvs, cinfo.firm_rev[0], cinfo.firm_rev[1],
261 cinfo.firm_rev[2], cinfo.firm_rev[3]);
262
31 */
32
33/*
34 * Generic driver for Compaq SMART RAID adapters.
35 *
36 * Specific probe routines are in:
37 * pci/ida_pci.c
38 * i386/eisa/ida_eisa.c

--- 216 unchanged lines hidden (view full) ---

255 device_printf(ida->dev, "CMD_GET_CTRL_INFO failed.\n");
256 return;
257 }
258
259 device_printf(ida->dev, "drives=%d firm_rev=%c%c%c%c\n",
260 cinfo.num_drvs, cinfo.firm_rev[0], cinfo.firm_rev[1],
261 cinfo.firm_rev[2], cinfo.firm_rev[3]);
262
263 ida->num_drives = cinfo.num_drvs;
263 if (ida->flags & IDA_FIRMWARE) {
264 int data;
264
265
265 for (i = 0; i < ida->num_drives; i++)
266 error = ida_command(ida, CMD_START_FIRMWARE,
267 &data, sizeof(data), IDA_CONTROLLER, DMA_DATA_IN);
268 if (error) {
269 device_printf(ida->dev, "CMD_START_FIRMWARE failed.\n");
270 return;
271 }
272 }
273
274 ida->num_drives = 0;
275 for (i = 0; i < cinfo.num_drvs; i++)
266 device_add_child(ida->dev, /*"idad"*/NULL, -1);
267
268 bus_generic_attach(ida->dev);
269
270 ida->cmd.int_enable(ida, 1);
271}
272
273int

--- 59 unchanged lines hidden (view full) ---

333 bzero(hwqcb, sizeof(struct ida_hdr) + sizeof(struct ida_req));
334
335 bus_dmamap_load(ida->buffer_dmat, qcb->dmamap,
336 (void *)data, datasize, ida_setup_dmamap, hwqcb, 0);
337 op = qcb->flags & DMA_DATA_IN ?
338 BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE;
339 bus_dmamap_sync(ida->buffer_dmat, qcb->dmamap, op);
340
276 device_add_child(ida->dev, /*"idad"*/NULL, -1);
277
278 bus_generic_attach(ida->dev);
279
280 ida->cmd.int_enable(ida, 1);
281}
282
283int

--- 59 unchanged lines hidden (view full) ---

343 bzero(hwqcb, sizeof(struct ida_hdr) + sizeof(struct ida_req));
344
345 bus_dmamap_load(ida->buffer_dmat, qcb->dmamap,
346 (void *)data, datasize, ida_setup_dmamap, hwqcb, 0);
347 op = qcb->flags & DMA_DATA_IN ?
348 BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE;
349 bus_dmamap_sync(ida->buffer_dmat, qcb->dmamap, op);
350
341 hwqcb->hdr.drive = drive; /* XXX */
351 hwqcb->hdr.drive = drive;
342 hwqcb->req.bcount = howmany(datasize, DEV_BSIZE);
343 hwqcb->req.command = command;
344
345 qcb->flags = flags | IDA_COMMAND;
346
347 s = splbio();
348 STAILQ_INSERT_TAIL(&ida->qcb_queue, qcb, link.stqe);
349 ida_start(ida);

--- 38 unchanged lines hidden (view full) ---

388 bzero(hwqcb, sizeof(struct ida_hdr) + sizeof(struct ida_req));
389
390 bus_dmamap_load(ida->buffer_dmat, qcb->dmamap,
391 (void *)bp->bio_data, bp->bio_bcount, ida_setup_dmamap, hwqcb, 0);
392 op = qcb->flags & DMA_DATA_IN ?
393 BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE;
394 bus_dmamap_sync(ida->buffer_dmat, qcb->dmamap, op);
395
352 hwqcb->req.bcount = howmany(datasize, DEV_BSIZE);
353 hwqcb->req.command = command;
354
355 qcb->flags = flags | IDA_COMMAND;
356
357 s = splbio();
358 STAILQ_INSERT_TAIL(&ida->qcb_queue, qcb, link.stqe);
359 ida_start(ida);

--- 38 unchanged lines hidden (view full) ---

398 bzero(hwqcb, sizeof(struct ida_hdr) + sizeof(struct ida_req));
399
400 bus_dmamap_load(ida->buffer_dmat, qcb->dmamap,
401 (void *)bp->bio_data, bp->bio_bcount, ida_setup_dmamap, hwqcb, 0);
402 op = qcb->flags & DMA_DATA_IN ?
403 BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE;
404 bus_dmamap_sync(ida->buffer_dmat, qcb->dmamap, op);
405
396 /*
397 * XXX
398 */
399 {
400 struct idad_softc *drv = (struct idad_softc *)bp->bio_driver1;
406 {
407 struct idad_softc *drv = (struct idad_softc *)bp->bio_driver1;
401 hwqcb->hdr.drive = drv->unit;
408 hwqcb->hdr.drive = drv->drive;
402 }
403
404 hwqcb->req.blkno = bp->bio_pblkno;
405 hwqcb->req.bcount = howmany(bp->bio_bcount, DEV_BSIZE);
406 hwqcb->req.command = bp->bio_cmd == BIO_READ ? CMD_READ : CMD_WRITE;
407
408 STAILQ_INSERT_TAIL(&ida->qcb_queue, qcb, link.stqe);
409}

--- 119 unchanged lines hidden ---
409 }
410
411 hwqcb->req.blkno = bp->bio_pblkno;
412 hwqcb->req.bcount = howmany(bp->bio_bcount, DEV_BSIZE);
413 hwqcb->req.command = bp->bio_cmd == BIO_READ ? CMD_READ : CMD_WRITE;
414
415 STAILQ_INSERT_TAIL(&ida->qcb_queue, qcb, link.stqe);
416}

--- 119 unchanged lines hidden ---