diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-10 21:14:05 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-10 21:14:05 -0700 |
commit | 5bb7ff795fffc9418e3039cac77b42adcaae1a57 (patch) | |
tree | c6dca94cc723a0079d04d254e0407e85c1980c66 /drivers | |
parent | 3e1b83ab3912a6f583897635bee0a2e0cd1545f7 (diff) | |
parent | 1f2ee6496b1f71e9d5aa2448745e65fbafdc3bd5 (diff) |
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm:
[ARM] 5033/1: Unbreak corgi_ssp by registering ssp drivers earlier.
[ARM] Orion: clean up addr-map.c after window setting code purge
[ARM] Orion: pass proper t_clk into mv643xx_eth
[ARM] Orion: use mv643xx_eth driver mbus window handling
[ARM] pxa: Fix RCSR handling
[ARM] lubbock: fix compilation
[ARM] 5032/1: Added cpufreq support for pxa27x CPU
[ARM] 5031/1: Indentation correction in cpu-pxa.c.
[ARM] 5028/1: pxafb: fix broken "backward compatibility way" in framebuffer
[ARM] 4882/2: Correction for S3C2410 clkout generation
[ARM] 5027/1: Fixed random memory corruption on pxa suspend cycle.
[ARM] 5024/1: Fix some minor clk issues in the MMCI PL18x driver
[ARM] 5023/1: Fix broken gpio interrupts on ep93xx
ns9xxx: fix sparse warning
ns9xxx: check for irq lockups
ns9xxx: fix handle_prio_irq to unmask irqs with lower priority
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mmc/host/mmci.c | 14 | ||||
-rw-r--r-- | drivers/video/pxafb.c | 8 |
2 files changed, 17 insertions, 5 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 626ac083f4e0..da5fecad74d9 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c @@ -425,7 +425,7 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) host->cclk = host->mclk; } else { clk = host->mclk / (2 * ios->clock) - 1; - if (clk > 256) + if (clk >= 256) clk = 255; host->cclk = host->mclk / (2 * (clk + 1)); } @@ -512,6 +512,18 @@ static int mmci_probe(struct amba_device *dev, void *id) host->plat = plat; host->mclk = clk_get_rate(host->clk); + /* + * According to the spec, mclk is max 100 MHz, + * so we try to adjust the clock down to this, + * (if possible). + */ + if (host->mclk > 100000000) { + ret = clk_set_rate(host->clk, 100000000); + if (ret < 0) + goto clk_disable; + host->mclk = clk_get_rate(host->clk); + DBG(host, "eventual mclk rate: %u Hz\n", host->mclk); + } host->mmc = mmc; host->base = ioremap(dev->res.start, SZ_4K); if (!host->base) { diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c index 3ab6e3d973a1..48aea39c35a5 100644 --- a/drivers/video/pxafb.c +++ b/drivers/video/pxafb.c @@ -1301,8 +1301,8 @@ static void pxafb_decode_mode_info(struct pxafb_info *fbi, } } -static int pxafb_decode_mach_info(struct pxafb_info *fbi, - struct pxafb_mach_info *inf) +static void pxafb_decode_mach_info(struct pxafb_info *fbi, + struct pxafb_mach_info *inf) { unsigned int lcd_conn = inf->lcd_conn; @@ -1333,7 +1333,7 @@ static int pxafb_decode_mach_info(struct pxafb_info *fbi, fbi->lccr0 = inf->lccr0; fbi->lccr3 = inf->lccr3; fbi->lccr4 = inf->lccr4; - return -EINVAL; + goto decode_mode; } if (lcd_conn == LCD_MONO_STN_8BPP) @@ -1343,8 +1343,8 @@ static int pxafb_decode_mach_info(struct pxafb_info *fbi, fbi->lccr3 |= (lcd_conn & LCD_BIAS_ACTIVE_LOW) ? LCCR3_OEP : 0; fbi->lccr3 |= (lcd_conn & LCD_PCLK_EDGE_FALL) ? LCCR3_PCP : 0; +decode_mode: pxafb_decode_mode_info(fbi, inf->modes, inf->num_modes); - return 0; } static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev) |