pinctrl: mvebu: armada-38x: fix PCIe functions
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 9 Jun 2015 16:46:53 +0000 (18:46 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 10 Jun 2015 08:50:36 +0000 (10:50 +0200)
A new revision of the Marvell Armada 38x hardware datasheet unveiled
that the definition of some of the PCIe functions were not
correct. This commit fixes the pinctrl driver accordingly.

Some PCIe functions simply do not exist, some of the PCIe functions in
fact were corresponding to other functions, and some PCIe functions
have been added.

Note: the seemingly unrelated removal of spi(cs2) on MPP47 is related:
this function is in fact implemented on MPP43, instead of a PCIe
function.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: <stable@vger.kernel.org> # v3.15+
Fixes: ca6d9a084b56f ("pinctrl: mvebu: add pin-muxing driver for the Marvell Armada 380/385")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt
drivers/pinctrl/mvebu/pinctrl-armada-38x.c

index b17c96849fc9e11530ced6648f2c75581981a78e..4ac138aaaf8794f23a87c8dc3f41fc5784c34f42 100644 (file)
@@ -27,15 +27,15 @@ mpp8          8        gpio, ge0(txd1), dev(ad10)
 mpp9          9        gpio, ge0(txd2), dev(ad11)
 mpp10         10       gpio, ge0(txd3), dev(ad12)
 mpp11         11       gpio, ge0(txctl), dev(ad13)
-mpp12         12       gpio, ge0(rxd0), pcie0(rstout), pcie1(rstout) [1], spi0(cs1), dev(ad14)
-mpp13         13       gpio, ge0(rxd1), pcie0(clkreq), pcie1(clkreq) [1], spi0(cs2), dev(ad15)
-mpp14         14       gpio, ge0(rxd2), ptp(clk), m(vtt_ctrl), spi0(cs3), dev(wen1)
-mpp15         15       gpio, ge0(rxd3), ge(mdc slave), pcie0(rstout), spi0(mosi), pcie1(rstout) [1]
-mpp16         16       gpio, ge0(rxctl), ge(mdio slave), m(decc_err), spi0(miso), pcie0(clkreq)
+mpp12         12       gpio, ge0(rxd0), pcie0(rstout), spi0(cs1), dev(ad14), pcie3(clkreq)
+mpp13         13       gpio, ge0(rxd1), pcie0(clkreq), pcie1(clkreq) [1], spi0(cs2), dev(ad15), pcie2(clkreq)
+mpp14         14       gpio, ge0(rxd2), ptp(clk), m(vtt_ctrl), spi0(cs3), dev(wen1), pcie3(clkreq)
+mpp15         15       gpio, ge0(rxd3), ge(mdc slave), pcie0(rstout), spi0(mosi)
+mpp16         16       gpio, ge0(rxctl), ge(mdio slave), m(decc_err), spi0(miso), pcie0(clkreq), pcie1(clkreq) [1]
 mpp17         17       gpio, ge0(rxclk), ptp(clk), ua1(rxd), spi0(sck), sata1(prsnt)
-mpp18         18       gpio, ge0(rxerr), ptp(trig_gen), ua1(txd), spi0(cs0), pcie1(rstout) [1]
-mpp19         19       gpio, ge0(col), ptp(event_req), pcie0(clkreq), sata1(prsnt), ua0(cts)
-mpp20         20       gpio, ge0(txclk), ptp(clk), pcie1(rstout) [1], sata0(prsnt), ua0(rts)
+mpp18         18       gpio, ge0(rxerr), ptp(trig_gen), ua1(txd), spi0(cs0)
+mpp19         19       gpio, ge0(col), ptp(event_req), ge0(txerr), sata1(prsnt), ua0(cts)
+mpp20         20       gpio, ge0(txclk), ptp(clk), sata0(prsnt), ua0(rts)
 mpp21         21       gpio, spi0(cs1), ge1(rxd0), sata0(prsnt), sd0(cmd), dev(bootcs)
 mpp22         22       gpio, spi0(mosi), dev(ad0)
 mpp23         23       gpio, spi0(sck), dev(ad2)
@@ -58,23 +58,23 @@ mpp39         39       gpio, i2c1(sck), ge1(rxd2), ua0(cts), sd0(d1), dev(a2)
 mpp40         40       gpio, i2c1(sda), ge1(rxd3), ua0(rts), sd0(d2), dev(ad6)
 mpp41         41       gpio, ua1(rxd), ge1(rxctl), ua0(cts), spi1(cs3), dev(burst/last)
 mpp42         42       gpio, ua1(txd), ua0(rts), dev(ad7)
-mpp43         43       gpio, pcie0(clkreq), m(vtt_ctrl), m(decc_err), pcie0(rstout), dev(clkout)
-mpp44         44       gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [3], pcie0(rstout)
-mpp45         45       gpio, ref(clk_out0), pcie0(rstout), pcie1(rstout) [1], pcie2(rstout), pcie3(rstout)
-mpp46         46       gpio, ref(clk_out1), pcie0(rstout), pcie1(rstout) [1], pcie2(rstout), pcie3(rstout)
-mpp47         47       gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], spi1(cs2), sata3(prsnt) [2]
-mpp48         48       gpio, sata0(prsnt), m(vtt_ctrl), tdm2c(pclk), audio(mclk), sd0(d4)
-mpp49         49       gpio, sata2(prsnt) [2], sata3(prsnt) [2], tdm2c(fsync), audio(lrclk), sd0(d5)
-mpp50         50       gpio, pcie0(rstout), pcie1(rstout) [1], tdm2c(drx), audio(extclk), sd0(cmd)
+mpp43         43       gpio, pcie0(clkreq), m(vtt_ctrl), m(decc_err), spi1(cs2), dev(clkout)
+mpp44         44       gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [3]
+mpp45         45       gpio, ref(clk_out0), pcie0(rstout)
+mpp46         46       gpio, ref(clk_out1), pcie0(rstout)
+mpp47         47       gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [2]
+mpp48         48       gpio, sata0(prsnt), m(vtt_ctrl), tdm2c(pclk), audio(mclk), sd0(d4), pcie0(clkreq)
+mpp49         49       gpio, sata2(prsnt) [2], sata3(prsnt) [2], tdm2c(fsync), audio(lrclk), sd0(d5), pcie1(clkreq)
+mpp50         50       gpio, pcie0(rstout), tdm2c(drx), audio(extclk), sd0(cmd)
 mpp51         51       gpio, tdm2c(dtx), audio(sdo), m(decc_err)
-mpp52         52       gpio, pcie0(rstout), pcie1(rstout) [1], tdm2c(intn), audio(sdi), sd0(d6)
+mpp52         52       gpio, pcie0(rstout), tdm2c(intn), audio(sdi), sd0(d6)
 mpp53         53       gpio, sata1(prsnt), sata0(prsnt), tdm2c(rstn), audio(bclk), sd0(d7)
-mpp54         54       gpio, sata0(prsnt), sata1(prsnt), pcie0(rstout), pcie1(rstout) [1], sd0(d3)
+mpp54         54       gpio, sata0(prsnt), sata1(prsnt), pcie0(rstout), ge0(txerr), sd0(d3)
 mpp55         55       gpio, ua1(cts), ge(mdio), pcie1(clkreq) [1], spi1(cs1), sd0(d0)
 mpp56         56       gpio, ua1(rts), ge(mdc), m(decc_err), spi1(mosi)
 mpp57         57       gpio, spi1(sck), sd0(clk)
 mpp58         58       gpio, pcie1(clkreq) [1], i2c1(sck), pcie2(clkreq), spi1(miso), sd0(d1)
-mpp59         59       gpio, pcie0(rstout), i2c1(sda), pcie1(rstout) [1], spi1(cs0), sd0(d2)
+mpp59         59       gpio, pcie0(rstout), i2c1(sda), spi1(cs0), sd0(d2)
 
 [1]: only available on 88F6820 and 88F6828
 [2]: only available on 88F6828
index 83bbcc72be1f8ae582f056dfe02768516dc17ec1..11656c7cfab0ec30eec15641ee7990dba165d676 100644 (file)
@@ -94,37 +94,39 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = {
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ge0",   "rxd0",       V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "pcie0", "rstout",     V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(3, "pcie1", "rstout",     V_88F6820_PLUS),
                 MPP_VAR_FUNCTION(4, "spi0",  "cs1",        V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "dev",   "ad14",       V_88F6810_PLUS)),
+                MPP_VAR_FUNCTION(5, "dev",   "ad14",       V_88F6810_PLUS),
+                MPP_VAR_FUNCTION(6, "pcie3", "clkreq",     V_88F6810_PLUS)),
        MPP_MODE(13,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ge0",   "rxd1",       V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "pcie0", "clkreq",     V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "pcie1", "clkreq",     V_88F6820_PLUS),
                 MPP_VAR_FUNCTION(4, "spi0",  "cs2",        V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "dev",   "ad15",       V_88F6810_PLUS)),
+                MPP_VAR_FUNCTION(5, "dev",   "ad15",       V_88F6810_PLUS),
+                MPP_VAR_FUNCTION(6, "pcie2", "clkreq",     V_88F6810_PLUS)),
        MPP_MODE(14,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ge0",   "rxd2",       V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "ptp",   "clk",        V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "m",     "vtt_ctrl",   V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(4, "spi0",  "cs3",        V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "dev",   "wen1",       V_88F6810_PLUS)),
+                MPP_VAR_FUNCTION(5, "dev",   "wen1",       V_88F6810_PLUS),
+                MPP_VAR_FUNCTION(6, "pcie3", "clkreq",     V_88F6810_PLUS)),
        MPP_MODE(15,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ge0",   "rxd3",       V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "ge",    "mdc slave",  V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "pcie0", "rstout",     V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(4, "spi0",  "mosi",       V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "pcie1", "rstout",     V_88F6820_PLUS)),
+                MPP_VAR_FUNCTION(4, "spi0",  "mosi",       V_88F6810_PLUS)),
        MPP_MODE(16,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ge0",   "rxctl",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "ge",    "mdio slave", V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "m",     "decc_err",   V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(4, "spi0",  "miso",       V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "pcie0", "clkreq",     V_88F6810_PLUS)),
+                MPP_VAR_FUNCTION(5, "pcie0", "clkreq",     V_88F6810_PLUS),
+                MPP_VAR_FUNCTION(6, "pcie1", "clkreq",     V_88F6820_PLUS)),
        MPP_MODE(17,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ge0",   "rxclk",      V_88F6810_PLUS),
@@ -137,13 +139,12 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = {
                 MPP_VAR_FUNCTION(1, "ge0",   "rxerr",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "ptp",   "trig_gen",   V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "ua1",   "txd",        V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(4, "spi0",  "cs0",        V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "pcie1", "rstout",     V_88F6820_PLUS)),
+                MPP_VAR_FUNCTION(4, "spi0",  "cs0",        V_88F6810_PLUS)),
        MPP_MODE(19,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ge0",   "col",        V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "ptp",   "event_req",  V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(3, "pcie0", "clkreq",     V_88F6810_PLUS),
+                MPP_VAR_FUNCTION(3, "ge0",   "txerr",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(4, "sata1", "prsnt",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(5, "ua0",   "cts",        V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(6, "ua1",   "rxd",        V_88F6810_PLUS)),
@@ -151,7 +152,6 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = {
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ge0",   "txclk",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "ptp",   "clk",        V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(3, "pcie1", "rstout",     V_88F6820_PLUS),
                 MPP_VAR_FUNCTION(4, "sata0", "prsnt",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(5, "ua0",   "rts",        V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(6, "ua1",   "txd",        V_88F6810_PLUS)),
@@ -277,35 +277,27 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = {
                 MPP_VAR_FUNCTION(1, "pcie0", "clkreq",     V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "m",     "vtt_ctrl",   V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "m",     "decc_err",   V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(4, "pcie0", "rstout",     V_88F6810_PLUS),
+                MPP_VAR_FUNCTION(4, "spi1",  "cs2",        V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(5, "dev",   "clkout",     V_88F6810_PLUS)),
        MPP_MODE(44,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "sata0", "prsnt",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "sata1", "prsnt",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "sata2", "prsnt",      V_88F6828),
-                MPP_VAR_FUNCTION(4, "sata3", "prsnt",      V_88F6828),
-                MPP_VAR_FUNCTION(5, "pcie0", "rstout",     V_88F6810_PLUS)),
+                MPP_VAR_FUNCTION(4, "sata3", "prsnt",      V_88F6828)),
        MPP_MODE(45,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ref",   "clk_out0",   V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(2, "pcie0", "rstout",     V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(3, "pcie1", "rstout",     V_88F6820_PLUS),
-                MPP_VAR_FUNCTION(4, "pcie2", "rstout",     V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "pcie3", "rstout",     V_88F6810_PLUS)),
+                MPP_VAR_FUNCTION(2, "pcie0", "rstout",     V_88F6810_PLUS)),
        MPP_MODE(46,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "ref",   "clk_out1",   V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(2, "pcie0", "rstout",     V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(3, "pcie1", "rstout",     V_88F6820_PLUS),
-                MPP_VAR_FUNCTION(4, "pcie2", "rstout",     V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "pcie3", "rstout",     V_88F6810_PLUS)),
+                MPP_VAR_FUNCTION(2, "pcie0", "rstout",     V_88F6810_PLUS)),
        MPP_MODE(47,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "sata0", "prsnt",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "sata1", "prsnt",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "sata2", "prsnt",      V_88F6828),
-                MPP_VAR_FUNCTION(4, "spi1",  "cs2",        V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(5, "sata3", "prsnt",      V_88F6828)),
        MPP_MODE(48,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
@@ -313,18 +305,19 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = {
                 MPP_VAR_FUNCTION(2, "m",     "vtt_ctrl",   V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "tdm2c", "pclk",       V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(4, "audio", "mclk",       V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "sd0",   "d4",         V_88F6810_PLUS)),
+                MPP_VAR_FUNCTION(5, "sd0",   "d4",         V_88F6810_PLUS),
+                MPP_VAR_FUNCTION(6, "pcie0", "clkreq",     V_88F6810_PLUS)),
        MPP_MODE(49,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "sata2", "prsnt",      V_88F6828),
                 MPP_VAR_FUNCTION(2, "sata3", "prsnt",      V_88F6828),
                 MPP_VAR_FUNCTION(3, "tdm2c", "fsync",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(4, "audio", "lrclk",      V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(5, "sd0",   "d5",         V_88F6810_PLUS)),
+                MPP_VAR_FUNCTION(5, "sd0",   "d5",         V_88F6810_PLUS),
+                MPP_VAR_FUNCTION(6, "pcie1", "clkreq",     V_88F6820_PLUS)),
        MPP_MODE(50,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "pcie0", "rstout",     V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(2, "pcie1", "rstout",     V_88F6820_PLUS),
                 MPP_VAR_FUNCTION(3, "tdm2c", "drx",        V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(4, "audio", "extclk",     V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(5, "sd0",   "cmd",        V_88F6810_PLUS)),
@@ -336,7 +329,6 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = {
        MPP_MODE(52,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "pcie0", "rstout",     V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(2, "pcie1", "rstout",     V_88F6820_PLUS),
                 MPP_VAR_FUNCTION(3, "tdm2c", "intn",       V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(4, "audio", "sdi",        V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(5, "sd0",   "d6",         V_88F6810_PLUS)),
@@ -352,7 +344,7 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = {
                 MPP_VAR_FUNCTION(1, "sata0", "prsnt",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "sata1", "prsnt",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(3, "pcie0", "rstout",     V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(4, "pcie1", "rstout",     V_88F6820_PLUS),
+                MPP_VAR_FUNCTION(4, "ge0",   "txerr",      V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(5, "sd0",   "d3",         V_88F6810_PLUS)),
        MPP_MODE(55,
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
@@ -382,7 +374,6 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = {
                 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(1, "pcie0", "rstout",     V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(2, "i2c1",  "sda",        V_88F6810_PLUS),
-                MPP_VAR_FUNCTION(3, "pcie1", "rstout",     V_88F6820_PLUS),
                 MPP_VAR_FUNCTION(4, "spi1",  "cs0",        V_88F6810_PLUS),
                 MPP_VAR_FUNCTION(5, "sd0",   "d2",         V_88F6810_PLUS)),
 };