sevenseg.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /*
  2. * (C) Copyright 2003, Li-Pro.Net <www.li-pro.net>
  3. * Stephan Linz <linz@li-pro.net>
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. *
  7. * common/sevenseg.h
  8. *
  9. * NIOS PIO based seven segment led support functions
  10. */
  11. #ifndef __DK1S10_SEVENSEG_H__
  12. #define __DK1S10_SEVENSEG_H__
  13. #ifdef CONFIG_SEVENSEG
  14. /*
  15. * 15 8 7 0
  16. * |-----------------------|--------|
  17. * | controll value | value |
  18. * ----------------------------------
  19. */
  20. #define SEVENSEG_RAW (int)(0) /* write out byte value (hex) */
  21. #define SEVENSEG_OFF (int)( 1 << 8) /* display switch off */
  22. #define SEVENSEG_SET_DPL (int)( 2 << 8) /* set dp low nibble */
  23. #define SEVENSEG_SET_DPH (int)( 3 << 8) /* set dp high nibble */
  24. #define SEVENSEG_RES_DPL (int)( 4 << 8) /* reset dp low nibble */
  25. #define SEVENSEG_RES_DPH (int)( 5 << 8) /* reset dp high nibble */
  26. #define SEVENSEG_TOG_DPL (int)( 6 << 8) /* toggle dp low nibble */
  27. #define SEVENSEG_TOG_DPH (int)( 7 << 8) /* toggle dp high nibble */
  28. #define SEVENSEG_LO (int)( 8 << 8) /* write out low nibble only */
  29. #define SEVENSEG_HI (int)( 9 << 8) /* write out high nibble only */
  30. #define SEVENSEG_STR (int)(10 << 8) /* write out a string */
  31. #define SEVENSEG_MASK_VAL (0xff) /* only used by SEVENSEG_RAW */
  32. #define SEVENSEG_MASK_CTRL (~SEVENSEG_MASK_VAL)
  33. #ifdef SEVENSEG_DIGIT_HI_LO_EQUAL
  34. #define SEVENSEG_DIGITS_0 ( SEVENSEG_DIGIT_A \
  35. | SEVENSEG_DIGIT_B \
  36. | SEVENSEG_DIGIT_C \
  37. | SEVENSEG_DIGIT_D \
  38. | SEVENSEG_DIGIT_E \
  39. | SEVENSEG_DIGIT_F )
  40. #define SEVENSEG_DIGITS_1 ( SEVENSEG_DIGIT_B \
  41. | SEVENSEG_DIGIT_C )
  42. #define SEVENSEG_DIGITS_2 ( SEVENSEG_DIGIT_A \
  43. | SEVENSEG_DIGIT_B \
  44. | SEVENSEG_DIGIT_D \
  45. | SEVENSEG_DIGIT_E \
  46. | SEVENSEG_DIGIT_G )
  47. #define SEVENSEG_DIGITS_3 ( SEVENSEG_DIGIT_A \
  48. | SEVENSEG_DIGIT_B \
  49. | SEVENSEG_DIGIT_C \
  50. | SEVENSEG_DIGIT_D \
  51. | SEVENSEG_DIGIT_G )
  52. #define SEVENSEG_DIGITS_4 ( SEVENSEG_DIGIT_B \
  53. | SEVENSEG_DIGIT_C \
  54. | SEVENSEG_DIGIT_F \
  55. | SEVENSEG_DIGIT_G )
  56. #define SEVENSEG_DIGITS_5 ( SEVENSEG_DIGIT_A \
  57. | SEVENSEG_DIGIT_C \
  58. | SEVENSEG_DIGIT_D \
  59. | SEVENSEG_DIGIT_F \
  60. | SEVENSEG_DIGIT_G )
  61. #define SEVENSEG_DIGITS_6 ( SEVENSEG_DIGIT_A \
  62. | SEVENSEG_DIGIT_C \
  63. | SEVENSEG_DIGIT_D \
  64. | SEVENSEG_DIGIT_E \
  65. | SEVENSEG_DIGIT_F \
  66. | SEVENSEG_DIGIT_G )
  67. #define SEVENSEG_DIGITS_7 ( SEVENSEG_DIGIT_A \
  68. | SEVENSEG_DIGIT_B \
  69. | SEVENSEG_DIGIT_C )
  70. #define SEVENSEG_DIGITS_8 ( SEVENSEG_DIGIT_A \
  71. | SEVENSEG_DIGIT_B \
  72. | SEVENSEG_DIGIT_C \
  73. | SEVENSEG_DIGIT_D \
  74. | SEVENSEG_DIGIT_E \
  75. | SEVENSEG_DIGIT_F \
  76. | SEVENSEG_DIGIT_G )
  77. #define SEVENSEG_DIGITS_9 ( SEVENSEG_DIGIT_A \
  78. | SEVENSEG_DIGIT_B \
  79. | SEVENSEG_DIGIT_C \
  80. | SEVENSEG_DIGIT_D \
  81. | SEVENSEG_DIGIT_F \
  82. | SEVENSEG_DIGIT_G )
  83. #define SEVENSEG_DIGITS_A ( SEVENSEG_DIGIT_A \
  84. | SEVENSEG_DIGIT_B \
  85. | SEVENSEG_DIGIT_C \
  86. | SEVENSEG_DIGIT_E \
  87. | SEVENSEG_DIGIT_F \
  88. | SEVENSEG_DIGIT_G )
  89. #define SEVENSEG_DIGITS_B ( SEVENSEG_DIGIT_C \
  90. | SEVENSEG_DIGIT_D \
  91. | SEVENSEG_DIGIT_E \
  92. | SEVENSEG_DIGIT_F \
  93. | SEVENSEG_DIGIT_G )
  94. #define SEVENSEG_DIGITS_C ( SEVENSEG_DIGIT_D \
  95. | SEVENSEG_DIGIT_E \
  96. | SEVENSEG_DIGIT_G )
  97. #define SEVENSEG_DIGITS_D ( SEVENSEG_DIGIT_B \
  98. | SEVENSEG_DIGIT_C \
  99. | SEVENSEG_DIGIT_D \
  100. | SEVENSEG_DIGIT_E \
  101. | SEVENSEG_DIGIT_G )
  102. #define SEVENSEG_DIGITS_E ( SEVENSEG_DIGIT_A \
  103. | SEVENSEG_DIGIT_D \
  104. | SEVENSEG_DIGIT_E \
  105. | SEVENSEG_DIGIT_F \
  106. | SEVENSEG_DIGIT_G )
  107. #define SEVENSEG_DIGITS_F ( SEVENSEG_DIGIT_A \
  108. | SEVENSEG_DIGIT_E \
  109. | SEVENSEG_DIGIT_F \
  110. | SEVENSEG_DIGIT_G )
  111. #else /* !SEVENSEG_DIGIT_HI_LO_EQUAL */
  112. #error SEVENSEG: different pin asssignments not supported
  113. #endif
  114. void sevenseg_set(int value);
  115. #endif /* CONFIG_SEVENSEG */
  116. #endif /* __DK1S10_SEVENSEG_H__ */