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

DVD

开发平台:

C/C++

  1. #include "config.h"
  2. #include "regmap.h"
  3. #include "global.h"
  4. #include "gpio.h"
  5. #include "iop.h"
  6. #include "audctrl.h"
  7. #ifndef DVDRELEASE
  8. //#define PT_DBG
  9. #endif
  10. #ifndef   PT_DBG
  11. #undef printf
  12. #undef print_block
  13. #define printf(f, a...) do {} while (0)
  14. #define print_block(x,y) do {} while (0)
  15. #endif
  16. void set_chip_act(void);
  17. void set_tone_defeat(void);
  18. BYTE    FUNC_EFFECT = 0x0f; 
  19. //freyman add 2002-9-10 8:32
  20. //#ifdef SVA_SAMPLE
  21. BYTE    pt_vol;
  22. //#endif 
  23. const BYTE tone_value[16] = 
  24. {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8};
  25. //the values in the up table are the component of i2c command word
  26. //the format and sequence are from datasheet of pt2322
  27. /*
  28. **  bit3    bit2    bit1    bit0     dB
  29. **   0       0       0       0      -14
  30. **   0       0       0       1      -12
  31. **   0       0       1       0      -10
  32. **   0       0       1       1      -8
  33. **   0       1       0       0      -6
  34. **   0       1       0       1      -4
  35. **   0       1       1       0      -2
  36. **   0       1       1       1      -0
  37. **   1       0       0       0      +14
  38. **   1       0       0       1      +12
  39. **   1       0       1       0      +10
  40. **   1       0       1       1      +8
  41. **   1       1       0       0      +6
  42. **   1       1       0       1      +4
  43. **   1       1       1       0      +2
  44. **   1       1       1       1      +0
  45. */
  46. /*
  47. **  This function is the first function be called when use chip pt2322
  48. **  You have to initial the chip just at the time power is turned ON
  49. */
  50. void init_pt_audio(void)
  51. {
  52. middle_level= 8;
  53. base_level = 8;
  54. treble_level = 8;
  55. front_level = 8;
  56. center_level = 8;
  57. rear_level = 8;
  58. woofer_level = 8;
  59. /*freyman marked 2004-3-23 15:08, for no use
  60. #ifdef SVA_SAMPLE
  61. rfront_level = 8;
  62. lfront_level = 8;
  63. rrear_level = 8;
  64. lrear_level = 8;
  65. pt_vol = 10;
  66. #endif 
  67. */
  68. // old_level = 0;
  69. #ifdef VFD_VOLUME_DISPLAY
  70. /*
  71. **maybe here not the right place to init vfd_mode_state
  72. **vfd_mode_state=DVD_NORMAL_MODE;
  73. */
  74. timeout_vfd = 0;
  75. #endif 
  76. set_chip_act();
  77. delay_1ms(300);
  78. /*
  79. ** freyman add 2002-7-27 14:23
  80. ** Des:when power on, player works in DVD mode, audio output to TV
  81. ** so set mute the pt2322
  82. */
  83. set_mute();
  84. /*
  85. ** freyman, 2002-07-01 21:01
  86. ** Des: when 3d on, the audio signal will be attenuated, 
  87. ** maybe 50 percents. For the ephase angle is 180.
  88. **  So set 3d off.
  89. */
  90. set_3d_off();  
  91. /* set_volume(AUX_VOL_MAX);*/
  92. set_front();
  93. set_center();
  94. set_rear();
  95. set_woofer();
  96. set_middle();
  97. set_base();
  98. set_treble();
  99. /*               
  100. ** freyman, 2002-7-3 14:28
  101. ** set tone defeat to avoid FL and FR output connect together 
  102. */
  103. // set_tone_defeat();
  104. }
  105. /*
  106. **
  107. */
  108. void init_volume(void)
  109. {
  110. // AudioIOControl(2,15,0);
  111. set_volume(AUX_VOL_MAX);
  112. set_front();
  113. set_middle();
  114. set_base();
  115. set_treble();
  116. set_demute();
  117. }
  118. /*  
  119. **  After power is turned ON, PT2322 must be sent a Code - "11000111"(C7H)
  120. **  - to active Input SW.
  121. */
  122. void set_chip_act(void)
  123. {
  124.     PT2320_WRITE_SBUS(INPUT_SW,SW_ON);
  125. }
  126. /*
  127. ** The following three function is about tone control: 
  128. ** bass,treble,middle
  129. */
  130. void set_base(void)
  131. {
  132. #ifdef PT_DBG
  133.     printf("set basen");
  134. #endif
  135.     
  136.     FUNC_EFFECT &=TONE_CONTROL_ON;
  137.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  138.     PT2320_WRITE_SBUS(BASE,tone_value[base_level]);
  139. }
  140. void set_treble(void)
  141. {
  142. #ifdef PT_DBG
  143.     printf("set_treblen");
  144. #endif
  145.     
  146.     FUNC_EFFECT &=TONE_CONTROL_ON;
  147.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  148.     PT2320_WRITE_SBUS(TREBLE,tone_value[treble_level]);
  149. }
  150. void set_middle(void)
  151. {
  152. #ifdef PT_DBG
  153.     printf("set_middle:%dn",middle_level);
  154. #endif
  155.     
  156.     FUNC_EFFECT &=TONE_CONTROL_ON;
  157.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  158.     PT2320_WRITE_SBUS(MIDDLE,tone_value[middle_level]);
  159. }
  160. /*
  161. **  Following function is to trim 5.1 channel
  162. */
  163. void set_front(void)
  164. {
  165. #ifdef PT_DBG
  166.     printf("set frontn");
  167. #endif
  168.     
  169.     PT2320_WRITE_SBUS(LEFT_FRONT,15-front_level);
  170.     PT2320_WRITE_SBUS(RIGHT_FRONT,15-front_level);
  171. }
  172. void set_center(void)
  173. {
  174. #ifdef PT_DBG
  175.     printf("set_centern"); 
  176. #endif
  177.     
  178.     PT2320_WRITE_SBUS(CENTER,15-center_level);
  179. }
  180. void set_rear(void)
  181. {
  182. #ifdef PT_DBG
  183.     printf("set_rearn");   
  184. #endif
  185.     
  186.     PT2320_WRITE_SBUS(LEFT_REAR,15-rear_level);
  187.     PT2320_WRITE_SBUS(RIGHT_REAR,15-rear_level);
  188. }
  189. void set_woofer(void)
  190. {
  191. #ifdef PT_DBG
  192.     printf("set_woofern"); 
  193. #endif
  194.     
  195.     PT2320_WRITE_SBUS(SUBWOOFER,15-woofer_level);
  196. }
  197. /*
  198. **  Following function is to volume:
  199. **  set the audio value,mute,demute, etc
  200. **  the value of parameter:x
  201. ** 1: volume up
  202. ** 0: volume down
  203. **      else: set pt2322 to the max volume, almost when power on to initial
  204. */
  205. void set_volume(BYTE x)//maybe there are some troubles in Nesinit.c, freyman
  206. {
  207. #ifdef PT_DBG
  208.     printf("set_volume:%dn",x); 
  209. #endif
  210.     if(x<=1)
  211.     {
  212. //#ifdef SVA_SAMPLE
  213.     extern void show_level(int id,INT8 level,BYTE total_level);
  214.     if((x==1)&&(pt_vol<20))
  215.         pt_vol++;
  216.     else if((x==0)&&(pt_vol>0))
  217.         pt_vol--;
  218.     if(pt_vol<=0)
  219.         pt_vol = 0;
  220.     x = pt_vol;
  221.     show_level(AMP_VOL_ID,x,21);
  222.     x = pt_vol*2;
  223. //#endif 
  224.     //freyman mod 2002-9-12 18:03
  225.     PT2320_WRITE_SBUS(VOLUME_10_CONTROL,((80-x-40)/10));
  226.     PT2320_WRITE_SBUS(VOLUME_1_CONTROL,((80-x-40)%10));
  227.     }
  228. else
  229. {
  230. pt_vol = 20;
  231. PT2320_WRITE_SBUS(VOLUME_10_CONTROL,(80/10));
  232.      PT2320_WRITE_SBUS(VOLUME_1_CONTROL,(80%10));
  233. }
  234. }
  235. void set_mute(void)
  236. {
  237. #ifdef PT_DBG
  238.     printf("set mute in pt2322n");
  239. #endif
  240.     FUNC_EFFECT |=PT_MUTE_ON;
  241.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  242. }
  243. void set_demute(void)
  244. {
  245. #ifdef PT_DBG
  246.     printf("set demuten");
  247. #endif
  248.     FUNC_EFFECT &=PT_MUTE_OFF;
  249.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  250. }
  251. /*
  252. **  Following function is for 3d effect 
  253. **  but now I can't get the any effect
  254. */
  255. void set_3d_on(void)
  256. {
  257. #ifdef PT_DBG
  258.     printf("set 3d onn");
  259. #endif
  260.     
  261.     FUNC_EFFECT &=THREED_ON;
  262.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  263. }
  264. void set_3d_off(void)
  265. {
  266. #ifdef PT_DBG
  267.     printf("set 3D OFFn");
  268. #endif
  269.     
  270.     FUNC_EFFECT |=THREED_OFF;
  271.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);
  272. }
  273. void set_tone_defeat(void)
  274. {
  275.     FUNC_EFFECT |=TONE_DEFEAT;
  276.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);    
  277. }
  278. void set_tone_on(void)
  279. {
  280.     FUNC_EFFECT &=TONE_CONTROL_ON;
  281.     PT2320_WRITE_SBUS(FUNC_SEL,FUNC_EFFECT);    
  282. }
  283. /* freyman marked 2004-3-23 15:09, for no use
  284. #ifdef SVA_SAMPLE
  285. void set_lfront(void)
  286. {
  287.     PT2320_WRITE_SBUS(LEFT_FRONT,15-lfront_level);
  288. }
  289. void set_rfront(void)
  290. {
  291.     PT2320_WRITE_SBUS(RIGHT_FRONT,15-rfront_level);
  292. }
  293. void set_lrear(void)
  294. {    
  295.     PT2320_WRITE_SBUS(LEFT_REAR,15-lrear_level);
  296. }
  297. void set_rrear(void)
  298. {
  299.     PT2320_WRITE_SBUS(RIGHT_REAR,15-rrear_level);
  300. }
  301. #endif 
  302. */