diff options
author | Jason Wright <jason@cvs.openbsd.org> | 2001-05-30 05:30:18 +0000 |
---|---|---|
committer | Jason Wright <jason@cvs.openbsd.org> | 2001-05-30 05:30:18 +0000 |
commit | 017446c66dd61b5f3bffbfd7ba804b9e8f110559 (patch) | |
tree | e27e39139101798c1246cb700833b8f03ddf4294 /sys/dev | |
parent | ec46b36cdea1dfadee269ad45051b83ac4162577 (diff) |
define txp_command() in terms of txp_command2().
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/pci/if_txp.c | 52 |
1 files changed, 3 insertions, 49 deletions
diff --git a/sys/dev/pci/if_txp.c b/sys/dev/pci/if_txp.c index bf530509a12..9b14bed79d1 100644 --- a/sys/dev/pci/if_txp.c +++ b/sys/dev/pci/if_txp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_txp.c,v 1.37 2001/05/30 04:49:32 jason Exp $ */ +/* $OpenBSD: if_txp.c,v 1.38 2001/05/30 05:30:17 jason Exp $ */ /* * Copyright (c) 2001 @@ -1368,67 +1368,21 @@ txp_command(sc, id, in1, in2, in3, out1, out2, out3, wait) u_int32_t in2, in3, *out2, *out3; int wait; { - struct txp_hostvar *hv = sc->sc_hostvar; - struct txp_cmd_desc *cmd; struct txp_rsp_desc *rsp = NULL; - u_int32_t idx, i; - u_int16_t seq; - if (txp_cmd_desc_numfree(sc) == 0) { - printf("%s: no free cmd descriptors\n", TXP_DEVNAME(sc)); + if (txp_command2(sc, id, in1, in2, in3, NULL, 0, &rsp, wait)) return (-1); - } - - idx = sc->sc_cmdring.lastwrite; - cmd = (struct txp_cmd_desc *)(((u_int8_t *)sc->sc_cmdring.base) + idx); - bzero(cmd, sizeof(*cmd)); - - cmd->cmd_numdesc = 0; - cmd->cmd_seq = seq = sc->sc_seq++; - cmd->cmd_id = id; - cmd->cmd_par1 = in1; - cmd->cmd_par2 = in2; - cmd->cmd_par3 = in3; - cmd->cmd_flags = CMD_FLAGS_TYPE_CMD | - (wait ? CMD_FLAGS_RESP : 0) | CMD_FLAGS_VALID; - - idx += sizeof(struct txp_cmd_desc); - if (idx == sc->sc_cmdring.size) - idx = 0; - sc->sc_cmdring.lastwrite = idx; - - WRITE_REG(sc, TXP_H2A_2, sc->sc_cmdring.lastwrite); if (!wait) return (0); - for (i = 0; i < 10000; i++) { - idx = hv->hv_resp_read_idx; - if (idx != hv->hv_resp_write_idx) { - rsp = NULL; - if (txp_response(sc, idx, cmd->cmd_id, seq, &rsp)) - return (-1); - if (rsp != NULL) - break; - } - DELAY(50); - } - if (i == 1000 || rsp == NULL) { - printf("%s: 0x%x command failed\n", TXP_DEVNAME(sc), id); - if (rsp != NULL) - free(rsp, M_DEVBUF); - return (-1); - } - if (out1 != NULL) *out1 = rsp->rsp_par1; if (out2 != NULL) *out2 = rsp->rsp_par2; if (out3 != NULL) *out3 = rsp->rsp_par3; - free(rsp, M_DEVBUF); - return (0); } @@ -1490,7 +1444,7 @@ txp_command2(sc, id, in1, in2, in3, in_extp, in_extn, rspp, wait) idx = hv->hv_resp_read_idx; if (idx != hv->hv_resp_write_idx) { *rspp = NULL; - if (txp_response(sc, idx, cmd->cmd_id, seq, rspp)) + if (txp_response(sc, idx, id, seq, rspp)) return (-1); if (*rspp != NULL) break; |