From: Magnus Damm <magnus.damm@gmail.com>
To: linux-sh@vger.kernel.org
Subject: [PATCH/RFC] ARM: shmobile: Koelsch DT serial integration prototype
Date: Mon, 21 Apr 2014 01:31:14 +0000 [thread overview]
Message-ID: <20140421013114.3236.90868.sendpatchset@w520> (raw)
From: Magnus Damm <damm@opensource.se>
A simple serial port integration prototype that happens to
target Koelsch. Written to propose how to move one step closer
to integrate DT support for serial ports on mach-shmobile.
This patch handles all 3 cases of C-code less DT board support
and the older board support with C code which includes both legacy
and DT reference. The "enabling of serial DT devices in the board DTS"
and "requiring serial DT devices at boot" are disconnected in this
patch - only the former is implemented. The latter is best handled
when C board code is phased out in my opinion.
To handle serial ports described in DT this patch does two things:
1) It enables serial ports in the board specific DTS
-> Nothing special here, except perhaps the preserved device order
2) It extends the existing platform device registration code
-> When the existing C board code calls to add serial platform devices
then we check if DT platform devices exist in the DTB. If so then
we disable the serial DT devices and stick with platform devices.
The combination of 1) and 2) allows us to use the same DTB regardless
if C board code is compiled in or not. Also migration becomes easy
and forgiving, if for instance the user only updates the kernel and
uses the old DTB then the board code will keep on working even though
serial devices may not be present in the DTS.
The patch simply postpones the entire "which serial port minor device
shall we use" issue and simply uses the same device as the existing
board code. If we want to reorder the serial ports then we can do that
as an incremental step afterwards - after board code written in C
has been removed. Not reordering has the benefit that it reduces
complexity and allows us to keep the kernel command line in the
board DTS as-is.
Needs to be beaten into better shape and made generic enough to support
all mach-shmobile board code.
Not signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
Written on top of renesas-devel-v3.15-rc1-20140414v2
arch/arm/boot/dts/r8a7791-koelsch.dts | 21 ++++++++++++++++++++-
arch/arm/mach-shmobile/setup-r8a7791.c | 27 ++++++++++++++++++++++++++-
2 files changed, 46 insertions(+), 2 deletions(-)
--- 0001/arch/arm/boot/dts/r8a7791-koelsch.dts
+++ work/arch/arm/boot/dts/r8a7791-koelsch.dts 2014-04-17 17:02:42.000000000 +0900
@@ -19,6 +19,11 @@
model = "Koelsch";
compatible = "renesas,koelsch", "renesas,r8a7791";
+ aliases {
+ serial6 = &scif0;
+ serial7 = &scif1;
+ };
+
chosen {
bootargs = "console=ttySC6,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp";
};
@@ -230,7 +235,7 @@
};
&pfc {
- pinctrl-0 = <&du_pins &scif0_pins &scif1_pins>;
+ pinctrl-0 = <&du_pins>;
pinctrl-names = "default";
i2c2_pins: i2c2 {
@@ -342,6 +347,20 @@
status = "okay";
};
+&scif0 {
+ pinctrl-0 = <&scif0_pins>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&scif1 {
+ pinctrl-0 = <&scif1_pins>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
&qspi {
pinctrl-0 = <&qspi_pins>;
pinctrl-names = "default";
--- 0001/arch/arm/mach-shmobile/setup-r8a7791.c
+++ work/arch/arm/mach-shmobile/setup-r8a7791.c 2014-04-17 16:32:32.000000000 +0900
@@ -94,7 +94,9 @@ static struct plat_sci_port scif##index#
static struct resource scif##index##_resources[] = { \
DEFINE_RES_MEM(baseaddr, 0x100), \
DEFINE_RES_IRQ(irq), \
-}
+}; \
+ \
+static struct property scif##index##_property
#define R8A7791_SCIF(index, baseaddr, irq) \
__R8A7791_SCIF(PORT_SCIF, index, baseaddr, irq)
@@ -121,7 +123,30 @@ R8A7791_SCIFA(12, 0xe6c70000, gic_spi(29
R8A7791_SCIFA(13, 0xe6c78000, gic_spi(30)); /* SCIFA4 */
R8A7791_SCIFA(14, 0xe6c80000, gic_spi(31)); /* SCIFA5 */
+static void serial_disable_dt(struct resource *res, struct property *prop)
+{
+ struct device_node *np;
+ char str[17];
+ char *disabled = "disabled";
+
+ snprintf(str, ARRAY_SIZE(str), "/serial@%08x",
+ (unsigned int)res->start);
+
+ np = of_find_node_by_path(str);
+ if (np) {
+ if (of_device_is_available(np)) {
+ prop->name = "status";
+ prop->length = strlen(disabled) + 1;
+ prop->value = disabled;
+ of_update_property(np, prop);
+ printk("xxx disabled %s\n", str);
+ }
+ of_node_put(np);
+ }
+}
+
#define r8a7791_register_scif(index) \
+ serial_disable_dt(scif##index##_resources, &scif##index##_property); \
platform_device_register_resndata(&platform_bus, "sh-sci", index, \
scif##index##_resources, \
ARRAY_SIZE(scif##index##_resources), \
next reply other threads:[~2014-04-21 1:31 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-21 1:31 Magnus Damm [this message]
2014-04-21 8:56 ` [PATCH/RFC] ARM: shmobile: Koelsch DT serial integration prototype Geert Uytterhoeven
2014-04-21 9:50 ` Laurent Pinchart
2014-04-21 10:22 ` Geert Uytterhoeven
2014-04-21 21:09 ` Laurent Pinchart
2014-04-21 21:26 ` Geert Uytterhoeven
2014-04-23 0:46 ` Simon Horman
2014-04-23 2:01 ` Magnus Damm
2014-04-23 2:07 ` Magnus Damm
2014-04-23 12:00 ` Laurent Pinchart
2014-04-23 12:22 ` Magnus Damm
2014-04-23 13:36 ` Magnus Damm
2014-04-23 22:18 ` Sergei Shtylyov
2014-04-24 0:49 ` Simon Horman
2014-04-24 5:45 ` Magnus Damm
2014-04-24 7:03 ` Geert Uytterhoeven
2014-04-24 18:48 ` Sergei Shtylyov
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=20140421013114.3236.90868.sendpatchset@w520 \
--to=magnus.damm@gmail.com \
--cc=linux-sh@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.