All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rajendra Nayak <rnayak@ti.com>
To: Tony Lindgren <tony@atomide.com>
Cc: linuxkernel@vger.kernel.org, linux-omap@vger.kernel.org,
	Samuel Ortiz <sameo@linux.intel.com>,
	linux-mmc@vger.kernel.org, Chris Ball <cjb@laptop.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 4/4] mmc: omap_hsmmc: Simplify init for twl6030 MMC card detect
Date: Fri, 02 Mar 2012 11:40:03 +0530	[thread overview]
Message-ID: <4F50643B.9050500@ti.com> (raw)
In-Reply-To: <20120301185535.29210.71546.stgit@kaulin.local>

On Friday 02 March 2012 12:25 AM, Tony Lindgren wrote:
> There's no need to use callbacks for this, we can
> do it directly between MMC driver and twl6030.
>
> Cc: Samuel Ortiz<sameo@linux.intel.com>
> Cc: Chris Ball<cjb@laptop.org>
> Cc: Rajendra Nayak<rnayak@ti.com>
> Signed-off-by: Tony Lindgren<tony@atomide.com>
> ---
[..]
> diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
> index 7ca7a5c..8cf4e54 100644
> --- a/arch/arm/mach-omap2/board-omap4panda.c
> +++ b/arch/arm/mach-omap2/board-omap4panda.c
> @@ -153,8 +153,8 @@ static struct omap2_hsmmc_info mmc[] = {
>   	{
>   		.mmc		= 1,
>   		.caps		= MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
> -		.gpio_wp	= -EINVAL,
>   		.gpio_cd	= -EINVAL,
> +		.gpio_wp	= -EINVAL,

stray change.

>   	},
[..]
> diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c
> index c6b456a..ce0002b 100644
> --- a/drivers/mfd/twl6030-irq.c
> +++ b/drivers/mfd/twl6030-irq.c
> @@ -283,35 +283,30 @@ int twl6030_mmc_card_detect_config(void)
>   	 * Card status on TWL6030 for MMC1
>   	 */
>   	ret = twl_i2c_read_u8(TWL6030_MODULE_ID0,&reg_val, TWL6030_MMCCTRL);
> -	if (ret<  0) {
> -		pr_err("twl6030: Failed to read MMCCTRL, error %d\n", ret);
> -		return ret;
> -	}
> +	if (ret<  0)
> +		goto err;
>   	reg_val&= ~VMMC_AUTO_OFF;
>   	reg_val |= SW_FC;
>   	ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val, TWL6030_MMCCTRL);
> -	if (ret<  0) {
> -		pr_err("twl6030: Failed to write MMCCTRL, error %d\n", ret);
> -		return ret;
> -	}
> +	if (ret<  0)
> +		goto err;
>
>   	/* Configuring PullUp-PullDown register */
>   	ret = twl_i2c_read_u8(TWL6030_MODULE_ID0,&reg_val,
>   						TWL6030_CFG_INPUT_PUPD3);
> -	if (ret<  0) {
> -		pr_err("twl6030: Failed to read CFG_INPUT_PUPD3, error %d\n",
> -									ret);
> -		return ret;
> -	}
> +	if (ret<  0)
> +		goto err;
>   	reg_val&= ~(MMC_PU | MMC_PD);
>   	ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val,
>   						TWL6030_CFG_INPUT_PUPD3);
> -	if (ret<  0) {
> -		pr_err("twl6030: Failed to write CFG_INPUT_PUPD3, error %d\n",
> -									ret);
> -		return ret;
> -	}
> -	return 0;
> +	if (ret<  0)
> +		goto err;
> +
> +	return twl6030_irq_base + MMCDETECT_INTR_OFFSET;
> +
> +err:
> +	pr_err("twl6030: Failed to initialize MMC card detect: %d\n", ret);
> +	return -ENODEV;
>   }
>   EXPORT_SYMBOL(twl6030_mmc_card_detect_config);
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index 1aa2420..7f483b7 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -34,6 +34,7 @@
>   #include<linux/gpio.h>
>   #include<linux/regulator/consumer.h>
>   #include<linux/pm_runtime.h>
> +#include<linux/i2c/twl.h>
>   #include<plat/dma.h>
>   #include<mach/hardware.h>
>   #include<plat/board.h>
> @@ -578,6 +579,32 @@ static void omap_hsmmc_gpio_free(struct omap_hsmmc_host *host)
>   		gpio_free(host->gpio_cd);
>   }
>
> +#ifdef CONFIG_TWL4030_CORE
> +static int omap_hsmmc_init_twl6030(struct omap_hsmmc_host *host)
> +{
> +	struct omap_mmc_platform_data *pdata = host->pdata;
> +	struct omap_mmc_slot_data *slot =&pdata->slots[0];
> +	int irq;
> +
> +	if (gpio_is_valid(host->gpio_cd) || host->id)

I have a series, which I am asking Chris to pull, which completely
gets rid of all host->id based hard-codings' in the driver.
Isn't there a better way to do this than rely on the device instance?

regards,
Rajendra

> +		return 0;
> +
> +	irq = twl6030_mmc_card_detect_config();
> +	if (irq<= 0)
> +		return irq;
> +
> +	slot->card_detect_irq = irq;
> +	slot->card_detect = twl6030_mmc_card_detect;
> +
> +	return 0;
> +}
> +#else
> +static inline int omap_hsmmc_init_twl6030(struct omap_hsmmc_host *host)
> +{
> +	return -ENODEV;
> +}
> +#endif
> +
>   /*
>    * Start clock to the card
>    */
> @@ -1933,6 +1960,10 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev)
>   	if (ret)
>   		goto err1;
>
> +	ret = omap_hsmmc_init_twl6030(host);
> +	if (ret)
> +		goto err1;
> +
>   	mmc->ops	=&omap_hsmmc_ops;
>
>   	/*
>


WARNING: multiple messages have this Message-ID (diff)
From: rnayak@ti.com (Rajendra Nayak)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/4] mmc: omap_hsmmc: Simplify init for twl6030 MMC card detect
Date: Fri, 02 Mar 2012 11:40:03 +0530	[thread overview]
Message-ID: <4F50643B.9050500@ti.com> (raw)
In-Reply-To: <20120301185535.29210.71546.stgit@kaulin.local>

On Friday 02 March 2012 12:25 AM, Tony Lindgren wrote:
> There's no need to use callbacks for this, we can
> do it directly between MMC driver and twl6030.
>
> Cc: Samuel Ortiz<sameo@linux.intel.com>
> Cc: Chris Ball<cjb@laptop.org>
> Cc: Rajendra Nayak<rnayak@ti.com>
> Signed-off-by: Tony Lindgren<tony@atomide.com>
> ---
[..]
> diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
> index 7ca7a5c..8cf4e54 100644
> --- a/arch/arm/mach-omap2/board-omap4panda.c
> +++ b/arch/arm/mach-omap2/board-omap4panda.c
> @@ -153,8 +153,8 @@ static struct omap2_hsmmc_info mmc[] = {
>   	{
>   		.mmc		= 1,
>   		.caps		= MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
> -		.gpio_wp	= -EINVAL,
>   		.gpio_cd	= -EINVAL,
> +		.gpio_wp	= -EINVAL,

stray change.

>   	},
[..]
> diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c
> index c6b456a..ce0002b 100644
> --- a/drivers/mfd/twl6030-irq.c
> +++ b/drivers/mfd/twl6030-irq.c
> @@ -283,35 +283,30 @@ int twl6030_mmc_card_detect_config(void)
>   	 * Card status on TWL6030 for MMC1
>   	 */
>   	ret = twl_i2c_read_u8(TWL6030_MODULE_ID0,&reg_val, TWL6030_MMCCTRL);
> -	if (ret<  0) {
> -		pr_err("twl6030: Failed to read MMCCTRL, error %d\n", ret);
> -		return ret;
> -	}
> +	if (ret<  0)
> +		goto err;
>   	reg_val&= ~VMMC_AUTO_OFF;
>   	reg_val |= SW_FC;
>   	ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val, TWL6030_MMCCTRL);
> -	if (ret<  0) {
> -		pr_err("twl6030: Failed to write MMCCTRL, error %d\n", ret);
> -		return ret;
> -	}
> +	if (ret<  0)
> +		goto err;
>
>   	/* Configuring PullUp-PullDown register */
>   	ret = twl_i2c_read_u8(TWL6030_MODULE_ID0,&reg_val,
>   						TWL6030_CFG_INPUT_PUPD3);
> -	if (ret<  0) {
> -		pr_err("twl6030: Failed to read CFG_INPUT_PUPD3, error %d\n",
> -									ret);
> -		return ret;
> -	}
> +	if (ret<  0)
> +		goto err;
>   	reg_val&= ~(MMC_PU | MMC_PD);
>   	ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val,
>   						TWL6030_CFG_INPUT_PUPD3);
> -	if (ret<  0) {
> -		pr_err("twl6030: Failed to write CFG_INPUT_PUPD3, error %d\n",
> -									ret);
> -		return ret;
> -	}
> -	return 0;
> +	if (ret<  0)
> +		goto err;
> +
> +	return twl6030_irq_base + MMCDETECT_INTR_OFFSET;
> +
> +err:
> +	pr_err("twl6030: Failed to initialize MMC card detect: %d\n", ret);
> +	return -ENODEV;
>   }
>   EXPORT_SYMBOL(twl6030_mmc_card_detect_config);
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index 1aa2420..7f483b7 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -34,6 +34,7 @@
>   #include<linux/gpio.h>
>   #include<linux/regulator/consumer.h>
>   #include<linux/pm_runtime.h>
> +#include<linux/i2c/twl.h>
>   #include<plat/dma.h>
>   #include<mach/hardware.h>
>   #include<plat/board.h>
> @@ -578,6 +579,32 @@ static void omap_hsmmc_gpio_free(struct omap_hsmmc_host *host)
>   		gpio_free(host->gpio_cd);
>   }
>
> +#ifdef CONFIG_TWL4030_CORE
> +static int omap_hsmmc_init_twl6030(struct omap_hsmmc_host *host)
> +{
> +	struct omap_mmc_platform_data *pdata = host->pdata;
> +	struct omap_mmc_slot_data *slot =&pdata->slots[0];
> +	int irq;
> +
> +	if (gpio_is_valid(host->gpio_cd) || host->id)

I have a series, which I am asking Chris to pull, which completely
gets rid of all host->id based hard-codings' in the driver.
Isn't there a better way to do this than rely on the device instance?

regards,
Rajendra

> +		return 0;
> +
> +	irq = twl6030_mmc_card_detect_config();
> +	if (irq<= 0)
> +		return irq;
> +
> +	slot->card_detect_irq = irq;
> +	slot->card_detect = twl6030_mmc_card_detect;
> +
> +	return 0;
> +}
> +#else
> +static inline int omap_hsmmc_init_twl6030(struct omap_hsmmc_host *host)
> +{
> +	return -ENODEV;
> +}
> +#endif
> +
>   /*
>    * Start clock to the card
>    */
> @@ -1933,6 +1960,10 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev)
>   	if (ret)
>   		goto err1;
>
> +	ret = omap_hsmmc_init_twl6030(host);
> +	if (ret)
> +		goto err1;
> +
>   	mmc->ops	=&omap_hsmmc_ops;
>
>   	/*
>

  reply	other threads:[~2012-03-02  6:10 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-01 18:55 [PATCH 0/4] Start getting rid of pdata callbacks with gpio_find_by_chip_name() Tony Lindgren
2012-03-01 18:55 ` Tony Lindgren
2012-03-01 18:55 ` [PATCH 1/4] gpiolib: Add gpiochip_find_by_name() and gpio_find_by_chip_name() Tony Lindgren
2012-03-01 18:55   ` Tony Lindgren
2012-03-02  7:58   ` Grant Likely
2012-03-02  7:58     ` Grant Likely
2012-03-02 17:03     ` Tony Lindgren
2012-03-02 17:03       ` Tony Lindgren
2012-03-02 18:08       ` Tony Lindgren
2012-03-02 18:08         ` Tony Lindgren
2012-03-02 18:48         ` Grant Likely
2012-03-02 18:48           ` Grant Likely
2012-03-02 19:06           ` Tony Lindgren
2012-03-02 19:06             ` Tony Lindgren
2012-03-09  1:05             ` Grant Likely
2012-03-09  1:05               ` Grant Likely
2012-03-09  2:09               ` Tony Lindgren
2012-03-09  2:09                 ` Tony Lindgren
2012-03-01 18:55 ` [PATCH 2/4] mmc: omap_hsmmc: Use gpio_find_by_chip_name() for omap_hsmmc_gpio_init() Tony Lindgren
2012-03-01 18:55   ` Tony Lindgren
2012-03-02  5:54   ` Rajendra Nayak
2012-03-02  5:54     ` Rajendra Nayak
2012-03-02 17:06     ` Tony Lindgren
2012-03-02 17:06       ` Tony Lindgren
2012-03-02  7:25   ` Rajendra Nayak
2012-03-02  7:25     ` Rajendra Nayak
2012-03-02 17:08     ` Tony Lindgren
2012-03-02 17:08       ` Tony Lindgren
2012-03-02 18:35       ` Tony Lindgren
2012-03-02 18:35         ` Tony Lindgren
2012-03-01 18:55 ` [PATCH 3/4] mmc: omap_hsmmc: Use GPIO offset for external GPIO chips Tony Lindgren
2012-03-01 18:55   ` Tony Lindgren
2012-03-02  6:02   ` Rajendra Nayak
2012-03-02  6:02     ` Rajendra Nayak
2012-03-02 17:16     ` Tony Lindgren
2012-03-02 17:16       ` Tony Lindgren
2012-03-01 18:55 ` [PATCH 4/4] mmc: omap_hsmmc: Simplify init for twl6030 MMC card detect Tony Lindgren
2012-03-01 18:55   ` Tony Lindgren
2012-03-02  6:10   ` Rajendra Nayak [this message]
2012-03-02  6:10     ` Rajendra Nayak
2012-03-02 17:22     ` Tony Lindgren
2012-03-02 17:22       ` Tony Lindgren
2012-03-05  9:16       ` Rajendra Nayak
2012-03-05  9:16         ` Rajendra Nayak
2012-03-05 10:25         ` T Krishnamoorthy, Balaji
2012-03-05 10:25           ` T Krishnamoorthy, Balaji
2012-03-07 15:36           ` T Krishnamoorthy, Balaji
2012-03-07 15:36             ` T Krishnamoorthy, Balaji
2012-03-07 15:36             ` T Krishnamoorthy, Balaji
2012-03-07 15:42             ` Chris Ball
2012-03-07 15:42               ` Chris Ball
2012-03-07 15:42               ` Chris Ball
2012-03-07 17:31               ` Tony Lindgren
2012-03-07 17:31                 ` Tony Lindgren
2012-03-08 15:53               ` T Krishnamoorthy, Balaji
2012-03-08 15:53                 ` T Krishnamoorthy, Balaji
2012-03-08 15:53                 ` T Krishnamoorthy, Balaji
2012-03-02 10:25   ` Samuel Ortiz
2012-03-02 10:25     ` Samuel Ortiz
2012-03-02  9:06 ` [PATCH 0/4] Start getting rid of pdata callbacks with gpio_find_by_chip_name() Rajendra Nayak
2012-03-02  9:06   ` Rajendra Nayak
2012-03-02 17:30   ` Tony Lindgren
2012-03-02 17:30     ` Tony Lindgren

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=4F50643B.9050500@ti.com \
    --to=rnayak@ti.com \
    --cc=cjb@laptop.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linuxkernel@vger.kernel.org \
    --cc=sameo@linux.intel.com \
    --cc=tony@atomide.com \
    /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.