mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-19 19:28:36 +00:00
61525f2ffa
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>
135 lines
2.8 KiB
C
135 lines
2.8 KiB
C
/*
|
|
* 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 */
|
|
}
|