summaryrefslogtreecommitdiffstats
path: root/sys/dev/sym/sym_hipd.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/sym/sym_hipd.c')
-rw-r--r--sys/dev/sym/sym_hipd.c39
1 files changed, 27 insertions, 12 deletions
diff --git a/sys/dev/sym/sym_hipd.c b/sys/dev/sym/sym_hipd.c
index 66776e9..83aada7 100644
--- a/sys/dev/sym/sym_hipd.c
+++ b/sys/dev/sym/sym_hipd.c
@@ -56,7 +56,7 @@
* SUCH DAMAGE.
*/
-#define SYM_DRIVER_NAME "sym-0.11.0-19991120"
+#define SYM_DRIVER_NAME "sym-0.12.0-19991127"
#include <pci.h>
#include <stddef.h> /* For offsetof */
@@ -356,7 +356,7 @@ static int sym_debug = 0;
#define DEBUG_FLAGS sym_debug
#else
/* #define DEBUG_FLAGS (0x0631) */
- #define DEBUG_FLAGS (0x0)
+ #define DEBUG_FLAGS (0x00)
#endif
#define sym_verbose (np->verbose)
@@ -4281,8 +4281,12 @@ static int sym_prepare_nego(hcb_p np, ccb_p cp, int nego, u_char *msgptr)
/*
* For now, only use PPR with DT option if period factor = 9.
*/
- if (tp->tinfo.goal.period == 9)
- tp->tinfo.goal.options = PPR_OPT_DT;
+ if (tp->tinfo.goal.period == 9) {
+ tp->tinfo.goal.width = BUS_16_BIT;
+ tp->tinfo.goal.options |= PPR_OPT_DT;
+ }
+ else
+ tp->tinfo.goal.options &= ~PPR_OPT_DT;
#endif
/*
* Early C1010 chips need a work-around for DT
@@ -4340,7 +4344,9 @@ static int sym_prepare_nego(hcb_p np, ccb_p cp, int nego, u_char *msgptr)
if (nego) {
tp->nego_cp = cp; /* Keep track a nego will be performed */
if (DEBUG_FLAGS & DEBUG_NEGO) {
- sym_print_msg(cp, "nego msgout:", msgptr);
+ sym_print_msg(cp, nego == NS_SYNC ? "sync msgout" :
+ nego == NS_WIDE ? "wide msgout" :
+ "ppr msgout", msgptr);
};
};
@@ -4878,6 +4884,7 @@ static void sym_setwide(hcb_p np, ccb_p cp, u_char wide)
tp->tinfo.goal.width = tp->tinfo.current.width = wide;
tp->tinfo.current.offset = 0;
tp->tinfo.current.period = 0;
+ tp->tinfo.current.options = 0;
neg.bus_width = wide ? BUS_16_BIT : BUS_8_BIT;
neg.sync_period = tp->tinfo.current.period;
neg.sync_offset = tp->tinfo.current.offset;
@@ -4935,8 +4942,7 @@ static void sym_setpprot(hcb_p np, ccb_p cp, u_char dt, u_char ofs,
tp->tinfo.goal.width = tp->tinfo.current.width = wide;
tp->tinfo.goal.period = tp->tinfo.current.period = per;
tp->tinfo.goal.offset = tp->tinfo.current.offset = ofs;
- tp->tinfo.current.offset= dt ? PPR_OPT_DT : 0;
- tp->tinfo.goal.offset = tp->tinfo.current.offset = ofs;
+ tp->tinfo.goal.options = tp->tinfo.current.options = dt;
neg.sync_period = tp->tinfo.current.period;
neg.sync_offset = tp->tinfo.current.offset;
neg.bus_width = wide ? BUS_16_BIT : BUS_8_BIT;
@@ -7111,7 +7117,7 @@ static void sym_sync_nego(hcb_p np, tcb_p tp, ccb_p cp)
* Synchronous request message received.
*/
if (DEBUG_FLAGS & DEBUG_NEGO) {
- sym_print_msg(cp, "sync msg in", np->msgin);
+ sym_print_msg(cp, "sync msgin", np->msgin);
};
/*
@@ -7212,7 +7218,7 @@ static void sym_ppr_nego(hcb_p np, tcb_p tp, ccb_p cp)
* Synchronous request message received.
*/
if (DEBUG_FLAGS & DEBUG_NEGO) {
- sym_print_msg(cp, "sync msg in", np->msgin);
+ sym_print_msg(cp, "ppr msgin", np->msgin);
};
/*
@@ -7261,8 +7267,10 @@ static void sym_ppr_nego(hcb_p np, tcb_p tp, ccb_p cp)
}
if (ofs) {
- if (dt && per < np->minsync_dt)
- {chg = 1; per = np->minsync_dt;}
+ if (dt) {
+ if (per < np->minsync_dt)
+ {chg = 1; per = np->minsync_dt;}
+ }
else if (per < np->minsync)
{chg = 1; per = np->minsync;}
if (req) {
@@ -7311,7 +7319,7 @@ static void sym_ppr_nego(hcb_p np, tcb_p tp, ccb_p cp)
cp->nego_status = NS_PPR;
if (DEBUG_FLAGS & DEBUG_NEGO) {
- sym_print_msg(cp, "sync msgout", np->msgout);
+ sym_print_msg(cp, "ppr msgout", np->msgout);
}
np->msgin [0] = M_NOOP;
@@ -9507,9 +9515,15 @@ DATA_SET (pcidevice_set, sym_pci_driver);
#endif /* FreeBSD_4_Bus */
static struct sym_pci_chip sym_pci_dev_table[] = {
+ {PCI_ID_SYM53C810, 0x0f, "810", 4, 8, 4,
+ FE_ERL}
+ ,
{PCI_ID_SYM53C810, 0xff, "810a", 4, 8, 4,
FE_CACHE_SET|FE_LDSTR|FE_PFEN|FE_BOF}
,
+ {PCI_ID_SYM53C825, 0x0f, "825", 6, 8, 4,
+ FE_WIDE|FE_BOF|FE_ERL|FE_DIFF}
+ ,
{PCI_ID_SYM53C825, 0xff, "825a", 6, 8, 4,
FE_WIDE|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM|FE_DIFF}
,
@@ -9602,6 +9616,7 @@ sym_find_pci_chip(pcici_t pci_tag)
continue;
if (FE_LDSTR & chip->features)
return chip;
+ break;
}
return 0;
OpenPOWER on IntegriCloud