led.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*
  2. * Copyright (C) 2012-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #ifndef ARCH_LED_H
  7. #define ARCH_LED_H
  8. #include <config.h>
  9. #define LED_CHAR_0 0x7e
  10. #define LED_CHAR_1 0x0c
  11. #define LED_CHAR_2 0xb6
  12. #define LED_CHAR_3 0x9e
  13. #define LED_CHAR_4 0xcc
  14. #define LED_CHAR_5 0xda
  15. #define LED_CHAR_6 0xfa
  16. #define LED_CHAR_7 0x4e
  17. #define LED_CHAR_8 0xfe
  18. #define LED_CHAR_9 0xde
  19. #define LED_CHAR_A 0xee
  20. #define LED_CHAR_B 0xf8
  21. #define LED_CHAR_C 0x72
  22. #define LED_CHAR_D 0xbc
  23. #define LED_CHAR_E 0xf2
  24. #define LED_CHAR_F 0xe2
  25. #define LED_CHAR_G 0x7a
  26. #define LED_CHAR_H 0xe8
  27. #define LED_CHAR_I 0x08
  28. #define LED_CHAR_J 0x3c
  29. #define LED_CHAR_K 0xea
  30. #define LED_CHAR_L 0x70
  31. #define LED_CHAR_M 0x6e
  32. #define LED_CHAR_N 0xa8
  33. #define LED_CHAR_O 0xb8
  34. #define LED_CHAR_P 0xe6
  35. #define LED_CHAR_Q 0xce
  36. #define LED_CHAR_R 0xa0
  37. #define LED_CHAR_S 0xc8
  38. #define LED_CHAR_T 0x8c
  39. #define LED_CHAR_U 0x7c
  40. #define LED_CHAR_V 0x54
  41. #define LED_CHAR_W 0xfc
  42. #define LED_CHAR_X 0xec
  43. #define LED_CHAR_Y 0xdc
  44. #define LED_CHAR_Z 0xa4
  45. #define LED_CHAR_SPACE 0x00
  46. #define LED_CHAR_DOT 0x01
  47. #define LED_CHAR_ (LED_CHAR_SPACE)
  48. /** Macro to translate 4 characters into integer to display led */
  49. #define LED_C2I(C0, C1, C2, C3) \
  50. (~( \
  51. (LED_CHAR_##C0 << 24) | \
  52. (LED_CHAR_##C1 << 16) | \
  53. (LED_CHAR_##C2 << 8) | \
  54. (LED_CHAR_##C3) \
  55. ))
  56. #if defined(CONFIG_SUPPORT_CARD_LED_BASE)
  57. #define LED_ADDR CONFIG_SUPPORT_CARD_LED_BASE
  58. #ifdef __ASSEMBLY__
  59. #define led_write(C0, C1, C2, C3) raw_led_write LED_C2I(C0, C1, C2, C3)
  60. .macro raw_led_write data
  61. ldr r0, =\data
  62. ldr r1, =LED_ADDR
  63. str r0, [r1]
  64. .endm
  65. #else /* __ASSEMBLY__ */
  66. #include <linux/io.h>
  67. #define led_write(C0, C1, C2, C3) \
  68. do { \
  69. raw_led_write(LED_C2I(C0, C1, C2, C3)); \
  70. } while (0)
  71. static inline void raw_led_write(u32 data)
  72. {
  73. writel(data, LED_ADDR);
  74. }
  75. #endif /* __ASSEMBLY__ */
  76. #else /* CONFIG_SUPPORT_CARD_LED_BASE */
  77. #define led_write(C0, C1, C2, C3)
  78. #define raw_led_write(x)
  79. #endif /* CONFIG_SUPPORT_CARD_LED_BASE */
  80. #endif /* ARCH_LED_H */