uboot/board/Synology/common/legacy.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * Copyright (C) 2021
   4 * Walter Schweizer <swwa@users.sourceforge.net>
   5 * Phil Sutter <phil@nwl.cc>
   6 */
   7
   8#include <config.h>
   9#include <vsprintf.h>
  10#include <env.h>
  11#include <net.h>
  12#include <asm/setup.h>
  13
  14#include "legacy.h"
  15
  16static unsigned int syno_board_id(void)
  17{
  18#ifdef CONFIG_MACH_TYPE
  19        switch (CONFIG_MACH_TYPE) {
  20        case 527:
  21                return SYNO_DS109_ID;
  22        case 3036:
  23                return SYNO_AXP_4BAY_2BAY;
  24        }
  25#endif
  26        return 0;
  27}
  28
  29static unsigned int usb_port_modes(void)
  30{
  31        unsigned int i, ret = 0;
  32        char var[32], *val;
  33
  34        for (i = 0; i < USBPORT_MAX; i++) {
  35                snprintf(var, 32, "usb%dMode", i);
  36                val = env_get(var);
  37
  38                if (!val || strcasecmp(val, "host"))
  39                        continue;
  40
  41                ret |= 1 << i;
  42        }
  43        return ret;
  44}
  45
  46/* Support old kernels */
  47void setup_board_tags(struct tag **in_params)
  48{
  49        struct tag_mv_uboot *t;
  50        struct tag *params;
  51        int i;
  52
  53        debug("Synology board tags...\n");
  54
  55        params = *in_params;
  56        t = (struct tag_mv_uboot *)&params->u;
  57
  58        t->uboot_version = VER_NUM | syno_board_id();
  59        t->tclk = CONFIG_SYS_TCLK;
  60        t->sysclk = CONFIG_SYS_TCLK * 2;
  61        t->isusbhost = usb_port_modes();
  62
  63        for (i = 0; i < ETHADDR_MAX; i++) {
  64                char addrvar[16], mtuvar[16];
  65
  66                sprintf(addrvar, i ? "eth%daddr" : "ethaddr", i);
  67                sprintf(mtuvar, i ? "eth%dmtu" : "ethmtu", i);
  68
  69                eth_env_get_enetaddr(addrvar, t->macaddr[i]);
  70                t->mtu[i] = env_get_ulong(mtuvar, 10, 0);
  71        }
  72
  73        params->hdr.tag = ATAG_MV_UBOOT;
  74        params->hdr.size = tag_size(tag_mv_uboot);
  75        params = tag_next(params);
  76        *in_params = params;
  77}
  78