From: Ville <sy...@sc...> - 2007-02-22 00:20:53
|
Replace a busy loop with mdelay() in atyfb clock setup code. This fixes boot hangs several people have experienced. Signed-off-by: Ville Syrjala <sy...@sc...> --- This patch was already forwareded by James to some of you, but here it is with the proper changelog, signed-off-by line, and a language fix in the comment part. Also Cc:d st...@ke... as this seems like -stable material to me. drivers/video/aty/mach64_ct.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) Index: linux-2.6.20.1/drivers/video/aty/mach64_ct.c =================================================================== --- linux-2.6.20.1.orig/drivers/video/aty/mach64_ct.c +++ linux-2.6.20.1/drivers/video/aty/mach64_ct.c @@ -598,7 +598,6 @@ static void aty_resume_pll_ct(const stru struct atyfb_par *par = info->par; if (par->mclk_per != par->xclk_per) { - int i; /* * This disables the sclk, crashes the computer as reported: * aty_st_pll_ct(SPLL_CNTL2, 3, info); @@ -609,12 +608,10 @@ static void aty_resume_pll_ct(const stru aty_st_pll_ct(SCLK_FB_DIV, pll->ct.sclk_fb_div, par); aty_st_pll_ct(SPLL_CNTL2, pll->ct.spll_cntl2, par); /* - * The sclk has been started. However, I believe the first clock - * ticks it generates are not very stable. Hope this primitive loop - * helps for Rage Mobilities that sometimes crash when - * we switch to sclk. (Daniel Mantione, 13-05-2003) + * SCLK has been started. Wait for the PLL to lock. 5 ms + * should be enough according to mach64 programmer's guide. */ - for (i=0;i<=0x1ffff;i++); + mdelay(5); } aty_st_pll_ct(PLL_REF_DIV, pll->ct.pll_ref_div, par); -- Ville Syrjälä sy...@sc... http://www.sci.fi/~syrjala/ |