From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/3] pinctrl: imx: move hard-coding data into device tree
Date: Wed, 20 Feb 2013 12:04:58 -0700 [thread overview]
Message-ID: <51251E5A.1080806@wwwdotorg.org> (raw)
In-Reply-To: <1361344089-16804-4-git-send-email-shawn.guo@linaro.org>
On 02/20/2013 12:08 AM, Shawn Guo wrote:
> Currently, all imx pinctrl drivers maintain a big array of struct
> imx_pin_reg which hard-codes data like register offset and mux mode
> setting for each pin function. Every time a new imx SoC support is
> added, we need to add such a big mount of data. With moving to single
> kernel build, it's only matter of time to be blamed on memory consuming.
>
> With DTC pre-processor support in place, the patch moves all these data
> into device tree by redefining the PIN_FUNC_ID in imxXX-pinfunc.h and
> changing the PIN_FUNC_ID parsing code a little bit.
There are a couple of potential issues with this patch, which I'm in two
minds about:
1)
This is an incompatible change to the DT binding definition. A DT
written to the old specification won't work with a newer kernel and
vice-versa. This isn't supposed to happen with device tree.
Right now I believe we're still being flexible about DT binding changes,
but I've seen hints that this kind of thing will start getting lots of
push-back in the near future...
That all said, I'd also love to change the Tegra pinctrl binding now
that we have CPP, since I could replace all the strings in the current
binding with integers and presumably save some space in the .dtb. Hence,
I'd love to maintain the flexibility to keep changing the .dts and
kernel code in lock-step.
2)
This patch removes a bunch of tables from the kernel. I like having the
tables in the kernel, since in theory it could allow a future debugfs or
sysfs interface to pinctrl that allows manipulation of the pinctrl HW
state at a semantic level. This is only possible if the DT binding
includes details such as "set this pin to this function", and the driver
includes the tables to convert that into details such as register
address and value. I don't think such an "API" could be implemented for
IMX after this patch. Still, given the IMX binding already merged "pin"
and "function" into a single integer in the binding, I'm not sure if IMX
could support that kind of "API" before anyway?
This is part of the reason I pushed hard for the pinctrl APIs to operate
at the semantic pin/group/function level, and that Tegra's pinctrl
drivers explicitly have tables listing all the pins/groups/functions,
rather than just putting a bunch of register values into the DT.
I'm not sure how much of an issue this is, though. LinusW and/or the DT
maintainers should probably chime in here.
I didn't actually read the driver implementation changes in this patch.
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
To: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: "Rob Herring"
<rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
"Uwe Kleine-König"
<u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
"Dong Aisheng"
<dong.aisheng-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
devicetree-discuss
<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 3/3] pinctrl: imx: move hard-coding data into device tree
Date: Wed, 20 Feb 2013 12:04:58 -0700 [thread overview]
Message-ID: <51251E5A.1080806@wwwdotorg.org> (raw)
In-Reply-To: <1361344089-16804-4-git-send-email-shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
On 02/20/2013 12:08 AM, Shawn Guo wrote:
> Currently, all imx pinctrl drivers maintain a big array of struct
> imx_pin_reg which hard-codes data like register offset and mux mode
> setting for each pin function. Every time a new imx SoC support is
> added, we need to add such a big mount of data. With moving to single
> kernel build, it's only matter of time to be blamed on memory consuming.
>
> With DTC pre-processor support in place, the patch moves all these data
> into device tree by redefining the PIN_FUNC_ID in imxXX-pinfunc.h and
> changing the PIN_FUNC_ID parsing code a little bit.
There are a couple of potential issues with this patch, which I'm in two
minds about:
1)
This is an incompatible change to the DT binding definition. A DT
written to the old specification won't work with a newer kernel and
vice-versa. This isn't supposed to happen with device tree.
Right now I believe we're still being flexible about DT binding changes,
but I've seen hints that this kind of thing will start getting lots of
push-back in the near future...
That all said, I'd also love to change the Tegra pinctrl binding now
that we have CPP, since I could replace all the strings in the current
binding with integers and presumably save some space in the .dtb. Hence,
I'd love to maintain the flexibility to keep changing the .dts and
kernel code in lock-step.
2)
This patch removes a bunch of tables from the kernel. I like having the
tables in the kernel, since in theory it could allow a future debugfs or
sysfs interface to pinctrl that allows manipulation of the pinctrl HW
state at a semantic level. This is only possible if the DT binding
includes details such as "set this pin to this function", and the driver
includes the tables to convert that into details such as register
address and value. I don't think such an "API" could be implemented for
IMX after this patch. Still, given the IMX binding already merged "pin"
and "function" into a single integer in the binding, I'm not sure if IMX
could support that kind of "API" before anyway?
This is part of the reason I pushed hard for the pinctrl APIs to operate
at the semantic pin/group/function level, and that Tegra's pinctrl
drivers explicitly have tables listing all the pins/groups/functions,
rather than just putting a bunch of register values into the DT.
I'm not sure how much of an issue this is, though. LinusW and/or the DT
maintainers should probably chime in here.
I didn't actually read the driver implementation changes in this patch.
next prev parent reply other threads:[~2013-02-20 19:04 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-20 7:08 [PATCH 0/3] Get rid of big array from imx pinctrl driver Shawn Guo
2013-02-20 7:08 ` [PATCH 1/3] ARM: dts: imx: use pre-processor for device trees Shawn Guo
2013-02-20 9:26 ` Dong Aisheng
2013-02-20 9:25 ` [PATCH 0/3] Get rid of big array from imx pinctrl driver Dong Aisheng
[not found] ` <1361344089-16804-3-git-send-email-shawn.guo@linaro.org>
2013-02-20 9:30 ` [PATCH 2/3] ARM: dts: imx: replace magic number with pin function name Dong Aisheng
2013-02-20 18:46 ` Stephen Warren
2013-02-20 18:46 ` Stephen Warren
2013-02-21 0:03 ` Matt Sealey
2013-02-21 0:03 ` Matt Sealey
2013-02-21 0:34 ` Stephen Warren
2013-02-21 0:34 ` Stephen Warren
2013-02-21 5:02 ` Shawn Guo
2013-02-21 5:02 ` Shawn Guo
2013-02-21 17:36 ` Matt Sealey
2013-02-21 17:36 ` Matt Sealey
2013-02-21 17:57 ` Matt Sealey
2013-02-21 17:57 ` Matt Sealey
2013-02-21 21:43 ` Sascha Hauer
2013-02-21 21:43 ` Sascha Hauer
2013-02-22 7:58 ` Shawn Guo
2013-02-22 7:58 ` Shawn Guo
2013-02-22 5:52 ` Shawn Guo
2013-02-22 5:52 ` Shawn Guo
2013-02-22 7:27 ` Sascha Hauer
2013-02-22 7:27 ` Sascha Hauer
2013-02-22 7:36 ` Shawn Guo
2013-02-22 7:36 ` Shawn Guo
2013-02-22 8:12 ` Sascha Hauer
2013-02-22 8:12 ` Sascha Hauer
2013-02-27 6:51 ` Matt Sealey
2013-02-27 6:51 ` Matt Sealey
2013-02-27 7:44 ` Sascha Hauer
2013-02-27 7:44 ` Sascha Hauer
2013-02-27 18:16 ` Matt Sealey
2013-02-27 18:16 ` Matt Sealey
2013-02-27 20:00 ` Sascha Hauer
2013-02-27 20:00 ` Sascha Hauer
2013-02-28 3:06 ` Shawn Guo
2013-02-28 3:06 ` Shawn Guo
2013-02-21 4:59 ` Shawn Guo
2013-02-21 4:59 ` Shawn Guo
[not found] ` <1361344089-16804-4-git-send-email-shawn.guo@linaro.org>
2013-02-20 9:44 ` [PATCH 3/3] pinctrl: imx: move hard-coding data into device tree Dong Aisheng
2013-02-21 6:04 ` Shawn Guo
2013-02-20 19:04 ` Stephen Warren [this message]
2013-02-20 19:04 ` Stephen Warren
2013-02-21 5:30 ` Shawn Guo
2013-02-21 5:30 ` Shawn Guo
2013-02-21 7:55 ` Sascha Hauer
2013-02-21 7:55 ` Sascha Hauer
2013-02-21 9:36 ` Dong Aisheng
2013-02-21 9:36 ` Dong Aisheng
2013-02-21 19:57 ` Stephen Warren
2013-02-21 19:57 ` Stephen Warren
2013-02-26 8:02 ` Dong Aisheng
2013-02-26 8:02 ` Dong Aisheng
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=51251E5A.1080806@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=linux-arm-kernel@lists.infradead.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.