[RFC PATCH 15/15] ARM: uncompress: Add documentation

Zoltan Devai zoss at devai.org
Sun Oct 23 17:10:45 EDT 2011


Short description for mach maintainters on how to use the
ucuart driver. It is in-line in the print.c file, as they will
probably look there for any compile/link errors caused by
their decompressor UART setup.

Signed-off-by: Zoltan Devai <zoss at devai.org>
---
 arch/arm/boot/compressed/print.c |   35 ++++++++++++++++++++++++++---------
 1 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/arch/arm/boot/compressed/print.c b/arch/arm/boot/compressed/print.c
index cbb0dbf..b495c2e 100644
--- a/arch/arm/boot/compressed/print.c
+++ b/arch/arm/boot/compressed/print.c
@@ -1,21 +1,38 @@
 /*
- * misc.c
- * 
- * This is a collection of several routines from gzip-1.0.3 
- * adapted for Linux.
- *
- * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
- *
- * Modified for ARM Linux by Russell King
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
  *
  * Nicolas Pitre <nico at visuaide.com>  1999/04/14 :
  *  For this code to run directly from Flash, all constant variables must
- *  be marked with 'const' and all other variables initialized at run-time 
+ *  be marked with 'const' and all other variables initialized at run-time
  *  only.  This way all non constant variables will end up in the bss segment,
  *  which should point to addresses in RAM and cleared to 0 on start.
  *  This allows for a much quicker boot time.
  */
 
+/* UART usage before kernel start:
+ * The files in this directory allow the boot of a self-extracting kernel
+ * image. As the kernel itself is compressed, this is a separate environment
+ * and thus needs a separate UART driver to communicate with the outside.
+ * Machines have multiple ways for providing this UART driver in their
+ * uncompress.h files:
+ *
+ * a) If your UART is compatible with a standard 8250 or AMBA01X port,
+ *    call one of the below ucuart_8250/amba01x setup routines from the
+ *    function "static inline void arch_decomp_setup(void)", that
+ *    resides in the uncompress.h file.
+ * b) If your UART is not a standard one, but still an MMIO one, that
+ *    has at least a direct register for TX, use the generic ucuart_init()
+ *    function.
+ * c) If your UART is too complicated for these simple routines, or you
+ *    rather want to use a framebuffer, provide your own putc(), flush() and
+ *    arch_decomp_setup() functions and #define ARCH_UCUART_NONGENERIC
+ *    in your header file.
+ * d) You can supply the description of the UART in a device tree blob that
+ *    is passed to the kernel.
+ *    (Not yet: In this case, you may omit the uncompress.h file entirely)
+ */
 #include <linux/compiler.h>	/* for inline */
 #include <linux/types.h>
 #include <linux/linkage.h>
-- 
1.7.4.1




More information about the linux-arm-kernel mailing list