rgmii.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. /* Type of RGMII bridge */
  34. int type;
  35. /* Only one EMAC whacks us at a time */
  36. struct mutex lock;
  37. /* number of EMACs using this RGMII bridge */
  38. int users;
  39. /* OF device instance */
  40. struct of_device *ofdev;
  41. };
  42. #ifdef CONFIG_IBM_NEW_EMAC_RGMII
  43. extern int rgmii_init(void);
  44. extern void rgmii_exit(void);
  45. extern int rgmii_attach(struct of_device *ofdev, int input, int mode);
  46. extern void rgmii_detach(struct of_device *ofdev, int input);
  47. extern void rgmii_get_mdio(struct of_device *ofdev, int input);
  48. extern void rgmii_put_mdio(struct of_device *ofdev, int input);
  49. extern void rgmii_set_speed(struct of_device *ofdev, int input, int speed);
  50. extern int rgmii_get_regs_len(struct of_device *ofdev);
  51. extern void *rgmii_dump_regs(struct of_device *ofdev, void *buf);
  52. #else
  53. # define rgmii_init() 0
  54. # define rgmii_exit() do { } while(0)
  55. # define rgmii_attach(x,y,z) (-ENXIO)
  56. # define rgmii_detach(x,y) do { } while(0)
  57. # define rgmii_get_mdio(o,i) do { } while (0)
  58. # define rgmii_put_mdio(o,i) do { } while (0)
  59. # define rgmii_set_speed(x,y,z) do { } while(0)
  60. # define rgmii_get_regs_len(x) 0
  61. # define rgmii_dump_regs(x,buf) (buf)
  62. #endif /* !CONFIG_IBM_NEW_EMAC_RGMII */
  63. #endif /* __IBM_NEWEMAC_RGMII_H */