rgmii.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * drivers/net/ethernet/ibm/emac/rgmii.h
  4. *
  5. * Driver for PowerPC 4xx on-chip ethernet controller, RGMII bridge support.
  6. *
  7. * Copyright 2007 Benjamin Herrenschmidt, IBM Corp.
  8. * <[email protected]>
  9. *
  10. * Based on the arch/ppc version of the driver:
  11. *
  12. * Based on ocp_zmii.h/ibm_emac_zmii.h
  13. * Armin Kuster [email protected]
  14. *
  15. * Copyright 2004 MontaVista Software, Inc.
  16. * Matt Porter <[email protected]>
  17. *
  18. * Copyright (c) 2004, 2005 Zultys Technologies.
  19. * Eugene Surovegin <[email protected]> or <[email protected]>
  20. */
  21. #ifndef __IBM_NEWEMAC_RGMII_H
  22. #define __IBM_NEWEMAC_RGMII_H
  23. /* RGMII bridge type */
  24. #define RGMII_STANDARD 0
  25. #define RGMII_AXON 1
  26. /* RGMII bridge */
  27. struct rgmii_regs {
  28. u32 fer; /* Function enable register */
  29. u32 ssr; /* Speed select register */
  30. };
  31. /* RGMII device */
  32. struct rgmii_instance {
  33. struct rgmii_regs __iomem *base;
  34. /* RGMII bridge flags */
  35. int flags;
  36. #define EMAC_RGMII_FLAG_HAS_MDIO 0x00000001
  37. /* Only one EMAC whacks us at a time */
  38. struct mutex lock;
  39. /* number of EMACs using this RGMII bridge */
  40. int users;
  41. /* OF device instance */
  42. struct platform_device *ofdev;
  43. };
  44. #ifdef CONFIG_IBM_EMAC_RGMII
  45. int rgmii_init(void);
  46. void rgmii_exit(void);
  47. int rgmii_attach(struct platform_device *ofdev, int input, int mode);
  48. void rgmii_detach(struct platform_device *ofdev, int input);
  49. void rgmii_get_mdio(struct platform_device *ofdev, int input);
  50. void rgmii_put_mdio(struct platform_device *ofdev, int input);
  51. void rgmii_set_speed(struct platform_device *ofdev, int input, int speed);
  52. int rgmii_get_regs_len(struct platform_device *ofdev);
  53. void *rgmii_dump_regs(struct platform_device *ofdev, void *buf);
  54. #else
  55. # define rgmii_init() 0
  56. # define rgmii_exit() do { } while(0)
  57. # define rgmii_attach(x,y,z) (-ENXIO)
  58. # define rgmii_detach(x,y) do { } while(0)
  59. # define rgmii_get_mdio(o,i) do { } while (0)
  60. # define rgmii_put_mdio(o,i) do { } while (0)
  61. # define rgmii_set_speed(x,y,z) do { } while(0)
  62. # define rgmii_get_regs_len(x) 0
  63. # define rgmii_dump_regs(x,buf) (buf)
  64. #endif /* !CONFIG_IBM_EMAC_RGMII */
  65. #endif /* __IBM_NEWEMAC_RGMII_H */