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
ibm
emac
phy.h
Go to the documentation of this file.
1
/*
2
* drivers/net/ethernet/ibm/emac/phy.h
3
*
4
* Driver for PowerPC 4xx on-chip ethernet controller, PHY support
5
*
6
* Copyright 2007 Benjamin Herrenschmidt, IBM Corp.
7
* <
[email protected]
>
8
*
9
* Based on the arch/ppc version of the driver:
10
*
11
* Benjamin Herrenschmidt <
[email protected]
>
12
* February 2003
13
*
14
* Minor additions by Eugene Surovegin <
[email protected]
>, 2004
15
*
16
* This program is free software; you can redistribute it and/or modify it
17
* under the terms of the GNU General Public License as published by the
18
* Free Software Foundation; either version 2 of the License, or (at your
19
* option) any later version.
20
*
21
* This file basically duplicates sungem_phy.{c,h} with different PHYs
22
* supported. I'm looking into merging that in a single mii layer more
23
* flexible than mii.c
24
*/
25
26
#ifndef __IBM_NEWEMAC_PHY_H
27
#define __IBM_NEWEMAC_PHY_H
28
29
struct
mii_phy
;
30
31
/* Operations supported by any kind of PHY */
32
struct
mii_phy_ops
{
33
int
(*
init
) (
struct
mii_phy
*
phy
);
34
int
(*
suspend
) (
struct
mii_phy
*
phy
,
int
wol_options);
35
int
(*
setup_aneg
) (
struct
mii_phy
*
phy
,
u32
advertise);
36
int
(*
setup_forced
) (
struct
mii_phy
*
phy
,
int
speed
,
int
fd
);
37
int
(*
poll_link
) (
struct
mii_phy
*
phy
);
38
int
(*
read_link
) (
struct
mii_phy
*
phy
);
39
};
40
41
/* Structure used to statically define an mii/gii based PHY */
42
struct
mii_phy_def
{
43
u32
phy_id
;
/* Concatenated ID1 << 16 | ID2 */
44
u32
phy_id_mask
;
/* Significant bits */
45
u32
features
;
/* Ethtool SUPPORTED_* defines or
46
0 for autodetect */
47
int
magic_aneg
;
/* Autoneg does all speed test for us */
48
const
char
*
name
;
49
const
struct
mii_phy_ops
*
ops
;
50
};
51
52
/* An instance of a PHY, partially borrowed from mii_if_info */
53
struct
mii_phy
{
54
struct
mii_phy_def
*
def
;
55
u32
advertising
;
/* Ethtool ADVERTISED_* defines */
56
u32
features
;
/* Copied from mii_phy_def.features
57
or determined automaticaly */
58
int
address
;
/* PHY address */
59
int
mode
;
/* PHY mode */
60
int
gpcs_address
;
/* GPCS PHY address */
61
62
/* 1: autoneg enabled, 0: disabled */
63
int
autoneg
;
64
65
/* forced speed & duplex (no autoneg)
66
* partner speed & duplex & pause (autoneg)
67
*/
68
int
speed
;
69
int
duplex
;
70
int
pause
;
71
int
asym_pause
;
72
73
/* Provided by host chip */
74
struct
net_device
*
dev
;
75
int
(*
mdio_read
) (
struct
net_device
*
dev
,
int
addr
,
int
reg
);
76
void
(*
mdio_write
) (
struct
net_device
*
dev
,
int
addr
,
int
reg
,
77
int
val
);
78
};
79
80
/* Pass in a struct mii_phy with dev, mdio_read and mdio_write
81
* filled, the remaining fields will be filled on return
82
*/
83
int
emac_mii_phy_probe
(
struct
mii_phy
*
phy
,
int
address
);
84
int
emac_mii_reset_phy
(
struct
mii_phy
*
phy
);
85
int
emac_mii_reset_gpcs
(
struct
mii_phy
*
phy
);
86
87
#endif
/* __IBM_NEWEMAC_PHY_H */
Generated on Thu Jan 10 2013 14:01:54 for Linux Kernel by
1.8.2