blob: d2090be1ad5a53f74233bca5af7c623f67cfc515 [file] [log] [blame]
Guennadi Liakhovetski40c26b22008-03-31 01:32:15 +02001/*
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
Jean-Christophe PLAGNIOL-VILLARD03836942008-10-16 15:01:15 +020022#define AVR_PORT CONFIG_SYS_NS16550_COM2
Guennadi Liakhovetski40c26b22008-03-31 01:32:15 +020023
24/* 2005.5.10 BUFFALO add */
25/*--------------------------------------------------------------*/
26static inline void miconCntl_SendUart(unsigned char dat)
27{
Guennadi Liakhovetskif87a3df2008-04-28 14:35:57 +020028 out_8((unsigned char *)AVR_PORT, dat);
Guennadi Liakhovetski40c26b22008-03-31 01:32:15 +020029 mdelay(1);
30}
31
32/*--------------------------------------------------------------*/
33void miconCntl_SendCmd(unsigned char dat)
34{
35 int i;
36
37 for (i=0; i<4; i++){
38 miconCntl_SendUart(dat);
39 }
40}
41
42/*--------------------------------------------------------------*/
43void miconCntl_FanLow(void)
44{
45#ifdef CONFIG_HTGL
46 miconCntl_SendCmd(0x5C);
47#endif
48}
49
50/*--------------------------------------------------------------*/
51void miconCntl_FanHigh(void)
52{
53#ifdef CONFIG_HTGL
54 miconCntl_SendCmd(0x5D);
55#endif
56}
57
58/*--------------------------------------------------------------*/
59/* 1000Mbps */
60void miconCntl_Eth1000M(int up)
61{
62#ifdef CONFIG_HTGL
63 if (up)
64 miconCntl_SendCmd(0x93);
65 else
66 miconCntl_SendCmd(0x92);
67#else
68 if (up)
69 miconCntl_SendCmd(0x5D);
70 else
71 miconCntl_SendCmd(0x5C);
72#endif
73}
74
75/*--------------------------------------------------------------*/
76/* 100Mbps */
77void miconCntl_Eth100M(int up)
78{
79#ifdef CONFIG_HTGL
80 if (up)
81 miconCntl_SendCmd(0x91);
82 else
83 miconCntl_SendCmd(0x90);
84#else
85 if (up)
86 miconCntl_SendCmd(0x5C);
87#endif
88}
89
90/*--------------------------------------------------------------*/
91/* 10Mbps */
92void miconCntl_Eth10M(int up)
93{
94#ifdef CONFIG_HTGL
95 if (up)
96 miconCntl_SendCmd(0x8F);
97 else
98 miconCntl_SendCmd(0x8E);
99#else
100 if (up)
101 miconCntl_SendCmd(0x5C);
102#endif
103}
104
105/*--------------------------------------------------------------*/
106/* */
107void miconCntl_5f(void)
108{
109 miconCntl_SendCmd(0x5F);
110 mdelay(100);
111}
112
113/*--------------------------------------------------------------*/
114/* "reboot start" signal */
115void miconCntl_Reboot(void)
116{
117 miconCntl_SendCmd(0x43);
118}
119
120/*--------------------------------------------------------------*/
121/* Disable watchdog timer */
122void miconCntl_DisWDT(void)
123{
124 miconCntl_SendCmd(0x41); /* A */
125 miconCntl_SendCmd(0x46); /* F */
126 miconCntl_SendCmd(0x4A); /* J */
127 miconCntl_SendCmd(0x3E); /* > */
128 miconCntl_SendCmd(0x56); /* V */
129 miconCntl_SendCmd(0x3E); /* > */
130 miconCntl_SendCmd(0x5A); /* Z */
131 miconCntl_SendCmd(0x56); /* V */
132 miconCntl_SendCmd(0x4B); /* K */
133}