2  * drivers/net/ibm_emac/ibm_emac_zmii.h
 
   4  * Driver for PowerPC 4xx on-chip ethernet controller, ZMII bridge support.
 
   6  * Copyright (c) 2004, 2005 Zultys Technologies.
 
   7  * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
 
   9  * Based on original work by
 
  10  *      Armin Kuster <akuster@mvista.com>
 
  11  *      Copyright 2001 MontaVista Softare Inc.
 
  13  * This program is free software; you can redistribute  it and/or modify it
 
  14  * under  the terms of  the GNU General  Public License as published by the
 
  15  * Free Software Foundation;  either version 2 of the  License, or (at your
 
  16  * option) any later version.
 
  19 #ifndef _IBM_EMAC_ZMII_H_
 
  20 #define _IBM_EMAC_ZMII_H_
 
  22 #include <linux/init.h>
 
  25 /* ZMII bridge registers */
 
  27         u32 fer;                /* Function enable reg */
 
  28         u32 ssr;                /* Speed select reg */
 
  29         u32 smiirs;             /* SMII status reg */
 
  34         struct zmii_regs __iomem *base;
 
  35         int mode;               /* subset of PHY_MODE_XXXX */
 
  36         int users;              /* number of EMACs using this ZMII bridge */
 
  37         u32 fer_save;           /* FER value left by firmware */
 
  40 #ifdef CONFIG_IBM_EMAC_ZMII
 
  41 int zmii_attach(void *emac) __init;
 
  43 void __zmii_fini(struct ocp_device *ocpdev, int input) __exit;
 
  44 static inline void zmii_fini(struct ocp_device *ocpdev, int input)
 
  47                 __zmii_fini(ocpdev, input);
 
  50 void __zmii_enable_mdio(struct ocp_device *ocpdev, int input);
 
  51 static inline void zmii_enable_mdio(struct ocp_device *ocpdev, int input)
 
  54                 __zmii_enable_mdio(ocpdev, input);
 
  57 void __zmii_set_speed(struct ocp_device *ocpdev, int input, int speed);
 
  58 static inline void zmii_set_speed(struct ocp_device *ocpdev, int input,
 
  62                 __zmii_set_speed(ocpdev, input, speed);
 
  65 int __zmii_get_regs_len(struct ocp_device *ocpdev);
 
  66 static inline int zmii_get_regs_len(struct ocp_device *ocpdev)
 
  68         return ocpdev ? __zmii_get_regs_len(ocpdev) : 0;
 
  71 void *zmii_dump_regs(struct ocp_device *ocpdev, void *buf);
 
  74 # define zmii_attach(x)         0
 
  75 # define zmii_fini(x,y)         ((void)0)
 
  76 # define zmii_enable_mdio(x,y)  ((void)0)
 
  77 # define zmii_set_speed(x,y,z)  ((void)0)
 
  78 # define zmii_get_regs_len(x)   0
 
  79 # define zmii_dump_regs(x,buf)  (buf)
 
  80 #endif                          /* !CONFIG_IBM_EMAC_ZMII */
 
  82 #endif                          /* _IBM_EMAC_ZMII_H_ */