/* * 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 CONFIG_SYS_NS16550_COM2 /* 2005.5.10 BUFFALO add */ /*--------------------------------------------------------------*/ static inline void miconCntl_SendUart(unsigned char dat) { out_8((unsigned 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 */ }