Thread (23 messages) 23 messages, 4 authors, 2012-03-20
STALE5204d

[PATCH v2 5/7] ARM: OMAP2+: Split omap2_hsmmc_init() to properly support I2C GPIO pins

From: Rajendra Nayak <hidden>
Date: 2012-02-24 03:24:08
Also in: linux-omap

On Thursday 23 February 2012 07:58 PM, Igor Grinberg wrote:
Hi Tony, Rajendra,

On 02/23/12 13:40, Rajendra Nayak wrote:
quoted
quoted
 From: Tony Lindgren[off-list ref]

 Otherwise omap_device_build() and omap_mux related functions
 can't be marked as __init when twl is build as a module.

 If a board is using GPIO pins or regulators configured by an
 external chip, such as TWL PMIC on I2C bus, the board must
 mark those MMC controllers as deferred. Additionally both
 omap_hsmmc_init() and omap_hsmmc_deferred_add() must be called
 by the board.

 For MMC controllers using internal GPIO pins for card
 detect and regulators the slots don't need to be marked
 deferred. In this case calling omap_hsmmc_init() is sufficient.

 Note that this patch does not change the behaviour for
 board-4430sdp.c board-omap4panda.c. These boards wrongly
 rely on the omap_hsmmc.c init function callback to configure
 the PMIC GPIO interrupt lines on external chip. If the PMIC
 interrupt lines are not configured during init, they will
 fail.

 Reported-by: Russell King[off-list ref]
 Signed-off-by: Tony Lindgren[off-list ref]
 Signed-off-by: Rajendra Nayak[off-list ref]
 ---
   arch/arm/mach-omap2/board-2430sdp.c          |    2 +-
   arch/arm/mach-omap2/board-3430sdp.c          |   12 ++--
   arch/arm/mach-omap2/board-4430sdp.c          |    4 +-
   arch/arm/mach-omap2/board-am3517evm.c        |    2 +-
   arch/arm/mach-omap2/board-cm-t35.c           |   10 +-
   arch/arm/mach-omap2/board-devkit8000.c       |    7 +-
   arch/arm/mach-omap2/board-igep0020.c         |   11 ++-
   arch/arm/mach-omap2/board-ldp.c              |    2 +-
   arch/arm/mach-omap2/board-omap3beagle.c      |    7 +-
   arch/arm/mach-omap2/board-omap3evm.c         |    9 +-
   arch/arm/mach-omap2/board-omap3logic.c       |    2 +-
   arch/arm/mach-omap2/board-omap3pandora.c     |   13 ++--
   arch/arm/mach-omap2/board-omap3stalker.c     |   14 ++--
   arch/arm/mach-omap2/board-omap3touchbook.c   |    7 +-
   arch/arm/mach-omap2/board-omap4panda.c       |    4 +-
   arch/arm/mach-omap2/board-overo.c            |    5 +-
   arch/arm/mach-omap2/board-rm680.c            |    2 +-
   arch/arm/mach-omap2/board-rx51-peripherals.c |    2 +-
   arch/arm/mach-omap2/board-zoom-peripherals.c |    9 ++-
   arch/arm/mach-omap2/hsmmc.c                  |  117 +++++++++++++++++++-------
   arch/arm/mach-omap2/hsmmc.h                  |   13 ++-
   21 files changed, 165 insertions(+), 89 deletions(-)
[...]
quoted
quoted
 diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c
 index d73316e..14df109 100644
 --- a/arch/arm/mach-omap2/board-cm-t35.c
 +++ b/arch/arm/mach-omap2/board-cm-t35.c
 @@ -411,9 +411,9 @@ static struct omap2_hsmmc_info mmc[] = {
   	{
   		.mmc		= 1,
   		.caps		= MMC_CAP_4_BIT_DATA,
 -		.gpio_cd	= -EINVAL,
 +		.gpio_cd	= OMAP_MAX_GPIO_LINES + 0,
   		.gpio_wp	= -EINVAL,
 -
 +		.deferred	= true,
   	},
   	{
   		.mmc		= 2,
 @@ -422,6 +422,7 @@ static struct omap2_hsmmc_info mmc[] = {
   		.gpio_cd	= -EINVAL,
   		.gpio_wp	= -EINVAL,
   		.ocr_mask	= 0x00100000,	/* 3.3V */
 +		.deferred	= true,
Why do you defer this one?
It does not use external GPIO chip, in fact it does not use CD/WP at all.
I thought so too, but kept it that way since Tony's original patch
deferred it.
Tony, any reason you deferred the mmc devices which *do not* have card
detect via twl4030 gpio too?
quoted
quoted
   	},
   	{}	/* Terminator */
   };
 @@ -469,9 +470,7 @@ static int cm_t35_twl_gpio_setup(struct device *dev, unsigned gpio,
   		pr_err("CM-T35: could not obtain gpio for WiFi reset\n");
   	}

 -	/* gpio + 0 is "mmc0_cd" (input/IRQ) */
 -	mmc[0].gpio_cd = gpio + 0;
 -	omap2_hsmmc_init(mmc);
 +	omap_hsmmc_deferred_add(mmc);

   	return 0;
   }
 @@ -639,6 +638,7 @@ static void __init cm_t3x_common_init(void)
   	omap_serial_init();
   	omap_sdrc_init(mt46h32m32lf6_sdrc_params,
   			mt46h32m32lf6_sdrc_params);
 +	omap_hsmmc_init(mmc);
   	cm_t35_init_i2c();
   	omap_ads7846_init(1, CM_T35_GPIO_PENDOWN, 0, NULL);
   	cm_t35_init_ethernet();
Other then the comment above, looks fine.
I will probably be able to test this on Sunday.
Great, thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help