public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Igor Grinberg <grinberg@compulab.co.il>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 08/10] dm: imx: gpio: Support driver model in MXC gpio driver
Date: Mon, 15 Sep 2014 21:32:15 +0300	[thread overview]
Message-ID: <541730AF.4030605@compulab.co.il> (raw)
In-Reply-To: <1410785865-27946-9-git-send-email-sjg@chromium.org>

Hi Simon,

On 09/15/14 15:57, Simon Glass wrote:
> Add driver model support with this driver. In this case the platform data
> is in the driver. It would be better to put this into an SOC-specific file,
> but this is best attempted when more boards are moved over to use driver
> model.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
> 
>  drivers/gpio/mxc_gpio.c | 291 +++++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 290 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpio/mxc_gpio.c b/drivers/gpio/mxc_gpio.c
> index 6a572d5..8669cf0 100644
> --- a/drivers/gpio/mxc_gpio.c
> +++ b/drivers/gpio/mxc_gpio.c

[...]

> +static int check_reserved(struct udevice *dev, unsigned offset,
> +			  const char *func)

Wouldn't "check_requested" be a better name here?
And then also in the error message below?

> +{
> +	struct mxc_bank_info *bank = dev_get_priv(dev);
> +	struct gpio_dev_priv *uc_priv = dev->uclass_priv;
> +
> +	if (!*bank->label[offset]) {

Can we have here a more explicit (and descriptive) check for '\0'?

> +		printf("mxc_gpio: %s: error: gpio %s%d not reserved\n",
> +		       func, uc_priv->bank_name, offset);
> +		return -EPERM;
> +	}
> +
> +	return 0;
> +}

[...]

> +static int mxc_gpio_request(struct udevice *dev, unsigned offset,
> +			      const char *label)
> +{
> +	struct mxc_bank_info *bank = dev_get_priv(dev);
> +
> +	if (*bank->label[offset])

Same here?

> +		return -EBUSY;
> +
> +	strncpy(bank->label[offset], label, GPIO_NAME_SIZE);
> +	bank->label[offset][GPIO_NAME_SIZE - 1] = '\0';
> +
> +	return 0;
> +}

[...]

> +static int mxc_gpio_get_function(struct udevice *dev, unsigned offset)
> +{
> +	struct mxc_bank_info *bank = dev_get_priv(dev);
> +
> +	if (!*bank->label[offset])

and here.

> +		return GPIOF_UNUSED;
> +
> +	/* GPIOF_FUNC is not implemented yet */
> +	if (mxc_gpio_is_output(bank->regs, offset))
> +		return GPIOF_OUTPUT;
> +	else
> +		return GPIOF_INPUT;
> +}

[...]

> +static int mxc_gpio_probe(struct udevice *dev)
> +{
> +	struct mxc_bank_info *bank = dev_get_priv(dev);
> +	struct mxc_gpio_plat *plat = dev_get_platdata(dev);
> +	struct gpio_dev_priv *uc_priv = dev->uclass_priv;
> +	int banknum;
> +	char *name = "";

I think you can skip this initialization,
malloc will write into this pointer anyway.

> +
> +	bank->regs = plat->regs;
> +	uc_priv->gpio_count = 32;

Isn't this GPIO_PER_BANK is defined for?

> +	name = malloc(8);
> +	if (!name)
> +		return -ENOMEM;
> +	banknum = plat - mxc_plat;
> +	if (banknum < 98)
> +		sprintf(name, "GPIO%d_", banknum + 1);

The logic here (and the magic 98) is unclear.
Can we have a bit more explanation here please?

> +	uc_priv->bank_name = name;
> +
> +	return 0;
> +}

[...]


-- 
Regards,
Igor.

  reply	other threads:[~2014-09-15 18:32 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
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 [this message]
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=541730AF.4030605@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox