Lines Matching refs:scb_data
529 ahd_dmamap_sync(ahd, ahd->scb_data.hscb_dmat, in ahd_sync_scb()
541 ahd_dmamap_sync(ahd, ahd->scb_data.sg_dmat, in ahd_sync_sglist()
550 ahd_dmamap_sync(ahd, ahd->scb_data.sense_dmat, in ahd_sync_sense()
802 scb = ahd->scb_data.scbindex[tag]; in ahd_lookup_scb()
842 ahd->scb_data.scbindex[SCB_GET_TAG(scb)] = scb; in ahd_swap_with_next_hscb()
6395 for (i = 0; i < ahd->scb_data.maxhscbs; i++) { in ahd_initialize_hscbs()
6409 struct scb_data *scb_data; in ahd_init_scbdata() local
6412 scb_data = &ahd->scb_data; in ahd_init_scbdata()
6413 TAILQ_INIT(&scb_data->free_scbs); in ahd_init_scbdata()
6415 LIST_INIT(&scb_data->free_scb_lists[i]); in ahd_init_scbdata()
6416 LIST_INIT(&scb_data->any_dev_free_scb_list); in ahd_init_scbdata()
6417 SLIST_INIT(&scb_data->hscb_maps); in ahd_init_scbdata()
6418 SLIST_INIT(&scb_data->sg_maps); in ahd_init_scbdata()
6419 SLIST_INIT(&scb_data->sense_maps); in ahd_init_scbdata()
6422 scb_data->maxhscbs = ahd_probe_scbs(ahd); in ahd_init_scbdata()
6423 if (scb_data->maxhscbs == 0) { in ahd_init_scbdata()
6448 /*flags*/0, &scb_data->hscb_dmat) != 0) { in ahd_init_scbdata()
6452 scb_data->init_level++; in ahd_init_scbdata()
6462 /*flags*/0, &scb_data->sg_dmat) != 0) { in ahd_init_scbdata()
6471 scb_data->init_level++; in ahd_init_scbdata()
6481 /*flags*/0, &scb_data->sense_dmat) != 0) { in ahd_init_scbdata()
6485 scb_data->init_level++; in ahd_init_scbdata()
6490 if (scb_data->numscbs == 0) { in ahd_init_scbdata()
6523 TAILQ_FOREACH(scb, &ahd->scb_data.free_scbs, links.tqe) { in ahd_find_scb_by_tag()
6537 LIST_FOREACH(scb, &ahd->scb_data.any_dev_free_scb_list, links.le) { in ahd_find_scb_by_tag()
6548 struct scb_data *scb_data; in ahd_fini_scbdata() local
6550 scb_data = &ahd->scb_data; in ahd_fini_scbdata()
6551 if (scb_data == NULL) in ahd_fini_scbdata()
6554 switch (scb_data->init_level) { in ahd_fini_scbdata()
6560 while ((sns_map = SLIST_FIRST(&scb_data->sense_maps)) != NULL) { in ahd_fini_scbdata()
6561 SLIST_REMOVE_HEAD(&scb_data->sense_maps, links); in ahd_fini_scbdata()
6562 ahd_dmamap_unload(ahd, scb_data->sense_dmat, in ahd_fini_scbdata()
6564 ahd_dmamem_free(ahd, scb_data->sense_dmat, in ahd_fini_scbdata()
6568 ahd_dma_tag_destroy(ahd, scb_data->sense_dmat); in ahd_fini_scbdata()
6575 while ((sg_map = SLIST_FIRST(&scb_data->sg_maps)) != NULL) { in ahd_fini_scbdata()
6576 SLIST_REMOVE_HEAD(&scb_data->sg_maps, links); in ahd_fini_scbdata()
6577 ahd_dmamap_unload(ahd, scb_data->sg_dmat, in ahd_fini_scbdata()
6579 ahd_dmamem_free(ahd, scb_data->sg_dmat, in ahd_fini_scbdata()
6583 ahd_dma_tag_destroy(ahd, scb_data->sg_dmat); in ahd_fini_scbdata()
6590 while ((hscb_map = SLIST_FIRST(&scb_data->hscb_maps)) != NULL) { in ahd_fini_scbdata()
6591 SLIST_REMOVE_HEAD(&scb_data->hscb_maps, links); in ahd_fini_scbdata()
6592 ahd_dmamap_unload(ahd, scb_data->hscb_dmat, in ahd_fini_scbdata()
6594 ahd_dmamem_free(ahd, scb_data->hscb_dmat, in ahd_fini_scbdata()
6598 ahd_dma_tag_destroy(ahd, scb_data->hscb_dmat); in ahd_fini_scbdata()
6672 free_list = &ahd->scb_data.free_scb_lists[col_idx]; in ahd_add_col_list()
6673 free_tailq = &ahd->scb_data.free_scbs; in ahd_add_col_list()
6693 free_list = &ahd->scb_data.free_scb_lists[col_idx]; in ahd_rem_col_list()
6694 free_tailq = &ahd->scb_data.free_scbs; in ahd_rem_col_list()
6725 TAILQ_FOREACH(scb, &ahd->scb_data.free_scbs, links.tqe) { in ahd_get_scb()
6731 if ((scb = LIST_FIRST(&ahd->scb_data.any_dev_free_scb_list)) == NULL) { in ahd_get_scb()
6759 ahd->scb_data.scbindex[SCB_GET_TAG(scb)] = NULL; in ahd_free_scb()
6766 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list, in ahd_free_scb()
6776 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list, in ahd_free_scb()
6778 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list, in ahd_free_scb()
6798 LIST_INSERT_HEAD(&ahd->scb_data.any_dev_free_scb_list, in ahd_free_scb()
6808 struct scb_data *scb_data; in ahd_alloc_scbs() local
6822 scb_data = &ahd->scb_data; in ahd_alloc_scbs()
6823 if (scb_data->numscbs >= AHD_SCB_MAX_ALLOC) in ahd_alloc_scbs()
6827 if (scb_data->scbs_left != 0) { in ahd_alloc_scbs()
6830 offset = (PAGE_SIZE / sizeof(*hscb)) - scb_data->scbs_left; in ahd_alloc_scbs()
6831 hscb_map = SLIST_FIRST(&scb_data->hscb_maps); in ahd_alloc_scbs()
6841 if (ahd_dmamem_alloc(ahd, scb_data->hscb_dmat, in ahd_alloc_scbs()
6848 SLIST_INSERT_HEAD(&scb_data->hscb_maps, hscb_map, links); in ahd_alloc_scbs()
6850 ahd_dmamap_load(ahd, scb_data->hscb_dmat, hscb_map->dmamap, in ahd_alloc_scbs()
6856 scb_data->scbs_left = PAGE_SIZE / sizeof(*hscb); in ahd_alloc_scbs()
6859 if (scb_data->sgs_left != 0) { in ahd_alloc_scbs()
6863 - scb_data->sgs_left) * ahd_sglist_size(ahd); in ahd_alloc_scbs()
6864 sg_map = SLIST_FIRST(&scb_data->sg_maps); in ahd_alloc_scbs()
6874 if (ahd_dmamem_alloc(ahd, scb_data->sg_dmat, in ahd_alloc_scbs()
6881 SLIST_INSERT_HEAD(&scb_data->sg_maps, sg_map, links); in ahd_alloc_scbs()
6883 ahd_dmamap_load(ahd, scb_data->sg_dmat, sg_map->dmamap, in ahd_alloc_scbs()
6889 scb_data->sgs_left = in ahd_alloc_scbs()
6897 if (scb_data->sense_left != 0) { in ahd_alloc_scbs()
6900 offset = PAGE_SIZE - (AHD_SENSE_BUFSIZE * scb_data->sense_left); in ahd_alloc_scbs()
6901 sense_map = SLIST_FIRST(&scb_data->sense_maps); in ahd_alloc_scbs()
6911 if (ahd_dmamem_alloc(ahd, scb_data->sense_dmat, in ahd_alloc_scbs()
6918 SLIST_INSERT_HEAD(&scb_data->sense_maps, sense_map, links); in ahd_alloc_scbs()
6920 ahd_dmamap_load(ahd, scb_data->sense_dmat, sense_map->dmamap, in ahd_alloc_scbs()
6926 scb_data->sense_left = PAGE_SIZE / AHD_SENSE_BUFSIZE; in ahd_alloc_scbs()
6933 newcount = min(scb_data->sense_left, scb_data->scbs_left); in ahd_alloc_scbs()
6934 newcount = min(newcount, scb_data->sgs_left); in ahd_alloc_scbs()
6935 newcount = min(newcount, (AHD_SCB_MAX_ALLOC - scb_data->numscbs)); in ahd_alloc_scbs()
6984 next_scb->hscb->tag = ahd_htole16(scb_data->numscbs); in ahd_alloc_scbs()
6985 col_tag = scb_data->numscbs ^ 0x100; in ahd_alloc_scbs()
6996 scb_data->numscbs++; in ahd_alloc_scbs()
6997 scb_data->sense_left--; in ahd_alloc_scbs()
6998 scb_data->scbs_left--; in ahd_alloc_scbs()
6999 scb_data->sgs_left--; in ahd_alloc_scbs()
7024 ahd->scb_data.maxhscbs); in ahd_controller_info()
8318 if (scbid >= ahd->scb_data.numscbs) { in ahd_search_qinfifo()
8321 ahd_name(ahd), scbid, ahd->scb_data.numscbs); in ahd_search_qinfifo()
8444 if (scbid >= ahd->scb_data.numscbs) { in ahd_search_scb_list()
8447 ahd_name(ahd), scbid, ahd->scb_data.numscbs); in ahd_search_scb_list()
9803 ahd->scb_data.numscbs, ahd_inw(ahd, CMDS_PENDING), in ahd_dump_card_state()
9829 TAILQ_FOREACH(scb, &ahd->scb_data.free_scbs, links.tqe) { in ahd_dump_card_state()
9839 LIST_FOREACH(scb, &ahd->scb_data.any_dev_free_scb_list, links.le) { in ahd_dump_card_state()