From: Sean Anderson <sean.anderson@linux.dev>
To: Michal Simek <michal.simek@amd.com>,
"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>
Cc: Linus Walleij <linus.walleij@linaro.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: pinctrl: zynqmp: Valid pin muxings cannot be configured
Date: Tue, 23 Apr 2024 19:04:59 -0400 [thread overview]
Message-ID: <5bb0dc7e-4c89-4f3d-abc6-41ae9ded5ae9@linux.dev> (raw)
Hi Michal,
I was looking to upstream one of our ZynqMP boards, and I ran into an
issue with the pinmuxing. We use almost all of the I/Os, so everything
is tightly packed into the MIO. For example, we have the QSPI on MIO0 to
MIO5, and MIO6 to MIO11 are used for SPI1. However, I cannot select this
configuration using the pinmux driver. I am using the following
configuration:
pinctrl_qspi_default: qspi-default {
mux {
groups = "qspi0_0_grp";
function = "qspi0";
};
mux-cs {
groups = "qspi_ss_0_grp";
function = "qspi_ss";
};
};
pinctrl_spi1_default: spi1-default {
mux {
groups = "spi1_0_grp";
function = "spi1";
};
mux-cs {
groups = "spi1_ss_0_grp", "spi1_ss_1_grp";
function = "spi1_ss";
};
};
But I get the following errors on boot:
[ 4.261739] zynqmp-pinctrl firmware:zynqmp-firmware:pinctrl: pin MIO8 already requested by ff050000.spi; cannot claim for ff0f0000.spi
[ 4.274506] zynqmp-pinctrl firmware:zynqmp-firmware:pinctrl: error -EINVAL: pin-8 (ff0f0000.spi)
[ 4.283789] zynqmp-pinctrl firmware:zynqmp-firmware:pinctrl: error -EINVAL: could not request pin 8 (MIO8) from group qspi0_0_grp on device zynqmp_pinctrl
This is because the qspi0_0_grp and spi1_0_grp groups overlap:
group: qspi0_0_grp
pin 0 (MIO0)
pin 1 (MIO1)
pin 2 (MIO2)
pin 3 (MIO3)
pin 4 (MIO4)
pin 8 (MIO8)
pin 9 (MIO9)
pin 10 (MIO10)
pin 11 (MIO11)
pin 12 (MIO12)
group: qspi_ss_0_grp
pin 5 (MIO5)
pin 7 (MIO7)
group: qspi_fbclk_0_grp
pin 6 (MIO6)
group: spi1_0_grp
pin 6 (MIO6)
pin 10 (MIO10)
pin 11 (MIO11)
group: spi1_ss_0_grp
pin 9 (MIO9)
group: spi1_ss_1_grp
pin 8 (MIO8)
group: spi1_ss_2_grp
pin 7 (MIO7)
However, we are not using the "upper" pins of the QSPI device.
Therefore, these pins should not be included in the qspi0_0_grp. This
stems from the driver placing all possible pins into a function's group,
even though each pin can be muxed individially and it is not necessary
to mux all pins for full functionality.
I think it would be better to have a single group for each pin:
pinctrl_qspi_default: qspi-default {
mux {
groups = "mio0", "mio1", "mio2", "mio3", "mio4";
function = "qspi0";
};
mux-cs {
groups = "mio5";
function = "qspi_ss";
};
};
pinctrl_spi1_default: spi1-default {
mux {
groups = "mio6", "mio10", "mio11";
function = "spi1";
};
mux-cs {
groups = "mio8", "mio9";
function = "spi1_ss";
};
};
This allows the full functionality of this chip to be configured. Does
that sound good? I can send a patch to this effect if you agree.
--Sean
next reply other threads:[~2024-04-23 23:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-23 23:04 Sean Anderson [this message]
2024-04-24 6:22 ` pinctrl: zynqmp: Valid pin muxings cannot be configured Michal Simek
2024-04-25 15:22 ` Sean Anderson
2024-04-26 5:58 ` Michal Simek
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=5bb0dc7e-4c89-4f3d-abc6-41ae9ded5ae9@linux.dev \
--to=sean.anderson@linux.dev \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michal.simek@amd.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 read-only IMAP folder(s) and NNTP newsgroup(s).