summaryrefslogtreecommitdiffstats
path: root/sys/mips/nlm
diff options
context:
space:
mode:
authorjchandra <jchandra@FreeBSD.org>2012-07-09 10:24:45 +0000
committerjchandra <jchandra@FreeBSD.org>2012-07-09 10:24:45 +0000
commit3d80021c42e3b39a81ee89fafa246cf5efb068af (patch)
treeab9915fe9a2f30289771c39232862250de335a19 /sys/mips/nlm
parentcb0efb3f8e42132a218817041245c4391fdb3173 (diff)
downloadFreeBSD-src-3d80021c42e3b39a81ee89fafa246cf5efb068af.zip
FreeBSD-src-3d80021c42e3b39a81ee89fafa246cf5efb068af.tar.gz
Identify Netlogic XLP 8xx B1 chip revisions
Add functions to check for 8xx B0 and 3xx Ax revisions which will be used in network block initialization.
Diffstat (limited to 'sys/mips/nlm')
-rw-r--r--sys/mips/nlm/board.c2
-rw-r--r--sys/mips/nlm/xlp.h23
2 files changed, 25 insertions, 0 deletions
diff --git a/sys/mips/nlm/board.c b/sys/mips/nlm/board.c
index b4b0439..c6fd59d 100644
--- a/sys/mips/nlm/board.c
+++ b/sys/mips/nlm/board.c
@@ -362,6 +362,8 @@ nlm_print_processor_info(void)
revstr = "A2"; break;
case 3:
revstr = "B0"; break;
+ case 4:
+ revstr = "B1"; break;
default:
revstr = "??"; break;
}
diff --git a/sys/mips/nlm/xlp.h b/sys/mips/nlm/xlp.h
index 3414aed..832c951 100644
--- a/sys/mips/nlm/xlp.h
+++ b/sys/mips/nlm/xlp.h
@@ -57,6 +57,7 @@
#define XLP_REVISION_A1 0x01
#define XLP_REVISION_A2 0x02
#define XLP_REVISION_B0 0x03
+#define XLP_REVISION_B1 0x04
#ifndef LOCORE
/*
@@ -87,6 +88,16 @@ static __inline int nlm_is_xlp3xx(void)
return (nlm_processor_id() == CHIP_PROCESSOR_ID_XLP_3XX);
}
+static __inline int nlm_is_xlp3xx_ax(void)
+{
+ uint32_t procid = mips_rd_prid();
+ int prid = (procid >> 8) & 0xff;
+ int rev = procid & 0xff;
+
+ return (prid == CHIP_PROCESSOR_ID_XLP_3XX &&
+ rev < XLP_REVISION_B0);
+}
+
static __inline int nlm_is_xlp4xx(void)
{
int prid = nlm_processor_id();
@@ -116,5 +127,17 @@ static __inline int nlm_is_xlp8xx_ax(void)
(rev < XLP_REVISION_B0));
}
+static __inline int nlm_is_xlp8xx_b0(void)
+{
+ uint32_t procid = mips_rd_prid();
+ int prid = (procid >> 8) & 0xff;
+ int rev = procid & 0xff;
+
+ return ((prid == CHIP_PROCESSOR_ID_XLP_8XX ||
+ prid == CHIP_PROCESSOR_ID_XLP_432 ||
+ prid == CHIP_PROCESSOR_ID_XLP_416) &&
+ rev == XLP_REVISION_B0);
+}
+
#endif /* LOCORE */
#endif /* __NLM_XLP_H__ */
OpenPOWER on IntegriCloud