aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2013-03-27 11:16:37 -0400
committerSimon Horman <horms+renesas@verge.net.au>2013-04-02 21:30:40 -0400
commit515a828f773ba7389d77db90b980565382ece977 (patch)
tree4ec06f92707f332103211ceb8465284b9378d3b8
parent172fd616dd46a181be5c9c17bd0a84dd8ae0ce94 (diff)
sh-pfc: r8a73a4: Add IRQC pin groups and functions
V2 of PINCTRL support for r8a73a4 IRQC hardware and in particular the external pins IRQ0 -> IRQ57. Signed-off-by: Magnus Damm <damm@opensource.se> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-r8a73a4.c186
1 files changed, 186 insertions, 0 deletions
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c b/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c
index cd5c5fd74ba4..8a5288c99a83 100644
--- a/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c
+++ b/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c
@@ -1576,6 +1576,72 @@ static const struct pinmux_range pinmux_ranges[] = {
1576 {.begin = 320, .end = 329,}, 1576 {.begin = 320, .end = 329,},
1577}; 1577};
1578 1578
1579/* - IRQC ------------------------------------------------------------------- */
1580#define IRQC_PINS_MUX(pin, irq_mark) \
1581static const unsigned int irqc_irq##irq_mark##_pins[] = { \
1582 pin, \
1583}; \
1584static const unsigned int irqc_irq##irq_mark##_mux[] = { \
1585 IRQ##irq_mark##_MARK, \
1586}
1587IRQC_PINS_MUX(0, 0);
1588IRQC_PINS_MUX(1, 1);
1589IRQC_PINS_MUX(2, 2);
1590IRQC_PINS_MUX(3, 3);
1591IRQC_PINS_MUX(4, 4);
1592IRQC_PINS_MUX(5, 5);
1593IRQC_PINS_MUX(6, 6);
1594IRQC_PINS_MUX(7, 7);
1595IRQC_PINS_MUX(8, 8);
1596IRQC_PINS_MUX(9, 9);
1597IRQC_PINS_MUX(10, 10);
1598IRQC_PINS_MUX(11, 11);
1599IRQC_PINS_MUX(12, 12);
1600IRQC_PINS_MUX(13, 13);
1601IRQC_PINS_MUX(14, 14);
1602IRQC_PINS_MUX(15, 15);
1603IRQC_PINS_MUX(66, 40);
1604IRQC_PINS_MUX(84, 19);
1605IRQC_PINS_MUX(85, 18);
1606IRQC_PINS_MUX(102, 41);
1607IRQC_PINS_MUX(103, 42);
1608IRQC_PINS_MUX(109, 43);
1609IRQC_PINS_MUX(110, 44);
1610IRQC_PINS_MUX(111, 45);
1611IRQC_PINS_MUX(112, 46);
1612IRQC_PINS_MUX(113, 47);
1613IRQC_PINS_MUX(114, 48);
1614IRQC_PINS_MUX(115, 49);
1615IRQC_PINS_MUX(160, 20);
1616IRQC_PINS_MUX(161, 21);
1617IRQC_PINS_MUX(162, 22);
1618IRQC_PINS_MUX(163, 23);
1619IRQC_PINS_MUX(175, 24);
1620IRQC_PINS_MUX(176, 25);
1621IRQC_PINS_MUX(177, 26);
1622IRQC_PINS_MUX(178, 27);
1623IRQC_PINS_MUX(192, 31);
1624IRQC_PINS_MUX(193, 32);
1625IRQC_PINS_MUX(194, 33);
1626IRQC_PINS_MUX(195, 34);
1627IRQC_PINS_MUX(196, 35);
1628IRQC_PINS_MUX(197, 36);
1629IRQC_PINS_MUX(198, 37);
1630IRQC_PINS_MUX(199, 38);
1631IRQC_PINS_MUX(200, 39);
1632IRQC_PINS_MUX(290, 51);
1633IRQC_PINS_MUX(296, 52);
1634IRQC_PINS_MUX(301, 50);
1635IRQC_PINS_MUX(320, 16);
1636IRQC_PINS_MUX(321, 17);
1637IRQC_PINS_MUX(322, 28);
1638IRQC_PINS_MUX(323, 29);
1639IRQC_PINS_MUX(324, 30);
1640IRQC_PINS_MUX(325, 53);
1641IRQC_PINS_MUX(326, 54);
1642IRQC_PINS_MUX(327, 55);
1643IRQC_PINS_MUX(328, 56);
1644IRQC_PINS_MUX(329, 57);
1579/* - SCIFA0 ----------------------------------------------------------------- */ 1645/* - SCIFA0 ----------------------------------------------------------------- */
1580static const unsigned int scifa0_data_pins[] = { 1646static const unsigned int scifa0_data_pins[] = {
1581 /* SCIFA0_RXD, SCIFA0_TXD */ 1647 /* SCIFA0_RXD, SCIFA0_TXD */
@@ -1773,6 +1839,64 @@ static const unsigned int scifb3_ctrl_b_mux[] = {
1773}; 1839};
1774 1840
1775static const struct sh_pfc_pin_group pinmux_groups[] = { 1841static const struct sh_pfc_pin_group pinmux_groups[] = {
1842 SH_PFC_PIN_GROUP(irqc_irq0),
1843 SH_PFC_PIN_GROUP(irqc_irq1),
1844 SH_PFC_PIN_GROUP(irqc_irq2),
1845 SH_PFC_PIN_GROUP(irqc_irq3),
1846 SH_PFC_PIN_GROUP(irqc_irq4),
1847 SH_PFC_PIN_GROUP(irqc_irq5),
1848 SH_PFC_PIN_GROUP(irqc_irq6),
1849 SH_PFC_PIN_GROUP(irqc_irq7),
1850 SH_PFC_PIN_GROUP(irqc_irq8),
1851 SH_PFC_PIN_GROUP(irqc_irq9),
1852 SH_PFC_PIN_GROUP(irqc_irq10),
1853 SH_PFC_PIN_GROUP(irqc_irq11),
1854 SH_PFC_PIN_GROUP(irqc_irq12),
1855 SH_PFC_PIN_GROUP(irqc_irq13),
1856 SH_PFC_PIN_GROUP(irqc_irq14),
1857 SH_PFC_PIN_GROUP(irqc_irq15),
1858 SH_PFC_PIN_GROUP(irqc_irq16),
1859 SH_PFC_PIN_GROUP(irqc_irq17),
1860 SH_PFC_PIN_GROUP(irqc_irq18),
1861 SH_PFC_PIN_GROUP(irqc_irq19),
1862 SH_PFC_PIN_GROUP(irqc_irq20),
1863 SH_PFC_PIN_GROUP(irqc_irq21),
1864 SH_PFC_PIN_GROUP(irqc_irq22),
1865 SH_PFC_PIN_GROUP(irqc_irq23),
1866 SH_PFC_PIN_GROUP(irqc_irq24),
1867 SH_PFC_PIN_GROUP(irqc_irq25),
1868 SH_PFC_PIN_GROUP(irqc_irq26),
1869 SH_PFC_PIN_GROUP(irqc_irq27),
1870 SH_PFC_PIN_GROUP(irqc_irq28),
1871 SH_PFC_PIN_GROUP(irqc_irq29),
1872 SH_PFC_PIN_GROUP(irqc_irq30),
1873 SH_PFC_PIN_GROUP(irqc_irq31),
1874 SH_PFC_PIN_GROUP(irqc_irq32),
1875 SH_PFC_PIN_GROUP(irqc_irq33),
1876 SH_PFC_PIN_GROUP(irqc_irq34),
1877 SH_PFC_PIN_GROUP(irqc_irq35),
1878 SH_PFC_PIN_GROUP(irqc_irq36),
1879 SH_PFC_PIN_GROUP(irqc_irq37),
1880 SH_PFC_PIN_GROUP(irqc_irq38),
1881 SH_PFC_PIN_GROUP(irqc_irq39),
1882 SH_PFC_PIN_GROUP(irqc_irq40),
1883 SH_PFC_PIN_GROUP(irqc_irq41),
1884 SH_PFC_PIN_GROUP(irqc_irq42),
1885 SH_PFC_PIN_GROUP(irqc_irq43),
1886 SH_PFC_PIN_GROUP(irqc_irq44),
1887 SH_PFC_PIN_GROUP(irqc_irq45),
1888 SH_PFC_PIN_GROUP(irqc_irq46),
1889 SH_PFC_PIN_GROUP(irqc_irq47),
1890 SH_PFC_PIN_GROUP(irqc_irq48),
1891 SH_PFC_PIN_GROUP(irqc_irq49),
1892 SH_PFC_PIN_GROUP(irqc_irq50),
1893 SH_PFC_PIN_GROUP(irqc_irq51),
1894 SH_PFC_PIN_GROUP(irqc_irq52),
1895 SH_PFC_PIN_GROUP(irqc_irq53),
1896 SH_PFC_PIN_GROUP(irqc_irq54),
1897 SH_PFC_PIN_GROUP(irqc_irq55),
1898 SH_PFC_PIN_GROUP(irqc_irq56),
1899 SH_PFC_PIN_GROUP(irqc_irq57),
1776 SH_PFC_PIN_GROUP(scifa0_data), 1900 SH_PFC_PIN_GROUP(scifa0_data),
1777 SH_PFC_PIN_GROUP(scifa0_clk), 1901 SH_PFC_PIN_GROUP(scifa0_clk),
1778 SH_PFC_PIN_GROUP(scifa0_ctrl), 1902 SH_PFC_PIN_GROUP(scifa0_ctrl),
@@ -1802,6 +1926,67 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
1802 SH_PFC_PIN_GROUP(scifb3_ctrl_b), 1926 SH_PFC_PIN_GROUP(scifb3_ctrl_b),
1803}; 1927};
1804 1928
1929static const char * const irqc_groups[] = {
1930 "irqc_irq0",
1931 "irqc_irq1",
1932 "irqc_irq2",
1933 "irqc_irq3",
1934 "irqc_irq4",
1935 "irqc_irq5",
1936 "irqc_irq6",
1937 "irqc_irq7",
1938 "irqc_irq8",
1939 "irqc_irq9",
1940 "irqc_irq10",
1941 "irqc_irq11",
1942 "irqc_irq12",
1943 "irqc_irq13",
1944 "irqc_irq14",
1945 "irqc_irq15",
1946 "irqc_irq16",
1947 "irqc_irq17",
1948 "irqc_irq18",
1949 "irqc_irq19",
1950 "irqc_irq20",
1951 "irqc_irq21",
1952 "irqc_irq22",
1953 "irqc_irq23",
1954 "irqc_irq24",
1955 "irqc_irq25",
1956 "irqc_irq26",
1957 "irqc_irq27",
1958 "irqc_irq28",
1959 "irqc_irq29",
1960 "irqc_irq30",
1961 "irqc_irq31",
1962 "irqc_irq32",
1963 "irqc_irq33",
1964 "irqc_irq34",
1965 "irqc_irq35",
1966 "irqc_irq36",
1967 "irqc_irq37",
1968 "irqc_irq38",
1969 "irqc_irq39",
1970 "irqc_irq40",
1971 "irqc_irq41",
1972 "irqc_irq42",
1973 "irqc_irq43",
1974 "irqc_irq44",
1975 "irqc_irq45",
1976 "irqc_irq46",
1977 "irqc_irq47",
1978 "irqc_irq48",
1979 "irqc_irq49",
1980 "irqc_irq50",
1981 "irqc_irq51",
1982 "irqc_irq52",
1983 "irqc_irq53",
1984 "irqc_irq54",
1985 "irqc_irq55",
1986 "irqc_irq56",
1987 "irqc_irq57",
1988};
1989
1805static const char * const scifa0_groups[] = { 1990static const char * const scifa0_groups[] = {
1806 "scifa0_data", 1991 "scifa0_data",
1807 "scifa0_clk", 1992 "scifa0_clk",
@@ -1848,6 +2033,7 @@ static const char * const scifb3_groups[] = {
1848}; 2033};
1849 2034
1850static const struct sh_pfc_function pinmux_functions[] = { 2035static const struct sh_pfc_function pinmux_functions[] = {
2036 SH_PFC_FUNCTION(irqc),
1851 SH_PFC_FUNCTION(scifa0), 2037 SH_PFC_FUNCTION(scifa0),
1852 SH_PFC_FUNCTION(scifa1), 2038 SH_PFC_FUNCTION(scifa1),
1853 SH_PFC_FUNCTION(scifb0), 2039 SH_PFC_FUNCTION(scifb0),