segedy@cspi.com (Cathy Segedy) (02/27/90)
Hello. Sorry about the strange combo of newsgroups I'm posting to, but I wasn't sure where to ask this. I am trying to write a device driver for a device on an AT-bus on a 386 machine running Unix sysV 3.2. The device has some memory, and I would like to use one of the dma controllers which come standard with the machine to get at that memory. My question is several-fold. The first problem should be fairly simple. When you are in your driver WRITE routine (or READ routine), how do you get access to the address being written to on the device? (Most other unix drivers have more parameters to the write. The 386 drivers only have the device number as a paramater.). My next questions are specifically about the DMA controller. It looks to me like a dmareq structure only holds one address. Is that the host address, or the device address? And, is the d_proc() pointer in the dmareq structure supposed to point to a routine which I write to tell the DMA to do the transfer? If so, how do I tell the DMA controller to do the transfer? Also, if so, I assume that this means I can pass the missing address as a parameter to the d_proc() routine? I hope what I am asking is clear, especially since I feel rather confused. Oh, I read AT&T's driver manual(s), and am still confused, so please don't send me to those. I'd rather people sent mail to me, rather than post, since this is rather specific. Also please don't do a 'reply', as the return path for news doesn't work. thanks in advance, cathy segedy decvax!cspi!segedy | note: don't use .com after cspi. It will apollo!cspi!segedy | just get lost. uunet!tci!cspi!segedy -- decvax!cspi!segedy | C++ hackers have more class apollo!cspi!segedy | uunet!tci!cspi!segedy |