u-boot/board/Synology/common/legacy.c
Tom Rini 5f588f831b arm: Finish migration of CONFIG_MACH_TYPE
As this is only useful when booting with ATAGs, which are now largely
disabled, remove this value for the remaining platforms.  We have a few
places in the code that had been testing for MACH_TYPE as a sort of
internal logic.  Update those to use different but still correct CONFIG
symbols.

Cc: Phil Sutter <phil@nwl.cc>
Signed-off-by: Tom Rini <trini@konsulko.com>
2021-09-07 19:17:32 -04:00

77 lines
1.5 KiB
C

// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2021
* Walter Schweizer <swwa@users.sourceforge.net>
* Phil Sutter <phil@nwl.cc>
*/
#include <config.h>
#include <vsprintf.h>
#include <env.h>
#include <net.h>
#include <asm/setup.h>
#include "legacy.h"
static unsigned int syno_board_id(void)
{
#ifdef CONFIG_MACH_TYPE
switch (CONFIG_MACH_TYPE) {
case 527:
return SYNO_DS109_ID;
case 3036:
return SYNO_AXP_4BAY_2BAY;
}
#endif
return 0;
}
static unsigned int usb_port_modes(void)
{
unsigned int i, ret = 0;
char var[32], *val;
for (i = 0; i < USBPORT_MAX; i++) {
snprintf(var, 32, "usb%dMode", i);
val = env_get(var);
if (!val || strcasecmp(val, "host"))
continue;
ret |= 1 << i;
}
return ret;
}
/* Support old kernels */
void setup_board_tags(struct tag **in_params)
{
struct tag_mv_uboot *t;
struct tag *params;
int i;
debug("Synology board tags...\n");
params = *in_params;
t = (struct tag_mv_uboot *)&params->u;
t->uboot_version = VER_NUM | syno_board_id();
t->tclk = CONFIG_SYS_TCLK;
t->sysclk = CONFIG_SYS_TCLK * 2;
t->isusbhost = usb_port_modes();
for (i = 0; i < ETHADDR_MAX; i++) {
char addrvar[16], mtuvar[16];
sprintf(addrvar, i ? "eth%daddr" : "ethaddr", i);
sprintf(mtuvar, i ? "eth%dmtu" : "ethmtu", i);
eth_env_get_enetaddr(addrvar, t->macaddr[i]);
t->mtu[i] = env_get_ulong(mtuvar, 10, 0);
}
params->hdr.tag = ATAG_MV_UBOOT;
params->hdr.size = tag_size(tag_mv_uboot);
params = tag_next(params);
*in_params = params;
}