projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
create netif directory
[unix-history]
/
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
62942e0
..
9a0e7d1
100644
(file)
--- 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
#include "ad.h"
#if NAD > 0
@@
-12,9
+12,10
@@
#include "../h/systm.h"
#include "../h/map.h"
#include "../h/pte.h"
#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)
#define ADBUSY 01
#define ADWAITPRI (PZERO+1)
@@
-41,17
+42,20
@@
struct ad {
adprobe(reg)
caddr_t reg;
{
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;
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;
{
adattach(ui)
struct uba_device *ui;
{
+
}
adopen(dev)
}
adopen(dev)
@@
-60,15
+64,14
@@
adopen(dev)
register struct ad *adp;
register struct uba_device *ui;
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;
adp->ad_open = 1;
adp->ad_icnt = 0;
adp->ad_state = 0;
adp->ad_uid = u.u_uid;
+ return (0);
}
adclose(dev)
}
adclose(dev)
@@
-85,40
+88,40
@@
adioctl(dev, cmd, addr, flag)
register caddr_t addr;
{
register struct addevice *adaddr =
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) {
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)];
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;
break;
- case AD_READ:
+
+ case ADIOGETW:
adp = &ad[ADUNIT(dev)];
spl6();
adaddr->ad_csr = adp->ad_chan;
i = 1000;
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;
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();
sleep((caddr_t)adp, ADWAITPRI);
spl0();
-
(void) suword(addr, adp->ad_softdata)
;
+
*(int *)data = adp->ad_softdata
;
break;
break;
+
default:
default:
-
u.u_error = ENOTTY;
/* Not a legal ioctl cmd. */
+
return (ENOTTY);
/* Not a legal ioctl cmd. */
}
}
+ return (0);
}
/*ARGSUSED*/
}
/*ARGSUSED*/