Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
net
ethernet
stmicro
stmmac
stmmac.h
Go to the documentation of this file.
1
/*******************************************************************************
2
Copyright (C) 2007-2009 STMicroelectronics Ltd
3
4
This program is free software; you can redistribute it and/or modify it
5
under the terms and conditions of the GNU General Public License,
6
version 2, as published by the Free Software Foundation.
7
8
This program is distributed in the hope it will be useful, but WITHOUT
9
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11
more details.
12
13
You should have received a copy of the GNU General Public License along with
14
this program; if not, write to the Free Software Foundation, Inc.,
15
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
16
17
The full GNU General Public License is included in this distribution in
18
the file called "COPYING".
19
20
Author: Giuseppe Cavallaro <
[email protected]
>
21
*******************************************************************************/
22
23
#ifndef __STMMAC_H__
24
#define __STMMAC_H__
25
26
#define STMMAC_RESOURCE_NAME "stmmaceth"
27
#define DRV_MODULE_VERSION "March_2012"
28
29
#include <
linux/clk.h
>
30
#include <
linux/stmmac.h
>
31
#include <
linux/phy.h
>
32
#include <linux/pci.h>
33
#include "
common.h
"
34
#ifdef CONFIG_STMMAC_TIMER
35
#include "
stmmac_timer.h
"
36
#endif
37
38
struct
stmmac_priv
{
39
/* Frequently used values are kept adjacent for cache effect */
40
struct
dma_desc
*dma_tx
____cacheline_aligned
;
41
dma_addr_t
dma_tx_phy
;
42
struct
sk_buff
**
tx_skbuff
;
43
unsigned
int
cur_tx
;
44
unsigned
int
dirty_tx
;
45
unsigned
int
dma_tx_size
;
46
int
tx_coalesce
;
47
48
struct
dma_desc
*
dma_rx
;
49
unsigned
int
cur_rx
;
50
unsigned
int
dirty_rx
;
51
struct
sk_buff
**
rx_skbuff
;
52
dma_addr_t
*
rx_skbuff_dma
;
53
54
struct
net_device
*
dev
;
55
dma_addr_t
dma_rx_phy
;
56
unsigned
int
dma_rx_size
;
57
unsigned
int
dma_buf_sz
;
58
struct
device
*
device
;
59
struct
mac_device_info
*
hw
;
60
void
__iomem
*
ioaddr
;
61
62
struct
stmmac_extra_stats
xstats
;
63
struct
napi_struct
napi
;
64
int
no_csum_insertion
;
65
66
struct
phy_device
*
phydev
;
67
int
oldlink
;
68
int
speed
;
69
int
oldduplex
;
70
unsigned
int
flow_ctrl
;
71
unsigned
int
pause
;
72
struct
mii_bus
*
mii
;
73
int
mii_irq
[
PHY_MAX_ADDR
];
74
75
u32
msg_enable
;
76
spinlock_t
lock
;
77
spinlock_t
tx_lock
;
78
int
wolopts
;
79
int
wol_irq
;
80
#ifdef CONFIG_STMMAC_TIMER
81
struct
stmmac_timer
*
tm
;
82
#endif
83
struct
plat_stmmacenet_data
*
plat
;
84
struct
stmmac_counters
mmc
;
85
struct
dma_features
dma_cap
;
86
int
hw_cap_support
;
87
struct
clk
*
stmmac_clk
;
88
int
clk_csr
;
89
int
synopsys_id
;
90
struct
timer_list
eee_ctrl_timer
;
91
bool
tx_path_in_lpi_mode
;
92
int
lpi_irq
;
93
int
eee_enabled
;
94
int
eee_active
;
95
int
tx_lpi_timer
;
96
};
97
98
extern
int
phyaddr
;
99
100
extern
int
stmmac_mdio_unregister
(
struct
net_device
*
ndev
);
101
extern
int
stmmac_mdio_register
(
struct
net_device
*
ndev
);
102
extern
void
stmmac_set_ethtool_ops
(
struct
net_device
*netdev);
103
extern
const
struct
stmmac_desc_ops
enh_desc_ops
;
104
extern
const
struct
stmmac_desc_ops
ndesc_ops
;
105
int
stmmac_freeze
(
struct
net_device
*
ndev
);
106
int
stmmac_restore
(
struct
net_device
*
ndev
);
107
int
stmmac_resume
(
struct
net_device
*
ndev
);
108
int
stmmac_suspend
(
struct
net_device
*
ndev
);
109
int
stmmac_dvr_remove
(
struct
net_device
*
ndev
);
110
struct
stmmac_priv
*
stmmac_dvr_probe
(
struct
device
*
device
,
111
struct
plat_stmmacenet_data
*
plat_dat
,
112
void
__iomem
*
addr
);
113
void
stmmac_disable_eee_mode
(
struct
stmmac_priv
*
priv
);
114
bool
stmmac_eee_init
(
struct
stmmac_priv
*
priv
);
115
116
#ifdef CONFIG_STMMAC_PLATFORM
117
extern
struct
platform_driver
stmmac_pltfr_driver
;
118
static
inline
int
stmmac_register_platform(
void
)
119
{
120
int
err
;
121
122
err =
platform_driver_register
(&
stmmac_pltfr_driver
);
123
if
(err)
124
pr_err
(
"stmmac: failed to register the platform driver\n"
);
125
126
return
err
;
127
}
128
static
inline
void
stmmac_unregister_platform(
void
)
129
{
130
platform_driver_register
(&
stmmac_pltfr_driver
);
131
}
132
#else
133
static
inline
int
stmmac_register_platform(
void
)
134
{
135
pr_debug
(
"stmmac: do not register the platf driver\n"
);
136
137
return
-
EINVAL
;
138
}
139
static
inline
void
stmmac_unregister_platform(
void
)
140
{
141
}
142
#endif
/* CONFIG_STMMAC_PLATFORM */
143
144
#ifdef CONFIG_STMMAC_PCI
145
extern
struct
pci_driver
stmmac_pci_driver
;
146
static
inline
int
stmmac_register_pci(
void
)
147
{
148
int
err
;
149
150
err = pci_register_driver(&
stmmac_pci_driver
);
151
if
(err)
152
pr_err
(
"stmmac: failed to register the PCI driver\n"
);
153
154
return
err
;
155
}
156
static
inline
void
stmmac_unregister_pci(
void
)
157
{
158
pci_unregister_driver
(&
stmmac_pci_driver
);
159
}
160
#else
161
static
inline
int
stmmac_register_pci(
void
)
162
{
163
pr_debug
(
"stmmac: do not register the PCI driver\n"
);
164
165
return
-
EINVAL
;
166
}
167
static
inline
void
stmmac_unregister_pci(
void
)
168
{
169
}
170
#endif
/* CONFIG_STMMAC_PCI */
171
172
#endif
/* __STMMAC_H__ */
Generated on Thu Jan 10 2013 14:05:27 for Linux Kernel by
1.8.2