From: Maxime Ripard <hidden> Date: 2012-06-22 09:14:52
Hi everyone,
This is the second version for the initial support for the
Crystalfontz CFA-10036 module.
The module basically has a iMX28 SoC, plus a micro-SD slot, 3 pins to
access the DUART, a USB OTG port, a OLED screen using the Solomon
SSD1307 controller over I2C and a 200-pins SODIMM port to plug an
expansion board.
Support for this board and the additional devices will come
eventually.
For now, only the DUART and the MMC controller are used.
What changed from v1:
* MMC now works thanks to Shawn Guo
* Removed the board file
* Moved alternate muxing options for the imx28 to the DTSI
Thanks,
Maxime
... and have the new mux option for duart like
duart_pins_b: duart at 1 {
reg = <1>;
then, pinctrl system will be able to report there are 2 pin groups for
function "duart" in debugfs.
Regards,
Shawn
I would like to maintain a explicit list of in-tree boards that imx28
DT machine supports, so please have the compatible string added into
imx28_dt_compat.
Regards,
Shawn
From: Thomas Petazzoni <hidden> Date: 2012-06-26 09:02:02
Hello Shawn,
Le Mon, 25 Jun 2012 23:50:49 +0800,
Shawn Guo [off-list ref] a ?crit :
then, pinctrl system will be able to report there are 2 pin groups for
function "duart" in debugfs.
Ah nice, this explains why the mxs pinctrl driver creates a separate
group for each pinctrl DT subnode, but only creates a new function when
the name changes.
However, how would the mxs pinctrl driver handle the following case:
pinctrl {
duart_pins_a: duart at 0 {
...
}
something_pins: something at 0 {
...
}
duart_pins_b: duart at 1 {
...
}
}
Reading the driver code, I have the feeling that the logic that creates
the functions will only work if the different groups for a given
function are given as consecutive subnodes in the DT. Is this correct?
Regards,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
... and have the new mux option for duart like
duart_pins_b: duart at 1 {
reg = <1>;
then, pinctrl system will be able to report there are 2 pin groups for
function "duart" in debugfs.
Ok.
I have two questions here though.
First, I'm worrying a bit about the fact that the duart_pins_b is
actually the first pin groups in the muxing selection register by index,
before duart_pins_a. It's a bit confusing, but it would imply that we
would need to rename duart_pins_a to duart_pins_b, and change all the
references to it as well, but I can definitely send a patch for it. What
is your opinion ?
Secondly, why do we need to change the reg field as well ?
Thanks,
Maxime
--
Maxime Ripard, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
On Tue, Jun 26, 2012 at 11:02:02AM +0200, Thomas Petazzoni wrote:
Hello Shawn,
Le Mon, 25 Jun 2012 23:50:49 +0800,
Shawn Guo [off-list ref] a ?crit :
quoted
then, pinctrl system will be able to report there are 2 pin groups for
function "duart" in debugfs.
Ah nice, this explains why the mxs pinctrl driver creates a separate
group for each pinctrl DT subnode, but only creates a new function when
the name changes.
However, how would the mxs pinctrl driver handle the following case:
pinctrl {
duart_pins_a: duart at 0 {
...
}
something_pins: something at 0 {
...
}
duart_pins_b: duart at 1 {
...
}
}
Reading the driver code, I have the feeling that the logic that creates
the functions will only work if the different groups for a given
function are given as consecutive subnodes in the DT. Is this correct?
That's correct. We really need to put the pin groups for the same
function together and have then sorted in "reg" value.
--
Regards,
Shawn
On Tue, Jun 26, 2012 at 11:42:44AM +0200, Maxime Ripard wrote:
I have two questions here though.
First, I'm worrying a bit about the fact that the duart_pins_b is
actually the first pin groups in the muxing selection register by index,
before duart_pins_a. It's a bit confusing, but it would imply that we
would need to rename duart_pins_a to duart_pins_b, and change all the
references to it as well, but I can definitely send a patch for it. What
is your opinion ?
The numbering of mux options for a function is not meant to match the
register index in any case. Actually, it's no way to match. For
example, if pin pair <0x3102 0x3032> is used on one board, how would
you number it? (Well, the example is odd but it's possible.)
Secondly, why do we need to change the reg field as well ?
We need to use the same node name "duart" for pin groups that are
mux-ed on duart function. "reg" value is used to distinguish the node
name, as the "reg" value is required to be part of node name.
--
Regards,
Shawn