[U-Boot] [PATCH v7] kirkwood: add NAS62x0 board support

Simon Baatz gmbnomis at gmail.com
Tue Apr 17 01:03:33 CEST 2012


Hi,

Am 14.04.2012 19:25, schrieb Luka Perkov:
> NAS6210 eSATA port is not working from uboot... That is why there are 
> CONFIG_BOARD_IS_IB_NAS6210 and CONFIG_BOARD_IS_IB_NAS6220 in ib62x0.h
> config file.
>
>
I think I have found the reason why the eSATA port is not working on the
6210. I think the second port on the 6220 does not work either.
Surprisingly, the reason is completely unrelated to this board and has
also been described before (see for example
http://www.varkey.in/2011/06/boot-debian-from-sata-seagate-goflex-net/
which states:

Shutdown the GoFlex Net, connect the hard disk to the **right** side
SATA port. There seems to be a bug in Jeff’s uBoot for GoFlex Net, so
within uBoot only the right port works.
)

If you compile the patch for the 6220 and use it on the 6210, the first
hard disk is detected twice and the second one is not detected at all.
The problem is a mismatch in "include/ide.h" and "common/cmd_ide.c".
ide.h defines:

#define IDE_BUS(dev) (dev >> 1)

However, cmd_ide.c uses the following in ide_init():

for (bus = 0; bus < CONFIG_SYS_IDE_MAXBUS; ++bus) {
int dev =
bus * (CONFIG_SYS_IDE_MAXDEVICE /
CONFIG_SYS_IDE_MAXBUS);

In this case CONFIG_SYS_IDE_MAXDEVICE and CONFIG_SYS_IDE_MAXDEVICE are
both 2 since there are two SATA ports with max one device each.

However, IDE_BUS seems to assume that each bus has two devices and thus
returns the first bus even when the second one should be probed. I don't
know whether it is the proper fix for this, but

#define IDE_BUS(dev) (dev / (CONFIG_SYS_IDE_MAXDEVICE /
CONFIG_SYS_IDE_MAXBUS))

in ide.h fixes the problem for me and detects both the internal hard
disk and the hard disk at the eSATA port.

This also means that the 6210/6220 patch should not make a difference
between the two boards.


- Simon



More information about the U-Boot mailing list