summaryrefslogtreecommitdiffstats
path: root/sys/arm/mv/orion
diff options
context:
space:
mode:
authorraj <raj@FreeBSD.org>2009-01-08 13:20:28 +0000
committerraj <raj@FreeBSD.org>2009-01-08 13:20:28 +0000
commit8211555cceb46a5f12326f8b579ef71985c1909f (patch)
tree7f3438ebd8767dd6f323486c7a00d6050d1a380c /sys/arm/mv/orion
parentca2e9cb3a95ecaff97ffcaba97157c04af4855c4 (diff)
downloadFreeBSD-src-8211555cceb46a5f12326f8b579ef71985c1909f.zip
FreeBSD-src-8211555cceb46a5f12326f8b579ef71985c1909f.tar.gz
Adjust Marvell SOC support for A0 chip revision.
- Clean up TCLK handling so that it's dynamically recognized depending on registers settings or chip version/revision. Update registers definitions. - Teach SOC ident routine about A0 (initial silicon version for general audience) Obtained from: Marvell, Semihalf
Diffstat (limited to 'sys/arm/mv/orion')
-rw-r--r--sys/arm/mv/orion/orion.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/arm/mv/orion/orion.c b/sys/arm/mv/orion/orion.c
index 5ee3bac..387e081 100644
--- a/sys/arm/mv/orion/orion.c
+++ b/sys/arm/mv/orion/orion.c
@@ -167,3 +167,24 @@ const struct decode_win idma_win_tbl[] = {
};
const struct decode_win *idma_wins = idma_win_tbl;
int idma_wins_no = sizeof(idma_win_tbl) / sizeof(struct decode_win);
+
+uint32_t
+get_tclk(void)
+{
+ uint32_t sar;
+
+ /*
+ * On Orion TCLK is can be configured to 150 MHz or 166 MHz.
+ * Current setting is read from Sample At Reset register.
+ */
+ sar = bus_space_read_4(obio_tag, MV_MPP_BASE, SAMPLE_AT_RESET);
+ sar = (sar & TCLK_MASK) >> TCLK_SHIFT;
+ switch (sar) {
+ case 1:
+ return (TCLK_150MHZ);
+ case 2:
+ return (TCLK_166MHZ);
+ default:
+ panic("Unknown TCLK settings!");
+ }
+}
OpenPOWER on IntegriCloud