All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Adrian Hunter <adrian.hunter@intel.com>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Tony Lindgren <tony@atomide.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Russell King <linux@armlinux.org.uk>, <linux-mmc@vger.kernel.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-omap@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <nsekhar@ti.com>
Subject: Re: [RFC PATCH 09/12] mmc: sdhci: Use software timer when timeout greater than hardware capablility
Date: Fri, 2 Feb 2018 18:55:34 +0530	[thread overview]
Message-ID: <04efc506-b6dd-3950-336d-a4d92787d35d@ti.com> (raw)
In-Reply-To: <2a41ba31-07e5-027a-de30-495f69d71a88@intel.com>

Hi Adrian,

On Thursday 11 January 2018 02:16 PM, Adrian Hunter wrote:
> On 04/01/18 14:59, Kishon Vijay Abraham I wrote:
>> Hi Adrian,
>>
>> On Wednesday 20 December 2017 07:41 PM, Adrian Hunter wrote:
>>> On 14/12/17 15:09, Kishon Vijay Abraham I wrote:
>>>> Errata i834 in AM572x Sitara Processors Silicon Revision 2.0, 1.1
>>>> (SPRZ429K July 2014–Revised March 2017 [1]) mentions
>>>> Under high speed HS200 and SDR104 modes, the functional clock for MMC
>>>> modules will reach up to 192 MHz. At this frequency, the maximum obtainable
>>>> timeout (DTO = 0xE) through MMC host controller is (1/192MHz)*2^27 = 700ms.
>>>> Commands taking longer than 700ms may be affected by this small window
>>>> frame. Workaround for this errata is use a software timer instead of
>>>> hardware timer to provide the delay requested by the upper layer.
>>>>
>>>> While this errata is specific to AM572x, it is applicable to all sdhci
>>>> based controllers when a particular request require timeout greater
>>>> than hardware capability.
>>>
>>> It doesn't work for our controllers.  Even if the data timeout interrupt is
>>> disabled, it seems like the timeout still "happens" in some fashion - after
>>> which the host controller starts misbehaving.
>>
>> even if the data timeout doesn't get disabled, count = 0xE is still present. So
>> ideally this shouldn't break any existing platforms no?
> 
> I don't want to hide this kind of variation in the hardware behaviour.
> 
>>>
>>> So you will need to add a quirk.
>>>
>>>>
>>>> Re-use the software timer already implemented in sdhci to program the
>>>> correct timeout value and also disable the hardware timeout when
>>>> the required timeout is greater than hardware capabiltiy in order to
>>>> avoid spurious timeout interrupts.
>>>>
>>>> This patch is based on the earlier patch implemented for omap_hsmmc [2]
>>>>
>>>> [1] -> http://www.ti.com/lit/er/sprz429k/sprz429k.pdf
>>>> [2] -> https://patchwork.kernel.org/patch/9791449/
>>>>
>>>> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
>>>> ---
>>>>  drivers/mmc/host/sdhci.c | 41 +++++++++++++++++++++++++++++++++++++++--
>>>>  drivers/mmc/host/sdhci.h | 11 +++++++++++
>>>>  2 files changed, 50 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>>>> index e9290a3439d5..d0655e1d2cc7 100644
>>>> --- a/drivers/mmc/host/sdhci.c
>>>> +++ b/drivers/mmc/host/sdhci.c
>>>> @@ -673,6 +673,27 @@ static void sdhci_adma_table_post(struct sdhci_host *host,
>>>>  	}
>>>>  }
>>>>  
>>>> +static void sdhci_calc_sw_timeout(struct sdhci_host *host,
>>>> +				  struct mmc_command *cmd,
>>>> +				  unsigned int target_timeout)
>>>> +{
>>>> +	struct mmc_host *mmc = host->mmc;
>>>> +	struct mmc_ios *ios = &mmc->ios;
>>>> +	struct mmc_data *data = cmd->data;
>>>> +	unsigned long long transfer_time;
>>>> +
>>>> +	if (data) {
>>>> +		transfer_time = MMC_BLOCK_TRANSFER_TIME_MS(data->blksz,
>>>> +							   ios->bus_width,
>>>> +							   ios->clock);
>>>
>>> If it has a value, actual_clock is better than ios->clock.
>>
>> okay.
>>>
>>>> +		/* calculate timeout for the entire data */
>>>> +		host->data_timeout = (data->blocks * (target_timeout +
>>>> +						      transfer_time));
>>>> +	} else if (cmd->flags & MMC_RSP_BUSY) {
>>>> +		host->data_timeout = cmd->busy_timeout * MSEC_PER_SEC;
>>>
>>> Doesn't need MSEC_PER_SEC multiplier.
>>
>> right.
>>>
>>>> +	}
>>>> +}
>>>> +
>>>>  static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
>>>>  {
>>>>  	u8 count;
>>>> @@ -732,8 +753,12 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
>>>>  	}
>>>>  
>>>>  	if (count >= 0xF) {
>>>> -		DBG("Too large timeout 0x%x requested for CMD%d!\n",
>>>> -		    count, cmd->opcode);
>>>> +		DBG("Too large timeout.. using SW timeout for CMD%d!\n",
>>>> +		    cmd->opcode);
>>>> +		sdhci_calc_sw_timeout(host, cmd, target_timeout);
>>>> +		host->ier &= ~SDHCI_INT_DATA_TIMEOUT;
>>>> +		sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
>>>> +		sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
>>>>  		count = 0xE;
>>>>  	}
>>>>  
>>>> @@ -1198,6 +1223,14 @@ static void sdhci_finish_command(struct sdhci_host *host)
>>>>  {
>>>>  	struct mmc_command *cmd = host->cmd;
>>>>  
>>>> +	if (host->data_timeout) {
>>>> +		unsigned long timeout;
>>>> +
>>>> +		timeout = jiffies +
>>>> +			  msecs_to_jiffies(host->data_timeout);
>>>> +		sdhci_mod_timer(host, host->cmd->mrq, timeout);
>>>
>>> cmd could be the sbc or a stop cmd or a command during transfer, so this
>>> needs more logic.
>>
>> host->data_timeout gets set only for data commands or commands with busy
>> timeout. But I guess for commands during data transfer, host->data_timeout
>> might still be set?
>>
>> Checking sdhci_data_line_cmd(mrq->cmd) in addition to host->data_timeout should
>> take care of all cases right?
> 
> I suggest you make the timeout calculation allow for the commands as well
> and then reorder sdhci_mod_timer() to be called after sdhci_prepare_data()
> and make sdhci_mod_timer() do the right thing.

Since we don't know when exactly the command will be sent, the timeout
calculation might not be very accurate. Programming the timer in command
complete will be bit more accurate IMO. What do you think?

Thanks
Kishon

WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Adrian Hunter <adrian.hunter@intel.com>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Tony Lindgren <tony@atomide.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	linux-mmc@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, nsekhar@ti.com
Subject: Re: [RFC PATCH 09/12] mmc: sdhci: Use software timer when timeout greater than hardware capablility
Date: Fri, 2 Feb 2018 18:55:34 +0530	[thread overview]
Message-ID: <04efc506-b6dd-3950-336d-a4d92787d35d@ti.com> (raw)
In-Reply-To: <2a41ba31-07e5-027a-de30-495f69d71a88@intel.com>

Hi Adrian,

On Thursday 11 January 2018 02:16 PM, Adrian Hunter wrote:
> On 04/01/18 14:59, Kishon Vijay Abraham I wrote:
>> Hi Adrian,
>>
>> On Wednesday 20 December 2017 07:41 PM, Adrian Hunter wrote:
>>> On 14/12/17 15:09, Kishon Vijay Abraham I wrote:
>>>> Errata i834 in AM572x Sitara Processors Silicon Revision 2.0, 1.1
>>>> (SPRZ429K July 2014–Revised March 2017 [1]) mentions
>>>> Under high speed HS200 and SDR104 modes, the functional clock for MMC
>>>> modules will reach up to 192 MHz. At this frequency, the maximum obtainable
>>>> timeout (DTO = 0xE) through MMC host controller is (1/192MHz)*2^27 = 700ms.
>>>> Commands taking longer than 700ms may be affected by this small window
>>>> frame. Workaround for this errata is use a software timer instead of
>>>> hardware timer to provide the delay requested by the upper layer.
>>>>
>>>> While this errata is specific to AM572x, it is applicable to all sdhci
>>>> based controllers when a particular request require timeout greater
>>>> than hardware capability.
>>>
>>> It doesn't work for our controllers.  Even if the data timeout interrupt is
>>> disabled, it seems like the timeout still "happens" in some fashion - after
>>> which the host controller starts misbehaving.
>>
>> even if the data timeout doesn't get disabled, count = 0xE is still present. So
>> ideally this shouldn't break any existing platforms no?
> 
> I don't want to hide this kind of variation in the hardware behaviour.
> 
>>>
>>> So you will need to add a quirk.
>>>
>>>>
>>>> Re-use the software timer already implemented in sdhci to program the
>>>> correct timeout value and also disable the hardware timeout when
>>>> the required timeout is greater than hardware capabiltiy in order to
>>>> avoid spurious timeout interrupts.
>>>>
>>>> This patch is based on the earlier patch implemented for omap_hsmmc [2]
>>>>
>>>> [1] -> http://www.ti.com/lit/er/sprz429k/sprz429k.pdf
>>>> [2] -> https://patchwork.kernel.org/patch/9791449/
>>>>
>>>> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
>>>> ---
>>>>  drivers/mmc/host/sdhci.c | 41 +++++++++++++++++++++++++++++++++++++++--
>>>>  drivers/mmc/host/sdhci.h | 11 +++++++++++
>>>>  2 files changed, 50 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>>>> index e9290a3439d5..d0655e1d2cc7 100644
>>>> --- a/drivers/mmc/host/sdhci.c
>>>> +++ b/drivers/mmc/host/sdhci.c
>>>> @@ -673,6 +673,27 @@ static void sdhci_adma_table_post(struct sdhci_host *host,
>>>>  	}
>>>>  }
>>>>  
>>>> +static void sdhci_calc_sw_timeout(struct sdhci_host *host,
>>>> +				  struct mmc_command *cmd,
>>>> +				  unsigned int target_timeout)
>>>> +{
>>>> +	struct mmc_host *mmc = host->mmc;
>>>> +	struct mmc_ios *ios = &mmc->ios;
>>>> +	struct mmc_data *data = cmd->data;
>>>> +	unsigned long long transfer_time;
>>>> +
>>>> +	if (data) {
>>>> +		transfer_time = MMC_BLOCK_TRANSFER_TIME_MS(data->blksz,
>>>> +							   ios->bus_width,
>>>> +							   ios->clock);
>>>
>>> If it has a value, actual_clock is better than ios->clock.
>>
>> okay.
>>>
>>>> +		/* calculate timeout for the entire data */
>>>> +		host->data_timeout = (data->blocks * (target_timeout +
>>>> +						      transfer_time));
>>>> +	} else if (cmd->flags & MMC_RSP_BUSY) {
>>>> +		host->data_timeout = cmd->busy_timeout * MSEC_PER_SEC;
>>>
>>> Doesn't need MSEC_PER_SEC multiplier.
>>
>> right.
>>>
>>>> +	}
>>>> +}
>>>> +
>>>>  static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
>>>>  {
>>>>  	u8 count;
>>>> @@ -732,8 +753,12 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
>>>>  	}
>>>>  
>>>>  	if (count >= 0xF) {
>>>> -		DBG("Too large timeout 0x%x requested for CMD%d!\n",
>>>> -		    count, cmd->opcode);
>>>> +		DBG("Too large timeout.. using SW timeout for CMD%d!\n",
>>>> +		    cmd->opcode);
>>>> +		sdhci_calc_sw_timeout(host, cmd, target_timeout);
>>>> +		host->ier &= ~SDHCI_INT_DATA_TIMEOUT;
>>>> +		sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
>>>> +		sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
>>>>  		count = 0xE;
>>>>  	}
>>>>  
>>>> @@ -1198,6 +1223,14 @@ static void sdhci_finish_command(struct sdhci_host *host)
>>>>  {
>>>>  	struct mmc_command *cmd = host->cmd;
>>>>  
>>>> +	if (host->data_timeout) {
>>>> +		unsigned long timeout;
>>>> +
>>>> +		timeout = jiffies +
>>>> +			  msecs_to_jiffies(host->data_timeout);
>>>> +		sdhci_mod_timer(host, host->cmd->mrq, timeout);
>>>
>>> cmd could be the sbc or a stop cmd or a command during transfer, so this
>>> needs more logic.
>>
>> host->data_timeout gets set only for data commands or commands with busy
>> timeout. But I guess for commands during data transfer, host->data_timeout
>> might still be set?
>>
>> Checking sdhci_data_line_cmd(mrq->cmd) in addition to host->data_timeout should
>> take care of all cases right?
> 
> I suggest you make the timeout calculation allow for the commands as well
> and then reorder sdhci_mod_timer() to be called after sdhci_prepare_data()
> and make sdhci_mod_timer() do the right thing.

Since we don't know when exactly the command will be sent, the timeout
calculation might not be very accurate. Programming the timer in command
complete will be bit more accurate IMO. What do you think?

Thanks
Kishon

WARNING: multiple messages have this Message-ID (diff)
From: kishon@ti.com (Kishon Vijay Abraham I)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 09/12] mmc: sdhci: Use software timer when timeout greater than hardware capablility
Date: Fri, 2 Feb 2018 18:55:34 +0530	[thread overview]
Message-ID: <04efc506-b6dd-3950-336d-a4d92787d35d@ti.com> (raw)
In-Reply-To: <2a41ba31-07e5-027a-de30-495f69d71a88@intel.com>

Hi Adrian,

On Thursday 11 January 2018 02:16 PM, Adrian Hunter wrote:
> On 04/01/18 14:59, Kishon Vijay Abraham I wrote:
>> Hi Adrian,
>>
>> On Wednesday 20 December 2017 07:41 PM, Adrian Hunter wrote:
>>> On 14/12/17 15:09, Kishon Vijay Abraham I wrote:
>>>> Errata i834 in AM572x Sitara Processors Silicon Revision 2.0, 1.1
>>>> (SPRZ429K July 2014?Revised March 2017 [1]) mentions
>>>> Under high speed HS200 and SDR104 modes, the functional clock for MMC
>>>> modules will reach up to 192 MHz. At this frequency, the maximum obtainable
>>>> timeout (DTO = 0xE) through MMC host controller is (1/192MHz)*2^27 = 700ms.
>>>> Commands taking longer than 700ms may be affected by this small window
>>>> frame. Workaround for this errata is use a software timer instead of
>>>> hardware timer to provide the delay requested by the upper layer.
>>>>
>>>> While this errata is specific to AM572x, it is applicable to all sdhci
>>>> based controllers when a particular request require timeout greater
>>>> than hardware capability.
>>>
>>> It doesn't work for our controllers.  Even if the data timeout interrupt is
>>> disabled, it seems like the timeout still "happens" in some fashion - after
>>> which the host controller starts misbehaving.
>>
>> even if the data timeout doesn't get disabled, count = 0xE is still present. So
>> ideally this shouldn't break any existing platforms no?
> 
> I don't want to hide this kind of variation in the hardware behaviour.
> 
>>>
>>> So you will need to add a quirk.
>>>
>>>>
>>>> Re-use the software timer already implemented in sdhci to program the
>>>> correct timeout value and also disable the hardware timeout when
>>>> the required timeout is greater than hardware capabiltiy in order to
>>>> avoid spurious timeout interrupts.
>>>>
>>>> This patch is based on the earlier patch implemented for omap_hsmmc [2]
>>>>
>>>> [1] -> http://www.ti.com/lit/er/sprz429k/sprz429k.pdf
>>>> [2] -> https://patchwork.kernel.org/patch/9791449/
>>>>
>>>> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
>>>> ---
>>>>  drivers/mmc/host/sdhci.c | 41 +++++++++++++++++++++++++++++++++++++++--
>>>>  drivers/mmc/host/sdhci.h | 11 +++++++++++
>>>>  2 files changed, 50 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>>>> index e9290a3439d5..d0655e1d2cc7 100644
>>>> --- a/drivers/mmc/host/sdhci.c
>>>> +++ b/drivers/mmc/host/sdhci.c
>>>> @@ -673,6 +673,27 @@ static void sdhci_adma_table_post(struct sdhci_host *host,
>>>>  	}
>>>>  }
>>>>  
>>>> +static void sdhci_calc_sw_timeout(struct sdhci_host *host,
>>>> +				  struct mmc_command *cmd,
>>>> +				  unsigned int target_timeout)
>>>> +{
>>>> +	struct mmc_host *mmc = host->mmc;
>>>> +	struct mmc_ios *ios = &mmc->ios;
>>>> +	struct mmc_data *data = cmd->data;
>>>> +	unsigned long long transfer_time;
>>>> +
>>>> +	if (data) {
>>>> +		transfer_time = MMC_BLOCK_TRANSFER_TIME_MS(data->blksz,
>>>> +							   ios->bus_width,
>>>> +							   ios->clock);
>>>
>>> If it has a value, actual_clock is better than ios->clock.
>>
>> okay.
>>>
>>>> +		/* calculate timeout for the entire data */
>>>> +		host->data_timeout = (data->blocks * (target_timeout +
>>>> +						      transfer_time));
>>>> +	} else if (cmd->flags & MMC_RSP_BUSY) {
>>>> +		host->data_timeout = cmd->busy_timeout * MSEC_PER_SEC;
>>>
>>> Doesn't need MSEC_PER_SEC multiplier.
>>
>> right.
>>>
>>>> +	}
>>>> +}
>>>> +
>>>>  static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
>>>>  {
>>>>  	u8 count;
>>>> @@ -732,8 +753,12 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
>>>>  	}
>>>>  
>>>>  	if (count >= 0xF) {
>>>> -		DBG("Too large timeout 0x%x requested for CMD%d!\n",
>>>> -		    count, cmd->opcode);
>>>> +		DBG("Too large timeout.. using SW timeout for CMD%d!\n",
>>>> +		    cmd->opcode);
>>>> +		sdhci_calc_sw_timeout(host, cmd, target_timeout);
>>>> +		host->ier &= ~SDHCI_INT_DATA_TIMEOUT;
>>>> +		sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
>>>> +		sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
>>>>  		count = 0xE;
>>>>  	}
>>>>  
>>>> @@ -1198,6 +1223,14 @@ static void sdhci_finish_command(struct sdhci_host *host)
>>>>  {
>>>>  	struct mmc_command *cmd = host->cmd;
>>>>  
>>>> +	if (host->data_timeout) {
>>>> +		unsigned long timeout;
>>>> +
>>>> +		timeout = jiffies +
>>>> +			  msecs_to_jiffies(host->data_timeout);
>>>> +		sdhci_mod_timer(host, host->cmd->mrq, timeout);
>>>
>>> cmd could be the sbc or a stop cmd or a command during transfer, so this
>>> needs more logic.
>>
>> host->data_timeout gets set only for data commands or commands with busy
>> timeout. But I guess for commands during data transfer, host->data_timeout
>> might still be set?
>>
>> Checking sdhci_data_line_cmd(mrq->cmd) in addition to host->data_timeout should
>> take care of all cases right?
> 
> I suggest you make the timeout calculation allow for the commands as well
> and then reorder sdhci_mod_timer() to be called after sdhci_prepare_data()
> and make sdhci_mod_timer() do the right thing.

Since we don't know when exactly the command will be sent, the timeout
calculation might not be very accurate. Programming the timer in command
complete will be bit more accurate IMO. What do you think?

Thanks
Kishon

  reply	other threads:[~2018-02-02 13:26 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-14 13:09 [PATCH 00/12] mmc: sdhci-omap: Add UHS/HS200 mode support Kishon Vijay Abraham I
2017-12-14 13:09 ` Kishon Vijay Abraham I
2017-12-14 13:09 ` Kishon Vijay Abraham I
2017-12-14 13:09 ` [PATCH 01/12] mmc: sdhci-omap: Update 'power_mode' outside sdhci_omap_init_74_clocks Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-21  8:57   ` Adrian Hunter
2017-12-21  8:57     ` Adrian Hunter
2017-12-14 13:09 ` [PATCH 02/12] mmc: sdhci-omap: Add card_busy host ops Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-21  8:59   ` Adrian Hunter
2017-12-21  8:59     ` Adrian Hunter
2017-12-14 13:09 ` [PATCH 03/12] mmc: sdhci-omap: Add custom set_uhs_signaling sdhci_host ops Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-21  9:01   ` Adrian Hunter
2017-12-21  9:01     ` Adrian Hunter
2017-12-14 13:09 ` [PATCH 04/12] mmc: sdhci-omap: Add tuning support Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-21  9:09   ` Adrian Hunter
2017-12-21  9:09     ` Adrian Hunter
2017-12-14 13:09 ` [PATCH 05/12] mmc: sdhci-omap: Workaround for Errata i802 Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-21  9:09   ` Adrian Hunter
2017-12-21  9:09     ` Adrian Hunter
2017-12-14 13:09 ` [PATCH 06/12] mmc: sdhci_omap: Add support to set IODELAY values Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 15:04   ` Tony Lindgren
2017-12-14 15:04     ` Tony Lindgren
2017-12-14 15:04     ` Tony Lindgren
2017-12-14 13:09 ` [PATCH 07/12] mmc: sdhci_omap: Fix sdhci-omap quirks Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-21  9:12   ` Adrian Hunter
2017-12-21  9:12     ` Adrian Hunter
2017-12-21  9:12     ` Adrian Hunter
2017-12-14 13:09 ` [PATCH 08/12] mmc: sdhci-omap: Add support to override f_max and iodelay from pdata Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 14:04   ` Philippe Ombredanne
2017-12-14 14:04     ` Philippe Ombredanne
2017-12-14 14:04     ` Philippe Ombredanne
2017-12-21  9:13   ` Adrian Hunter
2017-12-21  9:13     ` Adrian Hunter
2017-12-21  9:13     ` Adrian Hunter
2017-12-14 13:09 ` [RFC PATCH 09/12] mmc: sdhci: Use software timer when timeout greater than hardware capablility Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-20 14:11   ` Adrian Hunter
2017-12-20 14:11     ` Adrian Hunter
2018-01-04 12:59     ` Kishon Vijay Abraham I
2018-01-04 12:59       ` Kishon Vijay Abraham I
2018-01-04 12:59       ` Kishon Vijay Abraham I
2018-01-11  8:46       ` Adrian Hunter
2018-01-11  8:46         ` Adrian Hunter
2018-02-02 13:25         ` Kishon Vijay Abraham I [this message]
2018-02-02 13:25           ` Kishon Vijay Abraham I
2018-02-02 13:25           ` Kishon Vijay Abraham I
2017-12-14 13:09 ` [PATCH 10/12] dt-bindings: sdhci-omap: Add K2G specific binding Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-16 16:49   ` Rob Herring
2017-12-16 16:49     ` Rob Herring
2017-12-16 16:49     ` Rob Herring
2017-12-14 13:09 ` [PATCH 11/12] mmc: sdhci-omap: Add support for MMC/SD controller in k2g SoC Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-21  9:15   ` Adrian Hunter
2017-12-21  9:15     ` Adrian Hunter
2017-12-14 13:09 ` [PATCH 12/12] ARM: OMAP2+: Use sdhci-omap specific pdata-quirks for MMC/SD on DRA74x EVM Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I
2017-12-14 13:09   ` Kishon Vijay Abraham I

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=04efc506-b6dd-3950-336d-a4d92787d35d@ti.com \
    --to=kishon@ti.com \
    --cc=adrian.hunter@intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=nsekhar@ti.com \
    --cc=robh+dt@kernel.org \
    --cc=tony@atomide.com \
    --cc=ulf.hansson@linaro.org \
    /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.