From owner-freebsd-multimedia Tue Jul 15 08:34:58 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id IAA04885 for multimedia-outgoing; Tue, 15 Jul 1997 08:34:58 -0700 (PDT) Received: from bmccane.uit.net (bmccane.uit.net [208.129.189.48]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id IAA04811; Tue, 15 Jul 1997 08:34:34 -0700 (PDT) Received: from bmccane.uit.net (localhost.mccane.com [127.0.0.1]) by bmccane.uit.net (8.8.5/8.8.5) with ESMTP id KAA22881; Tue, 15 Jul 1997 10:34:13 -0500 (CDT) Message-Id: <199707151534.KAA22881@bmccane.uit.net> X-Mailer: exmh version 2.0gamma 1/27/96 To: Amancio Hasty cc: multimedia@FreeBSD.ORG, chat@FreeBSD.ORG Subject: Re: Free At Last: A Scanner Storyn In-reply-to: Your message of "Sat, 28 Jun 1997 23:30:06 PDT." <199706290630.XAA07386@rah.star-gate.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Tue, 15 Jul 1997 10:34:13 -0500 From: Wm Brian McCane Sender: owner-multimedia@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk > This is what I did to the scsi subsystem: > > /sys/scsi/scsiconf.c: > static struct scsidevs unknowndev = > { > T_UNKNOWN, T_UNKNOWN, 0, "*", "*", "*", > "uk", SC_ONE_LU > /* "uk", SC_MORE_LUS*/ > }; > > > /sys/scsi/scsi_ioctl.c: > > case XS_BUSY: > SC_DEBUG(xs->sc_link,SDEV_DB3,("busy\n")); > screq->retsts = SCCMD_BUSY; > break; > > default: > /*sc_print_addr(xs->sc_link); */ > screq->retsts = SCCMD_UNKNOWN; > break; > } > Howdy, sorry it has taken me so long to get back with you, I've been very busy (yay! I get paid ;). Anyway, after making your changes and building a new UNIX kernel, it appears to work "correctly". Except for one small problem: Whataver is in the buffer passed to the "INQUIRY" command in mustek.c is returned unchanged. The odd thing is that I am being told that the command succeeded, and that 96 bytes were read. I have tried to look at umax_??.c for differences, but there are more than a few. I then tried: $ scsi -f /dev/uk0 -c "12 0 0 0 60 0" -i 96 "s8" the Kernel debug output looks like: uk0(ahc0:3:0): scsi_cmd uk0(ahc0:3:0): get_xs uk0(ahc0:3:0): returning xs(0xf048dc00): flg(0x60)sc_link(0xf048db80)retr(0x2)timo(0x186a0) cmd(0xf048dc58)len(0x6)data(0x0)len(0x0)res(0x0) err(0x0)bp(0x0) uk0: command: 0,0,0,0,0,0-[0 bytes] uk0(ahc0:3:0): scsi_done uk0: command: 0,0,0,0,0,0-[0 bytes] uk0(ahc0:3:0): back in cmd() uk0(ahc0:3:0): sc_err1,err = 0x0 uk0(ahc0:3:0): free_xs uk0(ahc0:3:0): ukopen: dev=0x1f00 (unit 0) result 0 uk0(ahc0:3:0): scsi_do_ioctl(0xc0605101) uk0(ahc0:3:0): user_strategy uk0(ahc0:3:0): scsi_cmd uk0(ahc0:3:0): get_xs uk0(ahc0:3:0): returning xs(0xf048dc00): flg(0x428)sc_link(0xf048db80)retr(0x0)timo(0x7d0) cmd(0xf048dc58)len(0x6)data(0xf377e080)len(0x60) res(0x0)err(0x0)bp(0xf0861000) uk0: command: 12,0,0,0,60,0-[96 bytes] ------------------------------ 000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 016: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 048: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ------------------------------ uk0(ahc0:3:0): abuk0(ahc0:3:0): scsi_done uk0: command: 12,0,0,0,60,0-[96 bytes] ------------------------------ 000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 016: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 048: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ------------------------------ uk0(ahc0:3:0): calling user done() uk0(ahc0:3:0): user-done uk0(ahc0:3:0): no error uk0(ahc0:3:0): returned from user done() uk0(ahc0:3:0): free_xs uk0(ahc0:3:0): returning to adapter out to sleep uk0(ahc0:3:0): back from sleep uk0(ahc0:3:0): ukclose: Closing device Notice that ALL 0's are returned in the result buffer, which is what is passed in the scsi command because they "bzero" the buffer before calling scsireq_enter. Could my problem be because this is a "Unknown device" and is thus not copying the result buffer into user space. Or could it be something else? brian