* [PATCH] watchdog: imx2_wdt: adds big endianness support.
@ 2014-05-30 6:10 Xiubo Li
2014-05-30 14:36 ` Guenter Roeck
0 siblings, 1 reply; 3+ messages in thread
From: Xiubo Li @ 2014-05-30 6:10 UTC (permalink / raw)
To: wim, linux-watchdog, linux-kernel; +Cc: Xiubo Li
This watchdog driver will be working on IMX2+, Vybrid, LS1, LS2+
platforms, and will be in different endianness mode in those SoCs:
SoCs CPU endian mode WDT endian mode
------------------------------------------------
IMX2+ LE LE
Vybird LE LE
LS1 LE BE
LS2 LE LE
Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
---
drivers/watchdog/imx2_wdt.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c
index 9d4874f..68c3d37 100644
--- a/drivers/watchdog/imx2_wdt.c
+++ b/drivers/watchdog/imx2_wdt.c
@@ -28,6 +28,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
+#include <linux/of_address.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/timer.h>
@@ -190,10 +191,12 @@ static struct regmap_config imx2_wdt_regmap_config = {
static int __init imx2_wdt_probe(struct platform_device *pdev)
{
+ struct device_node *np = pdev->dev.of_node;
struct imx2_wdt_device *wdev;
struct watchdog_device *wdog;
struct resource *res;
void __iomem *base;
+ bool big_endian;
int ret;
u32 val;
@@ -201,6 +204,10 @@ static int __init imx2_wdt_probe(struct platform_device *pdev)
if (!wdev)
return -ENOMEM;
+ big_endian = of_property_read_bool(np, "big-endian");
+ if (big_endian)
+ imx2_wdt_regmap_config.val_format_endian = REGMAP_ENDIAN_BIG;
+
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
base = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(base))
--
1.8.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] watchdog: imx2_wdt: adds big endianness support.
2014-05-30 6:10 [PATCH] watchdog: imx2_wdt: adds big endianness support Xiubo Li
@ 2014-05-30 14:36 ` Guenter Roeck
2014-06-03 3:19 ` Li.Xiubo
0 siblings, 1 reply; 3+ messages in thread
From: Guenter Roeck @ 2014-05-30 14:36 UTC (permalink / raw)
To: Xiubo Li, wim, linux-watchdog, linux-kernel
On 05/29/2014 11:10 PM, Xiubo Li wrote:
> This watchdog driver will be working on IMX2+, Vybrid, LS1, LS2+
> platforms, and will be in different endianness mode in those SoCs:
>
> SoCs CPU endian mode WDT endian mode
> ------------------------------------------------
> IMX2+ LE LE
> Vybird LE LE
> LS1 LE BE
> LS2 LE LE
>
> Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
> ---
> drivers/watchdog/imx2_wdt.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c
> index 9d4874f..68c3d37 100644
> --- a/drivers/watchdog/imx2_wdt.c
> +++ b/drivers/watchdog/imx2_wdt.c
> @@ -28,6 +28,7 @@
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/moduleparam.h>
> +#include <linux/of_address.h>
> #include <linux/platform_device.h>
> #include <linux/regmap.h>
> #include <linux/timer.h>
> @@ -190,10 +191,12 @@ static struct regmap_config imx2_wdt_regmap_config = {
>
> static int __init imx2_wdt_probe(struct platform_device *pdev)
> {
> + struct device_node *np = pdev->dev.of_node;
> struct imx2_wdt_device *wdev;
> struct watchdog_device *wdog;
> struct resource *res;
> void __iomem *base;
> + bool big_endian;
> int ret;
> u32 val;
>
> @@ -201,6 +204,10 @@ static int __init imx2_wdt_probe(struct platform_device *pdev)
> if (!wdev)
> return -ENOMEM;
>
> + big_endian = of_property_read_bool(np, "big-endian");
> + if (big_endian)
> + imx2_wdt_regmap_config.val_format_endian = REGMAP_ENDIAN_BIG;
> +
You'll need to document the use of this property in
Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt.
Guenter
> res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> base = devm_ioremap_resource(&pdev->dev, res);
> if (IS_ERR(base))
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH] watchdog: imx2_wdt: adds big endianness support.
2014-05-30 14:36 ` Guenter Roeck
@ 2014-06-03 3:19 ` Li.Xiubo
0 siblings, 0 replies; 3+ messages in thread
From: Li.Xiubo @ 2014-06-03 3:19 UTC (permalink / raw)
To: Guenter Roeck, wim@iguana.be, linux-watchdog@vger.kernel.org,
linux-kernel@vger.kernel.org
> > @@ -201,6 +204,10 @@ static int __init imx2_wdt_probe(struct platform_device
> *pdev)
> > if (!wdev)
> > return -ENOMEM;
> >
> > + big_endian = of_property_read_bool(np, "big-endian");
> > + if (big_endian)
> > + imx2_wdt_regmap_config.val_format_endian = REGMAP_ENDIAN_BIG;
> > +
>
> You'll need to document the use of this property in
> Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt.
>
Sorry for late.
Please see the next version.
Thanks,
BRs
Xiubo
> Guenter
>
> > res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > base = devm_ioremap_resource(&pdev->dev, res);
> > if (IS_ERR(base))
> >
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-06-03 3:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-30 6:10 [PATCH] watchdog: imx2_wdt: adds big endianness support Xiubo Li
2014-05-30 14:36 ` Guenter Roeck
2014-06-03 3:19 ` Li.Xiubo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox