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.
next prev parent 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