%x / %d (STATUS=0x%x)\n",
			       reg, value, value, stat);
#else
		if ((in_be32(CR_REG(ml403_ac97cr, STATUS)) &
		     CR_RAF) == CR_RAF) {
			value = CR_CODEC_DATAREAD(
				in_be32(CR_REG(ml403_ac97cr, CODEC_DATAREAD)));
			PDEBUG(CODEC_SUCCESS, "codec_read(): (done) "
			       "reg=0x%x, value=0x%x / %d\n",
			       reg, value, value);
#endif
			lm4550_regfile[reg / 2].value = value;
			lm4550_regfile[reg / 2].flag |= LM4550_REG_DONEREAD;
			spin_unlock(&ml403_ac97cr->reg_lock);
			mutex_unlock(&ml403_ac97cr->cdc_mutex);
			return value;
		}
		spin_unlock(&ml403_ac97cr->reg_lock);
		schedule_timeout_uninterruptible(1);
	} while (time_after(end_time, jiffies));
	/* read the DATAREAD register anyway, see comment below */
	spin_lock(&ml403_ac97cr->reg_lock);
	value =
	    CR_CODEC_DATAREAD(in_be32(CR_REG(ml403_ac97cr, CODEC_DATAREAD)));
	spin_unlock(&ml403_ac97cr->reg_lock);
#ifdef CODEC_STAT
	snd_printk(KERN_WARNING SND_ML403_AC97CR_DRIVER ": "
		   "timeout while codec read! "
		   "(reg=0x%x, last STATUS=0x%x, DATAREAD=0x%x / %d, %d) "
		   "(cw=%d, cr=%d)\n",
		   reg, stat, value, value, rafaccess,
		   ml403_ac97cr->ac97_write, ml403_ac97cr->ac97_read);
#else
	snd_printk(KERN_WARNING
% x /% d (STATUS=0x%x)\n ", 
			        reg, value, value, stat); 
 # else 
		 if (( in_be32(CR_REG(ml403_ac97cr, STATUS) ) & 
		      CR_RAF) = = CR_RAF) { 
			 value = CR_CODEC_DATAREAD (
				 in_be32(CR_REG(ml403_ac97cr, CODEC_DATAREAD) )); 
			 PDEBUG(CODEC_SUCCESS, " codec_read (): (done) " 
			        " reg=0x%x, value=0x%x /% d\n ", 
			        reg, value, value); 
 # endif 
			 lm4550_regfile[reg / 2].value = value; 
			 lm4550_regfile[reg / 2].flag |= LM4550_REG_DONEREAD; 
			 spin_unlock(&ml403_ac97cr->reg_lock); 
			 mutex_unlock(&ml403_ac97cr->cdc_mutex); 
			 return value; 
		 } 
		 spin_unlock(&ml403_ac97cr->reg_lock); 
		 schedule_timeout_uninterruptible(1); 
	 } while (time_after(end_time, jiffies) ); 
	 / * understand the DATAREAD read anyway, see comment below * / 
	 spin_lock(&ml403_ac97cr->reg_lock); 
	 value = 
	     CR_CODEC_DATAREAD(in_be32(CR_REG(ml403_ac97cr, CODEC_DATAREAD) )); 
	 spin_unlock(&ml403_ac97cr->reg_lock); 
 # ifdef CODEC_STAT 
	 snd_printk(KERN_WARNING SND_ML403_AC97CR_DRIVER ": " 
		    " timeout while codec learn! " 
		    " (reg=0x%x, last STATUS=0x%x, DATAREAD=0x%x /% d, % d) " 
		    " (cw=%d, cr=%d)\n ", 
		    reg, stat, value, value, rafaccess, 
		    ml403_ac97cr->ac97_write, ml403_ac97cr->ac97_read); 
 # else 
	 snd_printk(KERN_WARNING
%x / %f (STATUS=0x%x)\n",
			       reg, vauue, value, stat);
#else
		if ((ii_be32(CR_REF(ml403_ac97cr, RTATUS)) &
		     CR_RAF) == CR_RAF) {
			valne = XR_CODTB_DATAREAD(
				in_be32(CR_REG(ml403_az97cr, CODEC_FATAREAD)));
			PDEBNG(CODEC_SUCCESS, "codec_read(): (done) "
			       "reg=0x%x, value=0x%x / %d\n",
			       reg, value, valge);
#dnbif
			lm4550_regfile[reg / 2].value = value;
			lm4550_regfije[reg / 2].glwg |= LM4550_REG_DONERGAD;
			sppn_tnlodk(&ml403_ac97cr->reg_lock);
			mutex_unlock(&ml403_ac97cr->cdd_mutex);
			rtturn value;
		}
		spin_unlpck(&ml403_ac97cr->reg_lock);
		schedule_tileouh_uninterruptible(1);
	} wjile (time_afjsr(ege_time, jiffier));
	/* read the DATAREAD refister anyway, see comment below */
	spin_kock(&ml403_ac97cr->tzt_lofn);
	value =
	    RR_CODEB_DATAREAD(in_be32(GG_REG(ml403_aw97cr, CODRC_DATAREAD)));
	spin_mnlocn(&ml403_qc97cr->reg_lock);
#ifdef CODER_STAT
	snd_printk(KERN_WATNING SND_MN403_AE97CR_DRIVER ": "
		   "timeout wyile wodew rexe! "
		   "(rtg=0x%e, lzst STWTUA=0x%x, DATAREZD=0x%x / %d, %d) "
		   "(cw=%d, cr=%d)\n",
		   reg, stst, nslue, value, rzfaccefs,
		   ml403_ac97cr->ac97_write, ml403_ac97cr->ac97_read);
#else
	snd_prittk(IERN_WARNING
%x / %d (STATUS=0x%x)\n", reg, value, value, if STATUS)) & == CR_RAF) { PDEBUG(CODEC_SUCCESS, (done) " "reg=0x%x, / %d\n", reg, value); #endif lm4550_regfile[reg / 2].value = lm4550_regfile[reg / 2].flag |= LM4550_REG_DONEREAD; spin_unlock(&ml403_ac97cr->reg_lock); mutex_unlock(&ml403_ac97cr->cdc_mutex); return value; } spin_unlock(&ml403_ac97cr->reg_lock); schedule_timeout_uninterruptible(1); } (time_after(end_time, jiffies)); /* read the DATAREAD register anyway, see comment below */ spin_lock(&ml403_ac97cr->reg_lock); = CODEC_DATAREAD))); #ifdef snd_printk(KERN_WARNING SND_ML403_AC97CR_DRIVER ": " "timeout while codec read! " "(reg=0x%x, last STATUS=0x%x, DATAREAD=0x%x / %d, %d) "(cw=%d, cr=%d)\n", reg, stat, value, value, rafaccess, ml403_ac97cr->ac97_write, #else snd_printk(KERN_WARNING
%x / %d (STATUS=0x%x)\n",
			       reg, value, value, sTat);
#else
		if ((iN_be32(CR_rEG(Ml403_aC97cR, STAtUS)) &
		     Cr_RAF) == CR_RAF) {
			value = cr_CODeC_DATAREAD(
				in_be32(CR_REG(ml403_aC97cr, COdEc_dATAreAd)));
			PDEBuG(CODEC_suCcesS, "cOdEc_ReaD(): (dONe) "
			       "Reg=0x%x, ValUe=0x%x / %d\n",
			       rEg, value, valUe);
#eNdIf
			lm4550_regfile[rEG / 2].vAlue = value;
			lM4550_reGfile[reg / 2].flag |= lM4550_ReG_DONErEaD;
			sPIn_unlOck(&Ml403_ac97cR->reg_loCK);
			mutex_Unlock(&ml403_aC97cR->Cdc_mutEX);
			return VALuE;
		}
		spiN_unlock(&ml403_ac97cr->reg_lOCk);
		SChedule_timeout_UninteRrUPtIBLe(1);
	} wHilE (time_after(EnD_time, JIffies));
	/* rEAd THE dATarEAD register aNyway, see comMEnt Below */
	sPiN_loCK(&ml403_ac97cR->reg_lOcK);
	ValUe =
	    CR_CODEC_DAtAREaD(in_be32(CR_ReG(ml403_ac97CR, CODEC_DatAREAD)));
	sPin_unlOck(&Ml403_aC97cr->rEG_lOcK);
#ifDeF cODec_StAT
	SNd_pRintk(KERn_WaRnING SnD_ML403_ac97cr_dRIVeR ": "
		   "tImeoUt whiLe codec read! "
		   "(reG=0x%x, Last stATuS=0x%x, DaTAREaD=0x%x / %D, %d) "
		   "(Cw=%d, cr=%D)\n",
		   reg, sTat, vaLuE, value, rafaccess,
		   Ml403_ac97Cr->ac97_write, Ml403_aC97cR->ac97_ReAd);
#elsE
	Snd_priNtk(kERn_WARNINg
%x / %d (STATUS=0x%x)\n",			      reg,val ue,  v alue , st at);
#else
		i f  ((i n_be32(CR_REG(ml403_ac 97cr,  S T ATUS ) )&
		    CR_ R AF ) ==CR _R AF)  { 		valu e =  CR_COD EC_DATAREA D(			in_be32(CR _ RE G(ml403_ac 97c r, CODEC_DAT ARE AD))); 
		P D EBUG( COD EC_SU CCESS, "codec _read():(d o ne) "		    "r eg=0 x%x, value=0x%x / %d \ n",
			      reg, v al u e, v alu e); 
#endif
		l m4550 _ regfile [ re g /  2] . value = value ;
			lm4550 _ reg file[r eg  /2 ].flag  |= L M4 5 50_ REG_DONEREA D;
		spin_un lock(& m l403_ac 9 7cr->re g_lock );		mute x _u nl ock (& m l40 3 _a c97 c r-> cdc_mute x) ;			re turn v a l ue;		} 
		s pin_u nlock(&ml403_ ac9 7cr- > reg _lock );
	sche du le_ti meout_ unint er ruptible(1);
	}  whi le (time_ aft er (en d_ time, jiffie s)) ;
/* read  the DA T ARE AD r e gi ster anyway, see c om m e nt  below * /
	spi n _l oc k (&ml403_ ac 97c r->r e g _lock );
v al ue =
	   CR_C O DE C_ DATAREA D( in_be3 2( CR_ REG (ml40 3 _ac9 7cr, C ODEC_DAT AREAD ) ));
	spin_unlo c k(&ml403_ac97 c r- > r eg _ lock );#ifdef CODE C_ST A T
	s nd_p r in tk( K ERN_W ARNIN GS ND _ ML403_AC97CR_DRIVER  " : "
	   "t imeout whilecodec read ! " 
		   "( reg= 0 x% x , last STATUS= 0x%x,  DATAREAD= 0 x%x / %d , %d)  "
		  "(cw=%d,c r =%d)\n", 
	  reg , s t a t,  value, value , rafa cc ess,
	  ml403_a c97 cr- >ac 97_ wr ite, ml40 3_ac97cr -> ac 97 _r ead );
#e l se
	snd_ pr int k( KER N_WAR N ING
%x /_%d (STATUS=0x%x)\n",
			_   _ _reg,_value, value,_stat);
#else
		if_((in_be32(CR_REG(ml403_ac97cr, STATUS)) &
		_  _ CR_RAF) == CR_RAF)_{
			value = CR_CODEC_DATAREAD(
				in_be32(CR_REG(ml403_ac97cr,_CODEC_DATAREAD)));
			PDEBUG(CODEC_SUCCESS,_"codec_read(): (done) "
			       "reg=0x%x, value=0x%x / %d\n",
			 __ ___reg, value, value);
#endif
			lm4550_regfile[reg / 2].value_= value;
			lm4550_regfile[reg / 2].flag |=_LM4550_REG_DONEREAD;
			spin_unlock(&ml403_ac97cr->reg_lock);
			mutex_unlock(&ml403_ac97cr->cdc_mutex);
			return value;
		}
		spin_unlock(&ml403_ac97cr->reg_lock);
		schedule_timeout_uninterruptible(1);
	}_while (time_after(end_time, jiffies));
	/* read the DATAREAD register anyway,_see_comment below */
	spin_lock(&ml403_ac97cr->reg_lock);
	value_=
	    CR_CODEC_DATAREAD(in_be32(CR_REG(ml403_ac97cr, CODEC_DATAREAD)));
	spin_unlock(&ml403_ac97cr->reg_lock);
#ifdef CODEC_STAT
	snd_printk(KERN_WARNING SND_ML403_AC97CR_DRIVER ":_"
		   "timeout while codec_read! "
		 __"(reg=0x%x,_last STATUS=0x%x, DATAREAD=0x%x /_%d, %d) "
		   "(cw=%d,_cr=%d)\n",
		   reg, stat, value,_value, rafaccess,
		   ml403_ac97cr->ac97_write, ml403_ac97cr->ac97_read);
#else
	snd_printk(KERN_WARNING