[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220504134449.64473-4-andriy.shevchenko@linux.intel.com>
Date: Wed, 4 May 2022 16:44:49 +0300
From: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
To: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Sergey Shtylyov <s.shtylyov@....ru>,
Damien Le Moal <damien.lemoal@...nsource.wdc.com>,
Wolfram Sang <wsa@...nel.org>,
Chris Packham <chris.packham@...iedtelesis.co.nz>,
Marc Kleine-Budde <mkl@...gutronix.de>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Jiri Slaby <jirislaby@...nel.org>,
linuxppc-dev@...ts.ozlabs.org, linux-kernel@...r.kernel.org,
linux-ide@...r.kernel.org, linux-i2c@...r.kernel.org,
linux-can@...r.kernel.org, netdev@...r.kernel.org,
linux-spi@...r.kernel.org, linux-serial@...r.kernel.org
Cc: Michael Ellerman <mpe@...erman.id.au>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
Paul Mackerras <paulus@...ba.org>,
Anatolij Gustschin <agust@...x.de>,
Wolfgang Grandegger <wg@...ndegger.com>,
Eric Dumazet <edumazet@...gle.com>,
Paolo Abeni <pabeni@...hat.com>,
Pantelis Antoniou <pantelis.antoniou@...il.com>,
Mark Brown <broonie@...nel.org>
Subject: [PATCH v1 4/4] powerpc/52xx: Convert to use fwnode API
We may convert the GPT driver to use fwnode API for the sake
of consistency of the used APIs inside the driver.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
---
arch/powerpc/platforms/52xx/mpc52xx_gpt.c | 47 +++++++++++------------
1 file changed, 22 insertions(+), 25 deletions(-)
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index 0831f28345af..7006700aeaab 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -53,10 +53,9 @@
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/list.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
#include <linux/mutex.h>
-#include <linux/of.h>
-#include <linux/of_platform.h>
-#include <linux/of_gpio.h>
#include <linux/kernel.h>
#include <linux/property.h>
#include <linux/slab.h>
@@ -64,7 +63,7 @@
#include <linux/watchdog.h>
#include <linux/miscdevice.h>
#include <linux/uaccess.h>
-#include <linux/module.h>
+
#include <asm/div64.h>
#include <asm/mpc52xx.h>
@@ -235,18 +234,17 @@ static const struct irq_domain_ops mpc52xx_gpt_irq_ops = {
.xlate = mpc52xx_gpt_irq_xlate,
};
-static void
-mpc52xx_gpt_irq_setup(struct mpc52xx_gpt_priv *gpt, struct device_node *node)
+static void mpc52xx_gpt_irq_setup(struct mpc52xx_gpt_priv *gpt)
{
int cascade_virq;
unsigned long flags;
u32 mode;
- cascade_virq = irq_of_parse_and_map(node, 0);
- if (!cascade_virq)
+ cascade_virq = platform_get_irq(to_platform_device(gpt->dev), 0);
+ if (cascade_virq < 0)
return;
- gpt->irqhost = irq_domain_add_linear(node, 1, &mpc52xx_gpt_irq_ops, gpt);
+ gpt->irqhost = irq_domain_create_linear(dev_fwnode(gpt->dev), 1, &mpc52xx_gpt_irq_ops, gpt);
if (!gpt->irqhost) {
dev_err(gpt->dev, "irq_domain_add_linear() failed\n");
return;
@@ -670,8 +668,7 @@ static int mpc52xx_gpt_wdt_init(void)
return err;
}
-static int mpc52xx_gpt_wdt_setup(struct mpc52xx_gpt_priv *gpt,
- const u32 *period)
+static int mpc52xx_gpt_wdt_setup(struct mpc52xx_gpt_priv *gpt, const u32 period)
{
u64 real_timeout;
@@ -679,14 +676,14 @@ static int mpc52xx_gpt_wdt_setup(struct mpc52xx_gpt_priv *gpt,
mpc52xx_gpt_wdt = gpt;
/* configure the wdt if the device tree contained a timeout */
- if (!period || *period == 0)
+ if (period == 0)
return 0;
- real_timeout = (u64) *period * 1000000000ULL;
+ real_timeout = (u64)period * 1000000000ULL;
if (mpc52xx_gpt_do_start(gpt, real_timeout, 0, 1))
dev_warn(gpt->dev, "starting as wdt failed\n");
else
- dev_info(gpt->dev, "watchdog set to %us timeout\n", *period);
+ dev_info(gpt->dev, "watchdog set to %us timeout\n", period);
return 0;
}
@@ -697,8 +694,7 @@ static int mpc52xx_gpt_wdt_init(void)
return 0;
}
-static inline int mpc52xx_gpt_wdt_setup(struct mpc52xx_gpt_priv *gpt,
- const u32 *period)
+static inline int mpc52xx_gpt_wdt_setup(struct mpc52xx_gpt_priv *gpt, const u32 period)
{
return 0;
}
@@ -726,25 +722,26 @@ static int mpc52xx_gpt_probe(struct platform_device *ofdev)
dev_set_drvdata(&ofdev->dev, gpt);
mpc52xx_gpt_gpio_setup(gpt);
- mpc52xx_gpt_irq_setup(gpt, ofdev->dev.of_node);
+ mpc52xx_gpt_irq_setup(gpt);
mutex_lock(&mpc52xx_gpt_list_mutex);
list_add(&gpt->list, &mpc52xx_gpt_list);
mutex_unlock(&mpc52xx_gpt_list_mutex);
/* check if this device could be a watchdog */
- if (of_get_property(ofdev->dev.of_node, "fsl,has-wdt", NULL) ||
- of_get_property(ofdev->dev.of_node, "has-wdt", NULL)) {
- const u32 *on_boot_wdt;
+ if (device_property_present(gpt->dev, "fsl,has-wdt") ||
+ device_property_present(gpt->dev, "has-wdt")) {
+ u32 on_boot_wdt = 0;
+ int ret;
gpt->wdt_mode = MPC52xx_GPT_CAN_WDT;
- on_boot_wdt = of_get_property(ofdev->dev.of_node,
- "fsl,wdt-on-boot", NULL);
- if (on_boot_wdt) {
+ ret = device_property_read_u32(gpt->dev, "fsl,wdt-on-boot", &on_boot_wdt);
+ if (ret) {
+ dev_info(gpt->dev, "can function as watchdog\n");
+ } else {
dev_info(gpt->dev, "used as watchdog\n");
gpt->wdt_mode |= MPC52xx_GPT_IS_WDT;
- } else
- dev_info(gpt->dev, "can function as watchdog\n");
+ }
mpc52xx_gpt_wdt_setup(gpt, on_boot_wdt);
}
--
2.35.1
Powered by blists - more mailing lists