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

DVD

开发平台:

C/C++

  1. #include "user_init.h"
  2. #include "pu8560.h"
  3. #include "config.h"
  4. #include "regmap.h"
  5. #include "global.h"
  6. #include "epp.h"
  7. #include "gpio.h"
  8. #ifdef SUPPORT_CARD_STORAGE
  9. #include "cardfs.h"
  10. #endif
  11. //#define     GPIO_DBG        1
  12. #ifdef EASTWIN
  13. #include "iop.h"
  14. #include "kernel.h"         // Kevin Sep 20,04 
  15. extern void show_level(int id,INT8 level,BYTE total_level); 
  16. #if 1
  17. /* Default parameter table of AN2526H */
  18. unsigned char color_drv_data[16] = { 0x84,0x8b,0xbf,0x73,/* 0,1,2,3 */
  19.                                      0x47,0xca,0xad,0x7f,/* 4,5,6,7 */            
  20.                                      0x5f,0x5f,0x85,0x7f,/* 8,9,10,11 */
  21.                                      0xe4,0x6e,0x3c,0xcc /* 12,13,14,15 */
  22.                                     }; 
  23. #endif
  24. #if 0
  25. /* Default parameter table of AN2526H from Maple */
  26. unsigned char color_drv_data[16] = { 0x13,0x11,0xe0,0xdd,/* 0,1,2,3 */
  27.                                      0x8f,0xed,0xa5,0x80,/* 4,5,6,7 */            
  28.                                      0x7f,0x73,0x80,0x80,/* 8,9,10,11 */
  29.                                      0xff,0x82,0x80,0xac /* 12,13,14,15 */
  30.                                     }; 
  31. #endif
  32. #endif
  33. #ifdef SUPPORT_Auo_2inch_Digital_panel
  34. void init_auo_digital_panel(void);
  35. #endif
  36. #ifdef SUPPORT_Auo_UPS053_Digital_panel
  37. #if 0
  38. BYTE auo_053_ntsc[25]={ /*00*/0xE3, /*01*/0xE0, /*02*/0x96, /*03*/0x06, 
  39.                         /*04*/0x00,/*05*/0x0E, /*06*/0x52, /*07*/0x02,
  40.                         /*08*/0x6A, /*09*/0x9C,/*0A*/0xB4, /*0B*/0x50,
  41.                         /*0C*/0xF7, /*0D*/0x80, /*0E*/0x20, /*0F*/0xC1,
  42.                         /*10*/0xCE, /*11*/0x07, /*12*/0x91, /*13*/0x01,
  43.                         /*14*/0x80, /*15*/0x00, /*16*/0x00, /*17*/0x00,
  44.                         /*18*/0x00
  45.                     };
  46. #endif                  
  47.                     
  48. BYTE auo_053_ntsc[25]={ /*00*/0xE2, /*01*/0x28, /*02*/0x96, /*03*/0x06, 
  49.                         /*04*/0x00,/*05*/0x10, /*06*/0x52, /*07*/0x02,
  50.                         /*08*/0x6A, /*09*/0x9C,/*0A*/0xB4, /*0B*/0x50,
  51.                         /*0C*/0xF7, /*0D*/0x80, /*0E*/0x20, /*0F*/0xC1,
  52.                         /*10*/0xCE, /*11*/0x00, /*12*/0x91, /*13*/0x01,
  53.                         /*14*/0x30, /*15*/0x00, /*16*/0x00, /*17*/0x00,
  54.                         /*18*/0xc7
  55.                     };                  
  56.                     
  57.                     
  58. void init_auo_ups053_digital_panel(void);                               
  59. #endif
  60. //
  61. // FUNCTION
  62. // reset_gpio
  63. //
  64. // restore GPIO initial state
  65. //
  66. #ifdef PORTABLE_DVD
  67. #include "gpio_portable.c" //0725 splitted for portable
  68. #endif
  69. #if defined(PMP_DVD)
  70. extern void hwHddPowerOn(void);
  71. extern void Set_PMP_Key(void);
  72. void PMP_gpio_init()
  73. {
  74.     regs0->sft_cfg0 &= ~(0x1 << 5);     //set GPIO 38 ca8202 pin161
  75.     GPIO_E_SET(PC_USB_CONNECT_PIN, 0);  //pin161 is Pc Usb Vcc detect pin
  76.     //pin61  set it to be high , let 8202 ide bus switch on
  77.     regs0->sft_cfg4=regs0->sft_cfg4&(~(1<<0x04));  //pin61,GPIO 4
  78.     GPIO_M_SET(IDE_BUS_SWITCH_CONTROL_PIN,1);
  79.     GPIO_E_SET(IDE_BUS_SWITCH_CONTROL_PIN,1); 
  80.     GPIO_O_SET(IDE_BUS_SWITCH_CONTROL_PIN,1);
  81.     //pin64
  82.     GPIO_M_SET(USB_DEVICE_CHIP_POWER_PIN,1);
  83.     GPIO_E_SET(USB_DEVICE_CHIP_POWER_PIN,1); 
  84.    #ifdef PMP_PCB_VER_B 
  85.     GPIO_O_SET(USB_DEVICE_CHIP_POWER_PIN,0);
  86.    #else  //PMP_PCB_VER_C
  87.     GPIO_O_SET(USB_DEVICE_CHIP_POWER_PIN,1);
  88.     hwHddPowerOn();
  89.    #endif
  90.     #ifdef PMP_KEYBOARD//xyy add 2005-1-13
  91.     Set_PMP_Key();
  92.     #endif
  93. }
  94. #endif //#if defined(PMP_DVD)
  95. void reset_gpio(void)
  96. {
  97.     
  98.     #ifdef IR_SWITCH_CD_USB_CF_OTHER  //dingzhy use vfd data test bus switch 4-10-22 10:41
  99.          GPIO_E_SET(23,1);
  100.     #endif
  101.     
  102.     #ifdef AKI_2CH_KEY_SCAN     //linrc add for AKI 2004-12-31 10:42
  103.     GPIO_M_SET(22,1);
  104.     GPIO_M_SET(23,1);
  105.     GPIO_E_SET(22,1);
  106.     GPIO_E_SET(23,1);
  107.     GPIO_O_SET(22,1);
  108.     GPIO_O_SET(23,1);
  109.     #endif
  110.     
  111.     #ifdef NINTAUS_612_SCAN_KEY     //linrc 2004-6-9 17:52
  112.     regs0->sft_cfg1 &= ~(0x1 << 3);//PIN29 use as CARD_RESET gpio3
  113.     
  114.     GPIO_M_SET(3,1);
  115.     GPIO_M_SET(4,1);
  116.     GPIO_M_SET(54,1);//set  used by RISC
  117.     GPIO_M_SET(55,1);//set   
  118.     GPIO_M_SET(56,1);//set   
  119.     GPIO_E_SET(54,0);//set  CLK as input
  120.     GPIO_E_SET(55,0);//set  STB as input
  121.     GPIO_E_SET(56,1);//set  STB as output  
  122.     GPIO_E_SET(3,1);   //linrc modify 2004-6-7 19:30 
  123.     GPIO_E_SET(4,1);
  124.     #endif      //end NINTAUS_612_SCAN_KEY
  125.     
  126.     #if defined(HANYANG_SCAN_KEY)||defined(HJ2439_SCAN_KEY)  //caoh  2004-4-19 12:00
  127.     regs0->sft_cfg3 &= ~(0x1 << 5);//PIN163 use as SCART_RGB gpio57
  128.     regs0->sft_cfg6 &= ~(0x1 << 5);//PIN151 use as SCART_SW gpio18
  129.     GPIO_M_SET(54,1);
  130.     GPIO_M_SET(55,1);
  131.     GPIO_M_SET(56,1);
  132.     GPIO_M_SET(57,1);
  133.     GPIO_M_SET(18,1);
  134.     
  135.     GPIO_E_SET(57,1);
  136.     GPIO_E_SET(18,1);
  137.     GPIO_E_SET(55,1);
  138.     #endif   
  139.   #ifdef DP3240_KEY_SCAN   // add xrh 
  140.     #ifdef STBY_CONTROLLER_IO_61PIN_12GPIO
  141. GPIO_M_SET(12,1);   //pin 61 gpio 12 s-by
  142. GPIO_E_SET(12,1);   //pin 61 gpio 12 s-by
  143.        GPIO_O_SET(12,1);   //pin 61 gpio 12 s-by
  144.        #endif
  145.     GPIO_M_SET(PLAY_LED_1,1);   //  gpio 13  pin 62  led 2
  146.     GPIO_E_SET(PLAY_LED_1,1);   // gpio 13   pin 62  led 2
  147.     GPIO_O_SET(PLAY_LED_1,1);
  148.    
  149.     GPIO_M_SET(POWER_LED_2,1);   // gpio 14 pin 63  led 3
  150.     GPIO_E_SET(POWER_LED_2,1);   //gpio 14 pin 63  led 3
  151.     GPIO_O_SET(POWER_LED_2,1);
  152.   #endif
  153.    #ifdef DP2030_SCAN_KEY  //caoh  2004-4-19 12:00
  154.     GPIO_M_SET(PANEL_LED_PLAY,1);   //PANEL_LED1  pin82     
  155.     GPIO_E_SET(PANEL_LED_PLAY,1);       //SETUP AS OUTPUT 
  156.         GPIO_O_SET(PANEL_LED_PLAY,1);   //PLAY 
  157.         
  158.         GPIO_M_SET(PANEL_LED_POWER,1);      //PANEL_LED2    pin83
  159.         GPIO_E_SET(PANEL_LED_POWER,1);
  160.         GPIO_O_SET(PANEL_LED_POWER,1);  //POWER
  161.     
  162.     GPIO_M_SET(23,1);       //SCAN_KEY1 pin84    
  163.     GPIO_M_SET(93,1);       //SCAN_KEY2 pin226    
  164.     GPIO_M_SET(94,1);       //SCAN_KEY3 pin227
  165.     GPIO_M_SET(97,1);   //SCAN_KEY4 pin230
  166.     GPIO_M_SET(98,1);       //SCAN_KEY5 pin231
  167.     GPIO_M_SET(100,1);      //SCAN_KEY6 pin233
  168.     GPIO_M_SET(99,1);   //DOOR_SENSE_GPIO
  169.     
  170.     
  171.     GPIO_E_SET(23,1);       //KEY1
  172.     GPIO_E_SET(93,1);       //KEY2
  173.     GPIO_E_SET(98,1);       //KEY5
  174.     
  175.     GPIO_E_SET(99,0);   //as input  DOOR_SENSE_GPIO
  176.     GPIO_E_SET(94,0);       //KEY3
  177.     GPIO_E_SET(97,0);       //KEY4
  178.     GPIO_E_SET(100,0);      //KEY6
  179.     //GPIO_O_SET(DOOR_SENSE_GPIO,1);
  180.     #endif//#ifdef DP2030_SCAN_KEY 
  181. #ifdef DP30H0_KEY_SCAN  //add  2004-5-14 xia        
  182. //wthsin
  183.     regs0->sdc_data_cnt[6][0] |= (0x0c);//Disable ROM_A21(Pin226),ROM_A22(Pin227) as GPIO93,94  
  184.     GPIO_M_SET(21,1);   //PANEL_LED1  pin82
  185.     GPIO_M_SET(22,1);   //PANEL_LED2  pin83
  186.     GPIO_M_SET(23,1);      //bit   PIN 84
  187.     regs0->sft_cfg1 &= ~(0x1 << 4); //gpio 94  intput
  188.     regs0->sft_cfg1 &= ~(0x1 << 5); //gpio 97  output
  189.     GPIO_M_SET(93,1);       //SCAN_KEY1 pin226
  190.     GPIO_M_SET(94,1);       //SCAN_KEY2 pin227
  191.     GPIO_M_SET(97,1);       //SCAN_KEY3 pin230
  192.     GPIO_M_SET(98,1);   //SCAN_KEY4 pin231
  193.     GPIO_M_SET(99,1);       //SCAN_KEY5 pin232  
  194.     GPIO_M_SET(100,1);      //SCAN_KEY6 pin233
  195.     GPIO_E_SET(21,1);       //SETUP AS OUTPUT 
  196.     GPIO_E_SET(22,1);
  197.     GPIO_E_SET(23,1);   
  198.     GPIO_E_SET(97,1);       //KEY3
  199.     GPIO_E_SET(98,1);       //KEY4
  200.     GPIO_E_SET(99,1);       //KEY5
  201.     GPIO_E_SET(100,1);      //KEY6
  202.     GPIO_E_SET(93,0);   //key1
  203.     GPIO_E_SET(94,0);   //key2
  204.     GPIO_O_SET(PANEL_LED_POWER,1);  //POWER
  205.     GPIO_O_SET(PANEL_LED_PLAY,1);   //PLAY  
  206.     GPIO_O_SET(PANEL_LED_CLOCK,0);      //clock
  207.     GPIO_O_SET(IR_LED,0);
  208. #endif//#ifdef DP30H0_KEY_SCAN
  209. //dingzhy  3-11-17 10:15    
  210. #ifdef USE_VFD_GAME_PORT_TO_KEYBOARD_HJ_DP313
  211.     regs0->sft_cfg6 &= ~(0x1 << 4); // A11 as GPIO14
  212.     regs0->sft_cfg6 &= ~(0x1 << 6); // BA1 as GPIO15
  213.     GPIO_M_SET(14,1);//1 risc use
  214.     GPIO_M_SET(15,1);
  215.     GPIO_M_SET(56,1);
  216.     GPIO_M_SET(55,1);
  217.     GPIO_M_SET(54,1);
  218.     GPIO_E_SET(14,0);// 0 input
  219.     GPIO_E_SET(15,0);
  220.     GPIO_E_SET(56,0);
  221.     GPIO_E_SET(55,0);
  222.     GPIO_E_SET(54,0);
  223.     
  224.     
  225.     regs0->sft_cfg1 &= ~(0x1 << 3);//GPIO3  pin29 use as MP3 LIGHT
  226.     regs0->sft_cfg3 &= ~(0x3 << 14);//GPIO62 63  pin175 176 use as DVD CD LIGHT
  227.     regs0->sft_cfg2 &= ~(0x7 << 2);//GPIO62 63  pin175 176 use as DVD CD LIGHT
  228.     GPIO_M_SET(3,1);//1 risc use
  229.     GPIO_M_SET(62,1);
  230.     GPIO_M_SET(63,1);
  231.     GPIO_E_SET(3,1);// 1 output
  232.     GPIO_E_SET(62,1);
  233.     GPIO_E_SET(63,1);
  234.        
  235.     GPIO_O_SET(3,1);
  236.     GPIO_O_SET(62,1);
  237.     GPIO_O_SET(63,1);
  238.     
  239. #endif      
  240.     
  241. #ifndef ROM_ATA_SHARE_BUS   
  242.     regs0->sft_cfg1 &= ~(0x3 << 1);
  243. #else
  244.     #ifdef SUPPORT_CARD_STORAGE
  245.         regs0->sft_cfg1 |= (0x7 << 0);
  246.         regs0->sft_cfg1 &= ~(0x1 << 3);
  247.     #endif
  248. #endif
  249. #ifdef PORTABLE_DVD //Jack added for all PDVD customers
  250.     portable_reset_gpio(); //0725 splitted for portable
  251. #endif
  252. #ifdef SUPPORT_RECEIVER     // benosn add extrenal AD interface PIN 130,131,133 
  253. #ifdef SUPPORT_EXT_ADC  
  254.     regs0->sft_cfg0 &= ~((0x0fffc)<<1);
  255.     regs0->gpio_master[2]|= 0x01b0;    //GPIO 37~47
  256.         //regs0->gpio_oe[2]|= 0xe980;        
  257.         regs0->gpio_oe[2]&= ~(0x01b0);     
  258.         //regs0->gpio_out[2]|= 0x0900;
  259.         //regs0->gpio_out[2]&= ~(0xe080);       
  260.         regs0->sft_cfg3 &= 0xfff8;
  261.         regs0->sft_cfg3 |= 0x0004;
  262. #endif  
  263. /*
  264. #ifdef SUPPORT_8202_EXT_ADC    //  benson add 2004.08.18  pin 69,71,72
  265.        regs0->sft_cfg3 &= 0xf3ff;
  266.        regs0->sft_cfg3 |= 0x0400;  
  267. #endif
  268. */
  269. #ifdef SUPPORT_8202_EXT_ADC    //  benson add 2004.08.23  pin 169,171,172
  270.        regs0->sft_cfg3 &= 0xf3ff;
  271.        regs0->sft_cfg3 |= 0x0800;  
  272. #endif
  273. #endif
  274.     #if defined(SUPPORT_USB)&&defined(HOST_SL811HS) //wthsin, 2004/1/12 01:36pm
  275.         regs0->sft_cfg1 |= (0x7 << 0);
  276.     #endif
  277. /*a block is removed. huziqin 2004-2-26*/
  278.     
  279. #ifdef PCM1742 //Jeff 20030917
  280.     regs0->sft_cfg1 |= (0x7 << 0);
  281.     regs0->sft_cfg1 &= ~(0x1 << 3);
  282. #endif
  283. #if defined(PCM1742)&&defined(CHECK_DAC_ZERO_FLAG_TO_GPIO_MUTE)     //gerry,3-10-20 11:36
  284.     regs0->sft_cfg6 &= ~(0x1 << 4); // SA11 as GPIO 14, pin 109
  285.     GPIO_M_SET(14,1);//GPIO_M_SET(35,1);
  286.     GPIO_E_SET(14,0);//GPIO_E_SET(35,0);    
  287. #endif
  288. #ifdef USE_CD_SENSE_PIN_AS_LED_GPIO     //gerry,2004-2-10 18:33
  289.     GPIO_M_SET(4,1);
  290.     GPIO_E_SET(4,1);
  291.     GPIO_O_SET(4,0);
  292. #endif//USE_CD_SENSE_PIN_AS_LED_GPIO
  293. #ifdef USE_PIN31_CONTROL_POWER_LED      //gerry,normal led is high on,2004/2/11 05:31