1/* 2 * Device probe and attach routines for the following 3 * Advanced Systems Inc. SCSI controllers: 4 * 5 * Single Channel Products: 6 * ABP742 - Bus-Master EISA (240 CDB) 7 * 8 * Dual Channel Products: --- 18 unchanged lines hidden (view full) --- 27 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * |
35 * $FreeBSD: head/sys/dev/advansys/adv_eisa.c 112782 2003-03-29 09:46:10Z mdodd $ |
36 */ 37 38#include <sys/param.h> 39#include <sys/systm.h> 40#include <sys/kernel.h> 41#include <sys/module.h> 42#include <sys/bus.h> 43 --- 122 unchanged lines hidden (view full) --- 166 if (adv_b == NULL) 167 goto bad; 168 169 /* 170 * Allocate a parent dmatag for all tags created 171 * by the MI portions of the advansys driver 172 */ 173 /* XXX Should be a child of the PCI bus dma tag */ |
174 error = bus_dma_tag_create( 175 /* parent */ NULL, 176 /* alignment */ 1, 177 /* boundary */ 0, 178 /* lowaddr */ ADV_EISA_MAX_DMA_ADDR, 179 /* highaddr */ BUS_SPACE_MAXADDR, 180 /* filter */ NULL, 181 /* filterarg */ NULL, 182 /* maxsize */ BUS_SPACE_MAXSIZE_32BIT, 183 /* nsegments */ ~0, 184 /* maxsegsz */ ADV_EISA_MAX_DMA_COUNT, 185 /* flags */ 0, 186 &adv_b->parent_dmat); |
187 188 if (error != 0) { 189 printf("%s: Could not allocate DMA tag - error %d\n", 190 adv_name(adv_b), error); 191 adv_free(adv_b); 192 goto bad; 193 } 194 --- 9 unchanged lines hidden (view full) --- 204 goto bad; 205 } 206 207 /* 208 * Allocate a parent dmatag for all tags created 209 * by the MI portions of the advansys driver 210 */ 211 /* XXX Should be a child of the PCI bus dma tag */ |
212 error = bus_dma_tag_create( 213 /* parent */ NULL, 214 /* alignment */ 1, 215 /* boundary */ 0, 216 /* lowaddr */ ADV_EISA_MAX_DMA_ADDR, 217 /* highaddr */ BUS_SPACE_MAXADDR, 218 /* filter */ NULL, 219 /* filterarg */ NULL, 220 /* maxsize */ BUS_SPACE_MAXSIZE_32BIT, 221 /* nsegments */ ~0, 222 /* maxsegsz */ ADV_EISA_MAX_DMA_COUNT, 223 /* flags */ 0, 224 &adv->parent_dmat); |
225 226 if (error != 0) { 227 printf("%s: Could not allocate DMA tag - error %d\n", 228 adv_name(adv), error); 229 adv_free(adv); 230 goto bad; 231 } 232 233 adv->init_level++; 234 break; 235 default: 236 printf("adveisaattach: Unknown device type!\n"); 237 goto bad; 238 break; 239 } 240 241 if (overrun_buf == NULL) { 242 /* Need to allocate our overrun buffer */ |
243 if (bus_dma_tag_create( 244 /* parent */ adv->parent_dmat, 245 /* alignment */ 8, 246 /* boundary */ 0, 247 /* lowaddr */ ADV_EISA_MAX_DMA_ADDR, 248 /* highaddr */ BUS_SPACE_MAXADDR, 249 /* filter */ NULL, 250 /* filterarg */ NULL, 251 /* maxsize */ ADV_OVERRUN_BSIZE, 252 /* nsegments */ 1, 253 /* maxsegsz */ BUS_SPACE_MAXSIZE_32BIT, 254 /* flags */ 0, 255 &overrun_dmat) != 0) { |
256 adv_free(adv); 257 goto bad; 258 } 259 if (bus_dmamem_alloc(overrun_dmat, 260 (void **)&overrun_buf, 261 BUS_DMA_NOWAIT, 262 &overrun_dmamap) != 0) { 263 bus_dma_tag_destroy(overrun_dmat); --- 83 unchanged lines hidden --- |