1/* 2 * hwctl.c 3 * 4 * LinkStation HW Control Driver 5 * 6 * Copyright (C) 2001-2004 BUFFALO INC. 7 * 8 * This software may be used and distributed according to the terms of 9 * the GNU General Public License (GPL), incorporated herein by reference. 10 * Drivers based on or derived from this code fall under the GPL and must 11 * retain the authorship, copyright and license notice. This file is not 12 * a complete program and may only be used when the entire operating 13 * system is licensed under the GPL. 14 * 15 */ 16 17#include <config.h> 18#include <common.h> 19#include <command.h> 20#include <asm/io.h> 21 22#define mdelay(n) udelay((n)*1000) 23 24#define AVR_PORT CONFIG_SYS_NS16550_COM2 25 26/* 2005.5.10 BUFFALO add */ 27/*--------------------------------------------------------------*/ 28static inline void miconCntl_SendUart(unsigned char dat) 29{ 30 out_8((unsigned char *)AVR_PORT, dat); 31 mdelay(1); 32} 33 34/*--------------------------------------------------------------*/ 35void miconCntl_SendCmd(unsigned char dat) 36{ 37 int i; 38 39 for (i=0; i<4; i++){ 40 miconCntl_SendUart(dat); 41 } 42} 43 44/*--------------------------------------------------------------*/ 45void miconCntl_FanLow(void) 46{ 47#ifdef CONFIG_HTGL 48 miconCntl_SendCmd(0x5C); 49#endif 50} 51 52/*--------------------------------------------------------------*/ 53void miconCntl_FanHigh(void) 54{ 55#ifdef CONFIG_HTGL 56 miconCntl_SendCmd(0x5D); 57#endif 58} 59 60/*--------------------------------------------------------------*/ 61/* 1000Mbps */ 62void miconCntl_Eth1000M(int up) 63{ 64#ifdef CONFIG_HTGL 65 if (up) 66 miconCntl_SendCmd(0x93); 67 else 68 miconCntl_SendCmd(0x92); 69#else 70 if (up) 71 miconCntl_SendCmd(0x5D); 72 else 73 miconCntl_SendCmd(0x5C); 74#endif 75} 76 77/*--------------------------------------------------------------*/ 78/* 100Mbps */ 79void miconCntl_Eth100M(int up) 80{ 81#ifdef CONFIG_HTGL 82 if (up) 83 miconCntl_SendCmd(0x91); 84 else 85 miconCntl_SendCmd(0x90); 86#else 87 if (up) 88 miconCntl_SendCmd(0x5C); 89#endif 90} 91 92/*--------------------------------------------------------------*/ 93/* 10Mbps */ 94void miconCntl_Eth10M(int up) 95{ 96#ifdef CONFIG_HTGL 97 if (up) 98 miconCntl_SendCmd(0x8F); 99 else 100 miconCntl_SendCmd(0x8E); 101#else 102 if (up) 103 miconCntl_SendCmd(0x5C); 104#endif 105} 106 107/*--------------------------------------------------------------*/ 108/* */ 109void miconCntl_5f(void) 110{ 111 miconCntl_SendCmd(0x5F); 112 mdelay(100); 113} 114 115/*--------------------------------------------------------------*/ 116/* "reboot start" signal */ 117void miconCntl_Reboot(void) 118{ 119 miconCntl_SendCmd(0x43); 120} 121 122/*--------------------------------------------------------------*/ 123/* Disable watchdog timer */ 124void miconCntl_DisWDT(void) 125{ 126 miconCntl_SendCmd(0x41); /* A */ 127 miconCntl_SendCmd(0x46); /* F */ 128 miconCntl_SendCmd(0x4A); /* J */ 129 miconCntl_SendCmd(0x3E); /* > */ 130 miconCntl_SendCmd(0x56); /* V */ 131 miconCntl_SendCmd(0x3E); /* > */ 132 miconCntl_SendCmd(0x5A); /* Z */ 133 miconCntl_SendCmd(0x56); /* V */ 134 miconCntl_SendCmd(0x4B); /* K */ 135} 136