All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] [PATCH 3/7 v6] ARM: Add arm1176 core with S3C6400 SoC
Date: Sat, 9 Aug 2008 11:11:01 +0200	[thread overview]
Message-ID: <20080809091101.GC18040@game.jcrosoft.org> (raw)
In-Reply-To: <Pine.LNX.4.64.0808062126070.27004@axis700.grange>

> +
> +void dcache_disable (void)
> +{
> +	ulong reg;
> +
> +	reg = read_p15_c1 ();
> +	cp_delay ();
> +	reg &= ~C1_DC;
> +	write_p15_c1 (reg);
why not  as the other implementation?
> +	write_p15_c1 (reg & ~C1_DC);
> +}
> +
> +int dcache_status (void)
> +{
> +	return (read_p15_c1 () & C1_DC) != 0;
> +}
> +
> +/* flush I/D-cache */
> +static void cache_flush (void)
> +{
> +	/* invalidate both caches and flush btb */
> +	asm ("mcr p15, 0, %0, c7, c7, 0": :"r" (0));
> +	/* mem barrier to sync things */
> +	asm ("mcr p15, 0, %0, c7, c10, 4": :"r" (0));
> +}
> +	 * The timer is set to wrap after 100s, at 66MHz this obviously
> +	 * happens after 10,000,000 ticks. A long variable can thus
> +	 * keep values up to 40,000s, i.e., 11 hours. This should be
> +	 * enough for most uses:-) Possible optimizations: select a
> +	 * binary-friendly frequency, e.g., 1ms / 128. Also calculate
> +	 * the prescaler automatically for other PCLK frequencies.
> +	 */
> +	/* Set timer frequency to 500KHz, at 66MHz we get prescaler=132 < 255 */
> +	timers->TCFG0 = PRESCALER << 8;
> +	if (timer_load_val == 0) {
> +		/*
> +		 * for 10 ms clock period @ PCLK with 4 bit divider = 1/2 and
> +		 * prescaler = 16. Should be 10390 @33.25MHz and 15625 @ 50 MHz
> +		 */
> +		timer_load_val = get_PCLK() / PRESCALER * (100 / 4); /* 100s */
> +		/*printf("Calculated %lu timer_load_val\n", timer_load_val);*/
please remove if not need
> +		timers->TCFG1 = (timers->TCFG1 & ~0xf0000) | 0x20000;
> +	}
> +
please add some empty line to be more readable
> +	/* load value for 10 ms timeout */
> +	lastdec = timers->TCNTB4 = timer_load_val;
> +	/* auto load, manual update of Timer 4 */
> +	timers->TCON = (timers->TCON & ~0x00700000) | TCON_4_AUTO |
> +		TCON_4_UPDATE;
> +	/* auto load, start Timer 4 */
> +	timers->TCON = (timers->TCON & ~0x00700000) | TCON_4_AUTO | COUNT_4_ON;
> +	timestamp = 0;
> +
> +	return 0;
> +}
> +
> +/*
> + * timer without interrupts
> + */
> +
> +/*
> + * This function is derived from PowerPC code (read timebase as long long).
> + * On ARM it just returns the timer value.
> + */
> +unsigned long long get_ticks(void)
> +{
> +	ulong now = read_timer();
> +
> +	if (lastdec >= now) {
> +		/* normal mode */
> +#define MPLL 1
> +#define EPLL 2
> +
> +/* ------------------------------------------------------------------------- */
> +/*
> + * NOTE: This describes the proper use of this file.
> + *
> + * CONFIG_SYS_CLK_FREQ should be defined as the input frequency of the PLL.
> + *
> + * get_FCLK(), get_HCLK(), get_PCLK() and get_UCLK() return the clock of
> + * the specified bus in HZ.
> + */
> +/* ------------------------------------------------------------------------- */
> +
> +static ulong get_PLLCLK(int pllreg)
please not uppercase
> +{
> +	ulong r, m, p, s;
> +
> +	if (pllreg == APLL)
> +		r = APLL_CON_REG;
> +	else if (pllreg == MPLL)
> +		r = MPLL_CON_REG;
> +	else if (pllreg == EPLL)
> +		r = EPLL_CON0_REG;
> +	else
> +		hang();
please move to switch implementation
> +
> +	m = (r >> 16) & 0x3ff;
> +	p = (r >> 8) & 0x3f;
> +	s = r & 0x7;
> +
> +	return m * (CONFIG_SYS_CLK_FREQ / (p * (1 << s)));
> +}
> +
> +/* return ARMCORE frequency */
> +ulong get_ARMCLK(void)
please not uppercase
> +{
> +	ulong div;
> +
> +	div = CLK_DIV0_REG;
> +
> +	return get_PLLCLK(APLL) / ((div & 0x7) + 1);
> +}
> +
> +/* return FCLK frequency */
> +ulong get_FCLK(void)
please not uppercase
> +{
> +	return get_PLLCLK(APLL);
> +}
> +
> +/* return HCLK frequency */
> +ulong get_HCLK(void)
please not uppercase
> +{
> +	ulong fclk;
> +
> +	uint hclkx2_div = ((CLK_DIV0_REG >> 9) & 0x7) + 1;
> +	uint hclk_div = ((CLK_DIV0_REG >> 8) & 0x1) + 1;
> +
> +	/*
> +	 * Bit 7 exists on s3c6410, and not on s3c6400, it is reserved on
> +	 * s3c6400 and is always 0, and it is indeed running in ASYNC mode
> +	 */
> +	if (OTHERS_REG & 0x80)
> +		fclk = get_FCLK();		/* SYNC Mode	*/
> +	else
> +		fclk = get_PLLCLK(MPLL);	/* ASYNC Mode	*/
> +
> +	return fclk / (hclk_div * hclkx2_div);
> +}
> +
> +/* return PCLK frequency */
> +ulong get_PCLK(void)
please not uppercase
> +{
> +	ulong fclk;
> +	uint hclkx2_div = ((CLK_DIV0_REG >> 9) & 0x7) + 1;
> +	uint pre_div = ((CLK_DIV0_REG >> 12) & 0xf) + 1;
> +
> +	if (OTHERS_REG & 0x80)
> +		fclk = get_FCLK();		/* SYNC Mode	*/
> +	else
> +		fclk = get_PLLCLK(MPLL);	/* ASYNC Mode	*/
> +
> +	return fclk / (hclkx2_div * pre_div);
> +}
> +
> +/* return UCLK frequency */
> +ulong get_UCLK(void)
please not uppercase
> +{
> +	return get_PLLCLK(EPLL);
> +}
> +
> +int print_cpuinfo(void)
> +{
> +	printf("\nCPU:     S3C6400@%luMHz\n", get_ARMCLK() / 1000000);
> +	printf("         Fclk = %luMHz, Hclk = %luMHz, Pclk = %luMHz ",
> +	       get_FCLK() / 1000000, get_HCLK() / 1000000,
> +	       get_PCLK() / 1000000);
maybe a macro like HZ_TO_MHZ(x) could be helpfull to avoid typo
> +
> +	if (OTHERS_REG & 0x80)
> +		printf("(SYNC Mode) \n");
> +	else
> +		printf("(ASYNC Mode) \n");
> +	return 0;
> +}
> diff --git a/cpu/arm1176/start.S b/cpu/arm1176/start.S
> new file mode 100644
> index 0000000..00cc186
> --- /dev/null
> +++ b/cpu/arm1176/start.S
> @@ -0,0 +1,469 @@
> +/*
> + *  armboot - Startup Code for S3C6400/ARM1176 CPU-core
> + *
> + * Copyright (c) 2007	Samsung Electronics
> + *
> + * Copyright (C) 2008
> + * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + *
> + * 2007-09-21 - Restructured codes by jsgood (jsgood.yang at samsung.com)
> + * 2007-09-21 - Added MoviNAND and OneNAND boot codes by
> + * jsgood (jsgood.yang at samsung.com)
> + * Base codes by scsuh (sc.suh)
> + */
> +
> +#include <config.h>
> +#include <version.h>
> +#ifdef CONFIG_ENABLE_MMU
> +#include <asm/proc/domain.h>
> +#endif
> +#include <s3c6400.h>
> +
> +#if !defined(CONFIG_ENABLE_MMU) && !defined(CFG_PHY_UBOOT_BASE)
> +#define CFG_PHY_UBOOT_BASE	CFG_UBOOT_BASE
> +#endif
> +
> +.globl _armboot_start
> +_armboot_start:
> +	.word _start
> +
> +/*
> + * These are defined in the board-specific linker script.
> + */
> +.globl _bss_start
> +_bss_start:
> +	.word __bss_start
> +
> +.globl _bss_end
> +_bss_end:
> +	.word _end
> +
> +/*
> + * the actual reset code
> + */
> +
> +reset:
> +	/*
> +	 * set the cpu to SVC32 mode
> +	 */
please add space between parameter
> +	mrs	r0,cpsr
> +	bic	r0,r0,#0x3f
> +	orr	r0,r0,#0xd3
> +	msr	cpsr,r0
> +
> +/*
> + *************************************************************************
> + *
> + * CPU_init_critical registers
> + *
> + * setup important registers
> + * setup memory timing
> + *
> + *************************************************************************
> + */
> +	/*
> +	 * we do sys-critical inits only at reboot,
> +	 * not when booting from ram!
> +	 */
> diff --git a/include/common.h b/include/common.h
> index 06ed278..ba87322 100644
> --- a/include/common.h
> +++ b/include/common.h
> @@ -491,7 +491,8 @@ int	prt_mpc8220_clks (void);
>  ulong	get_OPB_freq (void);
>  ulong	get_PCI_freq (void);
>  #endif
> -#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_LH7A40X)
> +#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || \
> +	defined(CONFIG_LH7A40X) || defined(CONFIG_S3C6400)
Is it possible to have a better and simpler ifdef?
>  void	s3c2410_irq(void);
>  #define ARM920_IRQ_CALLBACK s3c2410_irq
>  ulong	get_FCLK (void);
> diff --git a/include/s3c6400.h b/include/s3c6400.h
> new file mode 100644
> index 0000000..8814747
> --- /dev/null

> +#define NFCONF			(ELFIN_NAND_BASE+NFCONF_OFFSET)
> +#define NFCONT			(ELFIN_NAND_BASE+NFCONT_OFFSET)
> +#define NFCMMD			(ELFIN_NAND_BASE+NFCMMD_OFFSET)
> +#define NFADDR           	(ELFIN_NAND_BASE+NFADDR_OFFSET)
                 ^^^^^^^^^^^
please remove whitesapce
> +#define NFDATA          	(ELFIN_NAND_BASE+NFDATA_OFFSET)
Ditto
> +#define NFMECCDATA0     	(ELFIN_NAND_BASE+NFMECCDATA0_OFFSET)
Ditto
> +#define NFMECCDATA1     	(ELFIN_NAND_BASE+NFMECCDATA1_OFFSET)
Ditto
> +#define NFSECCDATA0      	(ELFIN_NAND_BASE+NFSECCDATA0_OFFSET)
Ditto
> +#define NFSBLK          	(ELFIN_NAND_BASE+NFSBLK_OFFSET)
Ditto
> +#define NFEBLK           	(ELFIN_NAND_BASE+NFEBLK_OFFSET)
Ditto
> +#define NFSTAT           	(ELFIN_NAND_BASE+NFSTAT_OFFSET)
Ditto
> +#define NFESTAT0         	(ELFIN_NAND_BASE+NFESTAT0_OFFSET)
Ditto
> +#define NFESTAT1         	(ELFIN_NAND_BASE+NFESTAT1_OFFSET)
Ditto
> +#define NFMECC0          	(ELFIN_NAND_BASE+NFMECC0_OFFSET)
Ditto
> +#define NFMECC1          	(ELFIN_NAND_BASE+NFMECC1_OFFSET)
Ditto
> +#define NFSECC           	(ELFIN_NAND_BASE+NFSECC_OFFSET)
Ditto
> +#define NFMLCBITPT           	(ELFIN_NAND_BASE+NFMLCBITPT_OFFSET)
Ditto
> +
> +#define NFCONF_REG		__REG(ELFIN_NAND_BASE+NFCONF_OFFSET)
> +#define NFCONT_REG		__REG(ELFIN_NAND_BASE+NFCONT_OFFSET)
> +#define NFCMD_REG		__REG(ELFIN_NAND_BASE+NFCMMD_OFFSET)
> +#define NFADDR_REG           	__REG(ELFIN_NAND_BASE+NFADDR_OFFSET)
Ditto
> +#define NFDATA_REG          	__REG(ELFIN_NAND_BASE+NFDATA_OFFSET)
Ditto
> +#define NFDATA8_REG          	__REGb(ELFIN_NAND_BASE+NFDATA_OFFSET)
Ditto
> +#define NFMECCDATA0_REG     	__REG(ELFIN_NAND_BASE+NFMECCDATA0_OFFSET)
Ditto
> +#define NFMECCDATA1_REG     	__REG(ELFIN_NAND_BASE+NFMECCDATA1_OFFSET)
Ditto
> +#define NFSECCDATA0_REG      	__REG(ELFIN_NAND_BASE+NFSECCDATA0_OFFSET)
Ditto
> +#define NFSBLK_REG          	__REG(ELFIN_NAND_BASE+NFSBLK_OFFSET)
Ditto
> +#define NFEBLK_REG           	__REG(ELFIN_NAND_BASE+NFEBLK_OFFSET)
Ditto
> +#define NFSTAT_REG           	__REG(ELFIN_NAND_BASE+NFSTAT_OFFSET)
Ditto
> +#define NFESTAT0_REG         	__REG(ELFIN_NAND_BASE+NFESTAT0_OFFSET)
Ditto
> +#define NFESTAT1_REG         	__REG(ELFIN_NAND_BASE+NFESTAT1_OFFSET)
Ditto
> +#define NFMECC0_REG          	__REG(ELFIN_NAND_BASE+NFMECC0_OFFSET)
Ditto
> +#define NFMECC1_REG          	__REG(ELFIN_NAND_BASE+NFMECC1_OFFSET)
Ditto
> +#define NFSECC_REG           	__REG(ELFIN_NAND_BASE+NFSECC_OFFSET)
Ditto
> +#define NFMLCBITPT_REG         	__REG(ELFIN_NAND_BASE+NFMLCBITPT_OFFSET)
Ditto
> +

btw on all macro please add space beetwen operator like
> +#define NFCONF_REG		__REG(ELFIN_NAND_BASE+NFCONF_OFFSET)
to
#define NFCONF_REG		__REG(ELFIN_NAND_BASE + NFCONF_OFFSET)

> +#define TIMER3_MANUP           (TCON_3_MAN*1)
> +#define TIMER3_NOP             (FClrBit(TCON, TCON_3_MAN))
> +#define TCON_3_ONOFF           (1 << 16)  /* 0: Stop, 1: start Timer 3 */
> +#define TIMER3_ON              (TCON_3_ONOFF * 1)
> +#define TIMER3_OFF             (FClrBit(TCON, TCON_3_ONOFF))
> +
> +#if defined(CONFIG_CLK_400_100_50)
> +#define Startup_AMDIV		400
for macro I'll prefer upercase
> +#define Startup_MDIV		400
> +#define Startup_PDIV		6
> +#define Startup_SDIV		1

> +
> +
> +/*-----------------------------------------------------------------------
> + * Physical Memory Map
> + */
> +#define DMC1_MEM_CFG	0x80010012	/* Chip1, Burst4, Row/Column bit */
> +#define DMC1_MEM_CFG2	0xB45
> +#define DMC1_CHIP0_CFG	0x150F8		/* 0x4000_0000 ~ 0x43ff_ffff (64MB) */
> +#define DMC_DDR_32_CFG	0x0 		/* 32bit, DDR */
                                   ^
whitespace please remove
> +
> +/* Memory Parameters */
> +/* DDR Parameters */
> +#define DDR_tREFRESH		7800	/* ns */
> +#define DDR_tRAS		45	/* ns (min: 45ns)*/
> +#define DDR_tRC 		68	/* ns (min: 67.5ns)*/
                  ^
whitespace please remove
> +#define DDR_tRCD		23	/* ns (min: 22.5ns)*/
> +#define DDR_tRFC		80	/* ns (min: 80ns)*/
> +#define DDR_tRP 		23	/* ns (min: 22.5ns)*/
                  ^
whitespace please remove
> +#define DDR_tRRD		15	/* ns (min: 15ns)*/
> +#define DDR_tWR 		15	/* ns (min: 15ns)*/
                  ^
whitespace please remove
> +#define DDR_tXSR		120	/* ns (min: 120ns)*/
> +#define DDR_CASL		3	/* CAS Latency 3 */
> +
> +/*
> + * mDDR memory configuration
> + */
> +#define DMC_DDR_BA_EMRS 	2
                          ^
whitespace please remove
> +#define DMC_DDR_MEM_CASLAT	3
> +/* 6   Set Cas Latency to 3 */
> +#define DMC_DDR_CAS_LATENCY	(DDR_CASL << 1)
> +/* Min 0.75 ~ 1.25 */
> --- /dev/null
> +++ b/include/s3c64x0.h
> @@ -0,0 +1,92 @@
> +/*
> + * (C) Copyright 2003
> + * David M??ller ELSOFT AG Switzerland. d.mueller at elsoft.ch
> + *
> + * (C) Copyright 2008
> + * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +/************************************************
> + * NAME	    : S3C64XX.h
> + * Version  : 31.3.2003
> + *
> + * common stuff for SAMSUNG S3C64XX SoC
> + ************************************************/
> +
> +#ifndef __S3C64XX_H__
> +#define __S3C64XX_H__
> +
> +#if defined(CONFIG_SYNC_MODE) && defined(CONFIG_S3C6400)
> +#error CONFIG_SYNC_MODE unavailable on S3C6400, please, fix your configuration!
> +#endif
> +
> +typedef vu_char		S3C64XX_REG8;
> +typedef vu_short	S3C64XX_REG16;
> +typedef vu_long		S3C64XX_REG32;
I'll prefer you use the type directly
> +
> +/* UART (see manual chapter 11) */
> +typedef struct {
> +	S3C64XX_REG32	ULCON;
> +	S3C64XX_REG32	UCON;
> +	S3C64XX_REG32	UFCON;
> +	S3C64XX_REG32	UMCON;
> +	S3C64XX_REG32	UTRSTAT;
> +	S3C64XX_REG32	UERSTAT;
> +	S3C64XX_REG32	UFSTAT;
> +	S3C64XX_REG32	UMSTAT;
> +#ifdef __BIG_ENDIAN
> +	S3C64XX_REG8	res1[3];
> +	S3C64XX_REG8	UTXH;
> +	S3C64XX_REG8	res2[3];
> +	S3C64XX_REG8	URXH;
> +#else /* Little Endian */
> +	S3C64XX_REG8	UTXH;
> +	S3C64XX_REG8	res1[3];
> +	S3C64XX_REG8	URXH;
> +	S3C64XX_REG8	res2[3];
> +#endif
> +	S3C64XX_REG32	UBRDIV;
> +#ifdef __BIG_ENDIAN
> +	S3C64XX_REG8	res3[2];
> +	S3C64XX_REG16	UDIVSLOT;
> +#else
> +	S3C64XX_REG16	UDIVSLOT;
> +	S3C64XX_REG8	res3[2];
> +#endif
> +} /*__attribute__((__packed__))*/ s3c64xx_uart;
why do you remove the packed attribute?
> +
> +/* PWM TIMER (see manual chapter 10) */
> +typedef struct {
> +	S3C64XX_REG32	TCNTB;
> +	S3C64XX_REG32	TCMPB;
> +	S3C64XX_REG32	TCNTO;
> +} /*__attribute__((__packed__))*/ s3c64xx_timer;
Ditto
> +
> +typedef struct {
> +	S3C64XX_REG32	TCFG0;
> +	S3C64XX_REG32	TCFG1;
> +	S3C64XX_REG32	TCON;
> +	s3c64xx_timer	ch[4];
> +	S3C64XX_REG32	TCNTB4;
> +	S3C64XX_REG32	TCNTO4;
> +} /*__attribute__((__packed__))*/ s3c64xx_timers;
Ditto
> +
> +#endif /*__S3C64XX_H__*/

Best Regards,
J.

  parent reply	other threads:[~2008-08-09  9:11 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-06 19:41 [U-Boot-Users] [PATCH 0/7 v6] SMDK6400 support Guennadi Liakhovetski
2008-08-06 19:42 ` [U-Boot-Users] [PATCH 2/7 v6] nand_spl: Support page-aligned read in nand_load, use chipselect Guennadi Liakhovetski
2008-08-06 22:54   ` Scott Wood
2008-08-07  6:36     ` Guennadi Liakhovetski
2008-08-06 19:42 ` [U-Boot-Users] [PATCH 3/7 v6] ARM: Add arm1176 core with S3C6400 SoC Guennadi Liakhovetski
2008-08-07  6:28   ` Andreas Engel
2008-08-07  6:55     ` Guennadi Liakhovetski
2008-08-07  9:33   ` Jens Gehrlein
2008-08-07  9:51     ` Wolfgang Denk
2008-08-07 10:03       ` Jens Gehrlein
2008-08-07 10:17         ` Wolfgang Denk
2008-08-07 11:03           ` Jens Gehrlein
2008-08-07 11:07             ` Jean-Christophe PLAGNIOL-VILLARD
2008-08-07 10:00   ` Jens Gehrlein
2008-08-07 10:12     ` Guennadi Liakhovetski
2008-08-07 11:12       ` Jens Gehrlein
2008-08-09  9:11   ` Jean-Christophe PLAGNIOL-VILLARD [this message]
2008-08-09  9:58     ` [U-Boot] " Wolfgang Denk
2008-08-09 10:07       ` Jean-Christophe PLAGNIOL-VILLARD
2008-08-11  8:17     ` [U-Boot-Users] " Guennadi Liakhovetski
2008-08-06 19:42 ` [U-Boot-Users] [PATCH 4/7 v6] USB: Add support for OHCI controller on S3C6400 Guennadi Liakhovetski
2008-08-07 15:56   ` Markus Klotzbücher
2008-08-07 15:53     ` Jean-Christophe PLAGNIOL-VILLARD
2008-08-08  9:16       ` Markus Klotzbücher
2008-08-06 19:42 ` [U-Boot-Users] [PATCH 5/7 v6] serial: add S3C64XX serial driver Guennadi Liakhovetski
2008-08-09  9:13   ` Jean-Christophe PLAGNIOL-VILLARD
2008-08-11  8:44     ` Guennadi Liakhovetski
2008-08-11 10:06       ` [U-Boot] " Wolfgang Denk
2008-08-11 10:53         ` Guennadi Liakhovetski
2008-08-11 12:12           ` Wolfgang Denk
2008-08-11 12:43             ` Guennadi Liakhovetski
2008-08-06 19:42 ` [U-Boot-Users] [PATCH 6/7 v6] NAND: add NAND driver for S3C64XX Guennadi Liakhovetski
2008-08-07 22:15   ` Scott Wood
2008-08-06 19:42 ` [U-Boot-Users] [PATCH 7/7 v6] ARM: Add support for S3C6400 based SMDK6400 board Guennadi Liakhovetski
2008-08-09  9:32   ` Jean-Christophe PLAGNIOL-VILLARD

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080809091101.GC18040@game.jcrosoft.org \
    --to=plagnioj@jcrosoft.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.