From: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
To: Tony Lindgren <tony@atomide.com>
Cc: "Benoît Cousson" <b-cousson@ti.com>,
"Russell King" <linux@arm.linux.org.uk>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Enric Balletbo i Serra" <eballetbo@gmail.com>,
"Ezequiel Garcia" <ezequiel.garcia@free-electrons.com>,
devicetree-discuss@lists.ozlabs.org, linux-omap@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
"Javier Martinez Canillas" <javier.martinez@collabora.co.uk>
Subject: [PATCH RFC 3/7] ARM: OMAP: gpmc-smsc911x: add DT dev node init function
Date: Sat, 9 Feb 2013 21:44:27 +0100 [thread overview]
Message-ID: <1360442671-15216-4-git-send-email-javier.martinez@collabora.co.uk> (raw)
In-Reply-To: <1360442671-15216-1-git-send-email-javier.martinez@collabora.co.uk>
This patch adds a helper function to parse a device node that
contains all the properties needed to initialize an smsc911x
device connected to an OMAP processor through OMAP's GPMC.
Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
---
.../devicetree/bindings/net/gpmc-smsc911x.txt | 39 ++++++++++++++++++++
arch/arm/mach-omap2/gpmc-smsc911x.c | 29 +++++++++++++++
arch/arm/mach-omap2/gpmc-smsc911x.h | 6 +++
3 files changed, 74 insertions(+), 0 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/gpmc-smsc911x.txt
diff --git a/Documentation/devicetree/bindings/net/gpmc-smsc911x.txt b/Documentation/devicetree/bindings/net/gpmc-smsc911x.txt
new file mode 100644
index 0000000..8bb0df2
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/gpmc-smsc911x.txt
@@ -0,0 +1,39 @@
+* GPMC connected Smart Mixed-Signal Connectivity (SMSC) LAN911x/912x Controller
+
+GPMC connected SMSC LAN911x/912x Controllers are represented as child nodes
+of the OMAP General-Purpose Memory Controller with a name of "gpmc_smsc911x".
+
+All timing relevant properties as well as generic gpmc child properties are
+explained in a separate documents - please refer to
+Documentation/devicetree/bindings/bus/ti-gpmc.txt
+
+Required properties:
+- gpmc,cs : The chip select line the pheripheral is connected to
+- gpmc,gpio_irq : The GPIO pin that is connected to the SMSC LAN IRQ line
+
+Optional properties:
+- gpmc,flags : SMSC LAN flags - please refer to include/linux/smsc911x.h
+- gpmc,gpio_reset : The GPIO pin connected to the SMSC LAN reset line
+
+Note: Besides these properties, the gpmc_smsc911x device node could need
+aditional setup such as pin/pad mux settings and voltage regulators. This
+depend on how the pheripheral is wired and his board specific.
+
+Example (for an OMAP3 board):
+
+gpmc@6e000000 {
+ compatible = "ti,omap3430-gpmc";
+ ti,hwmods = "gpmc";
+ reg = <0x6e000000 0x1000000>;
+ interrupts = <20>;
+ gpmc,num-cs = <8>;
+ gpmc,num-waitpins = <4>;
+ #address-cells = <2>;
+ #size-cells = <1>;
+
+ gpmc_smsc911x@0 {
+ gpmc,cs = <5>;
+ gpmc,gpio_irq = <176>;
+ gpmc,flags = <4>; /* SMSC911X_USE_32BIT */
+ };
+};
diff --git a/arch/arm/mach-omap2/gpmc-smsc911x.c b/arch/arm/mach-omap2/gpmc-smsc911x.c
index 5ce00ad2..59a2ee4 100644
--- a/arch/arm/mach-omap2/gpmc-smsc911x.c
+++ b/arch/arm/mach-omap2/gpmc-smsc911x.c
@@ -19,6 +19,7 @@
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/smsc911x.h>
+#include <linux/of.h>
#include "gpmc.h"
#include "gpmc-smsc911x.h"
@@ -98,3 +99,31 @@ free1:
pr_err("Could not initialize smsc911x device\n");
}
+
+int gpmc_smsc911x_init_dt(struct device_node *node)
+{
+ struct omap_smsc911x_platform_data gpmc_cfg;
+
+ if (WARN_ON(!node))
+ return -ENODEV;
+
+ if (of_property_read_u32(node, "gpmc,cs", &gpmc_cfg.cs)) {
+ pr_err("Unable to get GPMC smsc911x chip select\n");
+ return -EINVAL;
+ }
+
+ if (of_property_read_u32(node, "gpmc,gpio_irq", &gpmc_cfg.gpio_irq)) {
+ pr_err("Unable to get GPMC smsc911x GPIO IRQ\n");
+ return -EINVAL;
+ }
+
+ if (of_property_read_u32(node, "gpmc,gpio_reset", &gpmc_cfg.gpio_reset))
+ gpmc_cfg.gpio_reset = -EINVAL;
+
+ if (of_property_read_u32(node, "gpmc,flags", &gpmc_cfg.flags))
+ gpmc_cfg.flags = 0;
+
+ gpmc_smsc911x_init(&gpmc_cfg);
+
+ return 0;
+}
diff --git a/arch/arm/mach-omap2/gpmc-smsc911x.h b/arch/arm/mach-omap2/gpmc-smsc911x.h
index ea6c9c8..bbcb8bc 100644
--- a/arch/arm/mach-omap2/gpmc-smsc911x.h
+++ b/arch/arm/mach-omap2/gpmc-smsc911x.h
@@ -25,11 +25,17 @@ struct omap_smsc911x_platform_data {
extern void gpmc_smsc911x_init(struct omap_smsc911x_platform_data *d);
+extern int gpmc_smsc911x_init_dt(struct device_node *node);
+
#else
static inline void gpmc_smsc911x_init(struct omap_smsc911x_platform_data *d)
{
}
+static inline int gpmc_smsc911x_init_dt(struct device_node *node)
+{
+}
+
#endif
#endif
--
1.7.7.6
next prev parent reply other threads:[~2013-02-09 20:44 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-09 20:44 [PATCH RFC 0/7] ARM: OMAP: add DT binding for gpmc-smsc911x Javier Martinez Canillas
2013-02-09 20:44 ` [PATCH RFC 1/7] platform: add a device node Javier Martinez Canillas
2013-02-10 1:02 ` Greg Kroah-Hartman
2013-02-10 1:49 ` Javier Martinez Canillas
2013-02-10 9:37 ` Russell King - ARM Linux
2013-02-10 11:35 ` Javier Martinez Canillas
2013-02-11 8:16 ` Sascha Hauer
2013-02-11 10:33 ` Javier Martinez Canillas
2013-02-11 11:24 ` Sascha Hauer
2013-02-11 11:38 ` Javier Martinez Canillas
2013-02-18 13:51 ` Grant Likely
2013-02-18 13:56 ` Javier Martinez Canillas
2013-02-18 13:33 ` Grant Likely
2013-02-09 20:44 ` [PATCH RFC 2/7] net: smsc911x: add pinctrl support Javier Martinez Canillas
2013-02-11 14:23 ` Linus Walleij
2013-02-11 14:29 ` Javier Martinez Canillas
2013-02-09 20:44 ` Javier Martinez Canillas [this message]
2013-02-11 10:30 ` [PATCH RFC 3/7] ARM: OMAP: gpmc-smsc911x: add DT dev node init function Mark Rutland
2013-02-11 10:40 ` Javier Martinez Canillas
2013-02-09 20:44 ` [PATCH RFC 4/7] ARM: OMAP: gpmc-smsc911x: pass a dev node to platform registration Javier Martinez Canillas
2013-02-09 20:44 ` [PATCH RFC 5/7] ARM: OMAP: gpmc: add support for gpmc-smsc911x child nodes Javier Martinez Canillas
2013-02-09 20:44 ` [PATCH RFC 6/7] ARM: dts: OMAP: Add an GPMC node for OMAP3 Javier Martinez Canillas
2013-02-09 20:44 ` [PATCH RFC 7/7] ARM: dts: omap3-igep0020: Add SMSC911x LAN chip support Javier Martinez Canillas
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=1360442671-15216-4-git-send-email-javier.martinez@collabora.co.uk \
--to=javier.martinez@collabora.co.uk \
--cc=b-cousson@ti.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=eballetbo@gmail.com \
--cc=ezequiel.garcia@free-electrons.com \
--cc=gregkh@linuxfoundation.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=tony@atomide.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).