summaryrefslogtreecommitdiff
path: root/sys/dev/pci/hifn7751.c
diff options
context:
space:
mode:
authorJason Wright <jason@cvs.openbsd.org>2000-03-17 21:59:08 +0000
committerJason Wright <jason@cvs.openbsd.org>2000-03-17 21:59:08 +0000
commit5e7cc12a259f6027b92f41787eb2eca45791451a (patch)
tree1bdfb37758a53e1d392b384e3593bc08606258a4 /sys/dev/pci/hifn7751.c
parent23ed16213d632d91650c958d31d388b7ba38c48e (diff)
Be sure to mask out the chip stepping when examining the chip level
For round robin requests, use one static variable and hifn_cd to decide the next device to use.
Diffstat (limited to 'sys/dev/pci/hifn7751.c')
-rw-r--r--sys/dev/pci/hifn7751.c28
1 files changed, 11 insertions, 17 deletions
diff --git a/sys/dev/pci/hifn7751.c b/sys/dev/pci/hifn7751.c
index 0b01c3e25e1..d5fe658888f 100644
--- a/sys/dev/pci/hifn7751.c
+++ b/sys/dev/pci/hifn7751.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: hifn7751.c,v 1.12 2000/03/17 20:31:30 jason Exp $ */
+/* $OpenBSD: hifn7751.c,v 1.13 2000/03/17 21:59:07 jason Exp $ */
/*
* Invertex AEON / Hi/fn 7751 driver
@@ -89,9 +89,6 @@ u_int32_t hifn_next_signature __P((u_int a, u_int cnt));
/*
* Used for round robin crypto requests
*/
-int hifn_num_devices = 0;
-struct hifn_softc *hifn_devices[HIFN_MAX_DEVICES];
-
int
hifn_probe(parent, match, aux)
struct device *parent;
@@ -235,9 +232,6 @@ hifn_attach(parent, self, aux)
return;
}
- hifn_devices[hifn_num_devices] = sc;
- hifn_num_devices++;
-
hifn_sessions(sc);
printf(", %dk %cram, %d sessions, %s\n",
@@ -366,13 +360,13 @@ hifn_enable_crypto(sc, pciid)
*/
WRITE_REG_0(sc, HIFN_0_PUCNFG, ramcfg | HIFN_PUCNFG_CHIPID);
- encl = READ_REG_0(sc, HIFN_0_PUSTAT);
+ encl = READ_REG_0(sc, HIFN_0_PUSTAT) & HIFN_PUSTAT_CHIPENA;
/*
* Make sure we don't re-unlock. Two unlocks kills chip until the
* next reboot.
*/
- if (encl == 0x1020 || encl == 0x1120) {
+ if (encl == HIFN_PUSTAT_ENA_1 || encl == HIFN_PUSTAT_ENA_2) {
#ifdef HIFN_DEBUG
printf("%s: Strong Crypto already enabled!\n",
sc->sc_dv.dv_xname);
@@ -382,7 +376,7 @@ hifn_enable_crypto(sc, pciid)
return 0; /* success */
}
- if (encl != 0 && encl != 0x3020) {
+ if (encl != 0 && encl != HIFN_PUSTAT_ENA_0) {
#ifdef HIFN_DEBUG
printf("%: Unknown encryption level\n", sc->sc_dv.dv_xname);
#endif
@@ -402,10 +396,10 @@ hifn_enable_crypto(sc, pciid)
}
WRITE_REG_0(sc, HIFN_0_PUCNFG, ramcfg | HIFN_PUCNFG_CHIPID);
- encl = READ_REG_0(sc, HIFN_0_PUSTAT);
+ encl = READ_REG_0(sc, HIFN_0_PUSTAT) & HIFN_PUSTAT_CHIPENA;
#ifdef HIFN_DEBUG
- if (encl != 0x1020 && encl != 0x1120)
+ if (encl != HIFN_PUSTAT_ENA_1 && encl != HIFN_PUSTAT_ENA_2)
printf("Encryption engine is permanently locked until next system reset.");
else
printf("Encryption engine enabled successfully!");
@@ -415,13 +409,13 @@ hifn_enable_crypto(sc, pciid)
WRITE_REG_1(sc, HIFN_1_DMA_CNFG, dmacfg);
switch(encl) {
- case 0x3020:
+ case HIFN_PUSTAT_ENA_0:
printf(": no encr/auth");
break;
- case 0x1020:
+ case HIFN_PUSTAT_ENA_1:
printf(": DES enabled");
break;
- case 0x1120:
+ case HIFN_PUSTAT_ENA_2:
printf(": fully enabled");
break;
default:
@@ -973,8 +967,8 @@ hifn_crypto(struct hifn_command *cmd)
/* Pick the hifn board to send the data to. Right now we use a round
* robin approach. */
- sc = hifn_devices[current_device++];
- if (current_device == hifn_num_devices)
+ sc = hifn_cd.cd_devs[current_device];
+ if (++current_device == hifn_cd.cd_ndevs)
current_device = 0;
dma = sc->sc_dma;