提交 f7c5b3d5 编写于 作者: V Vipul Kumar Samar 提交者: Linus Walleij

pinctrl: SPEAr1310: Separate out pci pins from pcie_sata pin group

SPEAr1310 has separate PCI and PCIe implementations which are not muxed with
each other. Presently they have been implemented as muxed together with SATA and
are represented wrongly in the software.

In reality only PCIe and SATA implementations are muxed with each other. This
patch separates out pci pins creating a new pingroup and function for pci.
Signed-off-by: NVipul Kumar Samar <vipulkumar.samar@st.com>
Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: NShiraz Hashim <shiraz.hashim@st.com>
Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
上级 82a2deb9
...@@ -1763,29 +1763,52 @@ static struct spear_function can1_function = { ...@@ -1763,29 +1763,52 @@ static struct spear_function can1_function = {
.ngroups = ARRAY_SIZE(can1_grps), .ngroups = ARRAY_SIZE(can1_grps),
}; };
/* Pad multiplexing for pci device */ /* Pad multiplexing for (ras-ip) pci device */
static const unsigned pci_sata_pins[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 18, static const unsigned pci_pins[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 }; 55, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 };
#define PCI_SATA_MUXREG \
{ \
.reg = PAD_FUNCTION_EN_0, \
.mask = PMX_MCI_DATA8_15_MASK, \
.val = 0, \
}, { \
.reg = PAD_FUNCTION_EN_1, \
.mask = PMX_PCI_REG1_MASK, \
.val = 0, \
}, { \
.reg = PAD_FUNCTION_EN_2, \
.mask = PMX_PCI_REG2_MASK, \
.val = 0, \
}
/* pad multiplexing for pcie0 device */ static struct spear_muxreg pci_muxreg[] = {
{
.reg = PAD_FUNCTION_EN_0,
.mask = PMX_MCI_DATA8_15_MASK,
.val = 0,
}, {
.reg = PAD_FUNCTION_EN_1,
.mask = PMX_PCI_REG1_MASK,
.val = 0,
}, {
.reg = PAD_FUNCTION_EN_2,
.mask = PMX_PCI_REG2_MASK,
.val = 0,
},
};
static struct spear_modemux pci_modemux[] = {
{
.muxregs = pci_muxreg,
.nmuxregs = ARRAY_SIZE(pci_muxreg),
},
};
static struct spear_pingroup pci_pingroup = {
.name = "pci_grp",
.pins = pci_pins,
.npins = ARRAY_SIZE(pci_pins),
.modemuxs = pci_modemux,
.nmodemuxs = ARRAY_SIZE(pci_modemux),
};
static const char *const pci_grps[] = { "pci_grp" };
static struct spear_function pci_function = {
.name = "pci",
.groups = pci_grps,
.ngroups = ARRAY_SIZE(pci_grps),
};
/* pad multiplexing for (fix-part) pcie0 device */
static struct spear_muxreg pcie0_muxreg[] = { static struct spear_muxreg pcie0_muxreg[] = {
PCI_SATA_MUXREG,
{ {
.reg = PCIE_SATA_CFG, .reg = PCIE_SATA_CFG,
.mask = PCIE_CFG_VAL(0), .mask = PCIE_CFG_VAL(0),
...@@ -1802,15 +1825,12 @@ static struct spear_modemux pcie0_modemux[] = { ...@@ -1802,15 +1825,12 @@ static struct spear_modemux pcie0_modemux[] = {
static struct spear_pingroup pcie0_pingroup = { static struct spear_pingroup pcie0_pingroup = {
.name = "pcie0_grp", .name = "pcie0_grp",
.pins = pci_sata_pins,
.npins = ARRAY_SIZE(pci_sata_pins),
.modemuxs = pcie0_modemux, .modemuxs = pcie0_modemux,
.nmodemuxs = ARRAY_SIZE(pcie0_modemux), .nmodemuxs = ARRAY_SIZE(pcie0_modemux),
}; };
/* pad multiplexing for pcie1 device */ /* pad multiplexing for (fix-part) pcie1 device */
static struct spear_muxreg pcie1_muxreg[] = { static struct spear_muxreg pcie1_muxreg[] = {
PCI_SATA_MUXREG,
{ {
.reg = PCIE_SATA_CFG, .reg = PCIE_SATA_CFG,
.mask = PCIE_CFG_VAL(1), .mask = PCIE_CFG_VAL(1),
...@@ -1827,15 +1847,12 @@ static struct spear_modemux pcie1_modemux[] = { ...@@ -1827,15 +1847,12 @@ static struct spear_modemux pcie1_modemux[] = {
static struct spear_pingroup pcie1_pingroup = { static struct spear_pingroup pcie1_pingroup = {
.name = "pcie1_grp", .name = "pcie1_grp",
.pins = pci_sata_pins,
.npins = ARRAY_SIZE(pci_sata_pins),
.modemuxs = pcie1_modemux, .modemuxs = pcie1_modemux,
.nmodemuxs = ARRAY_SIZE(pcie1_modemux), .nmodemuxs = ARRAY_SIZE(pcie1_modemux),
}; };
/* pad multiplexing for pcie2 device */ /* pad multiplexing for (fix-part) pcie2 device */
static struct spear_muxreg pcie2_muxreg[] = { static struct spear_muxreg pcie2_muxreg[] = {
PCI_SATA_MUXREG,
{ {
.reg = PCIE_SATA_CFG, .reg = PCIE_SATA_CFG,
.mask = PCIE_CFG_VAL(2), .mask = PCIE_CFG_VAL(2),
...@@ -1852,22 +1869,20 @@ static struct spear_modemux pcie2_modemux[] = { ...@@ -1852,22 +1869,20 @@ static struct spear_modemux pcie2_modemux[] = {
static struct spear_pingroup pcie2_pingroup = { static struct spear_pingroup pcie2_pingroup = {
.name = "pcie2_grp", .name = "pcie2_grp",
.pins = pci_sata_pins,
.npins = ARRAY_SIZE(pci_sata_pins),
.modemuxs = pcie2_modemux, .modemuxs = pcie2_modemux,
.nmodemuxs = ARRAY_SIZE(pcie2_modemux), .nmodemuxs = ARRAY_SIZE(pcie2_modemux),
}; };
static const char *const pci_grps[] = { "pcie0_grp", "pcie1_grp", "pcie2_grp" }; static const char *const pcie_grps[] = { "pcie0_grp", "pcie1_grp", "pcie2_grp"
static struct spear_function pci_function = { };
.name = "pci", static struct spear_function pcie_function = {
.groups = pci_grps, .name = "pci_express",
.ngroups = ARRAY_SIZE(pci_grps), .groups = pcie_grps,
.ngroups = ARRAY_SIZE(pcie_grps),
}; };
/* pad multiplexing for sata0 device */ /* pad multiplexing for sata0 device */
static struct spear_muxreg sata0_muxreg[] = { static struct spear_muxreg sata0_muxreg[] = {
PCI_SATA_MUXREG,
{ {
.reg = PCIE_SATA_CFG, .reg = PCIE_SATA_CFG,
.mask = SATA_CFG_VAL(0), .mask = SATA_CFG_VAL(0),
...@@ -1884,15 +1899,12 @@ static struct spear_modemux sata0_modemux[] = { ...@@ -1884,15 +1899,12 @@ static struct spear_modemux sata0_modemux[] = {
static struct spear_pingroup sata0_pingroup = { static struct spear_pingroup sata0_pingroup = {
.name = "sata0_grp", .name = "sata0_grp",
.pins = pci_sata_pins,
.npins = ARRAY_SIZE(pci_sata_pins),
.modemuxs = sata0_modemux, .modemuxs = sata0_modemux,
.nmodemuxs = ARRAY_SIZE(sata0_modemux), .nmodemuxs = ARRAY_SIZE(sata0_modemux),
}; };
/* pad multiplexing for sata1 device */ /* pad multiplexing for sata1 device */
static struct spear_muxreg sata1_muxreg[] = { static struct spear_muxreg sata1_muxreg[] = {
PCI_SATA_MUXREG,
{ {
.reg = PCIE_SATA_CFG, .reg = PCIE_SATA_CFG,
.mask = SATA_CFG_VAL(1), .mask = SATA_CFG_VAL(1),
...@@ -1909,15 +1921,12 @@ static struct spear_modemux sata1_modemux[] = { ...@@ -1909,15 +1921,12 @@ static struct spear_modemux sata1_modemux[] = {
static struct spear_pingroup sata1_pingroup = { static struct spear_pingroup sata1_pingroup = {
.name = "sata1_grp", .name = "sata1_grp",
.pins = pci_sata_pins,
.npins = ARRAY_SIZE(pci_sata_pins),
.modemuxs = sata1_modemux, .modemuxs = sata1_modemux,
.nmodemuxs = ARRAY_SIZE(sata1_modemux), .nmodemuxs = ARRAY_SIZE(sata1_modemux),
}; };
/* pad multiplexing for sata2 device */ /* pad multiplexing for sata2 device */
static struct spear_muxreg sata2_muxreg[] = { static struct spear_muxreg sata2_muxreg[] = {
PCI_SATA_MUXREG,
{ {
.reg = PCIE_SATA_CFG, .reg = PCIE_SATA_CFG,
.mask = SATA_CFG_VAL(2), .mask = SATA_CFG_VAL(2),
...@@ -1934,8 +1943,6 @@ static struct spear_modemux sata2_modemux[] = { ...@@ -1934,8 +1943,6 @@ static struct spear_modemux sata2_modemux[] = {
static struct spear_pingroup sata2_pingroup = { static struct spear_pingroup sata2_pingroup = {
.name = "sata2_grp", .name = "sata2_grp",
.pins = pci_sata_pins,
.npins = ARRAY_SIZE(pci_sata_pins),
.modemuxs = sata2_modemux, .modemuxs = sata2_modemux,
.nmodemuxs = ARRAY_SIZE(sata2_modemux), .nmodemuxs = ARRAY_SIZE(sata2_modemux),
}; };
...@@ -2093,6 +2100,7 @@ static struct spear_pingroup *spear1310_pingroups[] = { ...@@ -2093,6 +2100,7 @@ static struct spear_pingroup *spear1310_pingroups[] = {
&can0_dis_sd_pingroup, &can0_dis_sd_pingroup,
&can1_dis_sd_pingroup, &can1_dis_sd_pingroup,
&can1_dis_kbd_pingroup, &can1_dis_kbd_pingroup,
&pci_pingroup,
&pcie0_pingroup, &pcie0_pingroup,
&pcie1_pingroup, &pcie1_pingroup,
&pcie2_pingroup, &pcie2_pingroup,
...@@ -2138,6 +2146,7 @@ static struct spear_function *spear1310_functions[] = { ...@@ -2138,6 +2146,7 @@ static struct spear_function *spear1310_functions[] = {
&can0_function, &can0_function,
&can1_function, &can1_function,
&pci_function, &pci_function,
&pcie_function,
&sata_function, &sata_function,
&ssp1_function, &ssp1_function,
&gpt64_function, &gpt64_function,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册