All of lore.kernel.org
 help / color / mirror / Atom feed
From: Santosh Shilimkar <santosh.shilimkar@ti.com>
To: Aneesh V <aneesh@ti.com>
Cc: linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org,
	akpm@linux-foundation.org
Subject: Re: [RFC PATCH 6/8] misc: emif: add interrupt and temperature handling
Date: Thu, 16 Feb 2012 16:11:34 +0530	[thread overview]
Message-ID: <4F3CDD5E.8020600@ti.com> (raw)
In-Reply-To: <1328357771-31644-7-git-send-email-aneesh@ti.com>

On Saturday 04 February 2012 05:46 PM, Aneesh V wrote:
> Add an ISR for EMIF that:
> 	1. reports details of access errors
> 	2. takes action on thermal events
> 
> On thermal events SDRAM timing parameters are
> adjusted to ensure safe operation
> 
> Also clear all interrupts on shut-down. Pending IRQs
> may casue problems during warm-reset.
> 
Add some more details like MR4, EMIF polling frequency etc
for better understanding.

> Signed-off-by: Aneesh V <aneesh@ti.com>
> ---
>  drivers/misc/emif.c |  209 ++++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 207 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/misc/emif.c b/drivers/misc/emif.c
> index 36ba6f4..5c2b0ae 100644
> --- a/drivers/misc/emif.c
> +++ b/drivers/misc/emif.c
> @@ -500,6 +500,45 @@ static u32 get_pwr_mgmt_ctrl(u32 freq, struct emif_data *emif, u32 ip_rev)
>  }
>  
>  /*
> + * Get the temperature level of the EMIF instance:
> + * Reads the MR4 register of attached SDRAM parts to find out the temperature
> + * level. If there are two parts attached(one on each CS), then the temperature
> + * level for the EMIF instance is the higher of the two temperatures.
> + */
> +static void get_temperature_level(struct emif_data *emif)
> +{
> +	u32		temp, temperature_level;
> +	unsigned long	irqs;
> +	void __iomem	*base;
> +
> +	base = emif->base;
> +
> +	/* Read mode register 4 */
> +	writel(DDR_MR4, base + EMIF_LPDDR2_MODE_REG_CONFIG);
> +	temperature_level = readl(base + EMIF_LPDDR2_MODE_REG_DATA);
> +	temperature_level = (temperature_level & MR4_SDRAM_REF_RATE_MASK) >>
> +				MR4_SDRAM_REF_RATE_SHIFT;
> +
> +	if (emif->plat_data->device_info->cs1_used) {
> +		writel(DDR_MR4 | CS_MASK, base + EMIF_LPDDR2_MODE_REG_CONFIG);
> +		temp = readl(base + EMIF_LPDDR2_MODE_REG_DATA);
> +		temp = (temp & MR4_SDRAM_REF_RATE_MASK)
> +				>> MR4_SDRAM_REF_RATE_SHIFT;
> +		temperature_level = max(temp, temperature_level);
> +	}
> +
> +	spin_lock_irqsave(&emif->lock, irqs);
Add a line here.
> +	/* treat everything less than nominal(3) in MR4 as nominal */
> +	if (unlikely(temperature_level < SDRAM_TEMP_NOMINAL))
> +		temperature_level = SDRAM_TEMP_NOMINAL;
> +
> +	/* if we get reserved value in MR4 persist with the existing value */
> +	if (likely(temperature_level != SDRAM_TEMP_RESERVED_4))
> +		emif->temperature_level = temperature_level;
> +	spin_unlock_irqrestore(&emif->lock, irqs);
> +}
> +

rest of the patch looks fine to me

  reply	other threads:[~2012-02-16 10:41 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-04 12:16 [RFC PATCH 0/8] Add TI EMIF SDRAM controller driver Aneesh V
2012-02-04 12:16 ` [RFC PATCH 1/8] OMAP4: hwmod: add EMIF hw mod data Aneesh V
2012-02-16 10:02   ` Santosh Shilimkar
2012-02-16 10:27     ` Aneesh V
2012-02-04 12:16 ` [RFC PATCH 2/8] misc: ddr: add LPDDR2 data from JESD209-2 Aneesh V
2012-02-16 10:06   ` Santosh Shilimkar
2012-02-16 10:07   ` Santosh Shilimkar
2012-02-16 10:27     ` Aneesh V
2012-02-16 11:10       ` Alan Cox
2012-02-16 11:25         ` Shilimkar, Santosh
2012-02-16 11:55         ` Aneesh V
2012-02-04 12:16 ` [RFC PATCH 3/8] misc: emif: add register definitions for EMIF Aneesh V
2012-02-16 10:10   ` Santosh Shilimkar
2012-02-16 10:30     ` Aneesh V
2012-02-04 12:16 ` [RFC PATCH 4/8] misc: emif: add basic infrastructure for EMIF driver Aneesh V
2012-02-16 10:33   ` Santosh Shilimkar
2012-02-16 11:15     ` Aneesh V
2012-02-16 16:30   ` Cousson, Benoit
2012-02-16 16:30     ` Cousson, Benoit
2012-02-17 13:26     ` Aneesh V
2012-02-17 13:44       ` Cousson, Benoit
2012-02-17 13:44         ` Cousson, Benoit
2012-02-17 15:27         ` Aneesh V
2012-02-24 11:10     ` Aneesh V
2012-02-24 11:16       ` Cousson, Benoit
2012-02-24 11:16         ` Cousson, Benoit
2012-02-04 12:16 ` [RFC PATCH 5/8] misc: emif: handle frequency and voltage change events Aneesh V
2012-02-16 10:38   ` Santosh Shilimkar
2012-02-16 11:22     ` Aneesh V
2012-02-04 12:16 ` [RFC PATCH 6/8] misc: emif: add interrupt and temperature handling Aneesh V
2012-02-16 10:41   ` Santosh Shilimkar [this message]
2012-02-16 11:50     ` Aneesh V
2012-02-04 12:16 ` [RFC PATCH 7/8] misc: emif: add one-time settings Aneesh V
2012-02-16 10:44   ` Santosh Shilimkar
2012-02-16 11:56     ` Aneesh V
2012-02-04 12:16 ` [RFC PATCH 8/8] misc: emif: add debugfs entries for emif Aneesh V
2012-02-16 10:46   ` Santosh Shilimkar
2012-02-16 10:51 ` [RFC PATCH 0/8] Add TI EMIF SDRAM controller driver Santosh Shilimkar
2012-02-16 16:23   ` Greg KH
2012-02-17 13:56     ` Aneesh V
2012-02-17 17:50       ` Greg KH
2012-02-20 14:07         ` Aneesh V

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=4F3CDD5E.8020600@ti.com \
    --to=santosh.shilimkar@ti.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh@ti.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.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.