aboutsummaryrefslogtreecommitdiff
path: root/board/linkstation/hwctl.c
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2008-03-31 01:32:15 +0200
committerWolfgang Denk <wd@denx.de>2008-04-13 23:08:40 -0700
commit61525f2ffa156665a66908fda47dbf29d65ea579 (patch)
tree1be3e24381f193707adb422e71d20adeeb0ce29d /board/linkstation/hwctl.c
parent0f3ba7e9783f352318f197a3148f6d5cc3d75bea (diff)
Support for LinkStation / KuroBox HD and HG PPC models
This patch is based on the port by Mihai Georgian (see linkstation.c for Copyright information) and implements support for LinkStation / KuroBox HD and HG PPC models from Buffalo Technology, whereby HD is deactivated at the moment, pending network driver fixing. Notice to users: this is pretty much a barebone port. Support for network on HG models is already in the U-Boot mainline, but you might also want patches to switch fan / phy modes depending on the negotiated ethernet parameters. This patch also doesn't support console switching, booting EM mode, Buffalo specific ext2 magic number. So, if you want to use any of those, you need additional patches. Otherwise this patche provides a fully functional u-boot with a network console on your system. Signed-off-by: Guennadi Liakhovetski <lg@denx.de>
Diffstat (limited to 'board/linkstation/hwctl.c')
-rw-r--r--board/linkstation/hwctl.c135
1 files changed, 135 insertions, 0 deletions
diff --git a/board/linkstation/hwctl.c b/board/linkstation/hwctl.c
new file mode 100644
index 000000000..9db128a83
--- /dev/null
+++ b/board/linkstation/hwctl.c
@@ -0,0 +1,135 @@
+/*
+ * hwctl.c
+ *
+ * LinkStation HW Control Driver
+ *
+ * Copyright (C) 2001-2004 BUFFALO INC.
+ *
+ * This software may be used and distributed according to the terms of
+ * the GNU General Public License (GPL), incorporated herein by reference.
+ * Drivers based on or derived from this code fall under the GPL and must
+ * retain the authorship, copyright and license notice. This file is not
+ * a complete program and may only be used when the entire operating
+ * system is licensed under the GPL.
+ *
+ */
+
+#include <config.h>
+#include <common.h>
+#include <command.h>
+#include <asm/io.h>
+
+#define mdelay(n) udelay((n)*1000)
+
+#define AVR_PORT CFG_NS16550_COM2
+
+/* 2005.5.10 BUFFALO add */
+/*--------------------------------------------------------------*/
+static inline void miconCntl_SendUart(unsigned char dat)
+{
+ out_8((char *)AVR_PORT, dat);
+ mdelay(1);
+}
+
+/*--------------------------------------------------------------*/
+void miconCntl_SendCmd(unsigned char dat)
+{
+ int i;
+
+ for (i=0; i<4; i++){
+ miconCntl_SendUart(dat);
+ }
+}
+
+/*--------------------------------------------------------------*/
+void miconCntl_FanLow(void)
+{
+#ifdef CONFIG_HTGL
+ miconCntl_SendCmd(0x5C);
+#endif
+}
+
+/*--------------------------------------------------------------*/
+void miconCntl_FanHigh(void)
+{
+#ifdef CONFIG_HTGL
+ miconCntl_SendCmd(0x5D);
+#endif
+}
+
+/*--------------------------------------------------------------*/
+/* 1000Mbps */
+void miconCntl_Eth1000M(int up)
+{
+#ifdef CONFIG_HTGL
+ if (up)
+ miconCntl_SendCmd(0x93);
+ else
+ miconCntl_SendCmd(0x92);
+#else
+ if (up)
+ miconCntl_SendCmd(0x5D);
+ else
+ miconCntl_SendCmd(0x5C);
+#endif
+}
+
+/*--------------------------------------------------------------*/
+/* 100Mbps */
+void miconCntl_Eth100M(int up)
+{
+#ifdef CONFIG_HTGL
+ if (up)
+ miconCntl_SendCmd(0x91);
+ else
+ miconCntl_SendCmd(0x90);
+#else
+ if (up)
+ miconCntl_SendCmd(0x5C);
+#endif
+}
+
+/*--------------------------------------------------------------*/
+/* 10Mbps */
+void miconCntl_Eth10M(int up)
+{
+#ifdef CONFIG_HTGL
+ if (up)
+ miconCntl_SendCmd(0x8F);
+ else
+ miconCntl_SendCmd(0x8E);
+#else
+ if (up)
+ miconCntl_SendCmd(0x5C);
+#endif
+}
+
+/*--------------------------------------------------------------*/
+/* */
+void miconCntl_5f(void)
+{
+ miconCntl_SendCmd(0x5F);
+ mdelay(100);
+}
+
+/*--------------------------------------------------------------*/
+/* "reboot start" signal */
+void miconCntl_Reboot(void)
+{
+ miconCntl_SendCmd(0x43);
+}
+
+/*--------------------------------------------------------------*/
+/* Disable watchdog timer */
+void miconCntl_DisWDT(void)
+{
+ miconCntl_SendCmd(0x41); /* A */
+ miconCntl_SendCmd(0x46); /* F */
+ miconCntl_SendCmd(0x4A); /* J */
+ miconCntl_SendCmd(0x3E); /* > */
+ miconCntl_SendCmd(0x56); /* V */
+ miconCntl_SendCmd(0x3E); /* > */
+ miconCntl_SendCmd(0x5A); /* Z */
+ miconCntl_SendCmd(0x56); /* V */
+ miconCntl_SendCmd(0x4B); /* K */
+}