pt2320.c
上传用户:caisangzi8
上传日期:2013-10-25
资源大小:15756k
文件大小:5k
源码类别:

DVD

开发平台:

C/C++

  1. //======================================================================
  2. // NOTICE: NOT ALL THE FUNCTION HAVE BEEN TEST IN IC PT2320!!!
  3. //======================================================================
  4. #include "config.h"
  5. #include "regmap.h"
  6. #include "global.h"
  7. #include "gpio.h"
  8. #include "iop.h"
  9. #include "audctrl.h"
  10. #ifndef DVDRELEASE
  11. //#define PT2320_DBG
  12. #endif
  13. BYTE    FUNC_EFFECT = 0x0f;
  14. const BYTE tone_value[16] = 
  15. {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8};
  16. //the values in the up table are the component of i2c command word
  17. //the format and sequence are from datasheet of pt2320
  18. /**************************************
  19. **  bit3    bit2    bit1    bit0     dB
  20. **   0       0       0       0      -14
  21. **   0       0       0       1      -12
  22. **   0       0       1       0      -10
  23. **   0       0       1       1      -8
  24. **   0       1       0       0      -6
  25. **   0       1       0       1      -4
  26. **   0       1       1       0      -2
  27. **   0       1       1       1      -0
  28. **   1       0       0       0      +14
  29. **   1       0       0       1      +12
  30. **   1       0       1       0      +10
  31. **   1       0       1       1      +8
  32. **   1       1       0       0      +6
  33. **   1       1       0       1      +4
  34. **   1       1       1       0      +2
  35. **   1       1       1       1      +0
  36. ****************************************/
  37. /*
  38. **  This function is the first function be called when use chip pt2322
  39. **  You have to initial the chip just at the time power is turned ON
  40. */
  41. void init_pt_audio(void)
  42. {
  43. middle_level= 8;
  44. base_level = 8;
  45. treble_level = 8;
  46. front_level = 15;
  47. center_level = 15;
  48. rear_level = 15;
  49. woofer_level = 15;
  50. old_level = 0;
  51. #ifdef VFD_VOLUME_DISPLAY
  52. //maybe here not the right place to init vfd_mode_state
  53. //vfd_mode_state=DVD_NORMAL_MODE;
  54. timeout_vfd = 0;
  55. #endif 
  56. //freyman, in pt2320 no need to wake up it
  57. // set_chip_act();
  58. // set_demute();
  59. //freyman, set 3d off to avoid attenuation of audio sigal 2002-07-01 21:01
  60. set_3d_off();
  61. //
  62. set_tone_defeat();
  63. //freyman remarked 2002-07-03, have checked by the GB test disc
  64. // AudioIOControl(2,15,0);
  65. set_volume(VOL_VALUE);
  66. set_front();
  67. set_middle();
  68. set_base();
  69. set_treble();
  70. }
  71. /*  
  72. **  After power is turned ON, PT2322 must be sent a Code - "11000111"(C7H)
  73. **  - to active Input SW.
  74. */
  75. void set_chip_act(void)
  76. {
  77.     PT2320_WRITE_SBUS(INPUT_SW,SW_ON);
  78. }
  79. /*
  80. ** The following three function is about tone control: 
  81. ** bass,treble,middle
  82. */
  83. void set_base(void)
  84. {
  85. #ifdef PT2320_DBG
  86.     printf("set basen");
  87.     #endif
  88.     
  89.     FUNC_EFFECT &=TONE_CONTROL_ON;
  90.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  91.     PT2320_WRITE_SBUS(BASE,tone_value[base_level]);
  92. }
  93. void set_treble(void)
  94. {
  95.     #ifdef PT2320_DBG
  96.     printf("set_treblen");
  97.     #endif
  98.     
  99.     FUNC_EFFECT &=TONE_CONTROL_ON;
  100.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  101.     PT2320_WRITE_SBUS(TREBLE,tone_value[treble_level]);
  102. }
  103. void set_middle(void)
  104. {
  105.     #ifdef PT2320_DBG
  106.     printf("set_middle:%dn",middle_level);
  107.     #endif
  108.     
  109.     FUNC_EFFECT &=TONE_CONTROL_ON;
  110.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  111.     PT2320_WRITE_SBUS(MIDDLE,tone_value[middle_level]);
  112. }
  113. /*
  114. **  Following function is to trim 5.1 channel
  115. */
  116. void set_front(void)
  117. {
  118.     #ifdef PT2320_DBG
  119.     printf("set frontn");
  120.     #endif
  121.     
  122.     PT2320_WRITE_SBUS(LEFT_FRONT,15-front_level);
  123.     PT2320_WRITE_SBUS(RIGHT_FRONT,15-front_level);
  124. }
  125. void set_center(void)
  126. {
  127.     #ifdef PT2320_DBG
  128.     printf("set_centern"); 
  129.     #endif
  130.     
  131.     PT2320_WRITE_SBUS(CENTER,15-center_level);
  132. }
  133. void set_rear(void)
  134. {
  135.     #ifdef PT2320_DBG
  136.     printf("set_rearn");   
  137.     #endif
  138.     
  139.     PT2320_WRITE_SBUS(LEFT_REAR,15-rear_level);
  140.     PT2320_WRITE_SBUS(RIGHT_REAR,15-rear_level);
  141. }
  142. void set_woofer(void)
  143. {
  144.     #ifdef PT2320_DBG
  145.     printf("set_woofern"); 
  146.     #endif
  147.     
  148.     PT2320_WRITE_SBUS(SUBWOOFER,15-woofer_level);
  149. }
  150. /*
  151. **  Following function is to volume:
  152. **  set the audio value,mute,demute, etc
  153. */
  154. void set_volume(BYTE x)//maybe there are some troubles in Nesinit.c, freyman
  155. {
  156.     #ifdef PT2320_DBG
  157.     printf("set_volume:%dn",x); 
  158.     #endif
  159.     
  160.     PT2320_WRITE_SBUS(VOLUME_10_CONTROL,((80-x)/10));
  161.     PT2320_WRITE_SBUS(VOLUME_1_CONTROL,((80-x)%10));
  162. }
  163. void set_mute(void)
  164. {
  165.     #ifdef PT2320_DBG
  166.     printf("set mute in pt2322n");
  167.     #endif
  168.     
  169.     FUNC_EFFECT |=PT_MUTE_ON;
  170.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  171. }
  172. void set_demute(void)
  173. {
  174.     #ifdef PT2320_DBG
  175.     printf("set demuten");
  176.     #endif
  177.     
  178.     FUNC_EFFECT &=PT_MUTE_OFF;
  179.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  180. }
  181. /*
  182. **  Following function is for 3d effect 
  183. **  but now I can't get the any effect
  184. */
  185. void set_3d_on(void)
  186. {
  187.     #ifdef PT2320_DBG
  188.     printf("set 3d onn");
  189.     #endif
  190.     
  191.     FUNC_EFFECT &=THREED_ON;
  192.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  193. }
  194. void set_3d_off(void)
  195. {
  196.     #ifdef PT2320_DBG
  197.     printf("set 3D OFFn");
  198.     #endif
  199.     
  200.     FUNC_EFFECT |=THREED_OFF;
  201.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  202. }
  203. void set_tone_defeat(void)
  204. {
  205.     FUNC_EFFECT |=TONE_DEFEAT;
  206.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);    
  207. }
  208. void set_tone_on(void)
  209. {
  210.     FUNC_EFFECT &=TONE_CONTROL_ON;
  211.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);    
  212. }