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$
   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 #define GROUP_END       { NULL, 0, 0, 0, NULL, 0 }
   54 
   55 #define DECL_FUNC(_name)        \
   56     static struct mtk_pin_function _name[]
   57 #define DECL_TABLE(_name)       \
   58     static struct mtk_pin_group _name[]
   59 
   60 /* Pin function declarations */
   61 DECL_FUNC(i2c_func) = {
   62         FUNC("i2c", 0), FUNC("gpio", 1)
   63 };
   64 
   65 DECL_FUNC(spi_func) = {
   66         FUNC("spi", 0), FUNC("gpio", 1)
   67 };
   68 
   69 DECL_FUNC(uartf_func) = {
   70         FUNC("uartf", 0), FUNC("pcm uartf", 1), FUNC("pcm i2s", 2),
   71         FUNC("i2s uartf", 3), FUNC("pcm gpio", 4), FUNC("gpio uartf", 5),
   72         FUNC("gpio i2s", 6), FUNC("gpio", 7)
   73 };
   74 
   75 DECL_FUNC(wdt_func) = {
   76         FUNC("wdt rst", 0), FUNC("wdt", 0), FUNC("wdt refclk", 1),
   77         FUNC("gpio", 2)
   78 };
   79 
   80 DECL_FUNC(uartlite_func) = {
   81         FUNC("uartlite", 0), FUNC("gpio", 1)
   82 };
   83 
   84 DECL_FUNC(jtag_func) = {
   85         FUNC("jtag", 0), FUNC("gpio", 1)
   86 };
   87 
   88 DECL_FUNC(mdio_func) = {
   89         FUNC("mdio", 0), FUNC("gpio", 1)
   90 };
   91 
   92 DECL_FUNC(led_func) = {
   93         FUNC("led", 0), FUNC("gpio", 1), FUNC("bt", 2)
   94 };
   95 
   96 DECL_FUNC(cs1_func) = {
   97         FUNC("spi_cs1", 0), FUNC("wdt_cs1", 1), FUNC("gpio", 2)
   98 };
   99 
  100 DECL_FUNC(sdram_func) = {
  101         FUNC("sdram", 0), FUNC("gpio", 1)
  102 };
  103 
  104 DECL_FUNC(rgmii_func) = {
  105         FUNC("rgmii", 0), FUNC("rgmii1", 0), FUNC("rgmii2", 0), FUNC("gpio", 1)
  106 };
  107 
  108 DECL_FUNC(lna_func) = {
  109         FUNC("lna", 0), FUNC("gpio", 1)
  110 };
  111 
  112 DECL_FUNC(pa_func) = {
  113         FUNC("pa", 0), FUNC("gpio", 1)
  114 };
  115 
  116 DECL_FUNC(gex_func) = {
  117         FUNC("ge1", 0), FUNC("ge2", 0), FUNC("gpio", 1)
  118 };
  119 
  120 DECL_FUNC(rt2880_uartf_func) = {
  121         FUNC("uartf", 0), FUNC("gpio", 1)
  122 };
  123 
  124 DECL_FUNC(rt2880_pci_func) = {
  125         FUNC("pci", 0), FUNC("gpio", 1)
  126 };
  127 
  128 DECL_FUNC(rt3883_pci_func) = {
  129         FUNC("pci-dev", 0), FUNC("pci-host2", 1), FUNC("pci-host1", 2),
  130         FUNC("pci-fnc", 3), FUNC("gpio", 7)
  131 };
  132 
  133 DECL_FUNC(mt7620_pcie_func) = {
  134         FUNC("pcie rst", 0), FUNC("pcie refclk", 1), FUNC("gpio", 2)
  135 };
  136 
  137 DECL_FUNC(lna_a_func) = {
  138         FUNC("lna a", 0), FUNC("lna g", 0), FUNC("codec", 2), FUNC("gpio", 3)
  139 };
  140 
  141 DECL_FUNC(nd_sd_func) = {
  142         FUNC("nand", 0), FUNC("sd", 1), FUNC("gpio", 2)
  143 };
  144 
  145 DECL_FUNC(mt7620_mdio_func) = {
  146         FUNC("mdio", 0), FUNC("mdio refclk", 1), FUNC("gpio", 2)
  147 };
  148 
  149 DECL_FUNC(spi_refclk_func) = {
  150         FUNC("spi refclk", 0), FUNC("gpio", 1)
  151 };
  152 
  153 DECL_FUNC(wled_func) = {
  154         FUNC("wled", 0), FUNC("gpio", 1)
  155 };
  156 
  157 DECL_FUNC(ephy_func) = {
  158         FUNC("ephy", 0), FUNC("gpio", 1)
  159 };
  160 
  161 DECL_FUNC(mt7628_gpio_func) = {
  162         FUNC("gpio", 0), FUNC("gpio", 1), FUNC("refclk", 2), FUNC("pcie", 3)
  163 };
  164 
  165 DECL_FUNC(mt7628_spis_func) = {
  166         FUNC("spis", 0), FUNC("gpio", 1), FUNC("utif", 2), FUNC("pwm", 3)
  167 };
  168 
  169 DECL_FUNC(mt7628_spi_cs1_func) = {
  170         FUNC("spi", 0), FUNC("gpio", 1), FUNC("refclk", 2), FUNC("-", 3)
  171 };
  172 
  173 DECL_FUNC(mt7628_i2s_func) = {
  174         FUNC("i2s", 0), FUNC("gpio", 1), FUNC("pcm", 2), FUNC("anttenna", 3)
  175 };
  176 
  177 DECL_FUNC(mt7628_uart0_func) = {
  178         FUNC("uart0", 0), FUNC("gpio", 1), FUNC("-", 2), FUNC("-", 3)
  179 };
  180 
  181 DECL_FUNC(mt7628_sd_func) = {
  182         FUNC("sdxc", 0), FUNC("gpio", 1), FUNC("utif", 2), FUNC("jtag", 3)
  183 };
  184 
  185 DECL_FUNC(mt7628_perst_func) = {
  186         FUNC("perst", 0), FUNC("gpio", 1)
  187 };
  188 
  189 DECL_FUNC(mt7628_refclk_func) = {
  190         FUNC("refclk", 0), FUNC("gpio", 1)
  191 };
  192 
  193 DECL_FUNC(mt7628_i2c_func) = {
  194         FUNC("i2c", 0), FUNC("gpio", 1), FUNC("debug", 2), FUNC("-", 3)
  195 };
  196 
  197 DECL_FUNC(mt7628_uart1_func) = {
  198         FUNC("uart1", 0), FUNC("gpio", 1), FUNC("pwm", 2), FUNC("sw r", 3)
  199 };
  200 
  201 DECL_FUNC(mt7628_uart2_func) = {
  202         FUNC("uart2", 0), FUNC("gpio", 1), FUNC("pwm", 2), FUNC("sdxc", 3)
  203 };
  204 
  205 DECL_FUNC(mt7628_pwm0_func) = {
  206         FUNC("pwm", 0), FUNC("gpio", 1), FUNC("utif", 2), FUNC("sdxc", 3)
  207 };
  208 
  209 DECL_FUNC(mt7621_uart1_func) = {
  210         FUNC("uart1", 0), FUNC("gpio", 1)
  211 };
  212 
  213 DECL_FUNC(mt7621_i2c_func) = {
  214         FUNC("i2c", 0), FUNC("gpio", 1)
  215 };
  216 
  217 DECL_FUNC(mt7621_uart3_func) = {
  218         FUNC("uart3", 0), FUNC("gpio", 1), FUNC("i2s", 2), FUNC("spdif3", 3)
  219 };
  220 
  221 DECL_FUNC(mt7621_uart2_func) = {
  222         FUNC("uart2", 0), FUNC("gpio", 1), FUNC("pcm", 2), FUNC("spdif2", 3)
  223 };
  224 
  225 DECL_FUNC(mt7621_jtag_func) = {
  226         FUNC("jtag", 0), FUNC("gpio", 1)
  227 };
  228 
  229 DECL_FUNC(mt7621_wdt_func) = {
  230         FUNC("wdt rst", 0), FUNC("gpio", 1), FUNC("wdt refclk", 2), FUNC("-", 3)
  231 };
  232 
  233 DECL_FUNC(mt7621_pcie_func) = {
  234         FUNC("pcie rst", 0), FUNC("gpio", 1), FUNC("pcie refclk", 2),
  235         FUNC("-", 3)
  236 };
  237 
  238 DECL_FUNC(mt7621_mdio_func) = {
  239         FUNC("mdio", 0), FUNC("gpio", 1), FUNC("-", 2), FUNC("-", 3)
  240 };
  241 
  242 DECL_FUNC(mt7621_rgmii_func) = {
  243         FUNC("rgmii1", 0), FUNC("rgmii2", 0), FUNC("gpio", 1)
  244 };
  245 
  246 DECL_FUNC(mt7621_spi_func) = {
  247         FUNC("spi", 0), FUNC("gpio", 1), FUNC("nand1", 2), FUNC("-", 3)
  248 };
  249 
  250 DECL_FUNC(mt7621_sdhci_func) = {
  251         FUNC("sdhci", 0), FUNC("gpio", 1), FUNC("nand1", 2), FUNC("-", 3)
  252 };
  253 
  254 /* Pin groups declarations */
  255 DECL_TABLE(mt7628_pintable) = {
  256         GROUP("gpio", SYSCTL_GPIOMODE, 0, 3, mt7628_gpio_func),
  257         GROUP("spis", SYSCTL_GPIOMODE, 2, 3, mt7628_spis_func),
  258         GROUP("spi cs1", SYSCTL_GPIOMODE, 4, 3, mt7628_spi_cs1_func),
  259         GROUP("i2s", SYSCTL_GPIOMODE, 6, 3, mt7628_i2s_func),
  260         GROUP("uart0", SYSCTL_GPIOMODE, 8, 3, mt7628_uart0_func),
  261         GROUP("sdmode", SYSCTL_GPIOMODE, 10, 3, mt7628_sd_func),
  262         GROUP("spi", SYSCTL_GPIOMODE, 12, 1, spi_func),
  263         GROUP("wdt", SYSCTL_GPIOMODE, 14, 1, wdt_func),
  264         GROUP("perst", SYSCTL_GPIOMODE, 16, 1, mt7628_perst_func),
  265         GROUP("refclk", SYSCTL_GPIOMODE, 18, 1, mt7628_refclk_func),
  266         GROUP("i2c", SYSCTL_GPIOMODE, 20, 3, mt7628_i2c_func),
  267         GROUP("uart1", SYSCTL_GPIOMODE, 24, 3, mt7628_uart1_func),
  268         GROUP("uart2", SYSCTL_GPIOMODE, 26, 3, mt7628_uart2_func),
  269         GROUP("pwm0", SYSCTL_GPIOMODE, 28, 3, mt7628_pwm0_func),
  270         GROUP("pwm1", SYSCTL_GPIOMODE, 30, 3, mt7628_pwm0_func),
  271         GROUP_END
  272 };
  273 
  274 DECL_TABLE(mt7621_pintable) = {
  275         GROUP("uart1", SYSCTL_GPIOMODE, 1, 1, mt7621_uart1_func),
  276         GROUP("i2c", SYSCTL_GPIOMODE, 2, 1, mt7621_i2c_func),
  277         GROUP("uart3", SYSCTL_GPIOMODE, 3, 3, mt7621_uart3_func),
  278         GROUP("uart2", SYSCTL_GPIOMODE, 5, 3, mt7621_uart2_func),
  279         GROUP("jtag", SYSCTL_GPIOMODE, 7, 1, mt7621_jtag_func),
  280         GROUP("wdt", SYSCTL_GPIOMODE, 8, 3, mt7621_wdt_func),
  281         GROUP("pcie", SYSCTL_GPIOMODE, 10, 3, mt7621_pcie_func),
  282         GROUP("mdio", SYSCTL_GPIOMODE, 12, 3, mt7621_mdio_func),
  283         GROUP("rgmii2", SYSCTL_GPIOMODE, 15, 1, mt7621_rgmii_func),
  284         GROUP("spi", SYSCTL_GPIOMODE, 16, 3, mt7621_spi_func),
  285         GROUP("sdhci", SYSCTL_GPIOMODE, 18, 3, mt7621_sdhci_func),
  286         GROUP("rgmii1", SYSCTL_GPIOMODE, 14, 1, mt7621_rgmii_func),
  287         GROUP_END
  288 };
  289 
  290 DECL_TABLE(mt7620_pintable) = {
  291         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  292         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  293         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  294         GROUP("mdio", SYSCTL_GPIOMODE, 7, 3, mt7620_mdio_func),
  295         GROUP("rgmii1", SYSCTL_GPIOMODE, 9, 1, rgmii_func),
  296         GROUP("rgmii2", SYSCTL_GPIOMODE, 10, 1, rgmii_func),
  297         GROUP("spi", SYSCTL_GPIOMODE, 11, 1, spi_func),
  298         GROUP("spi refclk", SYSCTL_GPIOMODE, 12, 1, spi_refclk_func),
  299         GROUP("wled", SYSCTL_GPIOMODE, 13, 1, wled_func),
  300         GROUP("ephy", SYSCTL_GPIOMODE, 15, 1, ephy_func),
  301         GROUP("pcie", SYSCTL_GPIOMODE, 16, 3, mt7620_pcie_func),
  302         GROUP("nd_sd", SYSCTL_GPIOMODE, 18, 3, nd_sd_func),
  303         GROUP("pa", SYSCTL_GPIOMODE, 20, 1, pa_func),
  304         GROUP("wdt", SYSCTL_GPIOMODE, 21, 3, wdt_func),
  305         GROUP_END
  306 };
  307 
  308 DECL_TABLE(rt2880_pintable) = {
  309         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  310         GROUP("uartf", SYSCTL_GPIOMODE, 1, 1, rt2880_uartf_func),
  311         GROUP("spi", SYSCTL_GPIOMODE, 2, 1, spi_func),
  312         GROUP("uartlite", SYSCTL_GPIOMODE, 3, 1, uartlite_func),
  313         GROUP("jtag", SYSCTL_GPIOMODE, 4, 1, jtag_func),
  314         GROUP("mdio", SYSCTL_GPIOMODE, 5, 1, mdio_func),
  315         GROUP("sdram", SYSCTL_GPIOMODE, 6, 1, sdram_func),
  316         GROUP("pci", SYSCTL_GPIOMODE, 7, 1, rt2880_pci_func),
  317         GROUP_END
  318 };
  319 
  320 DECL_TABLE(rt3050_pintable) = {
  321         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  322         GROUP("spi", SYSCTL_GPIOMODE, 1, 1, spi_func),
  323         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  324         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  325         GROUP("jtag", SYSCTL_GPIOMODE, 6, 1, jtag_func),
  326         GROUP("mdio", SYSCTL_GPIOMODE, 7, 1, mdio_func),
  327         GROUP("sdram", SYSCTL_GPIOMODE, 8, 1, sdram_func),
  328         GROUP("rgmii", SYSCTL_GPIOMODE, 9, 1, rgmii_func),
  329         GROUP_END
  330 };
  331 
  332 DECL_TABLE(rt3352_pintable) = {
  333         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  334         GROUP("spi", SYSCTL_GPIOMODE, 1, 1, i2c_func),
  335         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  336         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  337         GROUP("jtag", SYSCTL_GPIOMODE, 6, 1, jtag_func),
  338         GROUP("mdio", SYSCTL_GPIOMODE, 7, 1, mdio_func),
  339         GROUP("rgmii", SYSCTL_GPIOMODE, 9, 1, rgmii_func),
  340         GROUP("led", SYSCTL_GPIOMODE, 14, 3, led_func),
  341         GROUP("lna", SYSCTL_GPIOMODE, 18, 1, lna_func),
  342         GROUP("pa", SYSCTL_GPIOMODE, 20, 1, pa_func),
  343         GROUP("spi_cs1", SYSCTL_GPIOMODE, 21, 3, cs1_func),
  344         GROUP_END
  345 };
  346 
  347 DECL_TABLE(rt3883_pintable) = {
  348         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  349         GROUP("spi", SYSCTL_GPIOMODE, 1, 1, spi_func),
  350         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  351         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  352         GROUP("jtag", SYSCTL_GPIOMODE, 6, 1, jtag_func),
  353         GROUP("mdio", SYSCTL_GPIOMODE, 7, 1, mdio_func),
  354         GROUP("lna a", SYSCTL_GPIOMODE, 16, 3, lna_a_func),
  355         GROUP("lna g", SYSCTL_GPIOMODE, 18, 3, lna_a_func),
  356         GROUP("pci", SYSCTL_GPIOMODE, 11, 7, rt3883_pci_func),
  357         GROUP("ge1", SYSCTL_GPIOMODE, 9, 1, gex_func),
  358         GROUP("ge2", SYSCTL_GPIOMODE, 10, 1, gex_func),
  359         GROUP_END
  360 };
  361 
  362 DECL_TABLE(rt5350_pintable) = {
  363         GROUP("i2c", SYSCTL_GPIOMODE, 0, 1, i2c_func),
  364         GROUP("spi", SYSCTL_GPIOMODE, 1, 1, spi_func),
  365         GROUP("uartf", SYSCTL_GPIOMODE, 2, 7, uartf_func),
  366         GROUP("uartlite", SYSCTL_GPIOMODE, 5, 1, uartlite_func),
  367         GROUP("jtag", SYSCTL_GPIOMODE, 6, 1, jtag_func),
  368         GROUP("led", SYSCTL_GPIOMODE, 14, 3, led_func),
  369         GROUP("spi_cs1", SYSCTL_GPIOMODE, 21, 3, cs1_func),
  370         GROUP_END
  371 };
  372 
  373 #endif /* _MTK_PINCTRL_H_ */

Cache object: e9b9fc2c468c0fa80fb8c46cc411f457


[ 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.