gpio.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #ifndef _GPIO_H
  2. #define _GPIO_H
  3. #include <linux/module.h>
  4. #include <linux/moduleparam.h>
  5. #include <linux/init.h>
  6. #include <linux/kernel.h>
  7. #include <linux/ioport.h>
  8. #include <linux/delay.h>
  9. #include <linux/nmi.h>
  10. #include <linux/mutex.h>
  11. #include <asm/io.h>
  12. #include <linux/interrupt.h>
  13. #include <asm/irq.h>
  14. #include <linux/errno.h>
  15. #include <linux/types.h>
  16. #include <linux/ioctl.h>
  17. #include <linux/cdev.h>
  18. #include <linux/input.h>
  19. #include <linux/workqueue.h>
  20. #include <linux/version.h>
  21. #include <drv_gpio_def.h>
  22. #include <drv_devices.h>
  23. #ifndef INIT_BY_KMF
  24. #define DBG_MSG1(id, fmt,args...) printk(KERN_EMERG " " fmt, ## args)
  25. #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)
  26. #include <drv_dev.h>
  27. #else
  28. #include <asm-mips/mips-boards/sisdev.h> //Change the location of sisdev.h to sis516
  29. #endif
  30. #else
  31. #include <drv_debug.h>
  32. #endif
  33. #include "gpio_pin_define.h"
  34. #define QB_start 48
  35. #define QB_end 63
  36. #define MMIOBASE_Peripheral 0xbe0f0000
  37. #define IRQ_Peripheral 44
  38. #define SIS326_GPIO_MAXNUM 64
  39. #define S2IC_GPIO_MAXNUM GPIO_NOT_USE
  40. #define GPO_IVDD_SEL_REG 0xbe000030 //[29] output High set 1; output low set 0
  41. #define GPO_VBUS_EN_REG 0xbe0000e5 //[7] output high set 1, low set 0
  42. #define IRQ_VGAWakeUp 19
  43. #define IRQ_PWRBTN 20
  44. #define GPIO_For516VIP_FREQ 0 // temporary for sis516VIP
  45. #define GPIO_ForRebootTest 0 // temporary for Reboot test
  46. #define QuickBuildGPIO_Enable 1 //enable Customer QuickBuild Control GPIO
  47. /*******************************************************************************
  48. *******************************************************************************/
  49. #define STATUS_SUCCESS 0
  50. #define STATUS_DEVICE_ID_ERROR 1
  51. #define STATUS_DATA_ERROR 2
  52. #define STATUS_SYSTEM_ERROR 3
  53. //#define TRIGGER_MODE_Rising 1
  54. //#define TRIGGER_MODE_Falling 2
  55. //#define TRIGGER_MODE_RisingFailling 3
  56. #define GPIO_LOWLEVEL_TRIGGER 0
  57. #define GPIO_HIGHLEVEL_TRIGGER 1
  58. #define GPIO_FALLINGEDGE_TRIGGER 2
  59. #define GPIO_RISINGEDGE_TRIGGER 3
  60. /* SiS 326: New Power Button Setting */
  61. #define PWRBTN_MMIO 0xbe0f0400
  62. #define PowerOff_StatusBit (1<<1)
  63. #define PWRBTN_En_Offset 0x4
  64. #define PowerOff_EnableBit (1<<1)
  65. /* SiS 326: PWN_LED Setting */
  66. #define PWN_LED_MMIO 0xbe0f0100
  67. #define LED_GREEN_REG1 0x0
  68. #define LED_GREEN_REG2 0x4
  69. #define LED_RED_REG1 0x8
  70. #define LED_RED_REG2 0xc
  71. typedef struct _GPIO_CALLBACK
  72. {
  73. void (*function)(void);
  74. }GPIO_CALLBACK;
  75. typedef struct _TIMER_CALLBACK
  76. {
  77. void (*function)(void);
  78. UINT8 minisecond;
  79. }TIMER_CALLBACK;
  80. typedef struct _SYSLEMLED
  81. {
  82. UINT8 LED_EntryOFF;
  83. UINT8 LED_PowerSaveOn;
  84. UINT8 LED_OFF;
  85. UINT8 LED_PowerSaveOff;
  86. UINT8 LED_EntryOn;
  87. UINT8 LED_DPMSON;
  88. UINT8 LED_LogoOn;
  89. UINT8 LED_07;
  90. UINT8 LED_EntryLinux;
  91. UINT8 LED_09;
  92. UINT8 LED_AllReady;
  93. UINT8 LED_0B;
  94. UINT8 LED_0C;
  95. UINT8 LED_0D;
  96. UINT8 LED_0E;
  97. }SYSTEMLED,*PSYSTEMLED;
  98. typedef struct _GPIO_DEV_
  99. {
  100. UINT8* mmio_vbase;
  101. INT32 irq;
  102. struct cdev cdev;
  103. GPIO_CALLBACK callbackfuntable[S2IC_GPIO_MAXNUM];
  104. TIMER_CALLBACK timer0callbackfuntable;
  105. TIMER_CALLBACK timer1callbackfuntable;
  106. }GPIO_DEV,*PGPIO_DEV;
  107. #define RM_GPIO_SEL_REG 0xbe000210
  108. #define R_EN_2ND_UARTA (1<<13)
  109. #define R_EN_1ST_UARTB (1<<14)
  110. #define LVDS_GPIO_SEL_REG 0xbe000200
  111. #define LVDS_GPIO_SEL_REG1 0xbe00025c
  112. #define GPIO_HDMI_SEL_REG 0xbe000034
  113. #if GPIO_For516VIP_FREQ
  114. void Start_516VSync(void);
  115. UINT16 GPIO_Get_516VSyncFreq(void);
  116. #endif
  117. extern INT32 GetCustomerData(INT8 *pcTableName, INT8 **tablestart, UINT32 *tablesize);
  118. extern void GPIOWriteFun(UINT8 index, UINT8 value);
  119. #if (CONFIG_CHIPID != 0x330)
  120. void EMI_DRAM_SSC(UINT8 level, void *ssc_value_188, void *ssc_value_1a8, void *ssc_value_Magic_Number);
  121. #else
  122. void EMI_DRAM_SSC(UINT8 level);
  123. #endif
  124. #endif // end of #ifndef _GPIO_H