xref: /rk3399_rockchip-uboot/drivers/net/sandbox.c (revision 3ea143abe957cd771582fcde33e5fb8096bd826e)
1*3ea143abSJoe Hershberger /*
2*3ea143abSJoe Hershberger  * Copyright (c) 2015 National Instruments
3*3ea143abSJoe Hershberger  *
4*3ea143abSJoe Hershberger  * (C) Copyright 2015
5*3ea143abSJoe Hershberger  * Joe Hershberger <joe.hershberger@ni.com>
6*3ea143abSJoe Hershberger  *
7*3ea143abSJoe Hershberger  * SPDX-License-Identifier:	GPL-2.0
8*3ea143abSJoe Hershberger  */
9*3ea143abSJoe Hershberger 
10*3ea143abSJoe Hershberger #include <common.h>
11*3ea143abSJoe Hershberger #include <dm.h>
12*3ea143abSJoe Hershberger #include <malloc.h>
13*3ea143abSJoe Hershberger #include <net.h>
14*3ea143abSJoe Hershberger 
15*3ea143abSJoe Hershberger DECLARE_GLOBAL_DATA_PTR;
16*3ea143abSJoe Hershberger 
17*3ea143abSJoe Hershberger static int sb_eth_start(struct udevice *dev)
18*3ea143abSJoe Hershberger {
19*3ea143abSJoe Hershberger 	debug("eth_sandbox: Start\n");
20*3ea143abSJoe Hershberger 
21*3ea143abSJoe Hershberger 	return 0;
22*3ea143abSJoe Hershberger }
23*3ea143abSJoe Hershberger 
24*3ea143abSJoe Hershberger static int sb_eth_send(struct udevice *dev, void *packet, int length)
25*3ea143abSJoe Hershberger {
26*3ea143abSJoe Hershberger 	debug("eth_sandbox: Send packet %d\n", length);
27*3ea143abSJoe Hershberger 
28*3ea143abSJoe Hershberger 	return 0;
29*3ea143abSJoe Hershberger }
30*3ea143abSJoe Hershberger 
31*3ea143abSJoe Hershberger static int sb_eth_recv(struct udevice *dev, uchar **packetp)
32*3ea143abSJoe Hershberger {
33*3ea143abSJoe Hershberger 	return 0;
34*3ea143abSJoe Hershberger }
35*3ea143abSJoe Hershberger 
36*3ea143abSJoe Hershberger static void sb_eth_stop(struct udevice *dev)
37*3ea143abSJoe Hershberger {
38*3ea143abSJoe Hershberger 	debug("eth_sandbox: Stop\n");
39*3ea143abSJoe Hershberger }
40*3ea143abSJoe Hershberger 
41*3ea143abSJoe Hershberger static int sb_eth_write_hwaddr(struct udevice *dev)
42*3ea143abSJoe Hershberger {
43*3ea143abSJoe Hershberger 	struct eth_pdata *pdata = dev_get_platdata(dev);
44*3ea143abSJoe Hershberger 
45*3ea143abSJoe Hershberger 	debug("eth_sandbox %s: Write HW ADDR - %pM\n", dev->name,
46*3ea143abSJoe Hershberger 	      pdata->enetaddr);
47*3ea143abSJoe Hershberger 	return 0;
48*3ea143abSJoe Hershberger }
49*3ea143abSJoe Hershberger 
50*3ea143abSJoe Hershberger static const struct eth_ops sb_eth_ops = {
51*3ea143abSJoe Hershberger 	.start			= sb_eth_start,
52*3ea143abSJoe Hershberger 	.send			= sb_eth_send,
53*3ea143abSJoe Hershberger 	.recv			= sb_eth_recv,
54*3ea143abSJoe Hershberger 	.stop			= sb_eth_stop,
55*3ea143abSJoe Hershberger 	.write_hwaddr		= sb_eth_write_hwaddr,
56*3ea143abSJoe Hershberger };
57*3ea143abSJoe Hershberger 
58*3ea143abSJoe Hershberger static int sb_eth_remove(struct udevice *dev)
59*3ea143abSJoe Hershberger {
60*3ea143abSJoe Hershberger 	return 0;
61*3ea143abSJoe Hershberger }
62*3ea143abSJoe Hershberger 
63*3ea143abSJoe Hershberger static int sb_eth_ofdata_to_platdata(struct udevice *dev)
64*3ea143abSJoe Hershberger {
65*3ea143abSJoe Hershberger 	struct eth_pdata *pdata = dev_get_platdata(dev);
66*3ea143abSJoe Hershberger 
67*3ea143abSJoe Hershberger 	pdata->iobase = dev_get_addr(dev);
68*3ea143abSJoe Hershberger 	return 0;
69*3ea143abSJoe Hershberger }
70*3ea143abSJoe Hershberger 
71*3ea143abSJoe Hershberger static const struct udevice_id sb_eth_ids[] = {
72*3ea143abSJoe Hershberger 	{ .compatible = "sandbox,eth" },
73*3ea143abSJoe Hershberger 	{ }
74*3ea143abSJoe Hershberger };
75*3ea143abSJoe Hershberger 
76*3ea143abSJoe Hershberger U_BOOT_DRIVER(eth_sandbox) = {
77*3ea143abSJoe Hershberger 	.name	= "eth_sandbox",
78*3ea143abSJoe Hershberger 	.id	= UCLASS_ETH,
79*3ea143abSJoe Hershberger 	.of_match = sb_eth_ids,
80*3ea143abSJoe Hershberger 	.ofdata_to_platdata = sb_eth_ofdata_to_platdata,
81*3ea143abSJoe Hershberger 	.remove	= sb_eth_remove,
82*3ea143abSJoe Hershberger 	.ops	= &sb_eth_ops,
83*3ea143abSJoe Hershberger 	.platdata_auto_alloc_size = sizeof(struct eth_pdata),
84*3ea143abSJoe Hershberger };
85