tws.c (cca5be248f1a85e258ece93b4d828e5aebdef009) tws.c (a21f086a3316346ba04f9381bf10e463a8328394)
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 2010, LSI Corp.
5 * All rights reserved.
6 * Author : Manjunath Ranganathaiah
7 * Support: freebsdraid@lsi.com
8 *

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

344
345/* Detach device. */
346
347static int
348tws_detach(device_t dev)
349{
350 struct tws_softc *sc = device_get_softc(dev);
351 int i;
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 2010, LSI Corp.
5 * All rights reserved.
6 * Author : Manjunath Ranganathaiah
7 * Support: freebsdraid@lsi.com
8 *

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

344
345/* Detach device. */
346
347static int
348tws_detach(device_t dev)
349{
350 struct tws_softc *sc = device_get_softc(dev);
351 int i;
352 u_int32_t reg;
352 u_int32_t reg __diagused;
353
354 TWS_TRACE_DEBUG(sc, "entry", 0, 0);
355
356 mtx_lock(&sc->gen_lock);
357 tws_send_event(sc, TWS_UNINIT_START);
358 mtx_unlock(&sc->gen_lock);
359
360 /* needs to disable interrupt before detaching from cam */

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

447 }
448 return(SUCCESS);
449
450}
451
452int
453tws_teardown_intr(struct tws_softc *sc)
454{
353
354 TWS_TRACE_DEBUG(sc, "entry", 0, 0);
355
356 mtx_lock(&sc->gen_lock);
357 tws_send_event(sc, TWS_UNINIT_START);
358 mtx_unlock(&sc->gen_lock);
359
360 /* needs to disable interrupt before detaching from cam */

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

447 }
448 return(SUCCESS);
449
450}
451
452int
453tws_teardown_intr(struct tws_softc *sc)
454{
455 int i, error;
455 int i;
456
457 for(i=0;i<sc->irqs;i++) {
458 if (sc->intr_handle[i]) {
456
457 for(i=0;i<sc->irqs;i++) {
458 if (sc->intr_handle[i]) {
459 error = bus_teardown_intr(sc->tws_dev,
459 bus_teardown_intr(sc->tws_dev,
460 sc->irq_res[i], sc->intr_handle[i]);
461 sc->intr_handle[i] = NULL;
462 }
463 }
464 return(SUCCESS);
465}
466
467static int

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

504}
505
506static int
507tws_init(struct tws_softc *sc)
508{
509
510 u_int32_t max_sg_elements;
511 u_int32_t dma_mem_size;
460 sc->irq_res[i], sc->intr_handle[i]);
461 sc->intr_handle[i] = NULL;
462 }
463 }
464 return(SUCCESS);
465}
466
467static int

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

504}
505
506static int
507tws_init(struct tws_softc *sc)
508{
509
510 u_int32_t max_sg_elements;
511 u_int32_t dma_mem_size;
512 int error;
513 u_int32_t reg;
514
515 sc->seq_id = 0;
516 if ( tws_queue_depth > TWS_MAX_REQS )
517 tws_queue_depth = TWS_MAX_REQS;
518 if (tws_queue_depth < TWS_RESERVED_REQS+1)
519 tws_queue_depth = TWS_RESERVED_REQS+1;
520 sc->is64bit = (sizeof(bus_addr_t) == 8) ? true : false;

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

564 if (bus_dmamem_alloc(sc->cmd_tag, &sc->dma_mem,
565 BUS_DMA_NOWAIT, &sc->cmd_map)) {
566 TWS_TRACE_DEBUG(sc, "DMA mem alloc fail", max_sg_elements, sc->is64bit);
567 return(ENOMEM);
568 }
569
570 /* if bus_dmamem_alloc succeeds then bus_dmamap_load will succeed */
571 sc->dma_mem_phys=0;
512 u_int32_t reg;
513
514 sc->seq_id = 0;
515 if ( tws_queue_depth > TWS_MAX_REQS )
516 tws_queue_depth = TWS_MAX_REQS;
517 if (tws_queue_depth < TWS_RESERVED_REQS+1)
518 tws_queue_depth = TWS_RESERVED_REQS+1;
519 sc->is64bit = (sizeof(bus_addr_t) == 8) ? true : false;

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

563 if (bus_dmamem_alloc(sc->cmd_tag, &sc->dma_mem,
564 BUS_DMA_NOWAIT, &sc->cmd_map)) {
565 TWS_TRACE_DEBUG(sc, "DMA mem alloc fail", max_sg_elements, sc->is64bit);
566 return(ENOMEM);
567 }
568
569 /* if bus_dmamem_alloc succeeds then bus_dmamap_load will succeed */
570 sc->dma_mem_phys=0;
572 error = bus_dmamap_load(sc->cmd_tag, sc->cmd_map, sc->dma_mem,
571 bus_dmamap_load(sc->cmd_tag, sc->cmd_map, sc->dma_mem,
573 dma_mem_size, tws_dmamap_cmds_load_cbfn,
574 &sc->dma_mem_phys, 0);
575
576 /*
577 * Create a dma tag for data buffers; size will be the maximum
578 * possible I/O size (128kB).
579 */
580 if (bus_dma_tag_create(sc->parent_tag, /* parent */

--- 313 unchanged lines hidden ---
572 dma_mem_size, tws_dmamap_cmds_load_cbfn,
573 &sc->dma_mem_phys, 0);
574
575 /*
576 * Create a dma tag for data buffers; size will be the maximum
577 * possible I/O size (128kB).
578 */
579 if (bus_dma_tag_create(sc->parent_tag, /* parent */

--- 313 unchanged lines hidden ---