25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: dev_sn.c,v 1.16 2006/12/30 13:30:59 debug Exp $ |
* $Id: dev_sn.c,v 1.18 2007/04/21 06:13:53 debug Exp $ |
29 |
* |
* |
30 |
* National Semiconductor SONIC ("sn") DP83932 ethernet. |
* National Semiconductor SONIC ("sn") DP83932 ethernet. |
31 |
* |
* |
51 |
#define DEV_SN_LENGTH 0x1000 |
#define DEV_SN_LENGTH 0x1000 |
52 |
|
|
53 |
struct sn_data { |
struct sn_data { |
54 |
int irq_nr; |
struct interrupt irq; |
55 |
unsigned char macaddr[6]; |
unsigned char macaddr[6]; |
56 |
uint32_t reg[SONIC_NREGS]; |
uint32_t reg[SONIC_NREGS]; |
57 |
}; |
}; |
58 |
|
|
59 |
|
|
|
/* |
|
|
* dev_sn_access(): |
|
|
*/ |
|
60 |
DEVICE_ACCESS(sn) |
DEVICE_ACCESS(sn) |
61 |
{ |
{ |
62 |
struct sn_data *d = (struct sn_data *) extra; |
struct sn_data *d = (struct sn_data *) extra; |
76 |
} |
} |
77 |
|
|
78 |
switch (regnr) { |
switch (regnr) { |
79 |
|
|
80 |
default: |
default: |
81 |
if (writeflag == MEM_WRITE) { |
if (writeflag == MEM_WRITE) { |
82 |
fatal("[ sn: unimplemented write to address 0x%x" |
fatal("[ sn: unimplemented write to address 0x%x" |
86 |
fatal("[ sn: unimplemented read from address 0x%x " |
fatal("[ sn: unimplemented read from address 0x%x " |
87 |
"(regnr %i) ]\n", (int)relative_addr, regnr); |
"(regnr %i) ]\n", (int)relative_addr, regnr); |
88 |
} |
} |
89 |
|
/* exit(1); */ |
90 |
} |
} |
91 |
|
|
92 |
if (writeflag == MEM_READ) |
if (writeflag == MEM_READ) |
107 |
exit(1); |
exit(1); |
108 |
} |
} |
109 |
memset(d, 0, sizeof(struct sn_data)); |
memset(d, 0, sizeof(struct sn_data)); |
110 |
d->irq_nr = devinit->irq_nr; |
|
111 |
|
INTERRUPT_CONNECT(devinit->interrupt_path, d->irq); |
112 |
|
|
113 |
net_generate_unique_mac(devinit->machine, d->macaddr); |
net_generate_unique_mac(devinit->machine, d->macaddr); |
114 |
|
|