[U-Boot] iPAQ 21x support (+PXA3xx NAND flash and MMC)
Oliver Ford
ipaqlinux at oliford.co.uk
Sat Nov 29 15:03:25 CET 2008
Hi,
I've recently started trying to use U-boot on an iPAQ 214 which runs on
a PXA310 cpu.
I've got the basic boot up, NAND flash and MMC systems working so far.
I originally tried to use the zylonite's nand.c that's already in u-boot
but it was very flaky and didn't support several things I needed like
large-page command set and the hardware ecc.
I've now copied the latest pxa3xx nand flash code from the kernel and
just modified it to cope without DMA and without IRQs.
I'm not sure it exactly fits in with the u-boot nand code (eg. it does
an internal read ID scan to find the right command set) but it works a
lot better than the board/zylonite/nand.c. Would this be useful to
anyone else?
Also, can I, and how do I go about submitting the stuff for the iPAQ
21x. The only change outside it's own config header and board/ dir is
the a slight change to get the MMC code working on the pxa3xx (below).
Thanks,
Oliver
diff --git a/cpu/pxa/mmc.c b/cpu/pxa/mmc.c
index d735c8d..3b281d5 100644
--- a/cpu/pxa/mmc.c
+++ b/cpu/pxa/mmc.c
@@ -126,7 +126,7 @@ mmc_block_read(uchar * dst, ulong src, ulong len)
MMC_I_MASK = ~MMC_I_MASK_RXFIFO_RD_REQ;
while (len) {
if (MMC_I_REG & MMC_I_REG_RXFIFO_RD_REQ) {
-#ifdef CONFIG_PXA27X
+#if defined(CONFIG_PXA27X) || defined(CONFIG_CPU_MONAHANS)
int i;
for (i = min(len, 32); i; i--) {
*dst++ = *((volatile uchar *)&MMC_RXFIFO);
@@ -558,7 +558,11 @@ mmc_init(int verbose)
set_GPIO_mode(GPIO6_MMCCLK_MD);
set_GPIO_mode(GPIO8_MMCCS0_MD);
#endif
+#ifdef CONFIG_CPU_MONAHANS
+ CKENA |= CKENA_12_MMC0;
+#else
CKEN |= CKEN12_MMC; /* enable MMC unit clock */
+#endif
MMC_CLKRT = MMC_CLKRT_0_3125MHZ;
MMC_RESTO = MMC_RES_TO_MAX;
More information about the U-Boot
mailing list