/include/linux/vibrator-lc898300.h

https://github.com/airy09/android_kernel_sony_apq8064 · C Header · 117 lines · 94 code · 9 blank · 14 comment · 0 complexity · 2eab62e2df0673e88947e7a83a3b4b10 MD5 · raw file

  1. /*
  2. * vibrator-lc898300.h - platform data structure for lc898300 vibrator
  3. *
  4. * Copyright (C) 2012 Sony Ericsson Mobile Communications AB
  5. * Copyright (c) 2012 Sony Mobile Communications AB
  6. *
  7. * Authors: Ardiana Karppinen <ardiana.karppinen@sonyericsson.com>
  8. * Stefan Karlsson <stefan3.karlsson@sonyericsson.com>
  9. *
  10. * This program is free software; you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License as published by
  12. * the Free Software Foundation; version 2 of the License.
  13. *
  14. */
  15. #ifndef __LINUX_LC898300_H
  16. #define __LINUX_LC898300_H
  17. #include <linux/platform_device.h>
  18. #define LC898300_I2C_NAME "lc898300-vib-i2c"
  19. enum vib_cmd_intensity {
  20. VIB_CMD_PWM_OFF = 0x00,
  21. VIB_CMD_PWM_1_15 = 0x01,
  22. VIB_CMD_PWM_2_15 = 0x02,
  23. VIB_CMD_PWM_3_15 = 0x03,
  24. VIB_CMD_PWM_4_15 = 0x04,
  25. VIB_CMD_PWM_5_15 = 0x05,
  26. VIB_CMD_PWM_6_15 = 0x06,
  27. VIB_CMD_PWM_7_15 = 0x07,
  28. VIB_CMD_PWM_8_15 = 0x08,
  29. VIB_CMD_PWM_9_15 = 0x09,
  30. VIB_CMD_PWM_10_15 = 0x0a,
  31. VIB_CMD_PWM_11_15 = 0x0b,
  32. VIB_CMD_PWM_12_15 = 0x0c,
  33. VIB_CMD_PWM_13_15 = 0x0d,
  34. VIB_CMD_PWM_14_15 = 0x0e,
  35. VIB_CMD_PWM_15_15 = 0x0f,
  36. };
  37. enum vib_cmd_resonance {
  38. VIB_CMD_FREQ_125 = 0x00,
  39. VIB_CMD_FREQ_150 = 0x05,
  40. VIB_CMD_FREQ_200 = 0x0f,
  41. };
  42. enum vib_cmd_startup {
  43. VIB_CMD_STTIME_0 = 0x00,
  44. VIB_CMD_STTIME_1 = 0x01,
  45. VIB_CMD_STTIME_2 = 0x02,
  46. VIB_CMD_STTIME_3 = 0x03,
  47. VIB_CMD_STTIME_4 = 0x04,
  48. VIB_CMD_STTIME_5 = 0x05,
  49. VIB_CMD_STTIME_6 = 0x06,
  50. VIB_CMD_STTIME_7 = 0x07,
  51. };
  52. enum vib_cmd_brake {
  53. VIB_CMD_BRPWR_OFF = 0x00,
  54. VIB_CMD_BRPWR_1_15 = 0x01,
  55. VIB_CMD_BRPWR_2_15 = 0x02,
  56. VIB_CMD_BRPWR_3_15 = 0x03,
  57. VIB_CMD_BRPWR_4_15 = 0x04,
  58. VIB_CMD_BRPWR_5_15 = 0x05,
  59. VIB_CMD_BRPWR_6_15 = 0x06,
  60. VIB_CMD_BRPWR_7_15 = 0x07,
  61. VIB_CMD_BRPWR_8_15 = 0x08,
  62. VIB_CMD_BRPWR_9_15 = 0x09,
  63. VIB_CMD_BRPWR_10_15 = 0x0a,
  64. VIB_CMD_BRPWR_11_15 = 0x0b,
  65. VIB_CMD_BRPWR_12_15 = 0x0c,
  66. VIB_CMD_BRPWR_13_15 = 0x0d,
  67. VIB_CMD_BRPWR_14_15 = 0x0e,
  68. VIB_CMD_BRPWR_15_15 = 0x0f,
  69. VIB_CMD_BRTIME_0 = 0x00 << 4,
  70. VIB_CMD_BRTIME_1 = 0x01 << 4,
  71. VIB_CMD_BRTIME_2 = 0x02 << 4,
  72. VIB_CMD_BRTIME_3 = 0x03 << 4,
  73. VIB_CMD_ATBR = 0x01 << 6,
  74. };
  75. enum vib_cmd_stops {
  76. VIB_CMD_ATSNUM_0_10 = 0x00,
  77. VIB_CMD_ATSNUM_1_10 = 0x01,
  78. VIB_CMD_ATSNUM_2_10 = 0x02,
  79. VIB_CMD_ATSNUM_3_10 = 0x03,
  80. VIB_CMD_ATSNUM_4_10 = 0x04,
  81. VIB_CMD_ATSNUM_5_10 = 0x05,
  82. VIB_CMD_ATSNUM_6_10 = 0x06,
  83. VIB_CMD_ATSNUM_7_10 = 0x07,
  84. VIB_CMD_ATSNUM_8_10 = 0x08,
  85. VIB_CMD_ATSNUM_9_10 = 0x09,
  86. VIB_CMD_ATSNUM_10_10 = 0x0a,
  87. VIB_CMD_ATSNUM_MASK = 0x0f,
  88. VIB_CMD_ATSOFF = 0x00 << 4,
  89. VIB_CMD_ATSON = 0x01 << 4,
  90. };
  91. struct lc898300_vib_cmd {
  92. u8 vib_cmd_intensity;
  93. u8 vib_cmd_resonance;
  94. u8 vib_cmd_startup;
  95. u8 vib_cmd_brake;
  96. u8 vib_cmd_stops;
  97. };
  98. struct lc898300_platform_data {
  99. const char *name;
  100. int (*power_config)(struct device *dev, bool on);
  101. int (*power_enable)(struct device *dev, bool on);
  102. int (*gpio_allocate)(struct device *dev);
  103. void (*gpio_release)(struct device *dev);
  104. int (*rstb_gpio_setup)(bool value);
  105. int (*en_gpio_setup)(bool value);
  106. struct lc898300_vib_cmd *vib_cmd_info;
  107. };
  108. #endif /* __LINUX_lc898300_H */