summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/dp83932c.cpp
blob: c8c7fcfcd9e2ec57df45fdeaf079ca8375fd43c8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
// license:BSD-3-Clause
// copyright-holders:Patrick Mackinlay

/*
 * An implementation of the National Semiconductor DP83932C SONIC™ (Systems-
 * Oriented Network Interface Controller) device.
 *
 * References:
 *
 *   http://bitsavers.org/components/national/_dataBooks/1995_National_Ethernet_Databook.pdf
 *
 * TODO
 *   - everything (skeleton only)
 */

#include "emu.h"
#include "dp83932c.h"
#include "hashing.h"

#define VERBOSE 0
#include "logmacro.h"

DEFINE_DEVICE_TYPE(DP83932C_BE, dp83932c_be_device, "dp83932c_be", "National Semiconductor DP83932C SONIC (big)")
DEFINE_DEVICE_TYPE(DP83932C_LE, dp83932c_le_device, "dp83932c_le", "National Semiconductor DP83932C SONIC (little)")

dp83932c_device::dp83932c_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endian)
	: device_t(mconfig, type, tag, owner, clock)
	, device_memory_interface(mconfig, *this)
	, device_network_interface(mconfig, *this, 10.0f)
	, m_space_config("shared", endian, 32, 32)
	, m_out_int(*this)
{
}

dp83932c_be_device::dp83932c_be_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
	: dp83932c_device(mconfig, DP83932C_BE, tag, owner, clock, ENDIANNESS_BIG)
{
}

dp83932c_le_device::dp83932c_le_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
	: dp83932c_device(mconfig, DP83932C_LE, tag, owner, clock, ENDIANNESS_LITTLE)
{
}

void dp83932c_device::map(address_map &map)
{
/*
    // command and status registers
    map(0x00, 0x03).rw(FUNC(dp83932c_device::cr_r), FUNC(dp83932c_device::cr_w));
    map(0x04, 0x07).rw(FUNC(dp83932c_device::dcr_r), FUNC(dp83932c_device::dcr_w));
    map(0x08, 0x0b).rw(FUNC(dp83932c_device::rcr_r), FUNC(dp83932c_device::rcr_w));
    map(0x0c, 0x0f).rw(FUNC(dp83932c_device::tcr_r), FUNC(dp83932c_device::tcr_w));
    map(0x10, 0x13).rw(FUNC(dp83932c_device::imr_r), FUNC(dp83932c_device::imr_w));
    map(0x14, 0x17).rw(FUNC(dp83932c_device::isr_r), FUNC(dp83932c_device::isr_w));

    // transmit registers
    map(0x18, 0x1b).rw(FUNC(dp83932c_device::utda_r), FUNC(dp83932c_device::utda_w));
    map(0x1c, 0x1f).rw(FUNC(dp83932c_device::ctda_r), FUNC(dp83932c_device::ctda_w));

    // tps
    // tfc
    // tsa0
    // tsa1
    // tfs

    // receive registers
    map(0x34, 0x37).rw(FUNC(dp83932c_device::urda_r), FUNC(dp83932c_device::urda_w));
    map(0x38, 0x3b).rw(FUNC(dp83932c_device::crda_r), FUNC(dp83932c_device::crda_w));

    // crba0
    // crba1
    // rbwc0
    // rbwc1
    // eobc
    // urra
    // rsa
    // rea
    // rrp
    // rwp
    // trba0
    // trba1
    // tbwc0
    // tbwc1
    // addr0
    // addr1
    // llfa
    // ttda
    // cep
    // cap2
    // cap1
    // cap0
    // ce
    // cdp
    // cdc
    // sr
    // wt0
    // wt1
    // rsc
    // crct
    // faet
    // mpt
    // mdt

    // 30-3e internal use registers
*/
}

void dp83932c_device::device_start()
{
	m_space = &space(0);
	m_out_int.resolve();
}

void dp83932c_device::device_reset()
{
}

void dp83932c_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
}

device_memory_interface::space_config_vector dp83932c_device::memory_space_config() const
{
	return space_config_vector {
		std::make_pair(0, &m_space_config)
	};
}

void dp83932c_device::send_complete_cb(int result)
{
}

int dp83932c_device::recv_start_cb(u8 *buf, int length)
{
	return 0;
}

void dp83932c_device::recv_complete_cb(int result)
{
}