mt8193.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. #ifndef MT8193_H
  2. #define MT8193_H
  3. #include <generated/autoconf.h>
  4. #include <linux/mm.h>
  5. #include <linux/init.h>
  6. #include <linux/fb.h>
  7. #include <linux/delay.h>
  8. #include <linux/device.h>
  9. #include <linux/platform_device.h>
  10. #include <linux/kthread.h>
  11. #include <linux/rtpm_prio.h>
  12. #include <linux/vmalloc.h>
  13. #include <asm/uaccess.h>
  14. #include <asm/atomic.h>
  15. #include <asm/cacheflush.h>
  16. #include <asm/io.h>
  17. #include <mach/irqs.h>
  18. #include <linux/miscdevice.h>
  19. #include <linux/fs.h>
  20. #include <linux/file.h>
  21. #include <linux/cdev.h>
  22. #include <asm/tlbflush.h>
  23. #include <asm/page.h>
  24. #include <linux/slab.h>
  25. #include <linux/module.h>
  26. #include "mt8193_iic.h"
  27. #define CKGEN_BASE 0x1000
  28. #define REG_RW_BUS_CKCFG 0x000
  29. #define CLK_BUS_SEL_XTAL 0
  30. #define CLK_BUS_SEL_NFIPLL_D2 1
  31. #define CLK_BUS_SEL_NFIPLL_D3 2
  32. #define CLK_BUS_SEL_XTAL_D2 3
  33. #define CLK_BUS_SEL_32K 4
  34. #define CLK_BUS_SEL_PAD_DPI0 5
  35. #define CLK_BUS_SEL_PAD_DPI1 6
  36. #define CLK_BUS_SEL_ROSC 7
  37. #define REG_RW_NFI_CKCFG 0x008
  38. #define CLK_NFI_SEL_NFIPLL 0
  39. #define CLK_NFI_SEL_NFIPLL_D2 1
  40. #define CLK_NFI_SEL_NFIPLL_D3 2
  41. #define CLK_NFI_SEL_XTAL_D1 3
  42. #define CLK_PDN_NFI (1U<<7)
  43. #define REG_RW_HDMI_PLL_CKCFG 0x00c
  44. #define CLK_HDMI_PLL_SEL_HDMIPLL 0
  45. #define CLK_HDMI_PLL_SEL_32K 1
  46. #define CLK_HDMI_PLL_SEL_XTAL_D1 2
  47. #define CLK_HDMI_PLL_SEL_NFIPLL 3
  48. #define CLK_PDN_HDMI_PLL (1U<<7)
  49. #define REG_RW_HDMI_DISP_CKCFG 0x010
  50. #define CLK_HDMI_DISP_SEL_DISP 0
  51. #define CLK_HDMI_DISP_SEL_32K 1
  52. #define CLK_HDMI_DISP_SEL_XTAL_D1 2
  53. #define CLK_HDMI_DISP_SEL_NFIPLL 3
  54. #define CLK_PDN_HDMI_DISP (1U<<7)
  55. #define REG_RW_LVDS_DISP_CKCFG 0x014
  56. #define CLK_LVDS_DISP_SEL_AD_VPLL_DPIX 0
  57. #define CLK_LVDS_DISP_SEL_32K 1
  58. #define CLK_LVDS_DISP_SEL_XTAL_D1 2
  59. #define CLK_LVDS_DISP_SEL_NFIPLL 3
  60. #define CLK_PDN_LVDS_DISP (1U<<7)
  61. #define REG_RW_LVDS_CTS_CKCFG 0x018
  62. #define CLK_LVDS_CTS_SEL_AD_VPLL_DPIX 0
  63. #define CLK_LVDS_CTS_SEL_32K 1
  64. #define CLK_LVDS_CTS_SEL_XTAL_D1 2
  65. #define CLK_LVDS_CTS_SEL_NFIPLL 3
  66. #define CLK_PDN_LVDS_CTS (1U<<7)
  67. #define REG_RW_PMUX0 0x200
  68. #define REG_RW_PMUX1 0x204
  69. #define REG_RW_PMUX2 0x208
  70. #define REG_RW_PMUX3 0x20c
  71. #define REG_RW_PMUX4 0x210
  72. #define REG_RW_PMUX5 0x214
  73. #define REG_RW_PMUX6 0x218
  74. #define REG_RW_PMUX7 0x21c
  75. #define REG_RW_PMUX8 0x220
  76. #define REG_RW_PMUX9 0x224
  77. #define REG_RW_GPIO_EN_1 0x128
  78. #define REG_RW_GPIO_OUT_1 0x11c
  79. #define REG_RW_GPIO_IN_1 0x138
  80. #define REG_RW_GPIO_EN_0 0x124 /* need get register addr */
  81. /* #define REG_RW_GPIO_OUT_0 0x11c // need get register addr */
  82. #define REG_RW_GPIO_IN_0 0x134 /* need get register addr */
  83. /* #define REG_RW_GPIO_EN_2 0x128 // need get register addr */
  84. /* #define REG_RW_GPIO_OUT_2 0x11c // need get register addr */
  85. /* #define REG_RW_GPIO_IN_2 0x138 // need get register addr */
  86. #define REG_RW_PLL_GPANACFG0 0x34c
  87. #define PLL_GPANACFG0_NFIPLL_EN (1U<<1)
  88. #define REG_RW_PAD_PD0 0x258
  89. #define REG_RW_PAD_PD1 0x25c
  90. #define REG_RW_PAD_PD2 0x260
  91. #define REG_RW_PAD_PU0 0x264
  92. #define REG_RW_PAD_PU1 0x268
  93. #define REG_RW_PAD_PU2 0x26c
  94. extern int mt8193_ckgen_i2c_write(u16 addr, u32 data);
  95. extern u32 mt8193_ckgen_i2c_read(u16 addr);
  96. #define IO_READ8(base, offset) mt8193_ckgen_i2c_read((base) + (offset))
  97. #define IO_READ16(base, offset) mt8193_ckgen_i2c_read((base) + (offset))
  98. #define IO_READ32(base, offset) mt8193_ckgen_i2c_read((base) + (offset))
  99. /*===========================================================================*/
  100. /* Macros for register write */
  101. /*===========================================================================*/
  102. #define IO_WRITE8(base, offset, value) mt8193_ckgen_i2c_write((base) + (offset), (value))
  103. #define IO_WRITE16(base, offset, value) mt8193_ckgen_i2c_write((base) + (offset), (value))
  104. #define IO_WRITE32(base, offset, value) mt8193_ckgen_i2c_write((base) + (offset), (value))
  105. #define CKGEN_READ8(offset) IO_READ8(CKGEN_BASE, (offset))
  106. #define CKGEN_READ16(offset) IO_READ16(CKGEN_BASE, (offset))
  107. #define CKGEN_READ32(offset) IO_READ32(CKGEN_BASE, (offset))
  108. #define CKGEN_WRITE8(offset, value) IO_WRITE8(CKGEN_BASE, (offset), (value))
  109. #define CKGEN_WRITE16(offset, value) IO_WRITE16(CKGEN_BASE, (offset), (value))
  110. #define CKGEN_WRITE32(offset, value) IO_WRITE32(CKGEN_BASE, (offset), (value))
  111. /*=======================================================================*/
  112. /* Constant Definitions */
  113. /*=======================================================================*/
  114. enum SRC_CK_T {
  115. SRC_CK_APLL,
  116. SRC_CK_ARMPLL,
  117. SRC_CK_VDPLL,
  118. SRC_CK_DMPLL,
  119. SRC_CK_SYSPLL1,
  120. SRC_CK_SYSPLL2,
  121. SRC_CK_USBCK,
  122. SRC_CK_MEMPLL,
  123. SRC_CK_MCK
  124. };
  125. enum e_CLK_T {
  126. e_CLK_NFI, /*0 0x70.3 */
  127. e_CLK_HDMIPLL, /* 1 0x70.7 */
  128. e_CLK_HDMIDISP,
  129. e_CLK_LVDSDISP,
  130. e_CLK_LVDSCTS,
  131. e_CLK_MAX /* 2 */
  132. };
  133. enum e_CKGEN_T {
  134. e_CKEN_NFI, /* 0 0x300.31 */
  135. e_CKEN_HDMI, /* 1 0x300.29 */
  136. e_CKEN_MAX /* 2 */
  137. };
  138. #define MT8193_I2C_ID 1
  139. #define USING_MT8193_DPI1 1
  140. #endif /* MT8193_H */