/* Copyright 2018 Canaan Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include "fpioa.h" #include "sysctl.h" volatile fpioa_t *const fpioa = (volatile fpioa_t *)FPIOA_BASE_ADDR; /** * @brief Internal used FPIOA function initialize cell * * This is NOT fpioa_io_config_t, can't assign directly * */ typedef struct _fpioa_assign_t { uint32_t ch_sel : 8; /* Channel select from 256 input. */ uint32_t ds : 4; /* Driving selector. */ uint32_t oe_en : 1; /* Static output enable, will AND with OE_INV. */ uint32_t oe_inv : 1; /* Invert output enable. */ uint32_t do_sel : 1; /* Data output select: 0 for DO, 1 for OE. */ uint32_t do_inv : 1; /* Invert the result of data output select (DO_SEL). */ uint32_t pu : 1; /* Pull up enable. 0 for nothing, 1 for pull up. */ uint32_t pd : 1; /* Pull down enable. 0 for nothing, 1 for pull down. */ uint32_t resv0 : 1; /* Reserved bits. */ uint32_t sl : 1; /* Slew rate control enable. */ uint32_t ie_en : 1; /* Static input enable, will AND with IE_INV. */ uint32_t ie_inv : 1; /* Invert input enable. */ uint32_t di_inv : 1; /* Invert Data input. */ uint32_t st : 1; /* Schmitt trigger. */ uint32_t tie_en : 1; /* Input tie enable, 1 for enable, 0 for disable. */ uint32_t tie_val : 1; /* Input tie value, 1 for high, 0 for low. */ uint32_t resv1 : 5; /* Reserved bits. */ uint32_t pad_di : 1; /* Read current PAD's data input. */ } __attribute__((packed, aligned(4))) fpioa_assign_t; /* Function list */ static const fpioa_assign_t function_config[FUNC_MAX] = { {.ch_sel = FUNC_JTAG_TCLK, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_JTAG_TDI, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_JTAG_TMS, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_JTAG_TDO, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_D0, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_D1, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_D2, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_D3, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_D4, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_D5, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_D6, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_D7, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_SS0, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_SS1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_SS2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_SS3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_ARB, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 1, .tie_val = 1, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI0_SCLK, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UARTHS_RX, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UARTHS_TX, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_RESV6, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_RESV7, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CLK_SPI1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CLK_I2C1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS0, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS4, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS5, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS6, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS7, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS8, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS9, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS10, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS11, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS12, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS13, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS14, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS15, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS16, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS17, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS18, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS19, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS20, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS21, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS22, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS23, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS24, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS25, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS26, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS27, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS28, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS29, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS30, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIOHS31, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIO0, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIO1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIO2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIO3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIO4, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIO5, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIO6, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_GPIO7, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_RX, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_TX, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_RX, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_TX, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_RX, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_TX, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_D0, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_D1, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_D2, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_D3, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_D4, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_D5, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_D6, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_D7, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_SS0, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_SS1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_SS2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_SS3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_ARB, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 1, .tie_val = 1, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI1_SCLK, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI_SLAVE_D0, .ds = 0xf, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 1, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI_SLAVE_SS, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SPI_SLAVE_SCLK, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_MCLK, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_SCLK, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_WS, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_IN_D0, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_IN_D1, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_IN_D2, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_IN_D3, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_OUT_D0, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_OUT_D1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_OUT_D2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S0_OUT_D3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_MCLK, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_SCLK, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_WS, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_IN_D0, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_IN_D1, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_IN_D2, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_IN_D3, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_OUT_D0, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_OUT_D1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_OUT_D2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S1_OUT_D3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_MCLK, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_SCLK, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_WS, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_IN_D0, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_IN_D1, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_IN_D2, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_IN_D3, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_OUT_D0, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_OUT_D1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_OUT_D2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2S2_OUT_D3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_RESV0, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_RESV1, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_RESV2, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_RESV3, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_RESV4, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_RESV5, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2C0_SCLK, .ds = 0x0, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 1, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2C0_SDA, .ds = 0x0, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 1, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2C1_SCLK, .ds = 0x0, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 1, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2C1_SDA, .ds = 0x0, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 1, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2C2_SCLK, .ds = 0x0, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 1, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_I2C2_SDA, .ds = 0x0, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 1, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_XCLK, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_RST, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_PWDN, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_VSYNC, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_HREF, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_PCLK, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_D0, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_D1, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_D2, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_D3, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_D4, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_D5, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_D6, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CMOS_D7, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SCCB_SCLK, .ds = 0x0, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 1, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_SCCB_SDA, .ds = 0x0, .oe_en = 1, .oe_inv = 1, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 1, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_CTS, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_DSR, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_DCD, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_RI, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_SIR_IN, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_DTR, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_RTS, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_OUT2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_OUT1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_SIR_OUT, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_BAUD, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_RE, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_DE, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART1_RS485_EN, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_CTS, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_DSR, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_DCD, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_RI, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_SIR_IN, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_DTR, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_RTS, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_OUT2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_OUT1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_SIR_OUT, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_BAUD, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_RE, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_DE, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART2_RS485_EN, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_CTS, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_DSR, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_DCD, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_RI, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_SIR_IN, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_DTR, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_RTS, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_OUT2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_OUT1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_SIR_OUT, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_BAUD, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_RE, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_DE, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_UART3_RS485_EN, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER0_TOGGLE1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER0_TOGGLE2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER0_TOGGLE3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER0_TOGGLE4, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER1_TOGGLE1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER1_TOGGLE2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER1_TOGGLE3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER1_TOGGLE4, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER2_TOGGLE1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER2_TOGGLE2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER2_TOGGLE3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_TIMER2_TOGGLE4, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CLK_SPI2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CLK_I2C2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL0, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL4, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL5, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL6, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL7, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL8, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL9, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL10, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL11, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL12, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL13, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL14, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 1, .pd = 0, .resv1 = 0, .sl = 1, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL15, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL16, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL17, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_CONSTANT, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_INTERNAL18, .ds = 0x0, .oe_en = 0, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 1, .ie_inv = 0, .di_inv = 0, .st = 1, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG0, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG1, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG2, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG3, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG4, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG5, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG6, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG7, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG8, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG9, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG10, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG11, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG12, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG13, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG14, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG15, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG16, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG17, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG18, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG19, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG20, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG21, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG22, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG23, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG24, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG25, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG26, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG27, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG28, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG29, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG30, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, {.ch_sel = FUNC_DEBUG31, .ds = 0xf, .oe_en = 1, .oe_inv = 0, .do_sel = 0, .do_inv = 0, .pu = 0, .pd = 0, .resv1 = 0, .sl = 0, .ie_en = 0, .ie_inv = 0, .di_inv = 0, .st = 0, .tie_en = 0, .tie_val = 0, .resv0 = 0, .pad_di = 0}, }; int fpioa_init(void) { int i = 0; /* Enable fpioa clock in system controller */ sysctl_clock_enable(SYSCTL_CLOCK_FPIOA); /* Initialize tie */ fpioa_tie_t tie = {0}; /* Set tie enable and tie value */ for(i = 0; i < FUNC_MAX; i++) { tie.en[i / 32] |= (function_config[i].tie_en << (i % 32)); tie.val[i / 32] |= (function_config[i].tie_val << (i % 32)); } /* Atomic write every 32bit register to fpioa function */ for(i = 0; i < FUNC_MAX / 32; i++) { /* Set value before enable */ fpioa->tie.val[i] = tie.val[i]; fpioa->tie.en[i] = tie.en[i]; } return 0; } int fpioa_get_io(int number, fpioa_io_config_t *cfg) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO || cfg == NULL) return -1; /* Atomic read register */ *cfg = fpioa->io[number]; return 0; } int fpioa_set_io(int number, fpioa_io_config_t *cfg) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO || cfg == NULL) return -1; /* Atomic write register */ fpioa->io[number] = *cfg; return 0; } int fpioa_set_io_pull(int number, fpioa_pull_t pull) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO || pull >= FPIOA_PULL_MAX) return -1; /* Atomic read register */ fpioa_io_config_t cfg = fpioa->io[number]; switch(pull) { case FPIOA_PULL_NONE: cfg.pu = 0; cfg.pd = 0; break; case FPIOA_PULL_DOWN: cfg.pu = 0; cfg.pd = 1; break; case FPIOA_PULL_UP: cfg.pu = 1; cfg.pd = 0; break; default: break; } /* Atomic write register */ fpioa->io[number] = cfg; return 0; } int fpioa_get_io_pull(int number) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO) return -1; fpioa_pull_t pull; /* Atomic read register */ fpioa_io_config_t cfg = fpioa->io[number]; if(cfg.pu == 0 && cfg.pd == 1) pull = FPIOA_PULL_DOWN; else if(cfg.pu == 1 && cfg.pd == 0) pull = FPIOA_PULL_UP; else pull = FPIOA_PULL_NONE; return pull; } int fpioa_set_io_driving(int number, fpioa_driving_t driving) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO || driving >= FPIOA_DRIVING_MAX) return -1; /* Atomic read register */ fpioa_io_config_t cfg = fpioa->io[number]; /* Set IO driving */ cfg.ds = driving; /* Atomic write register */ fpioa->io[number] = cfg; return 0; } int fpioa_set_sl(int number, uint8_t sl_enable) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO) return -1; /* Atomic read register */ fpioa_io_config_t cfg = fpioa->io[number]; /* Set IO slew rate */ cfg.sl = sl_enable; /* Atomic write register */ fpioa->io[number] = cfg; return 0; } int fpioa_set_st(int number, uint8_t st_enable) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO) return -1; /* Atomic read register */ fpioa_io_config_t cfg = fpioa->io[number]; /* Set IO schmitt trigger */ cfg.st = st_enable; /* Atomic write register */ fpioa->io[number] = cfg; return 0; } int fpioa_set_oe_inv(int number, uint8_t inv_enable) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO) return -1; /* Atomic read register */ fpioa_io_config_t cfg = fpioa->io[number]; /* Set IO schmitt trigger */ cfg.oe_inv = inv_enable; /* Atomic write register */ fpioa->io[number] = cfg; return 0; } int fpioa_get_io_driving(int number) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO) return -1; return fpioa->io[number].ds; } int fpioa_set_function_raw(int number, fpioa_function_t function) { /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO || function < 0 || function >= FUNC_MAX) return -1; /* Atomic write register */ fpioa->io[number] = (const fpioa_io_config_t){ .ch_sel = function_config[function].ch_sel, .ds = function_config[function].ds, .oe_en = function_config[function].oe_en, .oe_inv = function_config[function].oe_inv, .do_sel = function_config[function].do_sel, .do_inv = function_config[function].do_inv, .pu = function_config[function].pu, .pd = function_config[function].pd, .sl = function_config[function].sl, .ie_en = function_config[function].ie_en, .ie_inv = function_config[function].ie_inv, .di_inv = function_config[function].di_inv, .st = function_config[function].st, /* resv and pad_di do not need initialization */ }; return 0; } int fpioa_set_function(int number, fpioa_function_t function) { uint8_t index = 0; /* Check parameters */ if(number < 0 || number >= FPIOA_NUM_IO || function < 0 || function >= FUNC_MAX) return -1; if(function == FUNC_RESV0) { fpioa_set_function_raw(number, FUNC_RESV0); return 0; } /* Compare all IO */ for(index = 0; index < FPIOA_NUM_IO; index++) { if((fpioa->io[index].ch_sel == function) && (index != number)) fpioa_set_function_raw(index, FUNC_RESV0); } fpioa_set_function_raw(number, function); return 0; } int fpioa_set_tie_enable(fpioa_function_t function, int enable) { /* Check parameters */ if(function < 0 || function >= FUNC_MAX) return -1; /* Set tie enable */ if(enable) fpioa->tie.en[function / 32] |= (1UL << (function % 32)); else fpioa->tie.en[function / 32] &= (~(1UL << (function % 32))); return 0; } int fpioa_set_tie_value(fpioa_function_t function, int value) { /* Check parameters */ if(function < 0 || function >= FUNC_MAX) return -1; /* Set tie value */ if(value) fpioa->tie.val[function / 32] |= (1UL << (function % 32)); else fpioa->tie.val[function / 32] &= (~(1UL << (function % 32))); return 0; } int fpioa_get_io_by_function(fpioa_function_t function) { int index = 0; for(index = 0; index < FPIOA_NUM_IO; index++) { if(fpioa->io[index].ch_sel == function) return index; } return -1; }