From: Geert Uytterhoeven <geert+renesas@glider.be>
To: Linus Walleij <linus.walleij@linaro.org>,
Alexandre Courbot <gnurou@gmail.com>,
Magnus Damm <magnus.damm@gmail.com>
Cc: linux-gpio@vger.kernel.org, linux-sh@vger.kernel.org,
Geert Uytterhoeven <geert+renesas@glider.be>
Subject: [PATCH] gpio: rcar: Improve clock error handling and reporting
Date: Tue, 24 Nov 2015 16:05:28 +0100 [thread overview]
Message-ID: <1448377528-19307-1-git-send-email-geert+renesas@glider.be> (raw)
If the Renesas R-Car GPIO driver cannot find a functional clock, it
prints a warning, .e.g.
gpio_rcar ffc40000.gpio: unable to get clock
and continues, as the clock is optional, depending on the SoC type.
This warning may confuse users.
To fix this, add a flag to indicate that the clock is mandatory or
optional:
- If the clock is mandatory (on R-Car Gen2), a missing clock is now
treated as a fatal error,
- If the clock is optional (on R-Car Gen1), the warning is no longer
printed.
The new flag is merged with the existing has_both_edge_trigger boolean
into a bitfield to save space.
Suggested-by: Magnus Damm <magnus.damm@gmail.com>
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
This depends on "gpio: rcar: Remove obsolete platform data support".
Tested on r8a7779/marzen (no functional clock) and r8a7791/koelsch (with
and without mandatory functional clock).
drivers/gpio/gpio-rcar.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c
index bb6e363d5178634c..c890ac14b23a65ea 100644
--- a/drivers/gpio/gpio-rcar.c
+++ b/drivers/gpio/gpio-rcar.c
@@ -39,6 +39,7 @@ struct gpio_rcar_priv {
struct clk *clk;
unsigned int irq_parent;
unsigned has_both_edge_trigger:1;
+ unsigned needs_clk:1;
};
#define IOINTSEL 0x00 /* General IO/Interrupt Switching Register */
@@ -316,15 +317,18 @@ static int gpio_rcar_direction_output(struct gpio_chip *chip, unsigned offset,
}
struct gpio_rcar_info {
- bool has_both_edge_trigger;
+ unsigned has_both_edge_trigger:1;
+ unsigned needs_clk:1;
};
static const struct gpio_rcar_info gpio_rcar_info_gen1 = {
- .has_both_edge_trigger = false,
+ .has_both_edge_trigger = 0,
+ .needs_clk = 0,
};
static const struct gpio_rcar_info gpio_rcar_info_gen2 = {
- .has_both_edge_trigger = true,
+ .has_both_edge_trigger = 1,
+ .needs_clk = 1,
};
static const struct of_device_id gpio_rcar_of_table[] = {
@@ -371,6 +375,7 @@ static int gpio_rcar_parse_dt(struct gpio_rcar_priv *p, unsigned int *npins)
ret = of_parse_phandle_with_fixed_args(np, "gpio-ranges", 3, 0, &args);
*npins = ret == 0 ? args.args[2] : RCAR_MAX_GPIO_PER_BANK;
p->has_both_edge_trigger = info->has_both_edge_trigger;
+ p->needs_clk = info->needs_clk;
if (*npins == 0 || *npins > RCAR_MAX_GPIO_PER_BANK) {
dev_warn(&p->pdev->dev,
@@ -409,7 +414,11 @@ static int gpio_rcar_probe(struct platform_device *pdev)
p->clk = devm_clk_get(dev, NULL);
if (IS_ERR(p->clk)) {
- dev_warn(dev, "unable to get clock\n");
+ if (p->needs_clk) {
+ dev_err(dev, "unable to get clock\n");
+ ret = PTR_ERR(p->clk);
+ goto err0;
+ }
p->clk = NULL;
}
--
1.9.1
next reply other threads:[~2015-11-24 15:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-24 15:05 Geert Uytterhoeven [this message]
2015-12-01 9:54 ` [PATCH] gpio: rcar: Improve clock error handling and reporting Linus Walleij
2015-12-01 10:09 ` Geert Uytterhoeven
2015-12-10 17:11 ` Linus Walleij
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=1448377528-19307-1-git-send-email-geert+renesas@glider.be \
--to=geert+renesas@glider.be \
--cc=gnurou@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.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).