fsl_pq_mdio.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Freescale PowerQUICC MDIO Driver -- MII Management Bus Implementation
  3. * Driver for the MDIO bus controller on Freescale PowerQUICC processors
  4. *
  5. * Author: Andy Fleming
  6. * Modifier: Sandeep Gopalpet
  7. *
  8. * Copyright 2002-2004, 2008-2009 Freescale Semiconductor, Inc.
  9. *
  10. * This program is free software; you can redistribute it and/or modify it
  11. * under the terms of the GNU General Public License as published by the
  12. * Free Software Foundation; either version 2 of the License, or (at your
  13. * option) any later version.
  14. *
  15. */
  16. #ifndef __FSL_PQ_MDIO_H
  17. #define __FSL_PQ_MDIO_H
  18. #define MIIMIND_BUSY 0x00000001
  19. #define MIIMIND_NOTVALID 0x00000004
  20. #define MIIMCFG_INIT_VALUE 0x00000007
  21. #define MIIMCFG_RESET 0x80000000
  22. #define MII_READ_COMMAND 0x00000001
  23. struct fsl_pq_mdio {
  24. u8 res1[16];
  25. u32 ieventm; /* MDIO Interrupt event register (for etsec2)*/
  26. u32 imaskm; /* MDIO Interrupt mask register (for etsec2)*/
  27. u8 res2[4];
  28. u32 emapm; /* MDIO Event mapping register (for etsec2)*/
  29. u8 res3[1280];
  30. u32 miimcfg; /* MII management configuration reg */
  31. u32 miimcom; /* MII management command reg */
  32. u32 miimadd; /* MII management address reg */
  33. u32 miimcon; /* MII management control reg */
  34. u32 miimstat; /* MII management status reg */
  35. u32 miimind; /* MII management indication reg */
  36. u8 reserved[28]; /* Space holder */
  37. u32 utbipar; /* TBI phy address reg (only on UCC) */
  38. u8 res4[2728];
  39. } __packed;
  40. int fsl_pq_mdio_read(struct mii_bus *bus, int mii_id, int regnum);
  41. int fsl_pq_mdio_write(struct mii_bus *bus, int mii_id, int regnum, u16 value);
  42. int fsl_pq_local_mdio_write(struct fsl_pq_mdio __iomem *regs, int mii_id,
  43. int regnum, u16 value);
  44. int fsl_pq_local_mdio_read(struct fsl_pq_mdio __iomem *regs, int mii_id, int regnum);
  45. int __init fsl_pq_mdio_init(void);
  46. void fsl_pq_mdio_exit(void);
  47. void fsl_pq_mdio_bus_name(char *name, struct device_node *np);
  48. #endif /* FSL_PQ_MDIO_H */