/* $Id: ethtool.h,v 1.1 1998/12/19 15:09:38 davem Exp $
 * ethtool.h: Defines for SparcLinux ethtool.
 *
 * Copyright (C) 1998 David S. Miller (davem@dm.cobaltmicro.com)
 */

#ifndef _SPARC_ETHTOOL_H
#define _SPARC_ETHTOOL_H

/* We do things like this so it does not matter what kernel
 * headers you have on your system etc.
 */
#undef SIOCETHTOOL
#define SIOCETHTOOL	(SIOCDEVPRIVATE + 0x0f)

/* This should work for both 32 and 64 bit userland. */
struct ethtool_cmd {
	u32	cmd;
	u32	supported;
	u16	speed;
	u8	duplex;
	u8	port;
	u8	phy_address;
	u8	transceiver;
	u8	autoneg;
};

/* CMDs currently supported */
#define SPARC_ETH_GSET		0x00000001	/* Get settings, non-privileged. */
#define SPARC_ETH_SSET		0x00000002	/* Set settings, privileged. */

/* Indicates what features are supported by the interface. */
#define SUPPORTED_10baseT_Half		0x00000001
#define SUPPORTED_10baseT_Full		0x00000002
#define SUPPORTED_100baseT_Half		0x00000004
#define SUPPORTED_100baseT_Full		0x00000008
#define SUPPORTED_1000baseT_Half	0x00000010
#define SUPPORTED_1000baseT_Full	0x00000020
#define SUPPORTED_Autoneg		0x00000040
#define SUPPORTED_TP			0x00000080
#define SUPPORTED_AUI			0x00000100
#define SUPPORTED_MII			0x00000200
#define SUPPORTED_FIBRE			0x00000400

/* The following are all involved in forcing a particular link
 * mode for the device for setting things.  When getting the
 * devices settings, these indicate the current mode and whether
 * it was foced up into this mode or autonegotiated.
 */

/* The forced speec, 10Mb, 100Mb, gigabit. */
#define SPEED_10		10
#define SPEED_100		100
#define SPEED_1000		1000

/* Duplex, half or full. */
#define DUPLEX_HALF		0x00
#define DUPLEX_FULL		0x01

/* Which connector port. */
#define PORT_TP			0x00
#define PORT_AUI		0x01
#define PORT_MII		0x02
#define PORT_FIBRE		0x03

/* Which tranceiver to use. */
#define XCVR_INTERNAL		0x00
#define XCVR_EXTERNAL		0x01
#define XCVR_DUMMY1		0x02
#define XCVR_DUMMY2		0x03
#define XCVR_DUMMY3		0x04

/* Enable or disable autonegotiation.  If this is set to enable,
 * the forced link modes above are completely ignored.
 */
#define AUTONEG_DISABLE		0x00
#define AUTONEG_ENABLE		0x01

#endif /* _SPARC_ETHTOOL_H */
