Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / net / ibm_emac / ibm_emac_zmii.h
index 6f6cd2a..92c8544 100644 (file)
@@ -1,23 +1,27 @@
 /*
- * ocp_zmii.h
+ * drivers/net/ibm_emac/ibm_emac_zmii.h
  *
- * Defines for the IBM ZMII bridge
+ * Driver for PowerPC 4xx on-chip ethernet controller, ZMII bridge support.
  *
- *      Armin Kuster akuster@mvista.com
- *      Dec, 2001
+ * Copyright (c) 2004, 2005 Zultys Technologies.
+ * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
  *
- * Copyright 2001 MontaVista Softare Inc.
+ * Based on original work by
+ *      Armin Kuster <akuster@mvista.com>
+ *     Copyright 2001 MontaVista Softare Inc.
  *
  * This program is free software; you can redistribute  it and/or modify it
  * under  the terms of  the GNU General  Public License as published by the
  * Free Software Foundation;  either version 2 of the  License, or (at your
  * option) any later version.
+ *
  */
-
 #ifndef _IBM_EMAC_ZMII_H_
 #define _IBM_EMAC_ZMII_H_
 
 #include <linux/config.h>
+#include <linux/init.h>
+#include <asm/ocp.h>
 
 /* ZMII bridge registers */
 struct zmii_regs {
@@ -26,68 +30,54 @@ struct zmii_regs {
        u32 smiirs;             /* SMII status reg */
 };
 
-#define ZMII_INPUTS    4
-
 /* ZMII device */
 struct ibm_ocp_zmii {
-       struct zmii_regs *base;
-       int mode[ZMII_INPUTS];
+       struct zmii_regs __iomem *base;
+       int mode;               /* subset of PHY_MODE_XXXX */
        int users;              /* number of EMACs using this ZMII bridge */
+       u32 fer_save;           /* FER value left by firmware */
 };
 
-/* Fuctional Enable Reg */
-
-#define ZMII_FER_MASK(x)       (0xf0000000 >> (4*x))
-
-#define ZMII_MDI0      0x80000000
-#define ZMII_SMII0     0x40000000
-#define ZMII_RMII0     0x20000000
-#define ZMII_MII0      0x10000000
-#define ZMII_MDI1      0x08000000
-#define ZMII_SMII1     0x04000000
-#define ZMII_RMII1     0x02000000
-#define ZMII_MII1      0x01000000
-#define ZMII_MDI2      0x00800000
-#define ZMII_SMII2     0x00400000
-#define ZMII_RMII2     0x00200000
-#define ZMII_MII2      0x00100000
-#define ZMII_MDI3      0x00080000
-#define ZMII_SMII3     0x00040000
-#define ZMII_RMII3     0x00020000
-#define ZMII_MII3      0x00010000
+#ifdef CONFIG_IBM_EMAC_ZMII
+int zmii_attach(void *emac) __init;
 
-/* Speed Selection reg */
+void __zmii_fini(struct ocp_device *ocpdev, int input) __exit;
+static inline void zmii_fini(struct ocp_device *ocpdev, int input)
+{
+       if (ocpdev)
+               __zmii_fini(ocpdev, input);
+}
 
-#define ZMII_SCI0      0x40000000
-#define ZMII_FSS0      0x20000000
-#define ZMII_SP0       0x10000000
-#define ZMII_SCI1      0x04000000
-#define ZMII_FSS1      0x02000000
-#define ZMII_SP1       0x01000000
-#define ZMII_SCI2      0x00400000
-#define ZMII_FSS2      0x00200000
-#define ZMII_SP2       0x00100000
-#define ZMII_SCI3      0x00040000
-#define ZMII_FSS3      0x00020000
-#define ZMII_SP3       0x00010000
+void __zmii_enable_mdio(struct ocp_device *ocpdev, int input);
+static inline void zmii_enable_mdio(struct ocp_device *ocpdev, int input)
+{
+       if (ocpdev)
+               __zmii_enable_mdio(ocpdev, input);
+}
 
-#define ZMII_MII0_100MB        ZMII_SP0
-#define ZMII_MII0_10MB ~ZMII_SP0
-#define ZMII_MII1_100MB        ZMII_SP1
-#define ZMII_MII1_10MB ~ZMII_SP1
-#define ZMII_MII2_100MB        ZMII_SP2
-#define ZMII_MII2_10MB ~ZMII_SP2
-#define ZMII_MII3_100MB        ZMII_SP3
-#define ZMII_MII3_10MB ~ZMII_SP3
+void __zmii_set_speed(struct ocp_device *ocpdev, int input, int speed);
+static inline void zmii_set_speed(struct ocp_device *ocpdev, int input,
+                                 int speed)
+{
+       if (ocpdev)
+               __zmii_set_speed(ocpdev, input, speed);
+}
 
-/* SMII Status reg */
+int __zmii_get_regs_len(struct ocp_device *ocpdev);
+static inline int zmii_get_regs_len(struct ocp_device *ocpdev)
+{
+       return ocpdev ? __zmii_get_regs_len(ocpdev) : 0;
+}
 
-#define ZMII_STS0 0xFF000000   /* EMAC0 smii status mask */
-#define ZMII_STS1 0x00FF0000   /* EMAC1 smii status mask */
+void *zmii_dump_regs(struct ocp_device *ocpdev, void *buf);
 
-#define SMII   0
-#define RMII   1
-#define MII    2
-#define MDI    3
+#else
+# define zmii_attach(x)                0
+# define zmii_fini(x,y)                ((void)0)
+# define zmii_enable_mdio(x,y) ((void)0)
+# define zmii_set_speed(x,y,z) ((void)0)
+# define zmii_get_regs_len(x)  0
+# define zmii_dump_regs(x,buf) (buf)
+#endif                         /* !CONFIG_IBM_EMAC_ZMII */
 
 #endif                         /* _IBM_EMAC_ZMII_H_ */