The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/mips/mediatek/mtk_pinctrl.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 2016 Stanislav Galabov.
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice unmodified, this list of conditions, and the following
   10  *    disclaimer.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  *
   15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   25  * SUCH DAMAGE.
   26  *
   27  * $FreeBSD: releng/11.0/sys/mips/mediatek/mtk_pinctrl.h 298497 2016-04-23 04:19:42Z sgalabov $
   28  */
   29 
   30 #ifndef _MTK_PINCTRL_H_
   31 #define _MTK_PINCTRL_H_
   32 
   33 struct mtk_pin_function {
   34         const char              *name;
   35         uint32_t                value;
   36 };
   37 
   38 struct mtk_pin_group {
   39         const char              *name;
   40         uint32_t                sysc_reg;
   41         uint32_t                offset;
   42         uint32_t                mask;
   43         struct mtk_pin_function *functions;
   44         uint32_t                funcnum;
   45 };
   46 
   47 #define FUNC(_name, _value)                     \
   48     { .name = (_name), .value = (_value) }
   49 
   50 #define GROUP(_name, _reg, _off, _mask, _funcs) \
   51     { .name = (_name), .sysc_reg = (_reg), .offset = (_off),            \
   52     .mask = (_mask), .functions = (_funcs), .funcnum = nitems(_funcs) }
   53 
   54 #define GROUP_END       { NULL, 0, 0, 0, NULL, 0 }
   55 
   56 #define DECL_FUNC(_name)        \
   57     static struct mtk_pin_function _name[]
   58 #define DECL_TABLE(_name)       \
   59     static struct mtk_pin_group _name[]
   60 
   61 /* Pin function declarations */
   62 DECL_FUNC(i2c_func) = {
   63         FUNC("i2c", 0), FUNC("gpio", 1)
   64 };
   65 
   66 DECL_FUNC(spi_func) = {
   67         FUNC("spi", 0), FUNC("gpio", 1)
   68 };
   69 
   70 DECL_FUNC(uartf_func) = {
   71         FUNC("uartf", 0), FUNC("pcm uartf", 1), FUNC("pcm i2s", 2),
   72         FUNC("i2s uartf", 3), FUNC("pcm gpio", 4), FUNC("gpio uartf", 5),
   73         FUNC("gpio i2s", 6), FUNC("gpio", 7)
   74 };
   75 
   76 DECL_FUNC(wdt_func) = {
   77         FUNC("wdt rst", 0), FUNC("wdt", 0), FUNC("wdt refclk", 1),
   78         FUNC("gpio", 2)
   79 };
   80 
   81 DECL_FUNC(uartlite_func) = {
   82         FUNC("uartlite", 0), FUNC("gpio", 1)
   83 };
   84 
   85 DECL_FUNC(jtag_func) = {
   86         FUNC("jtag", 0), FUNC("gpio", 1)
   87 };
   88 
   89 DECL_FUNC(mdio_func) = {
   90         FUNC("mdio", 0), FUNC("gpio", 1)
   91 };
   92 
   93 DECL_FUNC(led_func) = {
   94         FUNC("led", 0), FUNC("gpio", 1), FUNC("bt", 2)
   95 };
   96 
   97 DECL_FUNC(cs1_func) = {
   98         FUNC("spi_cs1", 0), FUNC("wdt_cs1", 1), FUNC("gpio", 2)
   99 };
  100 
  101 DECL_FUNC(sdram_func) = {
  102         FUNC("sdram", 0), FUNC("gpio", 1)
  103 };
  104 
  105 DECL_FUNC(rgmii_func) = {
  106         FUNC("rgmii", 0), FUNC("rgmii1", 0), FUNC("rgmii2", 0), FUNC("gpio", 1)
  107 };
  108 
  109 DECL_FUNC(lna_func) = {
  110         FUNC("lna", 0), FUNC("gpio", 1)
  111 };
  112 
  113 DECL_FUNC(pa_func) = {
  114         FUNC("pa", 0), FUNC("gpio", 1)
  115 };
  116 
  117 DECL_FUNC(gex_func) = {
  118         FUNC("ge1", 0), FUNC("ge2", 0), FUNC("gpio", 1)
  119 };
  120 
  121 DECL_FUNC(rt3883_pci_func) = {
  122         FUNC("pci-dev", 0), FUNC("pci-host2", 1), FUNC("pci-host1", 2),
  123         FUNC("pci-fnc", 3), FUNC("gpio", 7)
  124 };
  125 
  126 DECL_FUNC(mt7620_pcie_func) = {
  127         FUNC("pcie rst", 0), FUNC("pcie refclk", 1), FUNC("gpio", 2)
  128 };
  129 
  130 DECL_FUNC(lna_a_func) = {
  131         FUNC("lna a", 0), FUNC("lna g", 0), FUNC("codec", 2), FUNC("gpio", 3)
  132 };
  133 
  134 DECL_FUNC(nd_sd_func) = {
  135         FUNC("nand", 0), FUNC("sd", 1), FUNC("gpio", 2)
  136 };
  137 
  138 DECL_FUNC(mt7620_mdio_func) = {
  139         FUNC("mdio", 0), FUNC("mdio refclk", 1), FUNC("gpio", 2)
  140 };
  141 
  142 DECL_FUNC(spi_refclk_func) = {
  143         FUNC("spi refclk", 0), FUNC("gpio", 1)
  144 };
  145 
  146 DECL_FUNC(wled_func) = {
  147         FUNC("wled", 0), FUNC("gpio", 1)
  148 };
  149 
  150 DECL_FUNC(ephy_func) = {
  151         FUNC("ephy", 0), FUNC("gpio", 1)
  152 };
  153 
  154 DECL_FUNC(mt7628_gpio_func) = {
  155         FUNC("gpio", 0), FUNC("gpio", 1), FUNC("refclk", 2), FUNC("pcie", 3)
  156 };
  157 
  158 DECL_FUNC(mt7628_spis_func) = {
  159         FUNC("spis", 0), FUNC("gpio", 1), FUNC("utif", 2), FUNC("pwm", 3)
  160 };
  161 
  162 DECL_FUNC(mt7628_spi_cs1_func) = {
  163         FUNC("spi", 0), FUNC("gpio", 1), FUNC("refclk", 2), FUNC("-", 3)
  164 };
  165 
  166 DECL_FUNC(mt7628_i2s_func) = {
  167         FUNC("i2s", 0), FUNC("gpio", 1), FUNC("pcm", 2), FUNC("anttenna", 3)
  168 };
  169 
  170 DECL_FUNC(mt7628_uart0_func) = {
  171         FUNC("uart0", 0), FUNC("gpio", 1), FUNC("-", 2), FUNC("-", 3)
  172 };
  173 
  174 DECL_FUNC(mt7628_sd_func) = {
  175         FUNC("sdxc", 0), FUNC("gpio", 1), FUNC("utif", 2), FUNC("jtag", 3)
  176 };
  177 
  178 DECL_FUNC(mt7628_perst_func) = {
  179         FUNC("perst", 0), FUNC("gpio", 1)
  180 };
  181 
  182 DECL_FUNC(mt7628_refclk_func) = {
  183         FUNC("refclk", 0), FUNC("gpio", 1)
  184 };
  185 
  186 DECL_FUNC(mt7628_i2c_func) = {
  187         FUNC("i2c", 0), FUNC("gpio", 1), FUNC("debug", 2), FUNC("-", 3)
  188 };
  189 
  190 DECL_FUNC(mt7628_uart1_func) = {
  191         FUNC("uart1", 0), FUNC("gpio", 1), FUNC("pwm", 2), FUNC("sw r", 3)
  192 };
  193 
  194 DECL_FUNC(mt7628_uart2_func) = {
  195         FUNC("uart2", 0), FUNC("gpio", 1), FUNC("pwm", 2), FUNC("sdxc", 3)
  196 };
  197 
  198 DECL_FUNC(mt7628_pwm0_func) = {
  199         FUNC("pwm", 0), FUNC("gpio", 1), FUNC("utif", 2), FUNC("sdxc", 3)
  200 };
  201 
  202 DECL_FUNC(mt7621_uart1_func) = {
  203         FUNC("uart1", 0), FUNC("gpio", 1)
  204 };
  205 
  206 DECL_FUNC(mt7621_i2c_func) = {
  207         FUNC("i2c", 0), FUNC("gpio", 1)
  208 };
  209 
  210 DECL_FUNC(mt7621_uart3_func) = {
  211         FUNC("uart3", 0), FUNC("gpio", 1), FUNC("i2s", 2), FUNC("spdif3", 3)
  212 };
  213 
  214 DECL_FUNC(mt7621_uart2_func) = {
  215         FUNC("uart2", 0), FUNC("gpio", 1), FUNC("pcm", 2), FUNC("spdif2", 3)
  216 };
  217 
  218 DECL_FUNC(mt7621_jtag_func) = {
  219         FUNC("jtag", 0), FUNC("gpio", 1)
  220 };
  221 
  222 DECL_FUNC(mt7621_wdt_func) = {
  223         FUNC("wdt rst", 0), FUNC("gpio", 1), FUNC("wdt refclk", 2), FUNC("-", 3)
  224 };
  225 
  226 DECL_FUNC(mt7621_pcie_func) = {
  227         FUNC("pcie rst", 0), FUNC("gpio", 1), FUNC("pcie refclk", 2),
  228         FUNC("-", 3)
  229 };
  230 
  231 DECL_FUNC(mt7621_mdio_func) = {
  232         FUNC("mdio", 0), FUNC("gpio", 1), FUNC("-", 2), FUNC("-", 3)
  233 };
  234 
  235 DECL_FUNC(mt7621_rgmii_func) = {
  236         FUNC("rgmii1", 0), FUNC("rgmii2", 0), FUNC("gpio", 1)
  237 };
  238 
  239 DECL_FUNC(mt7621_spi_func) = {
  240         FUNC("spi", 0), FUNC("gpio", 1), FUNC("nand1", 2), FUNC("-", 3)
  241 };
  242 
  243 DECL_FUNC(mt7621_sdhci_func) = {
  244         FUNC("sdhci", 0), FUNC("gpio", 1), FUNC("nand1", 2), FUNC("-", 3)
  245 };
  246 
  247 /* Pin groups declarations */
  248 DECL_TABLE(mt7628_pintable) = {
  249         GROUP("gpio", SYSCTL_GPIOMODE, 0, 3, mt7628_gpio_func),
  250         GROUP("spis", SYSCTL_GPIOMODE, 2, 3, mt7628_spis_func),
  251         GROUP("spi cs1", SYSCTL_GPIOMODE, 4, 3, mt7628_spi_cs1_func),
  252         GROUP("i2s", SYSCTL_GPIOMODE, 6, 3, mt7628_i2s_func),
  253         GROUP("uart0", SYSCTL_GPIOMODE, 8, 3, mt7628_uart0_func),
  254         GROUP("sdmode", SYSCTL_GPIOMODE, 10, 3, mt7628_sd_func),
  255         GROUP("spi", SYSCTL_GPIOMODE, 12, 1, spi_func),
  256         GROUP("wdt", SYSCTL_GPIOMODE, 14, 1, wdt_func),
  257         GROUP("perst", SYSCTL_GPIOMODE, 16, 1, mt7628_perst_func),
  258         GROUP("refclk", SYSCTL_GPIOMODE, 18, 1, mt7628_refclk_func),
  259         GROUP("i2c", SYSCTL_GPIOMODE, 20, 3, mt7628_i2c_func),
  260         GROUP("uart1", SYSCTL_GPIOMODE, 24, 3, mt7628_uart1_func),
  261         GROUP("uart2", SYSCTL_GPIOMODE, 26, 3, mt7628_uart2_func),
  262         GROUP("pwm0", SYSCTL_GPIOMODE, 28, 3, mt7628_pwm0_func),
  263         GROUP("pwm1", SYSCTL_GPIOMODE, 30, 3, mt7628_pwm0_func),
  264         GROUP_END
  265 };
  266 
  267 DECL_TABLE(mt7621_pintable) = {
  268         GROUP("uart1", SYSCTL_GPIOMODE, 1, 1, mt7621_uart1_func),
  269         GROUP("i2c", SYSCTL_GPIOMODE, 2, 1, mt7621_i2c_func),
  270         GROUP("uart3", SYSCTL_GPIOMODE, 3, 3, mt7621_uart3_func),
  271         GROUP("uart2", SYSCTL_GPIOMODE, 5, 3, mt7621_uart2_func),
  272         GROUP("jtag", SYSCTL_GPIOMODE, 7, 1, mt7621_jtag_func),
  273         GROUP("wdt", SYSCTL_GPIOMODE, 8, 3, mt7621_wdt_func),
  274         GROUP("pcie", SYSCTL_GPIOMODE, 10, 3, mt7621_pcie_func),
  275         GROUP("mdio", SYSCTL_GPIOMODE, 12, 3, mt7621_mdio_func),
  276         GROUP("rgmii2", SYSCTL_GPIOMODE, 15, 1, mt7621_rgmii_func),
  277         GROUP("spi", SYSCTL_GPIOMODE, 16, 3, mt7621_spi_func),
  278         GROUP("sdhci", SYSCTL_GPIOMODE, 18, 3, mt7621_sdhci_func),
  279         GROUP("rgmii1", SYSCTL_GPIOMODE, 14, 1, mt7621_rgmii_func),
  280         GROUP_END
  281 };
  282 
  283 DECL_TABLE(mt7620_pintable) = {
  284         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  285         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  286         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  287         GROUP("mdio", SYSCTL_GPIOMODE, 7, 3, mt7620_mdio_func),
  288         GROUP("rgmii1", SYSCTL_GPIOMODE, 9, 1, rgmii_func),
  289         GROUP("rgmii2", SYSCTL_GPIOMODE, 10, 1, rgmii_func),
  290         GROUP("spi", SYSCTL_GPIOMODE, 11, 1, spi_func),
  291         GROUP("spi refclk", SYSCTL_GPIOMODE, 12, 1, spi_refclk_func),
  292         GROUP("wled", SYSCTL_GPIOMODE, 13, 1, wled_func),
  293         GROUP("ephy", SYSCTL_GPIOMODE, 15, 1, ephy_func),
  294         GROUP("pcie", SYSCTL_GPIOMODE, 16, 3, mt7620_pcie_func),
  295         GROUP("nd_sd", SYSCTL_GPIOMODE, 18, 3, nd_sd_func),
  296         GROUP("pa", SYSCTL_GPIOMODE, 20, 1, pa_func),
  297         GROUP("wdt", SYSCTL_GPIOMODE, 21, 3, wdt_func),
  298         GROUP_END
  299 };
  300 
  301 DECL_TABLE(rt3050_pintable) = {
  302         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  303         GROUP("spi", SYSCTL_GPIOMODE, 1, 1, spi_func),
  304         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  305         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  306         GROUP("jtag", SYSCTL_GPIOMODE, 6, 1, jtag_func),
  307         GROUP("mdio", SYSCTL_GPIOMODE, 7, 1, mdio_func),
  308         GROUP("sdram", SYSCTL_GPIOMODE, 8, 1, sdram_func),
  309         GROUP("rgmii", SYSCTL_GPIOMODE, 9, 1, rgmii_func),
  310         GROUP_END
  311 };
  312 
  313 DECL_TABLE(rt3352_pintable) = {
  314         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  315         GROUP("spi", SYSCTL_GPIOMODE, 1, 1, i2c_func),
  316         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  317         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  318         GROUP("jtag", SYSCTL_GPIOMODE, 6, 1, jtag_func),
  319         GROUP("mdio", SYSCTL_GPIOMODE, 7, 1, mdio_func),
  320         GROUP("rgmii", SYSCTL_GPIOMODE, 9, 1, rgmii_func),
  321         GROUP("led", SYSCTL_GPIOMODE, 14, 3, led_func),
  322         GROUP("lna", SYSCTL_GPIOMODE, 18, 1, lna_func),
  323         GROUP("pa", SYSCTL_GPIOMODE, 20, 1, pa_func),
  324         GROUP("spi_cs1", SYSCTL_GPIOMODE, 21, 3, cs1_func),
  325         GROUP_END
  326 };
  327 
  328 DECL_TABLE(rt3883_pintable) = {
  329         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  330         GROUP("spi", SYSCTL_GPIOMODE, 1, 1, spi_func),
  331         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  332         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  333         GROUP("jtag", SYSCTL_GPIOMODE, 6, 1, jtag_func),
  334         GROUP("mdio", SYSCTL_GPIOMODE, 7, 1, mdio_func),
  335         GROUP("lna a", SYSCTL_GPIOMODE, 16, 3, lna_a_func),
  336         GROUP("lna g", SYSCTL_GPIOMODE, 18, 3, lna_a_func),
  337         GROUP("pci", SYSCTL_GPIOMODE, 11, 7, rt3883_pci_func),
  338         GROUP("ge1", SYSCTL_GPIOMODE, 9, 1, gex_func),
  339         GROUP("ge2", SYSCTL_GPIOMODE, 10, 1, gex_func),
  340         GROUP_END
  341 };
  342 
  343 DECL_TABLE(rt5350_pintable) = {
  344         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  345         GROUP("spi", SYSCTL_GPIOMODE, 1, 1, spi_func),
  346         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  347         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  348         GROUP("jtag", SYSCTL_GPIOMODE, 6, 1, jtag_func),
  349         GROUP("led", SYSCTL_GPIOMODE, 14, 3, led_func),
  350         GROUP("spi_cs1", SYSCTL_GPIOMODE, 21, 3, cs1_func),
  351         GROUP_END
  352 };
  353 
  354 #endif /* _MTK_PINCTRL_H_ */

Cache object: e6791b1de75d0cf9cd6e058b86b06298


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.