Lines Matching +full:hi +full:- +full:speed
1 /*-
2 * SPDX-License-Identifier: BSD-4-Clause
4 * Copyright (c) 2002-2003
71 &fwmem_eui64.hi, 0, "Fwmem target EUI64 high");
74 SYSCTL_INT(_hw_firewire_fwmem, OID_AUTO, speed, CTLFLAG_RW, &fwmem_speed, 0,
75 "Fwmem link speed");
104 xfer->fc = fwdev->fc; in fwmem_xfer_req()
105 xfer->send.hdr.mode.hdr.dst = FWLOCALBUS | fwdev->dst; in fwmem_xfer_req()
107 xfer->send.spd = fwdev->speed; in fwmem_xfer_req()
109 xfer->send.spd = min(spd, fwdev->speed); in fwmem_xfer_req()
110 xfer->hand = hand; in fwmem_xfer_req()
111 xfer->sc = sc; in fwmem_xfer_req()
112 xfer->send.pay_len = slen; in fwmem_xfer_req()
113 xfer->recv.pay_len = rlen; in fwmem_xfer_req()
136 fp = &xfer->send.hdr; in fwmem_read_quad()
137 fp->mode.rreqq.tcode = FWTCODE_RREQQ; in fwmem_read_quad()
138 fp->mode.rreqq.dest_hi = dst_hi; in fwmem_read_quad()
139 fp->mode.rreqq.dest_lo = dst_lo; in fwmem_read_quad()
141 xfer->send.payload = NULL; in fwmem_read_quad()
142 xfer->recv.payload = (uint32_t *)data; in fwmem_read_quad()
145 printf("fwmem_read_quad: %d %04x:%08x\n", fwdev->dst, in fwmem_read_quad()
148 if (fw_asyreq(xfer->fc, -1, xfer) == 0) in fwmem_read_quad()
172 fp = &xfer->send.hdr; in fwmem_write_quad()
173 fp->mode.wreqq.tcode = FWTCODE_WREQQ; in fwmem_write_quad()
174 fp->mode.wreqq.dest_hi = dst_hi; in fwmem_write_quad()
175 fp->mode.wreqq.dest_lo = dst_lo; in fwmem_write_quad()
176 fp->mode.wreqq.data = *(uint32_t *)data; in fwmem_write_quad()
178 xfer->send.payload = xfer->recv.payload = NULL; in fwmem_write_quad()
181 printf("fwmem_write_quad: %d %04x:%08x %08x\n", fwdev->dst, in fwmem_write_quad()
184 if (fw_asyreq(xfer->fc, -1, xfer) == 0) in fwmem_write_quad()
209 fp = &xfer->send.hdr; in fwmem_read_block()
210 fp->mode.rreqb.tcode = FWTCODE_RREQB; in fwmem_read_block()
211 fp->mode.rreqb.dest_hi = dst_hi; in fwmem_read_block()
212 fp->mode.rreqb.dest_lo = dst_lo; in fwmem_read_block()
213 fp->mode.rreqb.len = len; in fwmem_read_block()
214 fp->mode.rreqb.extcode = 0; in fwmem_read_block()
216 xfer->send.payload = NULL; in fwmem_read_block()
217 xfer->recv.payload = data; in fwmem_read_block()
220 printf("fwmem_read_block: %d %04x:%08x %d\n", fwdev->dst, in fwmem_read_block()
222 if (fw_asyreq(xfer->fc, -1, xfer) == 0) in fwmem_read_block()
247 fp = &xfer->send.hdr; in fwmem_write_block()
248 fp->mode.wreqb.tcode = FWTCODE_WREQB; in fwmem_write_block()
249 fp->mode.wreqb.dest_hi = dst_hi; in fwmem_write_block()
250 fp->mode.wreqb.dest_lo = dst_lo; in fwmem_write_block()
251 fp->mode.wreqb.len = len; in fwmem_write_block()
252 fp->mode.wreqb.extcode = 0; in fwmem_write_block()
254 xfer->send.payload = data; in fwmem_write_block()
255 xfer->recv.payload = NULL; in fwmem_write_block()
258 printf("fwmem_write_block: %d %04x:%08x %d\n", fwdev->dst, in fwmem_write_block()
260 if (fw_asyreq(xfer->fc, -1, xfer) == 0) in fwmem_write_block()
278 FW_GLOCK(sc->fc); in fwmem_open()
279 if (dev->si_drv1 != NULL) { in fwmem_open()
281 FW_GUNLOCK(sc->fc); in fwmem_open()
284 FW_GUNLOCK(sc->fc); in fwmem_open()
285 fms = dev->si_drv1; in fwmem_open()
286 fms->refcount++; in fwmem_open()
288 dev->si_drv1 = (void *)-1; in fwmem_open()
289 FW_GUNLOCK(sc->fc); in fwmem_open()
290 dev->si_drv1 = malloc(sizeof(struct fwmem_softc), in fwmem_open()
292 dev->si_iosize_max = DFLTPHYS; in fwmem_open()
293 fms = dev->si_drv1; in fwmem_open()
294 bcopy(&fwmem_eui64, &fms->eui, sizeof(struct fw_eui64)); in fwmem_open()
295 fms->sc = sc; in fwmem_open()
296 fms->refcount = 1; in fwmem_open()
299 printf("%s: refcount=%d\n", __func__, fms->refcount); in fwmem_open()
309 fms = dev->si_drv1; in fwmem_close()
311 FW_GLOCK(fms->sc->fc); in fwmem_close()
312 fms->refcount--; in fwmem_close()
313 FW_GUNLOCK(fms->sc->fc); in fwmem_close()
315 printf("%s: refcount=%d\n", __func__, fms->refcount); in fwmem_close()
316 if (fms->refcount < 1) { in fwmem_close()
317 free(dev->si_drv1, M_FWMEM); in fwmem_close()
318 dev->si_drv1 = NULL; in fwmem_close()
330 bp = (struct bio *)xfer->sc; in fwmem_biodone()
331 bp->bio_error = xfer->resp; in fwmem_biodone()
333 if (bp->bio_error != 0) { in fwmem_biodone()
335 printf("%s: err=%d\n", __func__, bp->bio_error); in fwmem_biodone()
336 bp->bio_flags |= BIO_ERROR; in fwmem_biodone()
337 bp->bio_resid = bp->bio_bcount; in fwmem_biodone()
353 dev = bp->bio_dev; in fwmem_strategy()
356 fms = dev->si_drv1; in fwmem_strategy()
357 fwdev = fw_noderesolve_eui64(fms->sc->fc, &fms->eui); in fwmem_strategy()
361 fms->eui.hi, fms->eui.lo); in fwmem_strategy()
366 iolen = MIN(bp->bio_bcount, MAXLEN); in fwmem_strategy()
367 if (bp->bio_cmd == BIO_READ) { in fwmem_strategy()
368 if (iolen == 4 && (bp->bio_offset & 3) == 0) in fwmem_strategy()
371 bp->bio_offset >> 32, bp->bio_offset & 0xffffffff, in fwmem_strategy()
372 bp->bio_data, fwmem_biodone); in fwmem_strategy()
376 bp->bio_offset >> 32, bp->bio_offset & 0xffffffff, in fwmem_strategy()
377 iolen, bp->bio_data, fwmem_biodone); in fwmem_strategy()
379 if (iolen == 4 && (bp->bio_offset & 3) == 0) in fwmem_strategy()
382 bp->bio_offset >> 32, bp->bio_offset & 0xffffffff, in fwmem_strategy()
383 bp->bio_data, fwmem_biodone); in fwmem_strategy()
387 bp->bio_offset >> 32, bp->bio_offset & 0xffffffff, in fwmem_strategy()
388 iolen, bp->bio_data, fwmem_biodone); in fwmem_strategy()
395 bp->bio_resid = bp->bio_bcount - iolen; in fwmem_strategy()
400 bp->bio_error = err; in fwmem_strategy()
401 bp->bio_flags |= BIO_ERROR; in fwmem_strategy()
402 bp->bio_resid = bp->bio_bcount; in fwmem_strategy()
413 fms = dev->si_drv1; in fwmem_ioctl()
416 bcopy(data, &fms->eui, sizeof(struct fw_eui64)); in fwmem_ioctl()
419 bcopy(&fms->eui, data, sizeof(struct fw_eui64)); in fwmem_ioctl()