Module Name:    src
Committed By:   ragge
Date:           Tue Mar 20 13:30:40 UTC 2018

Modified Files:
        src/sys/arch/vax/boot/boot: if_qe.c

Log Message:
Change the driver to map the data structures onto the qbus.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/vax/boot/boot/if_qe.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/vax/boot/boot/if_qe.c
diff -u src/sys/arch/vax/boot/boot/if_qe.c:1.9 src/sys/arch/vax/boot/boot/if_qe.c:1.10
--- src/sys/arch/vax/boot/boot/if_qe.c:1.9	Mon Oct 26 19:16:58 2009
+++ src/sys/arch/vax/boot/boot/if_qe.c	Tue Mar 20 13:30:40 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_qe.c,v 1.9 2009/10/26 19:16:58 cegger Exp $ */
+/*	$NetBSD: if_qe.c,v 1.10 2018/03/20 13:30:40 ragge Exp $ */
 
 /*
  * Copyright (c) 1998 Roar Thronęs.  All rights reserved.
@@ -69,8 +69,8 @@ static struct  qe_softc {
 	char	qein[2048], qeout[2048];/* Packet buffers		*/
 } qe_softc;
 
-static	struct qe_softc *sc = &qe_softc;
-static	int addr;
+static	struct qe_softc *sc = &qe_softc, *psc;
+static	int addr, ubaddr;
 
 #define QE_WCSR(csr, val) \
 	(*((volatile u_short *)(addr + (csr))) = (val))
@@ -111,6 +111,9 @@ qe_init(u_char *eaddr)
 	QE_WCSR(QE_CSR_CSR, QE_RESET);
 	QE_WCSR(QE_CSR_CSR, QE_RCSR(QE_CSR_CSR) & ~QE_RESET);
 
+	ubaddr = ubmap(0, (int)sc, sizeof(struct qe_softc));
+	psc = (struct qe_softc *)ubaddr;
+
 	for (i = 0; i < 6; i++) {
 		sc->setup_pkt[i][1] = QE_RCSR(i * 2);
 		sc->setup_pkt[i+8][1] = QE_RCSR(i * 2);
@@ -125,13 +128,13 @@ qe_init(u_char *eaddr)
 
 	memset((void *)sc->rring, 0, sizeof(struct qe_ring));
 	sc->rring->qe_buf_len = -64;
-	sc->rring->qe_addr_lo = (short)((int)sc->setup_pkt);
-	sc->rring->qe_addr_hi = (short)((int)sc->setup_pkt >> 16);
+	sc->rring->qe_addr_lo = LOWORD(psc->setup_pkt);
+	sc->rring->qe_addr_hi = HIWORD(psc->setup_pkt);
 
 	memset((void *)sc->tring, 0, sizeof(struct qe_ring));
 	sc->tring->qe_buf_len = -64;
-	sc->tring->qe_addr_lo = (short)((int)sc->setup_pkt);
-	sc->tring->qe_addr_hi = (short)((int)sc->setup_pkt >> 16);
+	sc->tring->qe_addr_lo = LOWORD(psc->setup_pkt);
+	sc->tring->qe_addr_hi = HIWORD(psc->setup_pkt);
 
 	sc->rring[0].qe_flag = sc->rring[0].qe_status1 = QE_NOTYET;
 	sc->rring->qe_addr_hi |= QE_VALID;
@@ -141,10 +144,10 @@ qe_init(u_char *eaddr)
 
 	QE_WCSR(QE_CSR_CSR, QE_XMIT_INT | QE_RCV_INT);
 
-	QE_WCSR(QE_CSR_RCLL, LOWORD(sc->rring));
-	QE_WCSR(QE_CSR_RCLH, HIWORD(sc->rring));
-	QE_WCSR(QE_CSR_XMTL, LOWORD(sc->tring));
-	QE_WCSR(QE_CSR_XMTH, HIWORD(sc->tring));
+	QE_WCSR(QE_CSR_RCLL, LOWORD(psc->rring));
+	QE_WCSR(QE_CSR_RCLH, HIWORD(psc->rring));
+	QE_WCSR(QE_CSR_XMTL, LOWORD(psc->tring));
+	QE_WCSR(QE_CSR_XMTH, HIWORD(psc->tring));
 
 	while ((QE_RCSR(QE_CSR_CSR) & QE_INTS) != QE_INTS)
 		;
@@ -152,31 +155,31 @@ qe_init(u_char *eaddr)
 	QE_WCSR(QE_CSR_CSR, QE_RCSR(QE_CSR_CSR) & ~(QE_INT_ENABLE|QE_ELOOP));
 	QE_WCSR(QE_CSR_CSR, QE_RCSR(QE_CSR_CSR) | QE_ILOOP);
 
-	sc->rring[0].qe_addr_lo = (short)((int)sc->qein & 0xffff);
-	sc->rring[0].qe_addr_hi = (short)((int)sc->qein >> 16);
-	sc->rring[0].qe_buf_len=-MAXPACKETSIZE/2;
+	sc->rring[0].qe_addr_lo = LOWORD(psc->qein);
+	sc->rring[0].qe_addr_hi = HIWORD(psc->qein);
+	sc->rring[0].qe_buf_len = -MAXPACKETSIZE/2;
 	sc->rring[0].qe_addr_hi |= QE_VALID;
-	sc->rring[0].qe_flag=sc->rring[0].qe_status1=QE_NOTYET;
-	sc->rring[0].qe_status2=1;
+	sc->rring[0].qe_flag = sc->rring[0].qe_status1 = QE_NOTYET;
+	sc->rring[0].qe_status2 = 1;
 
 	sc->rring[1].qe_addr_lo = 0;
 	sc->rring[1].qe_addr_hi = 0;
 	sc->rring[1].qe_flag=sc->rring[1].qe_status1=QE_NOTYET;
 	sc->rring[1].qe_status2=1;
 
-	sc->tring[0].qe_addr_lo = (short)((int)sc->qeout & 0xffff);
-	sc->tring[0].qe_addr_hi = (short)((int)sc->qeout >> 16);
-	sc->tring[0].qe_buf_len=0;
-	sc->tring[0].qe_flag=sc->tring[0].qe_status1=QE_NOTYET;
+	sc->tring[0].qe_addr_lo = LOWORD(psc->qeout);
+	sc->tring[0].qe_addr_hi = HIWORD(psc->qeout);
+	sc->tring[0].qe_buf_len = 0;
+	sc->tring[0].qe_flag = sc->tring[0].qe_status1 = QE_NOTYET;
 	sc->tring[0].qe_addr_hi |= QE_EOMSG|QE_VALID;
 
-	sc->tring[1].qe_flag=sc->tring[1].qe_status1=QE_NOTYET;
+	sc->tring[1].qe_flag = sc->tring[1].qe_status1 = QE_NOTYET;
 	sc->tring[1].qe_addr_lo = 0;
 	sc->tring[1].qe_addr_hi = 0;
 
 	QE_WCSR(QE_CSR_CSR, QE_RCSR(QE_CSR_CSR) | QE_RCV_ENABLE);
-	QE_WCSR(QE_CSR_RCLL, LOWORD(sc->rring));
-	QE_WCSR(QE_CSR_RCLH, HIWORD(sc->rring));
+	QE_WCSR(QE_CSR_RCLL, LOWORD(psc->rring));
+	QE_WCSR(QE_CSR_RCLH, HIWORD(psc->rring));
 }
 
 int
@@ -206,12 +209,12 @@ retry:
 
 end:
 	sc->rring[0].qe_status2 = sc->rring[1].qe_status2 = 1;
-	sc->rring[0].qe_flag=sc->rring[0].qe_status1=QE_NOTYET;
-	sc->rring[1].qe_flag=sc->rring[1].qe_status1=QE_NOTYET;
+	sc->rring[0].qe_flag = sc->rring[0].qe_status1 = QE_NOTYET;
+	sc->rring[1].qe_flag = sc->rring[1].qe_status1 = QE_NOTYET;
 	QE_WCSR(QE_CSR_CSR, QE_RCSR(QE_CSR_CSR) | QE_RCV_ENABLE);
 
-	QE_WCSR(QE_CSR_RCLL, LOWORD(sc->rring));
-	QE_WCSR(QE_CSR_RCLH, HIWORD(sc->rring));
+	QE_WCSR(QE_CSR_RCLL, LOWORD(psc->rring));
+	QE_WCSR(QE_CSR_RCLH, HIWORD(psc->rring));
 	return len;
 
 fail:	len = -1;
@@ -223,12 +226,12 @@ qe_put(struct iodesc *desc, void *pkt, s
 	int j;
 
 	memcpy((char *)sc->qeout, pkt, len);
-	sc->tring[0].qe_buf_len=-len/2;
-	sc->tring[0].qe_flag=sc->tring[0].qe_status1=QE_NOTYET;
-	sc->tring[1].qe_flag=sc->tring[1].qe_status1=QE_NOTYET;
+	sc->tring[0].qe_buf_len = -len/2;
+	sc->tring[0].qe_flag = sc->tring[0].qe_status1 = QE_NOTYET;
+	sc->tring[1].qe_flag = sc->tring[1].qe_status1 = QE_NOTYET;
 
-	QE_WCSR(QE_CSR_XMTL, LOWORD(sc->tring));
-	QE_WCSR(QE_CSR_XMTH, HIWORD(sc->tring));
+	QE_WCSR(QE_CSR_XMTL, LOWORD(psc->tring));
+	QE_WCSR(QE_CSR_XMTH, HIWORD(psc->tring));
 
 	for(j = 0; (j < 0x10000) && ((QE_RCSR(QE_CSR_CSR) & QE_XMIT_INT) == 0); j++)
 		;

Reply via email to