ngpixis.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. * Copyright 2010-2011 Freescale Semiconductor
  3. * Author: Timur Tabi <timur@freescale.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of the GNU General Public License as published by the Free
  7. * Software Foundation; either version 2 of the License, or (at your option)
  8. * any later version.
  9. *
  10. * This file provides support for the ngPIXIS, a board-specific FPGA used on
  11. * some Freescale reference boards.
  12. */
  13. /* ngPIXIS register set. Hopefully, this won't change too much over time.
  14. * Feel free to add board-specific #ifdefs where necessary.
  15. */
  16. typedef struct ngpixis {
  17. u8 id;
  18. u8 arch;
  19. u8 scver;
  20. u8 csr;
  21. u8 rst;
  22. u8 serclk;
  23. u8 aux;
  24. u8 spd;
  25. u8 brdcfg0;
  26. u8 brdcfg1; /* On some boards, this register is called 'dma' */
  27. u8 addr;
  28. u8 brdcfg2;
  29. u8 gpiodir;
  30. u8 data;
  31. u8 led;
  32. u8 tag;
  33. u8 vctl;
  34. u8 vstat;
  35. u8 vcfgen0;
  36. u8 res4;
  37. u8 ocmcsr;
  38. u8 ocmmsg;
  39. u8 gmdbg;
  40. u8 res5[2];
  41. u8 sclk[3];
  42. u8 dclk[3];
  43. u8 watch;
  44. struct {
  45. u8 sw;
  46. u8 en;
  47. } s[8];
  48. } __attribute__ ((packed)) ngpixis_t;
  49. /* Pointer to the PIXIS register set */
  50. #define pixis ((ngpixis_t *)PIXIS_BASE)
  51. /* The PIXIS SW register that corresponds to board switch X, where x >= 1 */
  52. #define PIXIS_SW(x) (pixis->s[(x) - 1].sw)
  53. /* The PIXIS EN register that corresponds to board switch X, where x >= 1 */
  54. #define PIXIS_EN(x) (pixis->s[(x) - 1].en)
  55. u8 pixis_read(unsigned int reg);
  56. void pixis_write(unsigned int reg, u8 value);
  57. #define PIXIS_READ(reg) pixis_read(offsetof(ngpixis_t, reg))
  58. #define PIXIS_WRITE(reg, value) pixis_write(offsetof(ngpixis_t, reg), value)