lidd.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /**
  2. * \file lidd.h
  3. *
  4. * \brief Definitions used for LIDD driver
  5. *
  6. * This file contains the LIDD Device Abstraction Layer API prototypes
  7. * and user interface macro definitions
  8. */
  9. /*
  10. * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
  11. */
  12. /*
  13. * Redistribution and use in source and binary forms, with or without
  14. * modification, are permitted provided that the following conditions
  15. * are met:
  16. *
  17. * Redistributions of source code must retain the above copyright
  18. * notice, this list of conditions and the following disclaimer.
  19. *
  20. * Redistributions in binary form must reproduce the above copyright
  21. * notice, this list of conditions and the following disclaimer in the
  22. * documentation and/or other materials provided with the
  23. * distribution.
  24. *
  25. * Neither the name of Texas Instruments Incorporated nor the names of
  26. * its contributors may be used to endorse or promote products derived
  27. * from this software without specific prior written permission.
  28. *
  29. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  30. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  31. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  32. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  33. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  34. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  35. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  36. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  37. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  38. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  39. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  40. *
  41. */
  42. #ifndef _LIDD_H_
  43. #define _LIDD_H_
  44. #include "hw_lcdc.h"
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48. /*******************************************************************************
  49. * MACRO DEFINTIONS
  50. ******************************************************************************/
  51. /* Disable/ enable LIDD Done interrupt */
  52. #define LIDD_DONE_INT_ENABLE (LCDC_LIDD_CTRL_DONE_INT_EN)
  53. #define LIDD_DONE_INT_DISABLE (0)
  54. /* Interrupt status definitions */
  55. #define LIDD_FRAME_DONE_INT_STAT LCDC_LCD_STAT_DONE
  56. #define LIDD_SYNC_LOST_INT_STAT LCDC_LCD_STAT_SYNC
  57. #define LIDD_ACBIAS_COUNT_INT_STAT LCDC_LCD_STAT_ABC
  58. #define LIDD_FIFO_UNDERFLOW_INT_STAT LCDC_LCD_STAT_FUF
  59. #define LIDD_PALETTE_LOADED_INT_STAT LCDC_LCD_STAT_PL
  60. #define LIDD_END_OF_FRAME0_INT_STAT LCDC_LCD_STAT_EOF0
  61. #define LIDD_END_OF_FRAME1_INT_STAT LCDC_LCD_STAT_EOF1
  62. /* LIDD DMA control */
  63. #define LIDD_DMA_ENABLE (LCDC_LIDD_CTRL_LIDD_DMA_EN)
  64. #define LIDD_DMA_DISABLE (0)
  65. /* LIDD CSn polarity control */
  66. #define LIDD_CS0_ACTIVE_LOW (0)
  67. #define LIDD_CS0_ACTIVE_HIGH (1 << LCDC_LIDD_CTRL_CS0_E0_POL_SHIFT)
  68. #define LIDD_CS1_ACTIVE_LOW (0)
  69. #define LIDD_CS1_ACTIVE_HIGH (1 << LCDC_LIDD_CTRL_CS1_E1_POL_SHIFT)
  70. /* LIDD Strobe polarity control */
  71. #define LIDD_WSTROBE_ACTIVE_LOW (0)
  72. #define LIDD_WSTROBE_ACTIVE_HIGH (1 << LCDC_LIDD_CTRL_WS_DIR_POL_SHIFT)
  73. #define LIDD_RSTROBE_ACTIVE_LOW (0)
  74. #define LIDD_RSTROBE_ACTIVE_HIGH (1 << LCDC_LIDD_CTRL_RS_EN_POL_SHIFT)
  75. /* LIDD ALE polarity control */
  76. #define LIDD_ALE_ACTIVE_LOW (0)
  77. #define LIDD_ALE_ACTIVE_HIGH (1 << LCDC_LIDD_CTRL_ALEPOL_SHIFT)
  78. /* LIDD Mode Selection */
  79. #define LIDD_MODE_SYNC_MPU68 (LCDC_LIDD_CTRL_LIDD_MODE_SEL_SYNC_MPU68 \
  80. << LCDC_LIDD_CTRL_LIDD_MODE_SEL_SHIFT)
  81. #define LIDD_MODE_ASYNC_MPU68 (LCDC_LIDD_CTRL_LIDD_MODE_SEL_ASYNC_MPU68 \
  82. << LCDC_LIDD_CTRL_LIDD_MODE_SEL_SHIFT)
  83. #define LIDD_MODE_SYNC_MPU80 (LCDC_LIDD_CTRL_LIDD_MODE_SEL_SYNC_MPU80 \
  84. << LCDC_LIDD_CTRL_LIDD_MODE_SEL_SHIFT)
  85. #define LIDD_MODE_ASYNC_MPU80 (LCDC_LIDD_CTRL_LIDD_MODE_SEL_ASYNC_MPU80 \
  86. << LCDC_LIDD_CTRL_LIDD_MODE_SEL_SHIFT)
  87. #define LIDD_MODE_HITACHI (LCDC_LIDD_CTRL_LIDD_MODE_SEL_HITACHI \
  88. << LCDC_LIDD_CTRL_LIDD_MODE_SEL_SHIFT)
  89. /* LIDD CS/Strobe/Enable Polarity control */
  90. #define LIDD_CS_STROBE_POLARITY(cs1, cs0, ws, rs, ale) ((unsigned int) \
  91. (cs1 | cs0 | ws | rs | ale))
  92. /* LIDD CSn Timing configuration */
  93. #define LIDD_CS_CONF(wsu, ws, wh, rsu, rs, rh, ta) ((unsigned int) \
  94. (((wsu & 0x1F) << LCDC_LIDD_CS0_CONF_W_SU_SHIFT) | \
  95. ((ws & 0x3F) << LCDC_LIDD_CS0_CONF_W_STROBE_SHIFT) | \
  96. ((wh & 0xF) << LCDC_LIDD_CS0_CONF_W_HOLD_SHIFT) | \
  97. ((rsu & 0x1F) << LCDC_LIDD_CS0_CONF_R_SU_SHIFT) | \
  98. ((rs & 0x3F) << LCDC_LIDD_CS0_CONF_R_STROBE_SHIFT) | \
  99. ((rh & 0xF) << LCDC_LIDD_CS0_CONF_R_HOLD_SHIFT) | \
  100. ((ta & 0x3) << LCDC_LIDD_CS0_CONF_TA_SHIFT)))
  101. /* LIDD DMA configuration */
  102. #define LIDD_DMA_CONFIG(thres, burst, endian) ((unsigned int) \
  103. (((thres & 0x7) << LCDC_LCDDMA_CTRL_TH_FIFO_READY_SHIFT) | \
  104. ((burst & 0x7) << LCDC_LCDDMA_CTRL_BURST_SIZE_SHIFT) | \
  105. ((endian & 0x1) << LCDC_LCDDMA_CTRL_BIGENDIAN_SHIFT)))
  106. /* Function prototypes */
  107. void LIDDStringWrite(unsigned int baseAddr, unsigned int cs, unsigned int start, char *data, unsigned int len);
  108. void LIDDDMAConfigSet(unsigned int baseAddr, unsigned int dmaEnable, unsigned int doneEnable);
  109. void LIDDClkConfig(unsigned int baseAddr, unsigned int freq, unsigned int moduleFreq);
  110. void LIDDCSTimingConfig(unsigned int baseAddr, unsigned int cs, unsigned int conf);
  111. void LIDDAddrIndexSet(unsigned int baseAddr, unsigned int cs, unsigned int index);
  112. void LIDDDataWrite(unsigned int baseAddr, unsigned int cs, unsigned int data);
  113. void LIDDPolaritySet(unsigned int baseAddr, unsigned int polarity);
  114. void LIDDModeSet(unsigned int baseAddr, unsigned int mode);
  115. void LIDDDMACSSet(unsigned int baseAddr, unsigned int cs);
  116. unsigned int LIDDStatusGet(unsigned int baseAddr);
  117. #ifdef __cplusplus
  118. }
  119. #endif
  120. #endif