This source file includes following definitions.
- msp_eth_setup
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 #include <linux/init.h>
28 #include <linux/kernel.h>
29 #include <linux/ioport.h>
30 #include <linux/platform_device.h>
31 #include <linux/delay.h>
32 #include <msp_regs.h>
33 #include <msp_int.h>
34 #include <msp_gpio_macros.h>
35
36
37 #define MSP_ETHERNET_GPIO0 14
38 #define MSP_ETHERNET_GPIO1 15
39 #define MSP_ETHERNET_GPIO2 16
40
41 #define MSP_ETH_ID "pmc_mspeth"
42 #define MSP_ETH_SIZE 0xE0
43 static struct resource msp_eth0_resources[] = {
44 [0] = {
45 .start = MSP_MAC0_BASE,
46 .end = MSP_MAC0_BASE + MSP_ETH_SIZE - 1,
47 .flags = IORESOURCE_MEM,
48 },
49 [1] = {
50 .start = MSP_INT_MAC0,
51 .end = MSP_INT_MAC0,
52 .flags = IORESOURCE_IRQ,
53 },
54 };
55
56 static struct resource msp_eth1_resources[] = {
57 [0] = {
58 .start = MSP_MAC1_BASE,
59 .end = MSP_MAC1_BASE + MSP_ETH_SIZE - 1,
60 .flags = IORESOURCE_MEM,
61 },
62 [1] = {
63 .start = MSP_INT_MAC1,
64 .end = MSP_INT_MAC1,
65 .flags = IORESOURCE_IRQ,
66 },
67 };
68
69
70
71 static struct platform_device mspeth_device[] = {
72 [0] = {
73 .name = MSP_ETH_ID,
74 .id = 0,
75 .num_resources = ARRAY_SIZE(msp_eth0_resources),
76 .resource = msp_eth0_resources,
77 },
78 [1] = {
79 .name = MSP_ETH_ID,
80 .id = 1,
81 .num_resources = ARRAY_SIZE(msp_eth1_resources),
82 .resource = msp_eth1_resources,
83 },
84
85 };
86 #define msp_eth_devs mspeth_device
87
88 int __init msp_eth_setup(void)
89 {
90 int i, ret = 0;
91
92
93 msp_gpio_pin_mode(MSP_GPIO_OUTPUT, MSP_ETHERNET_GPIO0);
94 msp_gpio_pin_hi(MSP_ETHERNET_GPIO0);
95
96 for (i = 0; i < ARRAY_SIZE(msp_eth_devs); i++) {
97 ret = platform_device_register(&msp_eth_devs[i]);
98 printk(KERN_INFO "device: %d, return value = %d\n", i, ret);
99 if (ret) {
100 platform_device_unregister(&msp_eth_devs[i]);
101 break;
102 }
103 }
104
105 if (ret)
106 printk(KERN_WARNING "Could not initialize "
107 "MSPETH device structures.\n");
108
109 return ret;
110 }
111 subsys_initcall(msp_eth_setup);