led.h 2.0 KB

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