~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise-security

« back to all changes in this revision

Viewing changes to drivers/net/ibm_newemac/phy.h

  • Committer: Package Import Robot
  • Author(s): Paolo Pisati, Paolo Pisati
  • Date: 2011-12-06 15:56:07 UTC
  • Revision ID: package-import@ubuntu.com-20111206155607-pcf44kv5fmhk564f
Tags: 3.2.0-1401.1
[ Paolo Pisati ]

* Rebased on top of Ubuntu-3.2.0-3.8
* Tilt-tracking @ ef2487af4bb15bdd0689631774b5a5e3a59f74e2
* Delete debian.ti-omap4/control, it shoudln't be tracked
* Fix architecture spelling (s/armel/armhf/)
* [Config] Update configs following 3.2 import
* [Config] Fix compilation: disable CODA and ARCH_OMAP3
* [Config] Fix compilation: disable Ethernet Faraday
* Update series to precise

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * drivers/net/ibm_newemac/phy.h
3
 
 *
4
 
 * Driver for PowerPC 4xx on-chip ethernet controller, PHY support
5
 
 *
6
 
 * Copyright 2007 Benjamin Herrenschmidt, IBM Corp.
7
 
 *                <benh@kernel.crashing.org>
8
 
 *
9
 
 * Based on the arch/ppc version of the driver:
10
 
 *
11
 
 * Benjamin Herrenschmidt <benh@kernel.crashing.org>
12
 
 * February 2003
13
 
 *
14
 
 * Minor additions by Eugene Surovegin <ebs@ebshome.net>, 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 */