X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/cd8e870de9fd47f12a2f3bb3574de57651ff25c9..5e35ed2481cff3093e5df1d23606e3f8ce318fba:/usr/src/sys/vax/uba/ad.c diff --git a/usr/src/sys/vax/uba/ad.c b/usr/src/sys/vax/uba/ad.c index 62942e03b2..9a0e7d1dea 100644 --- a/usr/src/sys/vax/uba/ad.c +++ b/usr/src/sys/vax/uba/ad.c @@ -1,4 +1,4 @@ -/* ad.c 4.2 82/06/26 */ +/* ad.c 4.6 82/10/17 */ #include "ad.h" #if NAD > 0 @@ -12,9 +12,10 @@ #include "../h/systm.h" #include "../h/map.h" #include "../h/pte.h" -#include "../h/ubareg.h" -#include "../h/ubavar.h" -#include "../h/adreg.h" + +#include "../vaxuba/ubareg.h" +#include "../vaxuba/ubavar.h" +#include "../vaxuba/adreg.h" #define ADBUSY 01 #define ADWAITPRI (PZERO+1) @@ -41,17 +42,20 @@ struct ad { adprobe(reg) caddr_t reg; { - register int br, cvec; + register int br, cvec; /* value-result */ register struct addevice *adaddr = (struct addevice *) reg; adaddr->ad_csr = AD_IENABLE | AD_START; DELAY(40000); adaddr->ad_csr = 0; + return (sizeof (struct addevice)); } +/*ARGSUSED*/ adattach(ui) struct uba_device *ui; { + } adopen(dev) @@ -60,15 +64,14 @@ adopen(dev) register struct ad *adp; register struct uba_device *ui; - if(ADUNIT(dev) >= NAD || (adp = &ad[ADUNIT(dev)])->ad_open || - (ui = addinfo[ADUNIT(dev)]) == 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + if (ADUNIT(dev) >= NAD || (adp = &ad[ADUNIT(dev)])->ad_open || + (ui = addinfo[ADUNIT(dev)]) == 0 || ui->ui_alive == 0) + return (ENXIO); adp->ad_open = 1; adp->ad_icnt = 0; adp->ad_state = 0; adp->ad_uid = u.u_uid; + return (0); } adclose(dev) @@ -85,40 +88,40 @@ adioctl(dev, cmd, addr, flag) register caddr_t addr; { register struct addevice *adaddr = - (struct addevice *) addinfo[ADUNIT(dev)]->ui_addr; + (struct addevice *) addinfo[ADUNIT(dev)]->ui_addr; register struct uba_device *ui = addinfo[ADUNIT(dev)]; register struct ad *adp; register int i; short int chan; switch (cmd) { - case AD_CHAN: + + case ADIOSCHAN: adp = &ad[ADUNIT(dev)]; - chan = fuword(addr); - if(chan == -1) - u.u_error = EFAULT; - else - adp->ad_chan = chan<<8; + adp->ad_chan = (*(int *)data)<<8; break; - case AD_READ: + + case ADIOGETW: adp = &ad[ADUNIT(dev)]; spl6(); adaddr->ad_csr = adp->ad_chan; i = 1000; - while(i-- > 0 && (adaddr->ad_csr&037400) != adp->ad_chan) { + while (i-- > 0 && (adaddr->ad_csr&037400) != adp->ad_chan) { adp->ad_loop++; adaddr->ad_csr = adp->ad_chan; } adp->ad_state |= ADBUSY; adaddr->ad_csr |= AD_IENABLE|AD_START; - while(adp->ad_state&ADBUSY) + while (adp->ad_state&ADBUSY) sleep((caddr_t)adp, ADWAITPRI); spl0(); - (void) suword(addr, adp->ad_softdata); + *(int *)data = adp->ad_softdata; break; + default: - u.u_error = ENOTTY; /* Not a legal ioctl cmd. */ + return (ENOTTY); /* Not a legal ioctl cmd. */ } + return (0); } /*ARGSUSED*/