tuner_drv.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. /*
  2. *
  3. * drivers/media/isdbtmm/tuner_drv.c
  4. *
  5. * MM Tuner Driver
  6. *
  7. * Copyright (C) (2013, Samsung Electronics)
  8. *
  9. * This program is free software; you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License as published by
  11. * the Free Software Foundation version 2.
  12. *
  13. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
  14. * kind, whether express or implied; without even the implied warranty
  15. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. */
  19. #ifndef _TUNER_DRV_H
  20. #define _TUNER_DRV_H
  21. #include <linux/interrupt.h>
  22. #include <linux/gpio.h>
  23. #include <linux/delay.h>
  24. #include <linux/i2c.h>
  25. #include <linux/i2c-dev.h>
  26. #include "tuner_drv_config.h"
  27. #include "tuner_drv_sys.h"
  28. #if 0
  29. #define IOCTL_VALGET _IOW(TUNER_IOC_MAGIC, 1, struct ioctl_cmd)
  30. #define IOCTL_VALSET _IOR(TUNER_IOC_MAGIC, 2, struct ioctl_cmd)
  31. #endif
  32. /* general use */
  33. #define TUNER_OFF 0x00 /* OFF */
  34. #define TUNER_ON 0x01 /* ON */
  35. /* bit range */
  36. #define TUNER_CHARNUM_MAX 0x08 /* enable bits num of type char */
  37. /* interrupt setting registers */
  38. #define REG_INTDEF1_F (0xDC) /* 0x00 */
  39. #define BANK_OF_INTDEF1_F (TUNER_SLAVE_ADR_M1)
  40. #define SIG_ENE_INTDEF1_F (7)
  41. #define SIG_ENS_INTDEF1_F (0)
  42. #define SIG_ENA_INTDEF1_F (0xFF)
  43. #define REG_INTDEF2_F (0xDD) /* 0x00 */
  44. #define BANK_OF_INTDEF2_F (TUNER_SLAVE_ADR_M1)
  45. #define SIG_ENE_INTDEF2_F (3)
  46. #define SIG_ENS_INTDEF2_F (0)
  47. #define SIG_ENA_INTDEF2_F (0x0F)
  48. #define REG_INTDEF1_S (0xC7) /* 0x00 */
  49. #define BANK_OF_INTDEF1_S (TUNER_SLAVE_ADR_M2)
  50. #define SIG_ENE_INTDEF1_S (7)
  51. #define SIG_ENS_INTDEF1_S (0)
  52. #define SIG_ENA_INTDEF1_S (0xFF)
  53. #define REG_INTDEF2_S (0xC8) /* 0x00 */
  54. #define BANK_OF_INTDEF2_S (TUNER_SLAVE_ADR_M2)
  55. #define SIG_ENE_INTDEF2_S (3)
  56. #define SIG_ENS_INTDEF2_S (0)
  57. #define SIG_ENA_INTDEF2_S (0x0F)
  58. /* interrupt condition registers and signals */
  59. #define TUNER_DRV_ADR_INTCND_F 0xE3
  60. #define TUNER_DRV_ADR_INTCND_S 0xCE
  61. #define TUNER_DRV_ENAS_ALL 0
  62. #define TUNER_DRV_ENAE_ALL 7
  63. #define TUNER_DRV_ENA_ALL 0xFF
  64. #define TUNER_DRV_PARAM_RINIT 0x00
  65. #define TUNER_DRV_PARAM_ALL 0xFF
  66. #define TUNER_DRV_ADR_INTST_F (0xE4)
  67. #define TUNER_DRV_ADR_INTST_S (0xCF)
  68. /* i2c send byte length */
  69. #define TUNER_R_MSGLEN 0x01 /* read length */
  70. #define TUNER_W_MSGLEN 0x02 /* write length */
  71. #define TUNER_R_MSGNUM 0x02 /* read length */
  72. #define TUNER_W_MSGNUM 0x01 /* write length */
  73. /* batch writing */
  74. #define TUNER_I2C_WRITE_ALL_NUM (1000) /* max num */
  75. #define TUNER_I2C_MSG_DATA_NUM (2) /* num of transaction record */
  76. /* event register num */
  77. #define TUNER_EVENT_REGNUM (4) /* num of event registers */
  78. /* flag of kernel thread */
  79. #define TUNER_KTH_NONE 0x00000000 /* initial flag */
  80. #define TUNER_KTH_IRQHANDLER 0x00000001 /* interrupt flag position */
  81. #define TUNER_KTH_END 0x80000000 /* end flag position */
  82. /* kernel thread end flag */
  83. #define TUNER_KTH_ENDFLG_OFF 0x00 /* in active */
  84. #define TUNER_KTH_ENDFLG_ON 0x01 /* not active */
  85. /* DEBUG */
  86. /*#define DLOG*/
  87. #ifdef DLOG
  88. #define INFO_PRINT( fmt, arg... ) { printk(KERN_INFO \
  89. "%s: " fmt "\n", \
  90. "mmtuner driver", \
  91. ##arg); }
  92. #define DEBUG_PRINT( fmt, arg... ) { printk(KERN_INFO \
  93. "%s: " fmt "\n", \
  94. "mmtuner driver", \
  95. ##arg); }
  96. #define TRACE() DEBUG_PRINT( "%s( %d )", __FUNCTION__, __LINE__ )
  97. #else
  98. #define INFO_PRINT( fmt, arg... )
  99. #define DEBUG_PRINT( fmt, arg... )
  100. #define TRACE() DEBUG_PRINT()
  101. #endif /* DLOG */
  102. #define ERROR_PRINT( fmt, arg... ) { printk(KERN_ERR \
  103. "%s: " fmt "\n", \
  104. "mmtuner driver", \
  105. ##arg); }
  106. extern int tuner_drv_hw_access( unsigned int uCommand,
  107. TUNER_DATA_RW *data,
  108. unsigned short param_len );
  109. extern int tuner_drv_ctl_power( int data );
  110. extern int tuner_drv_set_interrupt( void );
  111. extern void tuner_drv_release_interrupt( void );
  112. extern void tuner_drv_enable_interrupt( void );
  113. extern void tuner_drv_disable_interrupt( void );
  114. /* Add Start 20121219 No_1 */
  115. extern int i2c_transfer_wrap( struct i2c_adapter *adap,
  116. struct i2c_msg *msgs,
  117. int num );
  118. /* Add End 20121219 No_1 */
  119. #ifndef TUNER_CONFIG_IRQ_PC_LINUX
  120. extern irqreturn_t tuner_interrupt( int irq, void *dev_id );
  121. #else /* TUNER_CONFIG_IRQ_PC_LINUX */
  122. extern int tuner_interrupt( void );
  123. #endif /* TUNER_CONFIG_IRQ_PC_LINUX */
  124. /* Add Start 20121218 No_3 */
  125. extern int tuner_drv_start( void );
  126. extern void tuner_drv_end( void );
  127. /* Add End 20121218 No_3 */
  128. #if defined(CONFIG_TMM_CHG_CTRL)
  129. #define TMM_CHG_TEST_LOG 1
  130. #if TMM_CHG_TEST_LOG
  131. #define tmm_chg_log printk
  132. #else
  133. #define tmm_chg_log(A, ...) ;
  134. #endif
  135. #endif
  136. #endif /* _TUNER_DRV_H */