~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/u-boot/api/api_net.c

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * (C) Copyright 2007 Semihalf
 
3
 *
 
4
 * Written by: Rafal Jaworowski <raj@semihalf.com>
 
5
 *
 
6
 * SPDX-License-Identifier:     GPL-2.0+
 
7
 */
 
8
 
 
9
#include <config.h>
 
10
#include <common.h>
 
11
#include <net.h>
 
12
#include <linux/types.h>
 
13
#include <api_public.h>
 
14
 
 
15
DECLARE_GLOBAL_DATA_PTR;
 
16
 
 
17
#define DEBUG
 
18
#undef DEBUG
 
19
 
 
20
#ifdef DEBUG
 
21
#define debugf(fmt, args...) do { printf("%s(): ", __func__); printf(fmt, ##args); } while (0)
 
22
#else
 
23
#define debugf(fmt, args...)
 
24
#endif
 
25
 
 
26
#define errf(fmt, args...) do { printf("ERROR @ %s(): ", __func__); printf(fmt, ##args); } while (0)
 
27
 
 
28
 
 
29
static int dev_valid_net(void *cookie)
 
30
{
 
31
        return ((void *)eth_get_dev() == cookie) ? 1 : 0;
 
32
}
 
33
 
 
34
int dev_open_net(void *cookie)
 
35
{
 
36
        if (!dev_valid_net(cookie))
 
37
                return API_ENODEV;
 
38
 
 
39
        if (eth_init(gd->bd) < 0)
 
40
                return API_EIO;
 
41
 
 
42
        return 0;
 
43
}
 
44
 
 
45
int dev_close_net(void *cookie)
 
46
{
 
47
        if (!dev_valid_net(cookie))
 
48
                return API_ENODEV;
 
49
 
 
50
        eth_halt();
 
51
        return 0;
 
52
}
 
53
 
 
54
/*
 
55
 * There can only be one active eth interface at a time - use what is
 
56
 * currently set to eth_current
 
57
 */
 
58
int dev_enum_net(struct device_info *di)
 
59
{
 
60
        struct eth_device *eth_current = eth_get_dev();
 
61
 
 
62
        di->type = DEV_TYP_NET;
 
63
        di->cookie = (void *)eth_current;
 
64
        if (di->cookie == NULL)
 
65
                return 0;
 
66
 
 
67
        memcpy(di->di_net.hwaddr, eth_current->enetaddr, 6);
 
68
 
 
69
        debugf("device found, returning cookie 0x%08x\n",
 
70
                (u_int32_t)di->cookie);
 
71
 
 
72
        return 1;
 
73
}
 
74
 
 
75
int dev_write_net(void *cookie, void *buf, int len)
 
76
{
 
77
        /* XXX verify that cookie points to a valid net device??? */
 
78
 
 
79
        return eth_send(buf, len);
 
80
}
 
81
 
 
82
int dev_read_net(void *cookie, void *buf, int len)
 
83
{
 
84
        /* XXX verify that cookie points to a valid net device??? */
 
85
 
 
86
        return eth_receive(buf, len);
 
87
}