scan_manager.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Copyright (C) 2013 Altera Corporation <www.altera.com>
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #ifndef _SCAN_MANAGER_H_
  7. #define _SCAN_MANAGER_H_
  8. struct socfpga_scan_manager {
  9. u32 stat;
  10. u32 en;
  11. u32 padding[2];
  12. u32 fifo_single_byte;
  13. u32 fifo_double_byte;
  14. u32 fifo_triple_byte;
  15. u32 fifo_quad_byte;
  16. };
  17. /*
  18. * Shift count to get number of IO scan chain data in granularity
  19. * of 128-bit ( N / 128 )
  20. */
  21. #define IO_SCAN_CHAIN_128BIT_SHIFT 7
  22. /*
  23. * Mask to get residual IO scan chain data in
  24. * granularity of 128-bit ( N mod 128 )
  25. */
  26. #define IO_SCAN_CHAIN_128BIT_MASK 0x7F
  27. /*
  28. * Shift count to get number of IO scan chain
  29. * data in granularity of 32-bit ( N / 32 )
  30. */
  31. #define IO_SCAN_CHAIN_32BIT_SHIFT 5
  32. /*
  33. * Mask to get residual IO scan chain data in
  34. * granularity of 32-bit ( N mod 32 )
  35. */
  36. #define IO_SCAN_CHAIN_32BIT_MASK 0x1F
  37. /* Byte mask */
  38. #define IO_SCAN_CHAIN_BYTE_MASK 0xFF
  39. /* 24-bits (3 bytes) IO scan chain payload definition */
  40. #define IO_SCAN_CHAIN_PAYLOAD_24BIT 24
  41. /*
  42. * Maximum length of TDI_TDO packet payload is 128 bits,
  43. * represented by (length - 1) in TDI_TDO header
  44. */
  45. #define TDI_TDO_MAX_PAYLOAD 127
  46. /* TDI_TDO packet header for IO scan chain program */
  47. #define TDI_TDO_HEADER_FIRST_BYTE 0x80
  48. /* Position of second command byte for TDI_TDO packet */
  49. #define TDI_TDO_HEADER_SECOND_BYTE_SHIFT 8
  50. int scan_mgr_configure_iocsr(void);
  51. int iocsr_get_config_table(const unsigned int chain_id,
  52. const unsigned long **table,
  53. unsigned int *table_len);
  54. #endif /* _SCAN_MANAGER_H_ */