阅读:2088回复:0
求助关于三星2451系统下的ac97驱动问题
小弟在2451下面调试wm9715的驱动,发现很奇怪的问题,在设置完2451的AC97接口后,总是无法实现code ready。打印信息如下:
AC97 Power UP WAVDEV_AC97::AC97_Init()++ WAVDEV_AC97::AC97_Init()-- +++InitCodec CodecVendorID0 =: 0 CodecVendorID1 =: 0 代码如下: // Kingfish2 AC97 Initialize function BOOL HardwareContext::AC97_Init() { RETAILMSG(AC97_DEBUG,(_T("WAVDEV_AC97::AC97_Init()++\r\n"))); //AC97_GPIO_Init(); v_pIOPregs->GPECON = (v_pIOPregs->GPECON & ~(0x3ff)) | 0x3ff; //GPE[4:0]=AC_SDATA_OUT AC_SDATA_IN AC_nRESET AC_BIT_CLK AC_SYNC v_pIOPregs->GPEUDP = v_pIOPregs->GPEUDP & ~(0x3ff); //The pull up function is disabled GPE[4:0] 0 0000 v_pIOPregs->GPEDAT = v_pIOPregs->GPEDAT & ~(0x1f); // Write into the AC97 Global Control Register //Cold Reset #if 0 v_pAC97regs->AC_GLBCTRL = 0x1; Delay(10); //Sleep(5); v_pIOPregs->GPEDAT = v_pIOPregs->GPEDAT | (GPE0_BIT_AC97_nRST);//fmsmile 4.30 v_pAC97regs->AC_GLBCTRL = 0x0; Delay(10); //Sleep(5); #endif v_pAC97regs->AC_GLBCTRL |= (0x1<<0); Delay(10); //Sleep(5); v_pIOPregs->GPEDAT = v_pIOPregs->GPEDAT |(GPE0_BIT_AC97_nRST); //fmsmile 5.4 v_pAC97regs->AC_GLBCTRL &= ~(0x1<<0); Delay(10); //Sleep(5); //Ajay //v_pAC97regs->AC_GLBCTRL = 0x1; //AC-link On v_pAC97regs->AC_GLBCTRL = (1<<2); //fmsmile 4.30 Delay(10); //Sleep(5); //v_pAC97regs->AC_GLBCTRL = 0x0; //Delay(10); //Sleep(5); //Warm Reset WM9713 Need This!!! v_pAC97regs->AC_GLBCTRL |= (1<<1); Delay(10); //Sleep(5); v_pAC97regs->AC_GLBCTRL &= ~(1<<1); Delay(10); //Sleep(5); //AC-link On v_pAC97regs->AC_GLBCTRL = (1<<2); Delay(10); //Sleep(5); // WM9713 Need This !!!! //WriteCodecRegister(WM9713_POWER_CONTROL, 0x1000); //Transfer data enable using AC-link v_pAC97regs->AC_GLBCTRL = v_pAC97regs->AC_GLBCTRL | (1<<3); Delay(10); //Sleep(5); // Enable the Codec ready Interrupt Ajay v_pAC97regs->AC_GLBCTRL = v_pAC97regs->AC_GLBCTRL | (1<<22); Delay(10); //Sleep(5); while (!(v_pAC97regs->AC_GLBSTAT& 0x400000)){ // RETAILMSG(AC97_DEBUG,(_T("WAVEDEV_AC97::AC97 Codec not Ready!\r\n"))); } v_pAC97regs->AC_GLBCTRL &= ~(0x400000); // codec ready interrupt disable Delay(10); //Sleep(5); #if AC97_RECORD_MICIN v_pAC97regs->AC_GLBCTRL = (v_pAC97regs->AC_GLBCTRL & ~(0x3f<<8)) | 0x2200; // PCM_OUT=DMA,PCM_IN=OFF,MIC=DMA; #else v_pAC97regs->AC_GLBCTRL = (v_pAC97regs->AC_GLBCTRL & ~(0x3f<<10)) | 0x2800; // PCM_OUT=DMA,PCM_IN=DMA,MIC=OFF; #endif RETAILMSG(AC97_DEBUG,(_T("WAVDEV_AC97::AC97_Init()--\r\n"))); return TRUE; } 就无法进行下去,好像和wm9715没有关系,还是和2451的设置有关系,我换了个2440板,发现硬件电路是没有问题。希望众位大侠不吝指教。 |
|