All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Grinberg <grinberg@compulab.co.il>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 06/10] dm: imx: Use gpio_request() to request GPIOs
Date: Mon, 15 Sep 2014 20:13:28 +0300	[thread overview]
Message-ID: <54171E38.5050703@compulab.co.il> (raw)
In-Reply-To: <1410785865-27946-7-git-send-email-sjg@chromium.org>

Hi Simon,

On 09/15/14 15:57, Simon Glass wrote:
> GPIOs should be requested before use. Without this, driver model will not
> permit the GPIO to be used.

Right. That should have been done from the start... Sorry for that...
A question below though..

> 
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
> 
>  arch/arm/imx-common/i2c-mxv7.c | 14 ++++++++++++++
>  board/compulab/cm_fx6/cm_fx6.c |  9 +++++++++
>  board/compulab/cm_fx6/common.c |  3 +++
>  3 files changed, 26 insertions(+)
> 
> diff --git a/arch/arm/imx-common/i2c-mxv7.c b/arch/arm/imx-common/i2c-mxv7.c
> index a580873..7cea024 100644
> --- a/arch/arm/imx-common/i2c-mxv7.c
> +++ b/arch/arm/imx-common/i2c-mxv7.c
> @@ -4,6 +4,7 @@
>   * SPDX-License-Identifier:	GPL-2.0+
>   */
>  #include <common.h>
> +#include <malloc.h>
>  #include <asm/arch/clock.h>
>  #include <asm/arch/imx-regs.h>
>  #include <asm/errno.h>
> @@ -72,8 +73,21 @@ static void * const i2c_bases[] = {
>  void setup_i2c(unsigned i2c_index, int speed, int slave_addr,
>  		struct i2c_pads_info *p)
>  {
> +	char *name;
> +
>  	if (i2c_index >= ARRAY_SIZE(i2c_bases))
>  		return;
> +
> +	name = malloc(9);
> +	assert(name);
> +	sprintf(name, "i2c_sda%d", i2c_index);
> +	gpio_request(p->sda.gp, name);
> +
> +	name = malloc(9);
> +	assert(name);
> +	sprintf(name, "i2c_scl%d", i2c_index);
> +	gpio_request(p->scl.gp, name);
> +
>  	/* Enable i2c clock */
>  	enable_i2c_clk(1, i2c_index);
>  	/* Make sure bus is idle */
> diff --git a/board/compulab/cm_fx6/cm_fx6.c b/board/compulab/cm_fx6/cm_fx6.c
> index fdb8ebf..80a123d 100644
> --- a/board/compulab/cm_fx6/cm_fx6.c
> +++ b/board/compulab/cm_fx6/cm_fx6.c
> @@ -71,8 +71,15 @@ static iomux_v3_cfg_t const sata_pads[] = {
>  
>  static void cm_fx6_setup_issd(void)
>  {
> +	int i;
> +
>  	SETUP_IOMUX_PADS(sata_pads);
> +
> +	for (i = 0; i < ARRAY_SIZE(cm_fx6_issd_gpios); i++)
> +		gpio_request(cm_fx6_issd_gpios[i], "sata");
> +
>  	/* Make sure this gpio has logical 0 value */
> +	gpio_request(CM_FX6_SATA_PWLOSS_INT, "sata_pwloss_int");
>  	gpio_direction_output(CM_FX6_SATA_PWLOSS_INT, 0);
>  	udelay(100);
>  
> @@ -167,6 +174,7 @@ static int cm_fx6_usb_hub_reset(void)
>  	}
>  
>  	SETUP_IOMUX_PAD(PAD_SD3_RST__GPIO7_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL));
> +	gpio_request(CM_FX6_USB_HUB_RST, "usb_hub_rst");
>  	gpio_direction_output(CM_FX6_USB_HUB_RST, 0);
>  	udelay(10);
>  	gpio_direction_output(CM_FX6_USB_HUB_RST, 1);
> @@ -324,6 +332,7 @@ int board_eth_init(bd_t *bis)
>  
>  	SETUP_IOMUX_PADS(enet_pads);
>  	/* phy reset */
> +	gpio_request(CM_FX6_ENET_NRST, "enet_nrst");
>  	gpio_direction_output(CM_FX6_ENET_NRST, 0);
>  	udelay(500);
>  	gpio_set_value(CM_FX6_ENET_NRST, 1);
> diff --git a/board/compulab/cm_fx6/common.c b/board/compulab/cm_fx6/common.c
> index 1f39679..562313b 100644
> --- a/board/compulab/cm_fx6/common.c
> +++ b/board/compulab/cm_fx6/common.c
> @@ -79,6 +79,9 @@ void cm_fx6_set_ecspi_iomux(void)
>  
>  int board_spi_cs_gpio(unsigned bus, unsigned cs)
>  {
> +#ifndef CONFIG_SPL_BUILD
> +	gpio_request(CM_FX6_ECSPI_BUS0_CS0, "ecspi_bus0_cs0");
> +#endif
>  	return (bus == 0 && cs == 0) ? (CM_FX6_ECSPI_BUS0_CS0) : -1;
>  }
>  #endif
> 

In all the above gpio_request() calls, I think we should check for
the return value.
Because after patch 8 in the series it can fail if if someone
double requests the same gpio.

-- 
Regards,
Igor.

  reply	other threads:[~2014-09-15 17:13 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-15 12:57 [U-Boot] [PATCH 0/10] dm: imx: Add driver model support for GPIO and serial on cm_fx6 Simon Glass
2014-09-15 12:57 ` [U-Boot] [PATCH 01/10] dm: linker_lists: Add a way to declare multiple objects Simon Glass
2014-09-15 12:57 ` [U-Boot] [PATCH 02/10] dm: core: Allow a list of devices to be declared in one step Simon Glass
2014-09-15 12:57 ` [U-Boot] [PATCH 03/10] dm: core: Allow device_bind() to used without CONFIG_OF_CONTROL Simon Glass
2014-09-15 12:57 ` [U-Boot] [PATCH 04/10] dm: serial: Don't require device tree to configure a console Simon Glass
2014-09-15 12:57 ` [U-Boot] [PATCH 05/10] dm: serial: Put common code into separate functions Simon Glass
2014-09-15 12:57 ` [U-Boot] [PATCH 06/10] dm: imx: Use gpio_request() to request GPIOs Simon Glass
2014-09-15 17:13   ` Igor Grinberg [this message]
2014-09-15 18:04     ` Simon Glass
2014-09-15 18:36       ` Igor Grinberg
2014-09-15 12:57 ` [U-Boot] [PATCH 07/10] imximage.cfg: Remove copyright header Simon Glass
2014-09-15 18:00   ` Igor Grinberg
2014-09-17  3:47     ` Simon Glass
2014-09-15 12:57 ` [U-Boot] [PATCH 08/10] dm: imx: gpio: Support driver model in MXC gpio driver Simon Glass
2014-09-15 18:32   ` Igor Grinberg
2014-09-17  3:49     ` Simon Glass
2014-09-15 12:57 ` [U-Boot] [PATCH 09/10] dm: imx: serial: Support driver model in the MXC serial driver Simon Glass
2014-09-15 12:57 ` [U-Boot] [PATCH 10/10] dm: imx: Move cm_fx6 to use driver model for serial and GPIO Simon Glass
2014-09-15 18:50   ` Igor Grinberg
2014-09-17  3:50     ` Simon Glass

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=54171E38.5050703@compulab.co.il \
    --to=grinberg@compulab.co.il \
    --cc=u-boot@lists.denx.de \
    /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.