All of lore.kernel.org
 help / color / mirror / Atom feed
From: Magnus Lilja <lilja.magnus@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 01/10] mx27: basic cpu support
Date: Wed, 6 May 2009 22:30:55 +0200	[thread overview]
Message-ID: <59b21cf20905061330k1f6b7204h9b229be076d2f73c@mail.gmail.com> (raw)
In-Reply-To: <1241634633-13917-2-git-send-email-yanok@emcraft.com>

Hi

2009/5/6 Ilya Yanok <yanok@emcraft.com>:
> This patch adds generic code to support Freescale's i.MX27 SoCs.
>
> Signed-off-by: Ilya Yanok <yanok@emcraft.com>
> ---
> ?cpu/arm926ejs/mx27/Makefile ? ? ? ? ?| ? 44 +++
> ?cpu/arm926ejs/mx27/generic.c ? ? ? ? | ?205 ++++++++++++++
> ?cpu/arm926ejs/mx27/interrupt.c ? ? ? | ?201 ++++++++++++++
> ?include/asm-arm/arch-mx27/clock.h ? ?| ? 17 ++
> ?include/asm-arm/arch-mx27/imx-regs.h | ?504 ++++++++++++++++++++++++++++++++++
> ?5 files changed, 971 insertions(+), 0 deletions(-)
> ?create mode 100644 cpu/arm926ejs/mx27/Makefile
> ?create mode 100644 cpu/arm926ejs/mx27/generic.c
> ?create mode 100644 cpu/arm926ejs/mx27/interrupt.c
> ?create mode 100644 include/asm-arm/arch-mx27/clock.h
> ?create mode 100644 include/asm-arm/arch-mx27/imx-regs.h
>
> diff --git a/cpu/arm926ejs/mx27/Makefile b/cpu/arm926ejs/mx27/Makefile
> new file mode 100644
> index 0000000..c86f3c2
> --- /dev/null
> +++ b/cpu/arm926ejs/mx27/Makefile
> @@ -0,0 +1,44 @@
> +#
> +# (C) Copyright 2000-2006
> +# Wolfgang Denk, DENX Software Engineering, wd at 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
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB ? ?= $(obj)lib$(SOC).a
> +
> +COBJS ?= interrupt.o generic.o
> +
> +SRCS ? := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> +OBJS ? := $(addprefix $(obj),$(SOBJS) $(COBJS))
> +
> +all: ? $(obj).depend $(LIB)
> +
> +$(LIB): ? ? ? ?$(OBJS)
> + ? ? ? $(AR) $(ARFLAGS) $@ $(OBJS)
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/cpu/arm926ejs/mx27/generic.c b/cpu/arm926ejs/mx27/generic.c
> new file mode 100644
> index 0000000..fdbc8b7
> --- /dev/null
> +++ b/cpu/arm926ejs/mx27/generic.c
> @@ -0,0 +1,205 @@
> +/*
> + * ?Copyright (c) 2008 Eric Jarrige <eric.jarrige@armadeus.org>
> + * ?Copyright (c) 2009 Ilya Yanok <yanok@emcraft.com>
> + *
> + * 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
> + */
> +
> +#include <common.h>
> +#include <div64.h>
> +#include <asm/arch/imx-regs.h>

An empty line after the last #include statement improves readability, IMO.

> +/*
> + * ?get the system pll clock in Hz
> + *
> + * ? ? ? ? ? ? ? ? ?mfi + mfn / (mfd +1)
> + * ?f = 2 * f_ref * --------------------
> + * ? ? ? ? ? ? ? ? ? ? ? ?pd + 1
> + */
> +unsigned int imx_decode_pll(unsigned int pll, unsigned int f_ref)
> +{
> + ? ? ? unsigned int mfi = (pll >> 10) & 0xf;
> + ? ? ? unsigned int mfn = pll & 0x3ff;
> + ? ? ? unsigned int mfd = (pll >> 16) & 0x3ff;
> + ? ? ? unsigned int pd = ?(pll >> 26) & 0xf;
> +
> + ? ? ? mfi = mfi <= 5 ? 5 : mfi;
> +
> + ? ? ? return lldiv((2*(u64)f_ref* (mfi*(mfd+1) + mfn)), ((mfd+1)*(pd+1)));

Add space before and after * and +

> +}
> +
> +static ulong clk_in_32k(void)
> +{
> + ? ? ? return 1024 * CONFIG_MX31_CLK32;
> +}
> +
> +static ulong clk_in_26m(void)
> +{
> + ? ? ? if (CSCR & CSCR_OSC26M_DIV1P5) {
> + ? ? ? ? ? ? ? /* divide by 1.5 */
> + ? ? ? ? ? ? ? return 26000000 / 1.5;
> + ? ? ? } else {
> + ? ? ? ? ? ? ? /* divide by 1 */
> + ? ? ? ? ? ? ? return 26000000;
> + ? ? ? }
> +}
> +
> +ulong imx_get_mpllclk(void)
> +{
> + ? ? ? ulong cscr = CSCR;
> + ? ? ? ulong fref;
> +
> + ? ? ? if (cscr & CSCR_MCU_SEL)
> + ? ? ? ? ? ? ? fref = clk_in_26m();
> + ? ? ? else
> + ? ? ? ? ? ? ? fref = clk_in_32k();
> +
> + ? ? ? return imx_decode_pll(MPCTL0, fref);
> +}
> +
> +ulong imx_get_armclk(void)
> +{
> + ? ? ? ulong cscr = CSCR;
> + ? ? ? ulong fref = imx_get_mpllclk();
> + ? ? ? ulong div;
> +
> + ? ? ? if (!(cscr & CSCR_ARM_SRC_MPLL))
> + ? ? ? ? ? ? ? fref = lldiv((fref * 2), 3);
> +
> + ? ? ? div = ((cscr >> 12) & 0x3) + 1;
> +
> + ? ? ? return lldiv(fref, div);
> +}
> +
> +ulong imx_get_ahbclk(void)
> +{
> + ? ? ? ulong cscr = CSCR;
> + ? ? ? ulong fref = imx_get_mpllclk();
> + ? ? ? ulong div;
> +
> + ? ? ? div = ((cscr >> 8) & 0x3) + 1;
> +
> + ? ? ? return lldiv(fref * 2, 3 * div);
> +

Remove empty line.

> +}
> +
> +ulong imx_get_spllclk(void)
> +{
> + ? ? ? ulong cscr = CSCR;
> + ? ? ? ulong fref;
> +
> + ? ? ? if (cscr & CSCR_SP_SEL)
> + ? ? ? ? ? ? ? fref = clk_in_26m();
> + ? ? ? else
> + ? ? ? ? ? ? ? fref = clk_in_32k();
> +
> + ? ? ? return imx_decode_pll(SPCTL0, fref);
> +}
> +
> +static ulong imx_decode_perclk(ulong div)
> +{
> + ? ? ? ?return lldiv((imx_get_mpllclk() * 2), (div * 3));

Use tab instead of space for indent.

> +}
> +
> +ulong imx_get_perclk1(void)
> +{
> + ? ? ? return imx_decode_perclk((PCDR1 & 0x3f) + 1);
> +}
> +
> +ulong imx_get_perclk2(void)
> +{
> + ? ? ? return imx_decode_perclk(((PCDR1 >> 8) & 0x3f) + 1);
> +}
> +
> +ulong imx_get_perclk3(void)
> +{
> + ? ? ? return imx_decode_perclk(((PCDR1 >> 16) & 0x3f) + 1);
> +}
> +
> +ulong imx_get_perclk4(void)
> +{
> + ? ? ? return imx_decode_perclk(((PCDR1 >> 24) & 0x3f) + 1);
> +}
> +
> +#if defined(CONFIG_DISPLAY_CPUINFO)
> +int print_cpuinfo (void)
> +{
> + ? ? ? printf("CPU: ? Freescale i.MX27 at %llu MHz\n",
> + ? ? ? ? ? ? ? lldiv(imx_get_mpllclk(), 1000000));
> + ? ? ? printf("\n");
> + ? ? ? return 0;
> +}
> +#endif
> +
> +void imx_gpio_mode(int gpio_mode)
> +{
> + ? ? ? unsigned int pin = gpio_mode & GPIO_PIN_MASK;
> + ? ? ? unsigned int port = (gpio_mode & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
> + ? ? ? unsigned int ocr = (gpio_mode & GPIO_OCR_MASK) >> GPIO_OCR_SHIFT;
> + ? ? ? unsigned int aout = (gpio_mode & GPIO_AOUT_MASK) >> GPIO_AOUT_SHIFT;
> + ? ? ? unsigned int bout = (gpio_mode & GPIO_BOUT_MASK) >> GPIO_BOUT_SHIFT;
> + ? ? ? unsigned int tmp;
> +
> + ? ? ? /* Pullup enable */
> + ? ? ? if(gpio_mode & GPIO_PUEN)

Add space after if.

> + ? ? ? ? ? ? ? PUEN(port) |= (1 << pin);
> + ? ? ? else
> + ? ? ? ? ? ? ? PUEN(port) &= ~(1 << pin);
> +
> + ? ? ? /* Data direction */
> + ? ? ? if(gpio_mode & GPIO_OUT)

Add space after if.

> + ? ? ? ? ? ? ? DDIR(port) |= 1 << pin;
> + ? ? ? else
> + ? ? ? ? ? ? ? DDIR(port) &= ~(1 << pin);
> +
> + ? ? ? /* Primary / alternate function */
> + ? ? ? if(gpio_mode & GPIO_AF)

Add space after if.

> + ? ? ? ? ? ? ? GPR(port) |= (1 << pin);
> + ? ? ? else
> + ? ? ? ? ? ? ? GPR(port) &= ~(1 << pin);
> +
> + ? ? ? /* use as gpio? */
> + ? ? ? if(!(gpio_mode & (GPIO_PF | GPIO_AF)))

Add space after if.

> + ? ? ? ? ? ? ? GIUS(port) |= (1 << pin);
> + ? ? ? else
> + ? ? ? ? ? ? ? GIUS(port) &= ~(1 << pin);
> +
> + ? ? ? /* Output / input configuration */
> + ? ? ? if (pin < 16) {
> + ? ? ? ? ? ? ? tmp = OCR1(port);
> + ? ? ? ? ? ? ? tmp &= ~(3 << (pin * 2));
> + ? ? ? ? ? ? ? tmp |= (ocr << (pin * 2));
> + ? ? ? ? ? ? ? OCR1(port) = tmp;
> +
> + ? ? ? ? ? ? ? ICONFA1(port) &= ~(3 << (pin * 2));
> + ? ? ? ? ? ? ? ICONFA1(port) |= aout << (pin * 2);
> + ? ? ? ? ? ? ? ICONFB1(port) &= ~(3 << (pin * 2));
> + ? ? ? ? ? ? ? ICONFB1(port) |= bout << (pin * 2);
> + ? ? ? } else {
> + ? ? ? ? ? ? ? pin -= 16;
> +
> + ? ? ? ? ? ? ? tmp = OCR2(port);
> + ? ? ? ? ? ? ? tmp &= ~(3 << (pin * 2));
> + ? ? ? ? ? ? ? tmp |= (ocr << (pin * 2));
> + ? ? ? ? ? ? ? OCR2(port) = tmp;
> +
> + ? ? ? ? ? ? ? ICONFA2(port) &= ~(3 << (pin * 2));
> + ? ? ? ? ? ? ? ICONFA2(port) |= aout << (pin * 2);
> + ? ? ? ? ? ? ? ICONFB2(port) &= ~(3 << (pin * 2));
> + ? ? ? ? ? ? ? ICONFB2(port) |= bout << (pin * 2);
> + ? ? ? }
> +

Remove empty line.

> +}
> +
> diff --git a/cpu/arm926ejs/mx27/interrupt.c b/cpu/arm926ejs/mx27/interrupt.c
> new file mode 100644
> index 0000000..6138d91
> --- /dev/null
> +++ b/cpu/arm926ejs/mx27/interrupt.c
<..>
> +unsigned long long get_ticks (void)
> +{
> + ? ? ? ulong now = GPTCNT; /* current tick value */
> +
> + ? ? ? if (now >= lastinc) ? ? /* normal mode (non roll) */
> + ? ? ? ? ? ? ? /* move stamp forward with absolut diff ticks */
> + ? ? ? ? ? ? ? timestamp += (now - lastinc);

Add {} for multiline branches?

> + ? ? ? else ? ? ? ? ? ? ? ? ? ?/* we have rollover of incrementer */
> + ? ? ? ? ? ? ? timestamp += (0xFFFFFFFF - lastinc) + now;
> + ? ? ? lastinc = now;
> + ? ? ? return timestamp;
> +}
<..>
> diff --git a/include/asm-arm/arch-mx27/clock.h b/include/asm-arm/arch-mx27/clock.h
> new file mode 100644
> index 0000000..f6615d9
> --- /dev/null
> +++ b/include/asm-arm/arch-mx27/clock.h
> @@ -0,0 +1,17 @@
> +
> +#ifndef __ASM_ARCH_CLOCK_H
> +#define __ASM_ARCH_CLOCK_H
> +unsigned int imx_decode_pll(unsigned int pll, unsigned int f_ref);
> +
> +ulong imx_get_mpllclk(void);
> +ulong imx_get_armclk(void);
> +ulong imx_get_spllclk(void);
> +ulong imx_get_fclk(void);
> +ulong imx_get_hclk(void);
> +ulong imx_get_bclk(void);
> +ulong imx_get_perclk1(void);
> +ulong imx_get_perclk2(void);
> +ulong imx_get_perclk3(void);
> +ulong imx_get_ahbclk(void);
> +
> +#endif /* __ASM_ARCH_CLOCK_H */
> diff --git a/include/asm-arm/arch-mx27/imx-regs.h b/include/asm-arm/arch-mx27/imx-regs.h
> new file mode 100644
> index 0000000..a856f7e
> --- /dev/null
> +++ b/include/asm-arm/arch-mx27/imx-regs.h
> @@ -0,0 +1,504 @@
> +/*
> + *
> + * (c) 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.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
> + */
> +
> +#ifndef _IMX_REGS_H
> +#define _IMX_REGS_H
> +
> +/* ------------------------------------------------------------------------
> + * ?Motorola IMX system registers
> + * ------------------------------------------------------------------------
> + */
> +
> +# ifndef __ASSEMBLY__

Why the space after # here?

> +# define __REG(x) ? ? ?(*((volatile u32 *)(x)))
> +# define __REG16(x) ? ? (*(volatile u16 *)(x))
> +# define __REG2(x,y) ? ?(*(volatile u32 *)((u32)&__REG(x) + (y)))

Add space after comma.

> +
> +extern void imx_gpio_mode (int gpio_mode);
> +
> +# else

Why the space after # here?

> +# ?define __REG(x) (x)
> +# ?define __REG16(x) (x)
> +# ?define __REG2(x,y) ((x)+(y))

Add space after comma.

> +#endif
> +
> +#define IMX_IO_BASE ? ? ? ? ? ?0x10000000
> +
> +#define IMX_AIPI1_BASE ? ? ? ? ? ? (0x00000 + IMX_IO_BASE)
> +#define IMX_WDT_BASE ? ? ? ? ? ? ? (0x02000 + IMX_IO_BASE)
> +#define IMX_TIM1_BASE ? ? ? ? ? ? ?(0x03000 + IMX_IO_BASE)
> +#define IMX_TIM2_BASE ? ? ? ? ? ? ?(0x04000 + IMX_IO_BASE)
> +#define IMX_TIM3_BASE ? ? ? ? ? ? ?(0x05000 + IMX_IO_BASE)
> +#define IMX_UART1_BASE ? ? ? ? ? ? (0x0a000 + IMX_IO_BASE)
> +#define IMX_UART2_BASE ? ? ? ? ? ? (0x0b000 + IMX_IO_BASE)
> +#define IMX_UART3_BASE ? ? ? ? ? ? (0x0c000 + IMX_IO_BASE)
> +#define IMX_UART4_BASE ? ? ? ? ? ? (0x0d000 + IMX_IO_BASE)
> +#define IMX_I2C1_BASE ? ? ? ? ? ? ?(0x12000 + IMX_IO_BASE)
> +#define IMX_GPIO_BASE ? ? ? ? ? ? ?(0x15000 + IMX_IO_BASE)
> +#define IMX_TIM4_BASE ? ? ? ? ? ? ?(0x19000 + IMX_IO_BASE)
> +#define IMX_TIM5_BASE ? ? ? ? ? ? ?(0x1a000 + IMX_IO_BASE)
> +#define IMX_UART5_BASE ? ? ? ? ? ? (0x1b000 + IMX_IO_BASE)
> +#define IMX_UART6_BASE ? ? ? ? ? ? (0x1c000 + IMX_IO_BASE)
> +#define IMX_I2C2_BASE ? ? ? ? ? ? ?(0x1D000 + IMX_IO_BASE)
> +#define IMX_TIM6_BASE ? ? ? ? ? ? ?(0x1f000 + IMX_IO_BASE)
> +#define IMX_AIPI2_BASE ? ? ? ? ? ? (0x20000 + IMX_IO_BASE)
> +#define IMX_PLL_BASE ? ? ? ? ? ? ? (0x27000 + IMX_IO_BASE)
> +#define IMX_SYSTEM_CTL_BASE ? ? ? ?(0x27800 + IMX_IO_BASE)
> +#define IMX_IIM_BASE ? ? ? ? ? ? ? (0x28000 + IMX_IO_BASE)
> +#define IMX_FEC_BASE ? ? ? ? ? ? ? (0x2b000 + IMX_IO_BASE)
> +
> +#define IMX_ESD_BASE ? ? ? ? ? ? ? (0xD8001000)
> +#define IMX_WEIM_BASE ? ? ? ? ? ? ?(0xD8002000)

Use tabs to indent the above values.

> +
> +
<...>
> +#define IIM_BANK_AREA ?IMX_IIM_BASE + 0x800

Add () around the definition.


Regards, Magnus

  reply	other threads:[~2009-05-06 20:30 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-06 18:30 [U-Boot] [PATCH 00/10] Support for LogicPD i.MX27-LITEKIT development board Ilya Yanok
2009-05-06 18:30 ` [U-Boot] [PATCH 01/10] mx27: basic cpu support Ilya Yanok
2009-05-06 20:30   ` Magnus Lilja [this message]
2009-05-06 21:16   ` Wolfgang Denk
2009-05-13 22:54     ` Ilya Yanok
2009-05-14  8:10       ` Wolfgang Denk
2009-05-14  9:23         ` Ilya Yanok
2009-05-14  9:42           ` Wolfgang Denk
2009-05-14 10:26             ` Ilya Yanok
2009-05-14 12:33               ` Wolfgang Denk
2009-05-18 16:59             ` Magnus Lilja
2009-05-18 17:34               ` Scott Wood
2009-05-18 18:42               ` Wolfgang Denk
2009-05-14 13:40         ` Sascha Hauer
2009-05-14 13:56           ` Wolfgang Denk
2009-05-06 18:30 ` [U-Boot] [PATCH 02/10] serial_mx31: allow it to work with mx27 too Ilya Yanok
2009-05-06 21:16   ` Wolfgang Denk
2009-05-06 18:30 ` [U-Boot] [PATCH 03/10] fec_imx27: driver for FEC ethernet controller on i.MX27 Ilya Yanok
2009-05-06 19:51   ` Ben Warren
2009-05-06 21:20   ` Wolfgang Denk
2009-05-06 18:30 ` [U-Boot] [PATCH 04/10] mxc_nand: add nand driver for MX2/MX3 Ilya Yanok
2009-05-06 20:31   ` Magnus Lilja
2009-05-06 21:25   ` Wolfgang Denk
2009-05-08  8:39   ` Ivo Clarysse
2009-05-08  8:58     ` Magnus Lilja
2009-05-06 18:30 ` [U-Boot] [PATCH 05/10] mxc-mmc: sdhc host driver for MX2 and MX3 proccessor Ilya Yanok
2009-05-08  0:26   ` alfred steele
2009-05-13 21:50   ` alfred steele
2009-05-06 18:30 ` [U-Boot] [PATCH 06/10] arm: add support for CONFIG_GENERIC_MMC Ilya Yanok
2009-05-06 18:30 ` [U-Boot] [PATCH 07/10] mmc: use lldiv() for 64-bit division Ilya Yanok
2009-05-06 20:32   ` Magnus Lilja
2009-05-08 22:42   ` Andy Fleming
2009-05-06 18:30 ` [U-Boot] [PATCH 08/10] mmc: some endianess fixes for generic mmc subsystem Ilya Yanok
2009-05-08 22:43   ` Andy Fleming
2009-05-06 18:30 ` [U-Boot] [PATCH 09/10] mmc: fix mmcinfo command Ilya Yanok
2009-05-08 22:43   ` Andy Fleming
2009-05-06 18:30 ` [U-Boot] [PATCH 10/10] imx27lite: add support for imx27lite board from LogicPD Ilya Yanok
2009-05-06 20:34   ` Magnus Lilja
2009-05-08 18:19     ` Magnus Lilja
2009-05-06 21:29   ` Wolfgang Denk
2009-05-19 16:17   ` Paul Thomas
2009-05-20 18:49     ` Ilya Yanok
2009-05-20 19:49       ` Paul Thomas
2009-05-28 19:46       ` Paul Thomas
2009-05-28 21:45         ` Wolfgang Denk
2009-05-28 21:51           ` Paul Thomas
2009-06-11 22:38           ` Paul Thomas
2009-06-13 23:04             ` Paul Thomas
2009-05-06 21:26 ` [U-Boot] [PATCH 00/10] Support for LogicPD i.MX27-LITEKIT development board Wolfgang Denk

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=59b21cf20905061330k1f6b7204h9b229be076d2f73c@mail.gmail.com \
    --to=lilja.magnus@gmail.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.