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,®_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,®_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;
>
> /*
>
next prev parent reply other threads:[~2012-03-02 6:10 UTC|newest]
Thread overview: 30+ 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 ` [PATCH 1/4] gpiolib: Add gpiochip_find_by_name() and gpio_find_by_chip_name() Tony Lindgren
2012-03-02 7:58 ` Grant Likely
2012-03-02 17:03 ` Tony Lindgren
2012-03-02 18:08 ` Tony Lindgren
2012-03-02 18:48 ` Grant Likely
2012-03-02 19:06 ` Tony Lindgren
2012-03-09 1:05 ` Grant Likely
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-02 5:54 ` Rajendra Nayak
2012-03-02 17:06 ` Tony Lindgren
2012-03-02 7:25 ` Rajendra Nayak
2012-03-02 17:08 ` 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-02 6:02 ` Rajendra Nayak
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-02 6:10 ` Rajendra Nayak [this message]
2012-03-02 17:22 ` Tony Lindgren
2012-03-05 9:16 ` Rajendra Nayak
2012-03-05 10:25 ` T Krishnamoorthy, Balaji
2012-03-07 15:36 ` T Krishnamoorthy, Balaji
2012-03-07 15:42 ` Chris Ball
2012-03-07 17:31 ` Tony Lindgren
2012-03-08 15:53 ` T Krishnamoorthy, Balaji
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 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).