[Fwd: Re: RESEND:[RFC] Pico E12 (Xilinx V4) patches to 2.6.15]
From: Grant Likely <hidden>
Date: 2006-01-07 04:45:01
[Trimmed & Resent; first one rejected by mailing list due to size] David H. Lynch Jr. wrote:
I could not figure out how to seek to the 2.6.14 tag so it is against HEAD/2.6.15
try cg-seek, but head is just fine. :)
I am also presuming that git diff produces a unified diff. I do not try to read diffs - I typically do my diff/merges with vim, but it looks about right to me.
Your right; git uses unified by default. You'll need to start reading them. If found *lots* of stuff in this patch that shouldn't be there.
There are basically 5 parts, and I have no idea how to easily separate the pieces:
Commit to your git tree frequently and commit related files at the same time. Then you can bring up a list of all your commits and coalate related changes into a single patch. BTW, many of the long lines were word wrapped (making an unusable patch). You should attach the diff instead of pasting it into thunderbird.
quoted hunk
diff --git a/README.pico b/README.pico new file mode 120000 index 0000000..3daad5a --- /dev/null +++ b/README.pico@@ -0,0 +1 @@ +pico/README.pico\ No newline at end of filediff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig index cc3f64c..7c4318a 100644 --- a/arch/ppc/Kconfig +++ b/arch/ppc/Kconfig@@ -53,7 +53,7 @@ menu "Processor" choice prompt "Processor Type" - default 6xx + default 4xx
You don't want to do this... Your defconfig file should set it instead.
quoted hunk
diff --git a/arch/ppc/boot/common/misc-common.cb/arch/ppc/boot/common/misc-common.c index e79e6b3..a50762a 100644--- a/arch/ppc/boot/common/misc-common.c +++ b/arch/ppc/boot/common/misc-common.c
<--- snip --->
quoted hunk
@@ -271,6 +284,15 @@ void gunzip(void *dst, int dstlen, unsig *lenp = s.next_out - (unsigned char *) dst; zlib_inflateEnd(&s); } +#if 0 +void +puthexb(unsigned char val) +{ + char digits[] = "0123456789abcdef" ; + putc(digits[(val/16) & 0x0F]); + putc(digits[val & 0x0F]); +} +#endif
Why is this in your patch? Keep debug hacks to yourself, especially "#if 0" ones. :)
quoted hunk
void puthex(unsigned long val)@@ -488,8 +510,13 @@ _dump_buf_with_offset(unsigned char *p, { _printk(" "); } +#if defined(CONFIG_PICO_DEBUG) +// more readable dump + _printk(" "); +#else if ((i % 2) == 1) _printk(" "); if ((i % 8) == 7) _printk(" "); +#endif
ditto
quoted hunk
diff --git a/arch/ppc/boot/simple/Makefile b/arch/ppc/boot/simple/Makefile index f3e9c53..3094f1c 100644 --- a/arch/ppc/boot/simple/Makefile +++ b/arch/ppc/boot/simple/Makefile@@ -188,6 +188,7 @@ OBJCOPY_ARGS := -O elf32-powerpc boot-y := head.o relocate.o $(extra.o-y) $(misc-y) boot-$(CONFIG_REDWOOD_5) += embed_config.o boot-$(CONFIG_REDWOOD_6) += embed_config.o +boot-$(CONFIG_PICO_E12) += embed_config.o boot-$(CONFIG_8xx) += embed_config.o boot-$(CONFIG_8260) += embed_config.o boot-$(CONFIG_BSEIP) += iic.o@@ -202,6 +203,16 @@ boot-$(CONFIG_8260) += m8260_tty.o endif boot-$(CONFIG_SERIAL_MPC52xx_CONSOLE) += mpc52xx_tty.o boot-$(CONFIG_SERIAL_MPSC_CONSOLE) += mv64x60_tty.o +boot-$(CONFIG_SERIAL_UARTLITE_CONSOLE) += uartlite_tty.o +boot-$(CONFIG_SERIAL_KEYHOLE_CONSOLE) += keyhole_tty.o +#ifdef CONFIG_XILINX_UARTLITE_CONSOLE +#LIBS += $(TOPDIR)/drivers/char/xilinx_uartlite/xuartlite_l.o +#endif +# ifeq ($(CONFIG_XILINX_ML300),y) +# CFLAGS_xuartlite_tty.o += -I$(TOPDIR)/drivers/char/xilinx_uartlite +# EXTRA_CFLAGS += -I$(TOPDIR)/arch/ppc/platforms/xilinx_ocp \ +# -I$(TOPDIR)/drivers/i2c/xilinx_iic +# endif
Wrong place for this; should be done in: drivers/char/xilinx_uartlite/Makefile <--- snip --->
quoted hunk
diff --git a/arch/ppc/boot/simple/head.S b/arch/ppc/boot/simple/head.S index 5e4adc2..e432b64 100644 --- a/arch/ppc/boot/simple/head.S +++ b/arch/ppc/boot/simple/head.S@@ -46,6 +46,46 @@ start: #endif start_: +#if defined(CONFIG_XILINX_ML300) || defined(CONFIG_PICO_E12) /* PPCerrata 213: only for Virtex-4 */ + mfccr0 0 + oris 0,0,0x50000000@h + mtccr0 0 +#endif
ML300 doesn't have this issue. <--- snip --->
quoted hunk
diff --git a/arch/ppc/boot/simple/keyhole_tty.cb/arch/ppc/boot/simple/keyhole_tty.c new file mode 100644 index 0000000..ab07ca8--- /dev/null +++ b/arch/ppc/boot/simple/keyhole_tty.c@@ -0,0 +1,93 @@ +/* + * arch/ppc/boot/simple/keyhole_tty.c + * + * Bootloader version of the embedded Xilinx/KEYHOLE driver. + * + * Author: David H. Lynch Jr. <dhlii@dlasys.net> + * + * 2005 (c) DLA Systems This file is licensed under + * the terms of the GNU General Public License version 2. This program + * is licensed "as is" without any warranty of any kind, whether express + * or implied. + */ + +#include <linux/config.h> +#include <linux/serial_keyhole.h> + +static int MillisecTimeout=1000; +void usleep(int t) { + int ii, waitTime=100; + while(t) { + for (ii=0; ii < MillisecTimeout*1000/waitTime; ii++){}; + t--; + } +}
umm, isn't udelay already defined in the kernel? <--- snip --->
quoted hunk
@@ -180,11 +192,16 @@ load_kernel(unsigned long load_addr, int #ifdef CONFIG_CMDLINE_BOOL memcpy (cmd_line, compiled_string, sizeof(compiled_string)); #else +// INITRAMFS and initrd should be handled the same. +#ifdef CONFIG_INITRAMFS_SOURCE + memcpy (cmd_line, ramroot_string, sizeof(ramroot_string)); +#else if ( initrd_size ) memcpy (cmd_line, ramroot_string, sizeof(ramroot_string)); else memcpy (cmd_line, netroot_string, sizeof(netroot_string)); #endif +#endif
why? <--- snip --->
quoted hunk
diff --git a/arch/ppc/boot/simple/uartlite_tty.c b/arch/ppc/boot/simple/uartlite_tty.c
Russell King needs to be CC'd on serial stuff; but looks okay from a real-quick look <--- snip --->
quoted hunk
diff --git a/arch/ppc/kernel/head_4xx.S b/arch/ppc/kernel/head_4xx.S index 10c261c..c08aa7f 100644 --- a/arch/ppc/kernel/head_4xx.S +++ b/arch/ppc/kernel/head_4xx.S@@ -75,13 +75,25 @@ _GLOBAL(_start) * ready to work. */ turn_on_mmu: +#if 0 // debuging code used to find the spurious E12 machine checkproblem + khdbg(0x57002) + +#if defined(CONFIG_PICO_DEBUG) && 0 + bl pico_dbg +#endif +#endif lis r0,MSR_KERNEL@h ori r0,r0,MSR_KERNEL@l mtspr SPRN_SRR1,r0 - lis r0,start_here@h + lis r0,start_here@h // SPRN_SRR0 is where the rfi resumes execution ori r0,r0,start_here@l mtspr SPRN_SRR0,r0 SYNC +// PPC405_ERR77_SYNC +/* We now have the lower 16 Meg mapped into TLB entries, and the caches + * ready to work. + */ +
again, leave out private debug stuff and notes; or put in seperate patch
quoted hunk
rfi /* enables MMU */ b . /* prevent prefetch past rfi */@@ -364,6 +376,9 @@ label: b . /* prevent prefetch past rfi */ 2: + // khdbg(0x55001) + // khdbgr(r16) +
ditto
quoted hunk
/* The bailout. Restore registers to pre-exception conditions * and call the heavyweights to help us out. */@@ -478,8 +493,11 @@ label: mtspr SPRN_SPRG7, r11 mtspr SPRN_SPRG6, r12 #endif - mfspr r10, SPRN_DEAR /* Get faulting address */ + // khdbg(0x55000) + // khdbgr(r16) + mfspr r10, SPRN_DEAR /* Get faulting address */ + // khdbgr(r10)
ditto
quoted hunk
/* If we are faulting a kernel address, we have to use the * kernel page tables. */@@ -521,6 +539,8 @@ label: b finish_tlb_load 2: /* Check for possible large-page pmd entry */ + // khdbg(0x55002) + // khdbgr(r16)
ditto <--- snip --->
quoted hunk
diff --git a/arch/ppc/platforms/4xx/Kconfig b/arch/ppc/platforms/4xx/Kconfig diff --git a/arch/ppc/platforms/4xx/Makefile b/arch/ppc/platforms/4xx/Makefile
This stuff all conflicts with my patches of course; but that's to be expected. :) Looks okay otherwise
quoted hunk
diff --git a/arch/ppc/platforms/4xx/pico_e12.c b/arch/ppc/platforms/4xx/pico_e12.c
this is just a copy of xilinx_ml300 and modified for the e12; I didn't look deep into it; but seems okay.
quoted hunk
diff --git a/arch/ppc/platforms/4xx/pico_e12.h b/arch/ppc/platforms/4xx/pico_e12.h
ditto
quoted hunk
diff --git a/arch/ppc/platforms/4xx/virtex-iv.c b/arch/ppc/platforms/4xx/virtex-iv.c diff --git a/arch/ppc/platforms/4xx/virtex-iv.h b/arch/ppc/platforms/4xx/virtex-iv.h
conflicts with my changes; but okay.
quoted hunk
diff --git a/arch/ppc/platforms/4xx/xparameters/xparameters_pico_e12.h b/arch/ppc/platforms/4xx/xparameters/xparameters_pico_e12.h
okay
quoted hunk
diff --git a/arch/ppc/syslib/keyhole.h b/arch/ppc/syslib/keyhole.h new file mode 100644 index 0000000..4b7a374 --- /dev/null +++ b/arch/ppc/syslib/keyhole.h@@ -0,0 +1,17 @@ +/* + * arch/ppc/syslib/keyhole.h + * + * keyhole prototypes + * + * Matt Porter <mporter@kernel.crashing.org>
You can add your name to the copyright list.
quoted hunk
+ * + * 2004 (c) MontaVista Software, Inc. This file is licensed under + * the terms of the GNU General Public License version 2. This program + * is licensed "as is" without any warranty of any kind, whether express + * or implied. + */ + +extern void keyhole_progress(char *, unsigned short); +extern void keyhole_puts(char *); +extern void keyhole_init(int, struct uart_port *); +extern void keyhole_kgdb_map_scc(void);diff --git a/arch/ppc/syslib/keyhole_dbg.c b/arch/ppc/syslib/keyhole_dbg.c new file mode 100644 index 0000000..73dd275 --- /dev/null +++ b/arch/ppc/syslib/keyhole_dbg.c
<--- snip --->
+/* SERIAL_PORT_DFNS is defined in <asm/serial.h> */
+#ifndef SERIAL_PORT_DFNS
+#define SERIAL_PORT_DFNS
+#endif
+
+static struct serial_state rs_table[RS_TABLE_SIZE] = {
+ SERIAL_PORT_DFNS /* defined in <asm/serial.h> */
+};
+static int MillisecTimeout=1000;
+void usleep(int t) {
+ int ii, waitTime=100;
+ while(t) {
+ for (ii=0; ii < MillisecTimeout*1000/waitTime; ii++){};
+ t--;
+ }
+}again; what about udelay? <--- snip --->
quoted hunk
diff --git a/arch/ppc/syslib/ppc4xx_setup.c b/arch/ppc/syslib/ppc4xx_setup.c index e83a83f..c601390 100644 --- a/arch/ppc/syslib/ppc4xx_setup.c +++ b/arch/ppc/syslib/ppc4xx_setup.c@@ -41,7 +41,15 @@ #include <asm/pci-bridge.h> #include <asm/bootinfo.h> +#if defined(CONFIG_SERIAL_8250) #include <syslib/gen550.h> +#endif +#if defined(CONFIG_SERIAL_KEYHOLE) +#include <syslib/keyhole.h> +#endif +#if defined(CONFIG_SERIAL_UARTLITE) +#include <syslib/uartlite.h> +#endif /* Function Prototypes */ extern void abort(void);@@ -72,11 +80,18 @@ ppc4xx_setup_arch(void) * This routine pretty-prints the platform's internal CPU clock * frequencies into the buffer for usage in /proc/cpuinfo. */ +#if defined(CONFIG_PICO_DEBUG) +#define DEBUG_PRINTK(fmt...) _printk(fmt) +#else +#define DEBUG_PRINTK(fmt...) do { } while (0) +#endif +#define _printk printk
The code cleanliness police will probably have something to say about you defining your own debug macros. :) <--- snip --->
quoted hunk
diff --git a/config.x86 b/config.x86
why? This is just noise in your diff.
quoted hunk
diff --git a/cross b/cross new file mode 120000 index 0000000..d11f058 --- /dev/null +++ b/cross@@ -0,0 +1 @@ +pico/cross\ No newline at end of file
??? <--- snip --->
quoted hunk
diff --git a/drivers/char/Makefile b/drivers/char/Makefile index 4aeae68..800f4c8 100644 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile@@ -119,3 +119,20 @@ $(obj)/defkeymap.c $(obj)/qtronixmap.c: rm $@.tmp endif +# mod-subdirs += xilinx_gpio xilinx_ts xilinx_uartlite xilinx_spi +# subdir-$(CONFIG_XILINX_GPIO) += xilinx_gpio +# subdir-$(CONFIG_XILINX_TS) += xilinx_ts +# subdir-$(CONFIG_XILINX_UARTLITE) += xilinx_uartlite +# subdir-$(CONFIG_XILINX_SPI) += xilinx_spi +# obj-$(CONFIG_XILINX_GPIO) += xilinx_gpio/xilinx_gpio.o +# obj-$(CONFIG_XILINX_TS) += xilinx_ts/xilinx_ts.o +# obj-$(CONFIG_XILINX_UARTLITE) += xilinx_uartlite/xilinx_uartlite.ogeneric_serial.o +# obj-$(CONFIG_XILINX_SPI) += xilinx_spi/xilinx_spi.o +# ifeq ($(CONFIG_VIRTEX_II_PRO),y) +# ifeq ($(CONFIG_VT),y) +# ifeq ($(CONFIG_PC_KEYBOARD),y) +# subdir-$(CONFIG_VT) += xilinx_keyb +# obj-$(CONFIG_VT) += xilinx_keyb/xilinx_keyb.o +# endif +# endif +# endif
???
quoted hunk
diff --git a/drivers/net/Makefile b/drivers/net/Makefile index 4cffd34..d559224 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile@@ -206,4 +206,6 @@ obj-$(CONFIG_ETRAX_ETHERNET) += cris/ obj-$(CONFIG_NETCONSOLE) += netconsole.o obj-$(CONFIG_FS_ENET) += fs_enet/ - +#mod-subdirs += xilinx_enet +#subdir-$(CONFIG_XILINX_ENET) += xilinx_enet +#obj-$(CONFIG_XILINX_ENET) += xilinx_enet/xilinx_enet.o
??? <--- snip --->
quoted hunk
diff --git a/drivers/serial/printk.c b/drivers/serial/printk.c new file mode 100644 index 0000000..5e87489 --- /dev/null +++ b/drivers/serial/printk.c@@ -0,0 +1,267 @@ +/* + * arch/ppc/kernel/printf.c + * + * early printk code code (almost) all platforms can use + * + * Author: David H. Lynch Jr. <dhlii@dlasys.net> + * + * Derived heavily from arch/ppc/boot/common/misc-common1.c + * + * 20050 (c) DLA Systems This file is licensed under + * the terms of the GNU General Public License version 2. This program + * is licensed "as is" without any warranty of any kind, whether express + * or implied. + */
You'll need to run this stuff by Tom Rini. <---snip--->
quoted hunk
diff --git a/drivers/serial/uartlite.c b/drivers/serial/uartlite.c diff --git a/drivers/serial/uartlite_early.c b/drivers/serial/uartlite_early.c
I didn't review these, sorry <--- snip --->
quoted hunk
diff --git a/include/asm-ppc/reg_booke.h b/include/asm-ppc/reg_booke.h index 00ad9c7..5221970 100644 --- a/include/asm-ppc/reg_booke.h +++ b/include/asm-ppc/reg_booke.h@@ -120,6 +120,11 @@ do { \ #elif defined(CONFIG_BOOKE) #define MSR_KERNEL (MSR_ME|MSR_RI|MSR_CE) #endif +#if defined (CONFIG_PICO_E12) +// The E12 seems to generate spurious Machine Checks - disable them. +#undef MSR_KERNEL +#define MSR_KERNEL (MSR_RI|MSR_IR|MSR_DR|MSR_CE) +#endif
Ugh; this worries me. What about legitimate machine checks? <--- snip --->
quoted hunk
diff --git a/include/linux/serial_keyhole.h b/include/linux/serial_keyhole.h diff --git a/include/linux/serial_uartlite.h b/include/linux/serial_uartlite.h
Didn't review these, sorry <--- snip ---> Ugh! I'm not doing that again. Make sure your next patch set is broken up into bite size emails. That was far too long. g. -- Grant Likely, B.Sc. P.Eng. Secret Lab Technologies Ltd. (403) 663-0761