dw_dsi_reg.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*
  2. * Copyright (c) 2016 Linaro Limited.
  3. * Copyright (c) 2014-2016 Hisilicon Limited.
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License version 2 as
  7. * published by the Free Software Foundation.
  8. *
  9. */
  10. #ifndef __DW_DSI_REG_H__
  11. #define __DW_DSI_REG_H__
  12. #define MASK(x) (BIT(x) - 1)
  13. /*
  14. * regs
  15. */
  16. #define PWR_UP 0x04 /* Core power-up */
  17. #define RESET 0
  18. #define POWERUP BIT(0)
  19. #define PHY_IF_CFG 0xA4 /* D-PHY interface configuration */
  20. #define CLKMGR_CFG 0x08 /* the internal clock dividers */
  21. #define PHY_RSTZ 0xA0 /* D-PHY reset control */
  22. #define PHY_ENABLECLK BIT(2)
  23. #define PHY_UNRSTZ BIT(1)
  24. #define PHY_UNSHUTDOWNZ BIT(0)
  25. #define PHY_TST_CTRL0 0xB4 /* D-PHY test interface control 0 */
  26. #define PHY_TST_CTRL1 0xB8 /* D-PHY test interface control 1 */
  27. #define CLK_TLPX 0x10
  28. #define CLK_THS_PREPARE 0x11
  29. #define CLK_THS_ZERO 0x12
  30. #define CLK_THS_TRAIL 0x13
  31. #define CLK_TWAKEUP 0x14
  32. #define DATA_TLPX(x) (0x20 + ((x) << 4))
  33. #define DATA_THS_PREPARE(x) (0x21 + ((x) << 4))
  34. #define DATA_THS_ZERO(x) (0x22 + ((x) << 4))
  35. #define DATA_THS_TRAIL(x) (0x23 + ((x) << 4))
  36. #define DATA_TTA_GO(x) (0x24 + ((x) << 4))
  37. #define DATA_TTA_GET(x) (0x25 + ((x) << 4))
  38. #define DATA_TWAKEUP(x) (0x26 + ((x) << 4))
  39. #define PHY_CFG_I 0x60
  40. #define PHY_CFG_PLL_I 0x63
  41. #define PHY_CFG_PLL_II 0x64
  42. #define PHY_CFG_PLL_III 0x65
  43. #define PHY_CFG_PLL_IV 0x66
  44. #define PHY_CFG_PLL_V 0x67
  45. #define DPI_COLOR_CODING 0x10 /* DPI color coding */
  46. #define DPI_CFG_POL 0x14 /* DPI polarity configuration */
  47. #define VID_HSA_TIME 0x48 /* Horizontal Sync Active time */
  48. #define VID_HBP_TIME 0x4C /* Horizontal Back Porch time */
  49. #define VID_HLINE_TIME 0x50 /* Line time */
  50. #define VID_VSA_LINES 0x54 /* Vertical Sync Active period */
  51. #define VID_VBP_LINES 0x58 /* Vertical Back Porch period */
  52. #define VID_VFP_LINES 0x5C /* Vertical Front Porch period */
  53. #define VID_VACTIVE_LINES 0x60 /* Vertical resolution */
  54. #define VID_PKT_SIZE 0x3C /* Video packet size */
  55. #define VID_MODE_CFG 0x38 /* Video mode configuration */
  56. #define PHY_TMR_CFG 0x9C /* Data lanes timing configuration */
  57. #define BTA_TO_CNT 0x8C /* Response timeout definition */
  58. #define PHY_TMR_LPCLK_CFG 0x98 /* clock lane timing configuration */
  59. #define CLK_DATA_TMR_CFG 0xCC
  60. #define LPCLK_CTRL 0x94 /* Low-power in clock lane */
  61. #define PHY_TXREQUESTCLKHS BIT(0)
  62. #define MODE_CFG 0x34 /* Video or Command mode selection */
  63. #define PHY_STATUS 0xB0 /* D-PHY PPI status interface */
  64. #define PHY_STOP_WAIT_TIME 0x30
  65. /*
  66. * regs relevant enum
  67. */
  68. enum dpi_color_coding {
  69. DSI_24BITS_1 = 5,
  70. };
  71. enum dsi_video_mode_type {
  72. DSI_NON_BURST_SYNC_PULSES = 0,
  73. DSI_NON_BURST_SYNC_EVENTS,
  74. DSI_BURST_SYNC_PULSES_1,
  75. DSI_BURST_SYNC_PULSES_2
  76. };
  77. enum dsi_work_mode {
  78. DSI_VIDEO_MODE = 0,
  79. DSI_COMMAND_MODE
  80. };
  81. /*
  82. * Register Write/Read Helper functions
  83. */
  84. static inline void dw_update_bits(void __iomem *addr, u32 bit_start,
  85. u32 mask, u32 val)
  86. {
  87. u32 tmp, orig;
  88. orig = readl(addr);
  89. tmp = orig & ~(mask << bit_start);
  90. tmp |= (val & mask) << bit_start;
  91. writel(tmp, addr);
  92. }
  93. #endif /* __DW_DRM_DSI_H__ */