ihs_fpga.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * (C) Copyright 2018
  4. * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
  5. */
  6. /**
  7. * struct ihs_fpga_regs - IHS FPGA register map structure
  8. * @reflection_low: Lower reflection register
  9. * @versions: PCB versions register
  10. * @fpga_version: FPGA versions register
  11. * @features: FPGA features register
  12. * @extended_features: FPGA extended features register
  13. * @top_interrupt: Top interrupt register
  14. * @top_interrupt_enable: Top interrupt enable register
  15. * @status: FPGA status register
  16. * @control: FPGA control register
  17. * @extended_control: FPGA extended control register
  18. */
  19. struct ihs_fpga_regs {
  20. u16 reflection_low;
  21. u16 versions;
  22. u16 fpga_version;
  23. u16 features;
  24. u16 extended_features;
  25. u16 top_interrupt;
  26. u16 top_interrupt_enable;
  27. u16 status;
  28. u16 control;
  29. u16 extended_control;
  30. };
  31. /**
  32. * ihs_fpga_set() - Convenience macro to set values in FPGA register map
  33. * @map: Register map to set a value in
  34. * @member: Name of member (described by ihs_fpga_regs) to set
  35. * @val: Value to set the member to
  36. */
  37. #define ihs_fpga_set(map, member, val) \
  38. regmap_set(map, struct ihs_fpga_regs, member, val)
  39. /**
  40. * ihs_fpga_get() - Convenience macro to get values from FPGA register map
  41. * @map: Register map to read value from
  42. * @member: Name of member (described by ihs_fpga_regs) to get
  43. * @valp: Pointe to variable to receive the value read
  44. */
  45. #define ihs_fpga_get(map, member, valp) \
  46. regmap_get(map, struct ihs_fpga_regs, member, valp)