All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jason77.wang@gmail.com>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Jason Wang <jason77.wang@gmail.com>,
	s.hauer@pengutronix.de, grant.likely@secretlab.ca,
	amit.kucheria@canonical.com,
	spi-devel-general@lists.sourceforge.net,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/6] i.MX5/clock: add eCSPI and CSPI clock definitions
Date: Mon, 13 Sep 2010 11:31:12 +0800	[thread overview]
Message-ID: <4C8D9B00.8080004@gmail.com> (raw)
In-Reply-To: <20100910094714.GF30558@pengutronix.de>

Uwe Kleine-König wrote:
> Hello Jason,
>
> I currently merge your and our patch set.  Will follow up with the
> result hopefully later today.
>
> On Fri, Sep 03, 2010 at 02:22:08PM +0800, Jason Wang wrote:
>   
>>>>  @@ -52,6 +53,18 @@ static int _clk_ccgr_enable(struct clk *clk)
>>>>  	return 0;
>>>>  }
>>>>  +static int _clk_ccgr_enable_inrun(struct clk *clk)
>>>> +{
>>>> +	u32 reg;
>>>> +
>>>> +	reg = __raw_readl(clk->enable_reg);
>>>> +	reg &= ~(MXC_CCM_CCGRx_CG_MASK << clk->enable_shift);
>>>> +	reg |= MXC_CCM_CCGRx_MOD_IDLE << clk->enable_shift;
>>>> +	__raw_writel(reg, clk->enable_reg);
>>>> +
>>>> +	return 0;
>>>> +}
>>>> +
>>>>     
>>>>         
>>> imho this should be consolidated in something like:
>>>
>>> static int _clk_ccgr_setclk(struct clk *clk, unsigned mode)
>>> {
>>> 	...
>>> }
>>>
>>> #define _clk_ccgr_enable(clk) _clk_ccgr_setclk(clk, MXC_CCM_CCGRx_MOD_ON)
>>> #define _clk_ccgr_disable(clk) _clk_ccgr_setclk(clk, MXC_CCM_CCGRx_MOD_OFF)
>>> #define _clk_ccgr_enable_inrun(clk) _clk_ccgr_setclk(clk, MXC_CCM_CCGRx_MOD_IDLE)
>>>
>>>   
>>>       
>> It makes  code more concise. On the other hand, too many macros will
>> add troubles when we use kgdb to perform sourcecode-level debug.
>>     
> Using macros doesn't work here, as they are used as callbacks.  Still
> made it with functions.  Then (apart from the return value)
> _clk_ccgr_enable_inrun and _clk_ccgr_disable_inwait are identically.
> I wonder if this is intended?
>
>   
This is from Freescale's original design.

enalble_inrun = disable_inwait  = paritial enable = partial disable.
(clock is enable in free run mode, while is disable in wait/stop mode.)

This function can be both an enable callback and a disable callback.
I guess that assign this function two names just for logic clear.
>> Anyway, i agree your suggestion.
>>     
>>>>  static void _clk_ccgr_disable(struct clk *clk)
>>>>  {
>>>>  	u32 reg;
>>>> @@ -762,6 +775,61 @@ static struct clk kpp_clk = {
>>>>  	.id = 0,
>>>>  };
>>>>  +/* eCSPI */
>>>> +static unsigned long _clk_ecspi_getrate(struct clk *clk)
>>>> +{
>>>> +	u32 reg, prediv, podf;
>>>> +	unsigned long ret;
>>>> +
>>>> +	reg = __raw_readl(MXC_CCM_CSCDR2);
>>>> +	prediv = ((reg & MXC_CCM_CSCDR2_CSPI_CLK_PRED_MASK) >>
>>>> +		  MXC_CCM_CSCDR2_CSPI_CLK_PRED_OFFSET) + 1;
>>>> +	if (prediv == 1)
>>>> +		BUG();
>>>> +	podf = ((reg & MXC_CCM_CSCDR2_CSPI_CLK_PODF_MASK) >>
>>>> +		MXC_CCM_CSCDR2_CSPI_CLK_PODF_OFFSET) + 1;
>>>> +
>>>> +	ret = clk_get_rate(clk->parent) / (prediv * podf);
>>>> +	return ret;
>>>> +}
>>>> +
>>>> +static int _clk_ecspi_set_parent(struct clk *clk, struct clk *parent)
>>>> +{
>>>> +	u32 reg, mux;
>>>> +
>>>> +	mux = _get_mux(parent, &pll1_sw_clk, &pll2_sw_clk, &pll3_sw_clk,
>>>> +		       &lp_apm_clk);
>>>> +	reg = __raw_readl(MXC_CCM_CSCMR1) & ~MXC_CCM_CSCMR1_CSPI_CLK_SEL_MASK;
>>>> +	reg |= mux << MXC_CCM_CSCMR1_CSPI_CLK_SEL_OFFSET;
>>>> +	__raw_writel(reg, MXC_CCM_CSCMR1);
>>>> +
>>>> +	return 0;
>>>> +}
>>>> +
>>>> +static struct clk ecspi_main_clk = {
>>>> +	.parent = &pll3_sw_clk,
>>>> +	.get_rate = _clk_ecspi_getrate,
>>>> +	.set_parent = _clk_ecspi_set_parent,
>>>>     
>>>>         
>>> Sascha didn't implement set_parent
>>>
>>>   
>>>       
>> ecspi really can change parent root clock.
>>     
>>>> +};
>>>> +
>>>> +static struct clk ecspi1_ipg_clk = {
>>>> +	.parent = &ipg_clk,
>>>> +	.secondary = &spba_clk,
>>>> +	.enable_reg = MXC_CCM_CCGR4,
>>>> +	.enable_shift = MXC_CCM_CCGRx_CG9_OFFSET,
>>>> +	.enable = _clk_ccgr_enable_inrun,
>>>> +	.disable = _clk_ccgr_disable,
>>>> +};
>>>> +
>>>> +static struct clk ecspi2_ipg_clk = {
>>>> +	.parent = &ipg_clk,
>>>> +	.secondary = &aips_tz2_clk,
>>>> +	.enable_reg = MXC_CCM_CCGR4,
>>>> +	.enable_shift = MXC_CCM_CCGRx_CG11_OFFSET,
>>>> +	.enable = _clk_ccgr_enable_inrun,
>>>> +	.disable = _clk_ccgr_disable,
>>>> +};
>>>>         
> aips_tz2_clk is wrong here, no?  Sascha used spba_clk here, too.  I
> didn't found out yet how to read that out of the reference manual.
>
>   
Just guess from Freescale original design and "charpter 2 Memory Map" of
MCIMX51RM.pdf.

eCSPI1 is in the AIPS_TZ1(spba) ip module, while eCSPI2 is in the AIPS_TZ2
ip module, so they have different "secondary ipg parent clock".

Thanks,
Jason.
> Best regards
> Uwe
>
>   

WARNING: multiple messages have this Message-ID (diff)
From: jason77.wang@gmail.com (Jason Wang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/6] i.MX5/clock: add eCSPI and CSPI clock definitions
Date: Mon, 13 Sep 2010 11:31:12 +0800	[thread overview]
Message-ID: <4C8D9B00.8080004@gmail.com> (raw)
In-Reply-To: <20100910094714.GF30558@pengutronix.de>

Uwe Kleine-K?nig wrote:
> Hello Jason,
>
> I currently merge your and our patch set.  Will follow up with the
> result hopefully later today.
>
> On Fri, Sep 03, 2010 at 02:22:08PM +0800, Jason Wang wrote:
>   
>>>>  @@ -52,6 +53,18 @@ static int _clk_ccgr_enable(struct clk *clk)
>>>>  	return 0;
>>>>  }
>>>>  +static int _clk_ccgr_enable_inrun(struct clk *clk)
>>>> +{
>>>> +	u32 reg;
>>>> +
>>>> +	reg = __raw_readl(clk->enable_reg);
>>>> +	reg &= ~(MXC_CCM_CCGRx_CG_MASK << clk->enable_shift);
>>>> +	reg |= MXC_CCM_CCGRx_MOD_IDLE << clk->enable_shift;
>>>> +	__raw_writel(reg, clk->enable_reg);
>>>> +
>>>> +	return 0;
>>>> +}
>>>> +
>>>>     
>>>>         
>>> imho this should be consolidated in something like:
>>>
>>> static int _clk_ccgr_setclk(struct clk *clk, unsigned mode)
>>> {
>>> 	...
>>> }
>>>
>>> #define _clk_ccgr_enable(clk) _clk_ccgr_setclk(clk, MXC_CCM_CCGRx_MOD_ON)
>>> #define _clk_ccgr_disable(clk) _clk_ccgr_setclk(clk, MXC_CCM_CCGRx_MOD_OFF)
>>> #define _clk_ccgr_enable_inrun(clk) _clk_ccgr_setclk(clk, MXC_CCM_CCGRx_MOD_IDLE)
>>>
>>>   
>>>       
>> It makes  code more concise. On the other hand, too many macros will
>> add troubles when we use kgdb to perform sourcecode-level debug.
>>     
> Using macros doesn't work here, as they are used as callbacks.  Still
> made it with functions.  Then (apart from the return value)
> _clk_ccgr_enable_inrun and _clk_ccgr_disable_inwait are identically.
> I wonder if this is intended?
>
>   
This is from Freescale's original design.

enalble_inrun = disable_inwait  = paritial enable = partial disable.
(clock is enable in free run mode, while is disable in wait/stop mode.)

This function can be both an enable callback and a disable callback.
I guess that assign this function two names just for logic clear.
>> Anyway, i agree your suggestion.
>>     
>>>>  static void _clk_ccgr_disable(struct clk *clk)
>>>>  {
>>>>  	u32 reg;
>>>> @@ -762,6 +775,61 @@ static struct clk kpp_clk = {
>>>>  	.id = 0,
>>>>  };
>>>>  +/* eCSPI */
>>>> +static unsigned long _clk_ecspi_getrate(struct clk *clk)
>>>> +{
>>>> +	u32 reg, prediv, podf;
>>>> +	unsigned long ret;
>>>> +
>>>> +	reg = __raw_readl(MXC_CCM_CSCDR2);
>>>> +	prediv = ((reg & MXC_CCM_CSCDR2_CSPI_CLK_PRED_MASK) >>
>>>> +		  MXC_CCM_CSCDR2_CSPI_CLK_PRED_OFFSET) + 1;
>>>> +	if (prediv == 1)
>>>> +		BUG();
>>>> +	podf = ((reg & MXC_CCM_CSCDR2_CSPI_CLK_PODF_MASK) >>
>>>> +		MXC_CCM_CSCDR2_CSPI_CLK_PODF_OFFSET) + 1;
>>>> +
>>>> +	ret = clk_get_rate(clk->parent) / (prediv * podf);
>>>> +	return ret;
>>>> +}
>>>> +
>>>> +static int _clk_ecspi_set_parent(struct clk *clk, struct clk *parent)
>>>> +{
>>>> +	u32 reg, mux;
>>>> +
>>>> +	mux = _get_mux(parent, &pll1_sw_clk, &pll2_sw_clk, &pll3_sw_clk,
>>>> +		       &lp_apm_clk);
>>>> +	reg = __raw_readl(MXC_CCM_CSCMR1) & ~MXC_CCM_CSCMR1_CSPI_CLK_SEL_MASK;
>>>> +	reg |= mux << MXC_CCM_CSCMR1_CSPI_CLK_SEL_OFFSET;
>>>> +	__raw_writel(reg, MXC_CCM_CSCMR1);
>>>> +
>>>> +	return 0;
>>>> +}
>>>> +
>>>> +static struct clk ecspi_main_clk = {
>>>> +	.parent = &pll3_sw_clk,
>>>> +	.get_rate = _clk_ecspi_getrate,
>>>> +	.set_parent = _clk_ecspi_set_parent,
>>>>     
>>>>         
>>> Sascha didn't implement set_parent
>>>
>>>   
>>>       
>> ecspi really can change parent root clock.
>>     
>>>> +};
>>>> +
>>>> +static struct clk ecspi1_ipg_clk = {
>>>> +	.parent = &ipg_clk,
>>>> +	.secondary = &spba_clk,
>>>> +	.enable_reg = MXC_CCM_CCGR4,
>>>> +	.enable_shift = MXC_CCM_CCGRx_CG9_OFFSET,
>>>> +	.enable = _clk_ccgr_enable_inrun,
>>>> +	.disable = _clk_ccgr_disable,
>>>> +};
>>>> +
>>>> +static struct clk ecspi2_ipg_clk = {
>>>> +	.parent = &ipg_clk,
>>>> +	.secondary = &aips_tz2_clk,
>>>> +	.enable_reg = MXC_CCM_CCGR4,
>>>> +	.enable_shift = MXC_CCM_CCGRx_CG11_OFFSET,
>>>> +	.enable = _clk_ccgr_enable_inrun,
>>>> +	.disable = _clk_ccgr_disable,
>>>> +};
>>>>         
> aips_tz2_clk is wrong here, no?  Sascha used spba_clk here, too.  I
> didn't found out yet how to read that out of the reference manual.
>
>   
Just guess from Freescale original design and "charpter 2 Memory Map" of
MCIMX51RM.pdf.

eCSPI1 is in the AIPS_TZ1(spba) ip module, while eCSPI2 is in the AIPS_TZ2
ip module, so they have different "secondary ipg parent clock".

Thanks,
Jason.
> Best regards
> Uwe
>
>   

  parent reply	other threads:[~2010-09-13  3:31 UTC|newest]

Thread overview: 134+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-02  7:51 [PATCH 0/6] add spi support for i.MX51 in the existing spi_imx driver Jason Wang
2010-09-02  7:51 ` Jason Wang
2010-09-02  7:51 ` [PATCH 1/6] spi-imx: add CSPI and eCSPI support for i.MX51 MCU Jason Wang
2010-09-02  7:51   ` Jason Wang
2010-09-02  7:52   ` [PATCH 2/6] i.MX5/clock: add eCSPI and CSPI clock definitions Jason Wang
2010-09-02  7:52     ` Jason Wang
2010-09-02  7:52     ` [PATCH 3/6] mx5: add support to dynamically register spi_imx devices (imx51 3ds) Jason Wang
2010-09-02  7:52       ` Jason Wang
2010-09-02  7:52       ` [PATCH 4/6] mx5/iomux: add iomux definitions for eCSPI2 on the imx51_3ds board Jason Wang
2010-09-02  7:52         ` Jason Wang
2010-09-02  7:52         ` [PATCH 5/6] mx51_3ds: add eCSPI2 support " Jason Wang
2010-09-02  7:52           ` Jason Wang
2010-09-02  7:52           ` [PATCH 6/6] mx51_3ds: add SPI NOR flash in the board init stage Jason Wang
2010-09-02  7:52             ` Jason Wang
2010-09-02 15:05           ` [PATCH 5/6] mx51_3ds: add eCSPI2 support on the imx51_3ds board Uwe Kleine-König
2010-09-02 15:05             ` Uwe Kleine-König
2010-09-03  6:24             ` Jason Wang
2010-09-03  6:24               ` Jason Wang
2010-09-02 15:02       ` [PATCH 3/6] mx5: add support to dynamically register spi_imx devices (imx51 3ds) Uwe Kleine-König
2010-09-02 15:02         ` Uwe Kleine-König
2010-09-03  6:22         ` Jason Wang
2010-09-03  6:22           ` Jason Wang
2010-09-02 15:01     ` [PATCH 2/6] i.MX5/clock: add eCSPI and CSPI clock definitions Uwe Kleine-König
2010-09-02 15:01       ` Uwe Kleine-König
2010-09-03  6:22       ` Jason Wang
2010-09-03  6:22         ` Jason Wang
2010-09-10  9:47         ` Uwe Kleine-König
2010-09-10  9:47           ` Uwe Kleine-König
     [not found]           ` <20100910094714.GF30558-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2010-09-10 10:04             ` Lothar Waßmann
2010-09-10 10:04               ` Lothar Waßmann
2010-09-13  3:31           ` Jason Wang [this message]
2010-09-13  3:31             ` Jason Wang
2010-09-02 14:53   ` [PATCH 1/6] spi-imx: add CSPI and eCSPI support for i.MX51 MCU Uwe Kleine-König
2010-09-02 14:53     ` Uwe Kleine-König
2010-09-02 15:11     ` Lothar Waßmann
2010-09-02 15:11       ` Lothar Waßmann
2010-09-02 17:29       ` Baruch Siach
2010-09-02 17:29         ` Baruch Siach
2010-09-02 17:57         ` Uwe Kleine-König
2010-09-02 17:57           ` Uwe Kleine-König
2010-09-03  8:49         ` Lothar Waßmann
2010-09-03  8:49           ` Lothar Waßmann
2010-09-03  6:16     ` Jason Wang
2010-09-03  6:16       ` Jason Wang
2010-09-03  7:54       ` Uwe Kleine-König
2010-09-03  7:54         ` Uwe Kleine-König
2010-09-02  8:27 ` [PATCH 0/6] add spi support for i.MX51 in the existing spi_imx driver Uwe Kleine-König
2010-09-02  8:27   ` Uwe Kleine-König
2010-09-02 10:07   ` Jason Wang
2010-09-02 10:07     ` Jason Wang
2010-09-02 14:39     ` Uwe Kleine-König
2010-09-02 14:39       ` Uwe Kleine-König
2010-09-02 14:41       ` [PATCH 1/6] ARM: mx51: clean up mx51 header Uwe Kleine-König
2010-09-02 14:41         ` Uwe Kleine-König
2010-09-02 14:41       ` [PATCH 2/6] ARM: mx51: fix naming of spi related defines Uwe Kleine-König
2010-09-02 14:41         ` Uwe Kleine-König
2010-09-02 14:42       ` [PATCH 3/6] ARM: imx: change the way spi-imx devices are registered Uwe Kleine-König
2010-09-02 14:42         ` Uwe Kleine-König
2010-09-02 14:42       ` [PATCH 4/6] ARM: mx51: Add spi clock and spi_imx device registration Uwe Kleine-König
2010-09-02 14:42         ` Uwe Kleine-König
     [not found]         ` <1283438523-19697-4-git-send-email-u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2010-09-03  5:46           ` Jason Wang
2010-09-03  5:46             ` Jason Wang
2010-09-02 14:42       ` [PATCH 5/6] spi-imx: Add i.MX51 support Uwe Kleine-König
2010-09-02 14:42         ` Uwe Kleine-König
2010-09-09  5:33         ` Grant Likely
2010-09-09  5:33           ` Grant Likely
2010-09-09  7:27           ` Uwe Kleine-König
2010-09-09  7:27             ` Uwe Kleine-König
2010-09-02 14:42       ` [PATCH 6/6] ARM: mx5/mx51_babbage: Add spi support Uwe Kleine-König
2010-09-02 14:42         ` Uwe Kleine-König
2010-09-03  3:18       ` [PATCH 0/6] add spi support for i.MX51 in the existing spi_imx driver Jason Wang
2010-09-03  3:18         ` Jason Wang
2010-09-03  6:41         ` Amit Kucheria
2010-09-03  6:41           ` Amit Kucheria
2010-09-03  9:34           ` Robert Schwebel
2010-09-03  9:34             ` Robert Schwebel
2010-09-17  9:52       ` Uwe Kleine-König
2010-09-17  9:52         ` Uwe Kleine-König
2010-09-17  9:54         ` [PATCH 01/16] spi/imx: default to m on platforms that have such devices Uwe Kleine-König
2010-09-17  9:54           ` Uwe Kleine-König
2010-09-17  9:54         ` [PATCH 03/16] spi/imx: get rid of more ifs depending on the used cpu Uwe Kleine-König
2010-09-17  9:54           ` Uwe Kleine-König
     [not found]         ` <20100917095247.GB30441-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2010-09-17  9:54           ` [PATCH 02/16] spi/imx: convert driver to use platform ids Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 04/16] spi/imx: save the spi chip select in config struct, not the gpio to use Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
     [not found]             ` <1284717274-12850-4-git-send-email-u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2010-09-17 11:11               ` Lothar Waßmann
2010-09-17 11:11                 ` Lothar Waßmann
2010-09-17 11:20                 ` Russell King - ARM Linux
2010-09-17 11:20                   ` Russell King - ARM Linux
2010-09-19  8:47                   ` Jason Wang
2010-09-19  8:47                     ` Jason Wang
2010-09-17  9:54           ` [PATCH 05/16] spi/imx: add support for imx51's eCSPI and CSPI Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 06/16] ARM: imx: change the way spi-imx devices are registered Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 07/16] ARM: imx: use platform ids for spi_imx devices Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 08/16] ARM: mx51: clean up mx51 header Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 09/16] ARM: mx51: fix naming of spi related defines Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 10/16] ARM: mx5: add spi_imx device registration Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 11/16] ARM: mx5/clock-mx51: refactor ccgr callbacks to use common code Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 13/16] ARM: mx5/clock-mx51: add spi clocks Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 14/16] ARM: mx5/iomux-mx51: add iomux definitions for eCSPI2 on the imx51_3ds board Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 15/16] ARM: mx5/mx51_3ds: add eCSPI2 support " Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54           ` [PATCH 16/16] ARM: mx5/mx51_3ds: add SPI NOR flash in the board init stage Uwe Kleine-König
2010-09-17  9:54             ` Uwe Kleine-König
2010-09-17  9:54         ` [PATCH 12/16] ARM: mx5/clock-mx51: new macro that defines a clk with all members Uwe Kleine-König
2010-09-17  9:54           ` Uwe Kleine-König
2010-09-19  8:53         ` [PATCH 0/6] add spi support for i.MX51 in the existing spi_imx driver Jason Wang
2010-09-19  8:53           ` Jason Wang
2010-09-20 15:33           ` Uwe Kleine-König
2010-09-20 15:33             ` Uwe Kleine-König
2010-09-21  1:39             ` Jason Wang
2010-09-21  1:39               ` Jason Wang
2010-09-24  7:00         ` Grant Likely
2010-09-24  7:00           ` Grant Likely
2010-09-24  9:11           ` Uwe Kleine-König
2010-09-24  9:11             ` Uwe Kleine-König
2010-09-24 16:12             ` Grant Likely
2010-09-24 16:12               ` Grant Likely
2010-09-24 18:18               ` Uwe Kleine-König
2010-09-24 18:18                 ` Uwe Kleine-König
     [not found]       ` <20100902143908.GK14214-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2010-10-08  9:24         ` [PATCH 7/6] spi/imx: Support different fifo sizes Uwe Kleine-König
2010-10-08  9:24           ` Uwe Kleine-König
     [not found]           ` <1286529841-20800-1-git-send-email-u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2010-10-08 16:39             ` Grant Likely
2010-10-08 16:39               ` Grant Likely

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=4C8D9B00.8080004@gmail.com \
    --to=jason77.wang@gmail.com \
    --cc=amit.kucheria@canonical.com \
    --cc=grant.likely@secretlab.ca \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=s.hauer@pengutronix.de \
    --cc=spi-devel-general@lists.sourceforge.net \
    --cc=u.kleine-koenig@pengutronix.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.