rgmii.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * drivers/net/ibm_newemac/rgmii.h
  3. *
  4. * Driver for PowerPC 4xx on-chip ethernet controller, RGMII bridge support.
  5. *
  6. * Based on ocp_zmii.h/ibm_emac_zmii.h
  7. * Armin Kuster akuster@mvista.com
  8. *
  9. * Copyright 2004 MontaVista Software, Inc.
  10. * Matt Porter <mporter@kernel.crashing.org>
  11. *
  12. * Copyright (c) 2004, 2005 Zultys Technologies.
  13. * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
  14. *
  15. * This program is free software; you can redistribute it and/or modify it
  16. * under the terms of the GNU General Public License as published by the
  17. * Free Software Foundation; either version 2 of the License, or (at your
  18. * option) any later version.
  19. */
  20. #ifndef __IBM_NEWEMAC_RGMII_H
  21. #define __IBM_NEWEMAC_RGMII_H
  22. /* RGMII bridge type */
  23. #define RGMII_STANDARD 0
  24. #define RGMII_AXON 1
  25. /* RGMII bridge */
  26. struct rgmii_regs {
  27. u32 fer; /* Function enable register */
  28. u32 ssr; /* Speed select register */
  29. };
  30. /* RGMII device */
  31. struct rgmii_instance {
  32. struct rgmii_regs __iomem *base;
  33. /* RGMII bridge flags */
  34. int flags;
  35. #define EMAC_RGMII_FLAG_HAS_MDIO 0x00000001
  36. /* Only one EMAC whacks us at a time */
  37. struct mutex lock;
  38. /* number of EMACs using this RGMII bridge */
  39. int users;
  40. /* OF device instance */
  41. struct of_device *ofdev;
  42. };
  43. #ifdef CONFIG_IBM_NEW_EMAC_RGMII
  44. extern int rgmii_init(void);
  45. extern void rgmii_exit(void);
  46. extern int rgmii_attach(struct of_device *ofdev, int input, int mode);
  47. extern void rgmii_detach(struct of_device *ofdev, int input);
  48. extern void rgmii_get_mdio(struct of_device *ofdev, int input);
  49. extern void rgmii_put_mdio(struct of_device *ofdev, int input);
  50. extern void rgmii_set_speed(struct of_device *ofdev, int input, int speed);
  51. extern int rgmii_get_regs_len(struct of_device *ofdev);
  52. extern void *rgmii_dump_regs(struct of_device *ofdev, void *buf);
  53. #else
  54. # define rgmii_init() 0
  55. # define rgmii_exit() do { } while(0)
  56. # define rgmii_attach(x,y,z) (-ENXIO)
  57. # define rgmii_detach(x,y) do { } while(0)
  58. # define rgmii_get_mdio(o,i) do { } while (0)
  59. # define rgmii_put_mdio(o,i) do { } while (0)
  60. # define rgmii_set_speed(x,y,z) do { } while(0)
  61. # define rgmii_get_regs_len(x) 0
  62. # define rgmii_dump_regs(x,buf) (buf)
  63. #endif /* !CONFIG_IBM_NEW_EMAC_RGMII */
  64. #endif /* __IBM_NEWEMAC_RGMII_H */