162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * SP7021 Pin Controller Driver. 462306a36Sopenharmony_ci * Copyright (C) Sunplus Tech / Tibbo Tech. 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <linux/gpio/driver.h> 862306a36Sopenharmony_ci#include <linux/kernel.h> 962306a36Sopenharmony_ci#include <linux/pinctrl/pinctrl.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "sppctl.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#define D_PIS(x, y) "P" __stringify(x) "_0" __stringify(y) 1462306a36Sopenharmony_ci#define D(x, y) ((x) * 8 + (y)) 1562306a36Sopenharmony_ci#define P(x, y) PINCTRL_PIN(D(x, y), D_PIS(x, y)) 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciconst char * const sppctl_gpio_list_s[] = { 1862306a36Sopenharmony_ci D_PIS(0, 0), D_PIS(0, 1), D_PIS(0, 2), D_PIS(0, 3), 1962306a36Sopenharmony_ci D_PIS(0, 4), D_PIS(0, 5), D_PIS(0, 6), D_PIS(0, 7), 2062306a36Sopenharmony_ci D_PIS(1, 0), D_PIS(1, 1), D_PIS(1, 2), D_PIS(1, 3), 2162306a36Sopenharmony_ci D_PIS(1, 4), D_PIS(1, 5), D_PIS(1, 6), D_PIS(1, 7), 2262306a36Sopenharmony_ci D_PIS(2, 0), D_PIS(2, 1), D_PIS(2, 2), D_PIS(2, 3), 2362306a36Sopenharmony_ci D_PIS(2, 4), D_PIS(2, 5), D_PIS(2, 6), D_PIS(2, 7), 2462306a36Sopenharmony_ci D_PIS(3, 0), D_PIS(3, 1), D_PIS(3, 2), D_PIS(3, 3), 2562306a36Sopenharmony_ci D_PIS(3, 4), D_PIS(3, 5), D_PIS(3, 6), D_PIS(3, 7), 2662306a36Sopenharmony_ci D_PIS(4, 0), D_PIS(4, 1), D_PIS(4, 2), D_PIS(4, 3), 2762306a36Sopenharmony_ci D_PIS(4, 4), D_PIS(4, 5), D_PIS(4, 6), D_PIS(4, 7), 2862306a36Sopenharmony_ci D_PIS(5, 0), D_PIS(5, 1), D_PIS(5, 2), D_PIS(5, 3), 2962306a36Sopenharmony_ci D_PIS(5, 4), D_PIS(5, 5), D_PIS(5, 6), D_PIS(5, 7), 3062306a36Sopenharmony_ci D_PIS(6, 0), D_PIS(6, 1), D_PIS(6, 2), D_PIS(6, 3), 3162306a36Sopenharmony_ci D_PIS(6, 4), D_PIS(6, 5), D_PIS(6, 6), D_PIS(6, 7), 3262306a36Sopenharmony_ci D_PIS(7, 0), D_PIS(7, 1), D_PIS(7, 2), D_PIS(7, 3), 3362306a36Sopenharmony_ci D_PIS(7, 4), D_PIS(7, 5), D_PIS(7, 6), D_PIS(7, 7), 3462306a36Sopenharmony_ci D_PIS(8, 0), D_PIS(8, 1), D_PIS(8, 2), D_PIS(8, 3), 3562306a36Sopenharmony_ci D_PIS(8, 4), D_PIS(8, 5), D_PIS(8, 6), D_PIS(8, 7), 3662306a36Sopenharmony_ci D_PIS(9, 0), D_PIS(9, 1), D_PIS(9, 2), D_PIS(9, 3), 3762306a36Sopenharmony_ci D_PIS(9, 4), D_PIS(9, 5), D_PIS(9, 6), D_PIS(9, 7), 3862306a36Sopenharmony_ci D_PIS(10, 0), D_PIS(10, 1), D_PIS(10, 2), D_PIS(10, 3), 3962306a36Sopenharmony_ci D_PIS(10, 4), D_PIS(10, 5), D_PIS(10, 6), D_PIS(10, 7), 4062306a36Sopenharmony_ci D_PIS(11, 0), D_PIS(11, 1), D_PIS(11, 2), D_PIS(11, 3), 4162306a36Sopenharmony_ci D_PIS(11, 4), D_PIS(11, 5), D_PIS(11, 6), D_PIS(11, 7), 4262306a36Sopenharmony_ci D_PIS(12, 0), D_PIS(12, 1), D_PIS(12, 2), 4362306a36Sopenharmony_ci}; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciconst size_t sppctl_gpio_list_sz = ARRAY_SIZE(sppctl_gpio_list_s); 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciconst unsigned int sppctl_pins_gpio[] = { 4862306a36Sopenharmony_ci D(0, 0), D(0, 1), D(0, 2), D(0, 3), D(0, 4), D(0, 5), D(0, 6), D(0, 7), 4962306a36Sopenharmony_ci D(1, 0), D(1, 1), D(1, 2), D(1, 3), D(1, 4), D(1, 5), D(1, 6), D(1, 7), 5062306a36Sopenharmony_ci D(2, 0), D(2, 1), D(2, 2), D(2, 3), D(2, 4), D(2, 5), D(2, 6), D(2, 7), 5162306a36Sopenharmony_ci D(3, 0), D(3, 1), D(3, 2), D(3, 3), D(3, 4), D(3, 5), D(3, 6), D(3, 7), 5262306a36Sopenharmony_ci D(4, 0), D(4, 1), D(4, 2), D(4, 3), D(4, 4), D(4, 5), D(4, 6), D(4, 7), 5362306a36Sopenharmony_ci D(5, 0), D(5, 1), D(5, 2), D(5, 3), D(5, 4), D(5, 5), D(5, 6), D(5, 7), 5462306a36Sopenharmony_ci D(6, 0), D(6, 1), D(6, 2), D(6, 3), D(6, 4), D(6, 5), D(6, 6), D(6, 7), 5562306a36Sopenharmony_ci D(7, 0), D(7, 1), D(7, 2), D(7, 3), D(7, 4), D(7, 5), D(7, 6), D(7, 7), 5662306a36Sopenharmony_ci D(8, 0), D(8, 1), D(8, 2), D(8, 3), D(8, 4), D(8, 5), D(8, 6), D(8, 7), 5762306a36Sopenharmony_ci D(9, 0), D(9, 1), D(9, 2), D(9, 3), D(9, 4), D(9, 5), D(9, 6), D(9, 7), 5862306a36Sopenharmony_ci D(10, 0), D(10, 1), D(10, 2), D(10, 3), D(10, 4), D(10, 5), D(10, 6), D(10, 7), 5962306a36Sopenharmony_ci D(11, 0), D(11, 1), D(11, 2), D(11, 3), D(11, 4), D(11, 5), D(11, 6), D(11, 7), 6062306a36Sopenharmony_ci D(12, 0), D(12, 1), D(12, 2), 6162306a36Sopenharmony_ci}; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ciconst struct pinctrl_pin_desc sppctl_pins_all[] = { 6462306a36Sopenharmony_ci /* gpio and iop only */ 6562306a36Sopenharmony_ci P(0, 0), P(0, 1), P(0, 2), P(0, 3), P(0, 4), P(0, 5), P(0, 6), P(0, 7), 6662306a36Sopenharmony_ci /* gpio, iop, muxable */ 6762306a36Sopenharmony_ci P(1, 0), P(1, 1), P(1, 2), P(1, 3), P(1, 4), P(1, 5), P(1, 6), P(1, 7), 6862306a36Sopenharmony_ci P(2, 0), P(2, 1), P(2, 2), P(2, 3), P(2, 4), P(2, 5), P(2, 6), P(2, 7), 6962306a36Sopenharmony_ci P(3, 0), P(3, 1), P(3, 2), P(3, 3), P(3, 4), P(3, 5), P(3, 6), P(3, 7), 7062306a36Sopenharmony_ci P(4, 0), P(4, 1), P(4, 2), P(4, 3), P(4, 4), P(4, 5), P(4, 6), P(4, 7), 7162306a36Sopenharmony_ci P(5, 0), P(5, 1), P(5, 2), P(5, 3), P(5, 4), P(5, 5), P(5, 6), P(5, 7), 7262306a36Sopenharmony_ci P(6, 0), P(6, 1), P(6, 2), P(6, 3), P(6, 4), P(6, 5), P(6, 6), P(6, 7), 7362306a36Sopenharmony_ci P(7, 0), P(7, 1), P(7, 2), P(7, 3), P(7, 4), P(7, 5), P(7, 6), P(7, 7), 7462306a36Sopenharmony_ci P(8, 0), P(8, 1), P(8, 2), P(8, 3), P(8, 4), P(8, 5), P(8, 6), P(8, 7), 7562306a36Sopenharmony_ci /* gpio and iop only */ 7662306a36Sopenharmony_ci P(9, 0), P(9, 1), P(9, 2), P(9, 3), P(9, 4), P(9, 5), P(9, 6), P(9, 7), 7762306a36Sopenharmony_ci P(10, 0), P(10, 1), P(10, 2), P(10, 3), P(10, 4), P(10, 5), P(10, 6), P(10, 7), 7862306a36Sopenharmony_ci P(11, 0), P(11, 1), P(11, 2), P(11, 3), P(11, 4), P(11, 5), P(11, 6), P(11, 7), 7962306a36Sopenharmony_ci P(12, 0), P(12, 1), P(12, 2), 8062306a36Sopenharmony_ci}; 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ciconst size_t sppctl_pins_all_sz = ARRAY_SIZE(sppctl_pins_all); 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ciconst char * const sppctl_pmux_list_s[] = { 8562306a36Sopenharmony_ci D_PIS(0, 0), 8662306a36Sopenharmony_ci D_PIS(1, 0), D_PIS(1, 1), D_PIS(1, 2), D_PIS(1, 3), 8762306a36Sopenharmony_ci D_PIS(1, 4), D_PIS(1, 5), D_PIS(1, 6), D_PIS(1, 7), 8862306a36Sopenharmony_ci D_PIS(2, 0), D_PIS(2, 1), D_PIS(2, 2), D_PIS(2, 3), 8962306a36Sopenharmony_ci D_PIS(2, 4), D_PIS(2, 5), D_PIS(2, 6), D_PIS(2, 7), 9062306a36Sopenharmony_ci D_PIS(3, 0), D_PIS(3, 1), D_PIS(3, 2), D_PIS(3, 3), 9162306a36Sopenharmony_ci D_PIS(3, 4), D_PIS(3, 5), D_PIS(3, 6), D_PIS(3, 7), 9262306a36Sopenharmony_ci D_PIS(4, 0), D_PIS(4, 1), D_PIS(4, 2), D_PIS(4, 3), 9362306a36Sopenharmony_ci D_PIS(4, 4), D_PIS(4, 5), D_PIS(4, 6), D_PIS(4, 7), 9462306a36Sopenharmony_ci D_PIS(5, 0), D_PIS(5, 1), D_PIS(5, 2), D_PIS(5, 3), 9562306a36Sopenharmony_ci D_PIS(5, 4), D_PIS(5, 5), D_PIS(5, 6), D_PIS(5, 7), 9662306a36Sopenharmony_ci D_PIS(6, 0), D_PIS(6, 1), D_PIS(6, 2), D_PIS(6, 3), 9762306a36Sopenharmony_ci D_PIS(6, 4), D_PIS(6, 5), D_PIS(6, 6), D_PIS(6, 7), 9862306a36Sopenharmony_ci D_PIS(7, 0), D_PIS(7, 1), D_PIS(7, 2), D_PIS(7, 3), 9962306a36Sopenharmony_ci D_PIS(7, 4), D_PIS(7, 5), D_PIS(7, 6), D_PIS(7, 7), 10062306a36Sopenharmony_ci D_PIS(8, 0), D_PIS(8, 1), D_PIS(8, 2), D_PIS(8, 3), 10162306a36Sopenharmony_ci D_PIS(8, 4), D_PIS(8, 5), D_PIS(8, 6), D_PIS(8, 7), 10262306a36Sopenharmony_ci}; 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ciconst size_t sppctl_pmux_list_sz = ARRAY_SIZE(sppctl_pmux_list_s); 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_cistatic const unsigned int pins_spif1[] = { 10762306a36Sopenharmony_ci D(10, 3), D(10, 4), D(10, 6), D(10, 7), 10862306a36Sopenharmony_ci}; 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_cistatic const unsigned int pins_spif2[] = { 11162306a36Sopenharmony_ci D(9, 4), D(9, 6), D(9, 7), D(10, 1), 11262306a36Sopenharmony_ci}; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_spif[] = { 11562306a36Sopenharmony_ci EGRP("SPI_FLASH1", 1, pins_spif1), 11662306a36Sopenharmony_ci EGRP("SPI_FLASH2", 2, pins_spif2), 11762306a36Sopenharmony_ci}; 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_cistatic const unsigned int pins_spi41[] = { 12062306a36Sopenharmony_ci D(10, 2), D(10, 5), 12162306a36Sopenharmony_ci}; 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_cistatic const unsigned int pins_spi42[] = { 12462306a36Sopenharmony_ci D(9, 5), D(9, 8), 12562306a36Sopenharmony_ci}; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_spi4[] = { 12862306a36Sopenharmony_ci EGRP("SPI_FLASH_4BIT1", 1, pins_spi41), 12962306a36Sopenharmony_ci EGRP("SPI_FLASH_4BIT2", 2, pins_spi42), 13062306a36Sopenharmony_ci}; 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_cistatic const unsigned int pins_snan[] = { 13362306a36Sopenharmony_ci D(9, 4), D(9, 5), D(9, 6), D(9, 7), D(10, 0), D(10, 1), 13462306a36Sopenharmony_ci}; 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_snan[] = { 13762306a36Sopenharmony_ci EGRP("SPI_NAND", 1, pins_snan), 13862306a36Sopenharmony_ci}; 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_cistatic const unsigned int pins_emmc[] = { 14162306a36Sopenharmony_ci D(9, 0), D(9, 1), D(9, 2), D(9, 3), D(9, 4), D(9, 5), 14262306a36Sopenharmony_ci D(9, 6), D(9, 7), D(10, 0), D(10, 1), 14362306a36Sopenharmony_ci}; 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_emmc[] = { 14662306a36Sopenharmony_ci EGRP("CARD0_EMMC", 1, pins_emmc), 14762306a36Sopenharmony_ci}; 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_cistatic const unsigned int pins_sdsd[] = { 15062306a36Sopenharmony_ci D(8, 1), D(8, 2), D(8, 3), D(8, 4), D(8, 5), D(8, 6), 15162306a36Sopenharmony_ci}; 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_sdsd[] = { 15462306a36Sopenharmony_ci EGRP("SD_CARD", 1, pins_sdsd), 15562306a36Sopenharmony_ci}; 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_cistatic const unsigned int pins_uar0[] = { 15862306a36Sopenharmony_ci D(11, 0), D(11, 1), 15962306a36Sopenharmony_ci}; 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_uar0[] = { 16262306a36Sopenharmony_ci EGRP("UA0", 1, pins_uar0), 16362306a36Sopenharmony_ci}; 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_cistatic const unsigned int pins_adbg1[] = { 16662306a36Sopenharmony_ci D(10, 2), D(10, 3), 16762306a36Sopenharmony_ci}; 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_cistatic const unsigned int pins_adbg2[] = { 17062306a36Sopenharmony_ci D(7, 1), D(7, 2), 17162306a36Sopenharmony_ci}; 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_adbg[] = { 17462306a36Sopenharmony_ci EGRP("ACHIP_DEBUG1", 1, pins_adbg1), 17562306a36Sopenharmony_ci EGRP("ACHIP_DEBUG2", 2, pins_adbg2), 17662306a36Sopenharmony_ci}; 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_cistatic const unsigned int pins_aua2axi1[] = { 17962306a36Sopenharmony_ci D(2, 0), D(2, 1), D(2, 2), 18062306a36Sopenharmony_ci}; 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_cistatic const unsigned int pins_aua2axi2[] = { 18362306a36Sopenharmony_ci D(1, 0), D(1, 1), D(1, 2), 18462306a36Sopenharmony_ci}; 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_au2x[] = { 18762306a36Sopenharmony_ci EGRP("ACHIP_UA2AXI1", 1, pins_aua2axi1), 18862306a36Sopenharmony_ci EGRP("ACHIP_UA2AXI2", 2, pins_aua2axi2), 18962306a36Sopenharmony_ci}; 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_cistatic const unsigned int pins_fpga[] = { 19262306a36Sopenharmony_ci D(0, 2), D(0, 3), D(0, 4), D(0, 5), D(0, 6), D(0, 7), 19362306a36Sopenharmony_ci D(1, 0), D(1, 1), D(1, 2), D(1, 3), D(1, 4), D(1, 5), 19462306a36Sopenharmony_ci D(1, 6), D(1, 7), D(2, 0), D(2, 1), D(2, 2), D(2, 3), 19562306a36Sopenharmony_ci D(2, 4), D(2, 5), D(2, 6), D(2, 7), D(3, 0), D(3, 1), 19662306a36Sopenharmony_ci D(3, 2), D(3, 3), D(3, 4), D(3, 5), D(3, 6), D(3, 7), 19762306a36Sopenharmony_ci D(4, 0), D(4, 1), D(4, 2), D(4, 3), D(4, 4), D(4, 5), 19862306a36Sopenharmony_ci D(4, 6), D(4, 7), D(5, 0), D(5, 1), D(5, 2), 19962306a36Sopenharmony_ci}; 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_fpga[] = { 20262306a36Sopenharmony_ci EGRP("FPGA_IFX", 1, pins_fpga), 20362306a36Sopenharmony_ci}; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_cistatic const unsigned int pins_hdmi1[] = { 20662306a36Sopenharmony_ci D(10, 6), D(12, 2), D(12, 1), 20762306a36Sopenharmony_ci}; 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_cistatic const unsigned int pins_hdmi2[] = { 21062306a36Sopenharmony_ci D(8, 3), D(8, 5), D(8, 6), 21162306a36Sopenharmony_ci}; 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_cistatic const unsigned int pins_hdmi3[] = { 21462306a36Sopenharmony_ci D(7, 4), D(7, 6), D(7, 7), 21562306a36Sopenharmony_ci}; 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_hdmi[] = { 21862306a36Sopenharmony_ci EGRP("HDMI_TX1", 1, pins_hdmi1), 21962306a36Sopenharmony_ci EGRP("HDMI_TX2", 2, pins_hdmi2), 22062306a36Sopenharmony_ci EGRP("HDMI_TX3", 3, pins_hdmi3), 22162306a36Sopenharmony_ci}; 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_cistatic const unsigned int pins_eadc[] = { 22462306a36Sopenharmony_ci D(1, 0), D(1, 1), D(1, 2), D(1, 3), D(1, 4), D(1, 5), D(1, 6), 22562306a36Sopenharmony_ci}; 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_eadc[] = { 22862306a36Sopenharmony_ci EGRP("AUD_EXT_ADC_IFX0", 1, pins_eadc), 22962306a36Sopenharmony_ci}; 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_cistatic const unsigned int pins_edac[] = { 23262306a36Sopenharmony_ci D(2, 5), D(2, 6), D(2, 7), D(3, 0), D(3, 1), D(3, 2), D(3, 4), 23362306a36Sopenharmony_ci}; 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_edac[] = { 23662306a36Sopenharmony_ci EGRP("AUD_EXT_DAC_IFX0", 1, pins_edac), 23762306a36Sopenharmony_ci}; 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_cistatic const unsigned int pins_spdi[] = { 24062306a36Sopenharmony_ci D(2, 4), 24162306a36Sopenharmony_ci}; 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_spdi[] = { 24462306a36Sopenharmony_ci EGRP("AUD_IEC_RX0", 1, pins_spdi), 24562306a36Sopenharmony_ci}; 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_cistatic const unsigned int pins_spdo[] = { 24862306a36Sopenharmony_ci D(3, 6), 24962306a36Sopenharmony_ci}; 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_spdo[] = { 25262306a36Sopenharmony_ci EGRP("AUD_IEC_TX0", 1, pins_spdo), 25362306a36Sopenharmony_ci}; 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_cistatic const unsigned int pins_tdmt[] = { 25662306a36Sopenharmony_ci D(2, 5), D(2, 6), D(2, 7), D(3, 0), D(3, 1), D(3, 2), 25762306a36Sopenharmony_ci}; 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_tdmt[] = { 26062306a36Sopenharmony_ci EGRP("TDMTX_IFX0", 1, pins_tdmt), 26162306a36Sopenharmony_ci}; 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_cistatic const unsigned int pins_tdmr[] = { 26462306a36Sopenharmony_ci D(1, 7), D(2, 0), D(2, 1), D(2, 2), 26562306a36Sopenharmony_ci}; 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_tdmr[] = { 26862306a36Sopenharmony_ci EGRP("TDMRX_IFX0", 1, pins_tdmr), 26962306a36Sopenharmony_ci}; 27062306a36Sopenharmony_ci 27162306a36Sopenharmony_cistatic const unsigned int pins_pdmr[] = { 27262306a36Sopenharmony_ci D(1, 7), D(2, 0), D(2, 1), D(2, 2), D(2, 3), 27362306a36Sopenharmony_ci}; 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_pdmr[] = { 27662306a36Sopenharmony_ci EGRP("PDMRX_IFX0", 1, pins_pdmr), 27762306a36Sopenharmony_ci}; 27862306a36Sopenharmony_ci 27962306a36Sopenharmony_cistatic const unsigned int pins_pcmt[] = { 28062306a36Sopenharmony_ci D(3, 7), D(4, 0), D(4, 1), D(4, 2), D(4, 3), D(4, 4), 28162306a36Sopenharmony_ci}; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_pcmt[] = { 28462306a36Sopenharmony_ci EGRP("PCM_IEC_TX", 1, pins_pcmt), 28562306a36Sopenharmony_ci}; 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_cistatic const unsigned int pins_lcdi[] = { 28862306a36Sopenharmony_ci D(1, 4), D(1, 5), D(1, 6), D(1, 7), D(2, 0), D(2, 1), D(2, 2), D(2, 3), 28962306a36Sopenharmony_ci D(2, 4), D(2, 5), D(2, 6), D(2, 7), D(3, 0), D(3, 1), D(3, 2), D(3, 3), 29062306a36Sopenharmony_ci D(3, 4), D(3, 5), D(3, 6), D(3, 7), D(4, 0), D(4, 1), D(4, 2), D(4, 3), 29162306a36Sopenharmony_ci D(4, 4), D(4, 5), D(4, 6), D(4, 7), 29262306a36Sopenharmony_ci}; 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_lcdi[] = { 29562306a36Sopenharmony_ci EGRP("LCDIF", 1, pins_lcdi), 29662306a36Sopenharmony_ci}; 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_cistatic const unsigned int pins_dvdd[] = { 29962306a36Sopenharmony_ci D(7, 0), D(7, 1), D(7, 2), D(7, 3), D(7, 4), D(7, 5), D(7, 6), D(7, 7), 30062306a36Sopenharmony_ci D(8, 0), D(8, 1), D(8, 2), D(8, 3), D(8, 4), D(8, 5), 30162306a36Sopenharmony_ci}; 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_dvdd[] = { 30462306a36Sopenharmony_ci EGRP("DVD_DSP_DEBUG", 1, pins_dvdd), 30562306a36Sopenharmony_ci}; 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_cistatic const unsigned int pins_i2cd[] = { 30862306a36Sopenharmony_ci D(1, 0), D(1, 1), 30962306a36Sopenharmony_ci}; 31062306a36Sopenharmony_ci 31162306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_i2cd[] = { 31262306a36Sopenharmony_ci EGRP("I2C_DEBUG", 1, pins_i2cd), 31362306a36Sopenharmony_ci}; 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_cistatic const unsigned int pins_i2cs[] = { 31662306a36Sopenharmony_ci D(0, 0), D(0, 1), 31762306a36Sopenharmony_ci}; 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_i2cs[] = { 32062306a36Sopenharmony_ci EGRP("I2C_SLAVE", 1, pins_i2cs), 32162306a36Sopenharmony_ci}; 32262306a36Sopenharmony_ci 32362306a36Sopenharmony_cistatic const unsigned int pins_wakp[] = { 32462306a36Sopenharmony_ci D(10, 5), 32562306a36Sopenharmony_ci}; 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_wakp[] = { 32862306a36Sopenharmony_ci EGRP("WAKEUP", 1, pins_wakp), 32962306a36Sopenharmony_ci}; 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_cistatic const unsigned int pins_u2ax[] = { 33262306a36Sopenharmony_ci D(2, 0), D(2, 1), D(3, 0), D(3, 1), 33362306a36Sopenharmony_ci}; 33462306a36Sopenharmony_ci 33562306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_u2ax[] = { 33662306a36Sopenharmony_ci EGRP("UART2AXI", 1, pins_u2ax), 33762306a36Sopenharmony_ci}; 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_cistatic const unsigned int pins_u0ic[] = { 34062306a36Sopenharmony_ci D(0, 0), D(0, 1), D(0, 4), D(0, 5), D(1, 0), D(1, 1), 34162306a36Sopenharmony_ci}; 34262306a36Sopenharmony_ci 34362306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_u0ic[] = { 34462306a36Sopenharmony_ci EGRP("USB0_I2C", 1, pins_u0ic), 34562306a36Sopenharmony_ci}; 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_cistatic const unsigned int pins_u1ic[] = { 34862306a36Sopenharmony_ci D(0, 2), D(0, 3), D(0, 6), D(0, 7), D(1, 2), D(1, 3), 34962306a36Sopenharmony_ci}; 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_u1ic[] = { 35262306a36Sopenharmony_ci EGRP("USB1_I2C", 1, pins_u1ic), 35362306a36Sopenharmony_ci}; 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_cistatic const unsigned int pins_u0ot[] = { 35662306a36Sopenharmony_ci D(11, 2), 35762306a36Sopenharmony_ci}; 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_u0ot[] = { 36062306a36Sopenharmony_ci EGRP("USB0_OTG", 1, pins_u0ot), 36162306a36Sopenharmony_ci}; 36262306a36Sopenharmony_ci 36362306a36Sopenharmony_cistatic const unsigned int pins_u1ot[] = { 36462306a36Sopenharmony_ci D(11, 3), 36562306a36Sopenharmony_ci}; 36662306a36Sopenharmony_ci 36762306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_u1ot[] = { 36862306a36Sopenharmony_ci EGRP("USB1_OTG", 1, pins_u1ot), 36962306a36Sopenharmony_ci}; 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_cistatic const unsigned int pins_uphd[] = { 37262306a36Sopenharmony_ci D(0, 1), D(0, 2), D(0, 3), D(7, 4), D(7, 5), D(7, 6), 37362306a36Sopenharmony_ci D(7, 7), D(8, 0), D(8, 1), D(8, 2), D(8, 3), 37462306a36Sopenharmony_ci D(9, 7), D(10, 2), D(10, 3), D(10, 4), 37562306a36Sopenharmony_ci}; 37662306a36Sopenharmony_ci 37762306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_up0d[] = { 37862306a36Sopenharmony_ci EGRP("UPHY0_DEBUG", 1, pins_uphd), 37962306a36Sopenharmony_ci}; 38062306a36Sopenharmony_ci 38162306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_up1d[] = { 38262306a36Sopenharmony_ci EGRP("UPHY1_DEBUG", 1, pins_uphd), 38362306a36Sopenharmony_ci}; 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_cistatic const unsigned int pins_upex[] = { 38662306a36Sopenharmony_ci D(0, 0), D(0, 1), D(0, 2), D(0, 3), D(0, 4), D(0, 5), D(0, 6), D(0, 7), 38762306a36Sopenharmony_ci D(1, 0), D(1, 1), D(1, 2), D(1, 3), D(1, 4), D(1, 5), D(1, 6), D(1, 7), 38862306a36Sopenharmony_ci D(2, 0), D(2, 1), D(2, 2), D(2, 3), D(2, 4), D(2, 5), D(2, 6), D(2, 7), 38962306a36Sopenharmony_ci D(3, 0), D(3, 1), D(3, 2), D(3, 3), D(3, 4), D(3, 5), D(3, 6), D(3, 7), 39062306a36Sopenharmony_ci D(4, 0), D(4, 1), D(4, 2), D(4, 3), D(4, 4), D(4, 5), D(4, 6), D(4, 7), 39162306a36Sopenharmony_ci D(5, 0), D(5, 1), D(5, 2), D(5, 3), D(5, 4), D(5, 5), D(5, 6), D(5, 7), 39262306a36Sopenharmony_ci D(6, 0), D(6, 1), D(6, 2), D(6, 3), D(6, 4), D(6, 5), D(6, 6), D(6, 7), 39362306a36Sopenharmony_ci D(7, 0), D(7, 1), D(7, 2), D(7, 3), D(7, 4), D(7, 5), D(7, 6), D(7, 7), 39462306a36Sopenharmony_ci D(8, 0), D(8, 1), D(8, 2), D(8, 3), D(8, 4), D(8, 5), D(8, 6), D(8, 7), 39562306a36Sopenharmony_ci D(9, 0), D(9, 1), D(9, 2), D(9, 3), D(9, 4), D(9, 5), D(9, 6), D(9, 7), 39662306a36Sopenharmony_ci D(10, 0), D(10, 1), D(10, 2), D(10, 3), D(10, 4), D(10, 5), D(10, 6), D(10, 7), 39762306a36Sopenharmony_ci}; 39862306a36Sopenharmony_ci 39962306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_upex[] = { 40062306a36Sopenharmony_ci EGRP("UPHY0_EXT", 1, pins_upex), 40162306a36Sopenharmony_ci}; 40262306a36Sopenharmony_ci 40362306a36Sopenharmony_cistatic const unsigned int pins_prp1[] = { 40462306a36Sopenharmony_ci D(0, 6), D(0, 7), 40562306a36Sopenharmony_ci D(1, 0), D(1, 1), D(1, 2), D(1, 3), D(1, 4), D(1, 5), D(1, 6), D(1, 7), 40662306a36Sopenharmony_ci D(2, 1), D(2, 2), D(2, 3), D(2, 4), D(2, 5), D(2, 6), D(2, 7), 40762306a36Sopenharmony_ci D(3, 0), D(3, 1), D(3, 2), 40862306a36Sopenharmony_ci}; 40962306a36Sopenharmony_ci 41062306a36Sopenharmony_cistatic const unsigned int pins_prp2[] = { 41162306a36Sopenharmony_ci D(3, 4), D(3, 6), D(3, 7), 41262306a36Sopenharmony_ci D(4, 0), D(4, 1), D(4, 2), D(4, 3), D(4, 4), D(4, 5), D(4, 6), D(4, 7), 41362306a36Sopenharmony_ci D(5, 0), D(5, 1), D(5, 2), D(5, 3), D(5, 4), D(5, 5), D(5, 6), D(5, 7), 41462306a36Sopenharmony_ci D(6, 4), 41562306a36Sopenharmony_ci}; 41662306a36Sopenharmony_ci 41762306a36Sopenharmony_cistatic const struct sppctl_grp sp7021grps_prbp[] = { 41862306a36Sopenharmony_ci EGRP("PROBE_PORT1", 1, pins_prp1), 41962306a36Sopenharmony_ci EGRP("PROBE_PORT2", 2, pins_prp2), 42062306a36Sopenharmony_ci}; 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_ci/* 42362306a36Sopenharmony_ci * Due to compatible reason, the first valid item should start at the third 42462306a36Sopenharmony_ci * position of the array. Please keep the first two items of the table 42562306a36Sopenharmony_ci * no use (dummy). 42662306a36Sopenharmony_ci */ 42762306a36Sopenharmony_ciconst struct sppctl_func sppctl_list_funcs[] = { 42862306a36Sopenharmony_ci FNCN("", pinmux_type_fpmx, 0x00, 0, 0), 42962306a36Sopenharmony_ci FNCN("", pinmux_type_fpmx, 0x00, 0, 0), 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ci FNCN("L2SW_CLK_OUT", pinmux_type_fpmx, 0x00, 0, 7), 43262306a36Sopenharmony_ci FNCN("L2SW_MAC_SMI_MDC", pinmux_type_fpmx, 0x00, 8, 7), 43362306a36Sopenharmony_ci FNCN("L2SW_LED_FLASH0", pinmux_type_fpmx, 0x01, 0, 7), 43462306a36Sopenharmony_ci FNCN("L2SW_LED_FLASH1", pinmux_type_fpmx, 0x01, 8, 7), 43562306a36Sopenharmony_ci FNCN("L2SW_LED_ON0", pinmux_type_fpmx, 0x02, 0, 7), 43662306a36Sopenharmony_ci FNCN("L2SW_LED_ON1", pinmux_type_fpmx, 0x02, 8, 7), 43762306a36Sopenharmony_ci FNCN("L2SW_MAC_SMI_MDIO", pinmux_type_fpmx, 0x03, 0, 7), 43862306a36Sopenharmony_ci FNCN("L2SW_P0_MAC_RMII_TXEN", pinmux_type_fpmx, 0x03, 8, 7), 43962306a36Sopenharmony_ci FNCN("L2SW_P0_MAC_RMII_TXD0", pinmux_type_fpmx, 0x04, 0, 7), 44062306a36Sopenharmony_ci FNCN("L2SW_P0_MAC_RMII_TXD1", pinmux_type_fpmx, 0x04, 8, 7), 44162306a36Sopenharmony_ci FNCN("L2SW_P0_MAC_RMII_CRSDV", pinmux_type_fpmx, 0x05, 0, 7), 44262306a36Sopenharmony_ci FNCN("L2SW_P0_MAC_RMII_RXD0", pinmux_type_fpmx, 0x05, 8, 7), 44362306a36Sopenharmony_ci FNCN("L2SW_P0_MAC_RMII_RXD1", pinmux_type_fpmx, 0x06, 0, 7), 44462306a36Sopenharmony_ci FNCN("L2SW_P0_MAC_RMII_RXER", pinmux_type_fpmx, 0x06, 8, 7), 44562306a36Sopenharmony_ci FNCN("L2SW_P1_MAC_RMII_TXEN", pinmux_type_fpmx, 0x07, 0, 7), 44662306a36Sopenharmony_ci FNCN("L2SW_P1_MAC_RMII_TXD0", pinmux_type_fpmx, 0x07, 8, 7), 44762306a36Sopenharmony_ci FNCN("L2SW_P1_MAC_RMII_TXD1", pinmux_type_fpmx, 0x08, 0, 7), 44862306a36Sopenharmony_ci FNCN("L2SW_P1_MAC_RMII_CRSDV", pinmux_type_fpmx, 0x08, 8, 7), 44962306a36Sopenharmony_ci FNCN("L2SW_P1_MAC_RMII_RXD0", pinmux_type_fpmx, 0x09, 0, 7), 45062306a36Sopenharmony_ci FNCN("L2SW_P1_MAC_RMII_RXD1", pinmux_type_fpmx, 0x09, 8, 7), 45162306a36Sopenharmony_ci FNCN("L2SW_P1_MAC_RMII_RXER", pinmux_type_fpmx, 0x0A, 0, 7), 45262306a36Sopenharmony_ci FNCN("DAISY_MODE", pinmux_type_fpmx, 0x0A, 8, 7), 45362306a36Sopenharmony_ci FNCN("SDIO_CLK", pinmux_type_fpmx, 0x0B, 0, 7), /* 1x SDIO */ 45462306a36Sopenharmony_ci FNCN("SDIO_CMD", pinmux_type_fpmx, 0x0B, 8, 7), 45562306a36Sopenharmony_ci FNCN("SDIO_D0", pinmux_type_fpmx, 0x0C, 0, 7), 45662306a36Sopenharmony_ci FNCN("SDIO_D1", pinmux_type_fpmx, 0x0C, 8, 7), 45762306a36Sopenharmony_ci FNCN("SDIO_D2", pinmux_type_fpmx, 0x0D, 0, 7), 45862306a36Sopenharmony_ci FNCN("SDIO_D3", pinmux_type_fpmx, 0x0D, 8, 7), 45962306a36Sopenharmony_ci FNCN("PWM0", pinmux_type_fpmx, 0x0E, 0, 7), /* 8x PWM */ 46062306a36Sopenharmony_ci FNCN("PWM1", pinmux_type_fpmx, 0x0E, 8, 7), 46162306a36Sopenharmony_ci FNCN("PWM2", pinmux_type_fpmx, 0x0F, 0, 7), 46262306a36Sopenharmony_ci FNCN("PWM3", pinmux_type_fpmx, 0x0F, 8, 7), 46362306a36Sopenharmony_ci 46462306a36Sopenharmony_ci FNCN("PWM4", pinmux_type_fpmx, 0x10, 0, 7), 46562306a36Sopenharmony_ci FNCN("PWM5", pinmux_type_fpmx, 0x10, 8, 7), 46662306a36Sopenharmony_ci FNCN("PWM6", pinmux_type_fpmx, 0x11, 0, 7), 46762306a36Sopenharmony_ci FNCN("PWM7", pinmux_type_fpmx, 0x11, 8, 7), 46862306a36Sopenharmony_ci FNCN("ICM0_D", pinmux_type_fpmx, 0x12, 0, 7), /* 4x Input captures */ 46962306a36Sopenharmony_ci FNCN("ICM1_D", pinmux_type_fpmx, 0x12, 8, 7), 47062306a36Sopenharmony_ci FNCN("ICM2_D", pinmux_type_fpmx, 0x13, 0, 7), 47162306a36Sopenharmony_ci FNCN("ICM3_D", pinmux_type_fpmx, 0x13, 8, 7), 47262306a36Sopenharmony_ci FNCN("ICM0_CLK", pinmux_type_fpmx, 0x14, 0, 7), 47362306a36Sopenharmony_ci FNCN("ICM1_CLK", pinmux_type_fpmx, 0x14, 8, 7), 47462306a36Sopenharmony_ci FNCN("ICM2_CLK", pinmux_type_fpmx, 0x15, 0, 7), 47562306a36Sopenharmony_ci FNCN("ICM3_CLK", pinmux_type_fpmx, 0x15, 8, 7), 47662306a36Sopenharmony_ci FNCN("SPIM0_INT", pinmux_type_fpmx, 0x16, 0, 7), /* 4x SPI masters */ 47762306a36Sopenharmony_ci FNCN("SPIM0_CLK", pinmux_type_fpmx, 0x16, 8, 7), 47862306a36Sopenharmony_ci FNCN("SPIM0_EN", pinmux_type_fpmx, 0x17, 0, 7), 47962306a36Sopenharmony_ci FNCN("SPIM0_DO", pinmux_type_fpmx, 0x17, 8, 7), 48062306a36Sopenharmony_ci FNCN("SPIM0_DI", pinmux_type_fpmx, 0x18, 0, 7), 48162306a36Sopenharmony_ci FNCN("SPIM1_INT", pinmux_type_fpmx, 0x18, 8, 7), 48262306a36Sopenharmony_ci FNCN("SPIM1_CLK", pinmux_type_fpmx, 0x19, 0, 7), 48362306a36Sopenharmony_ci FNCN("SPIM1_EN", pinmux_type_fpmx, 0x19, 8, 7), 48462306a36Sopenharmony_ci FNCN("SPIM1_DO", pinmux_type_fpmx, 0x1A, 0, 7), 48562306a36Sopenharmony_ci FNCN("SPIM1_DI", pinmux_type_fpmx, 0x1A, 8, 7), 48662306a36Sopenharmony_ci FNCN("SPIM2_INT", pinmux_type_fpmx, 0x1B, 0, 7), 48762306a36Sopenharmony_ci FNCN("SPIM2_CLK", pinmux_type_fpmx, 0x1B, 8, 7), 48862306a36Sopenharmony_ci FNCN("SPIM2_EN", pinmux_type_fpmx, 0x1C, 0, 7), 48962306a36Sopenharmony_ci FNCN("SPIM2_DO", pinmux_type_fpmx, 0x1C, 8, 7), 49062306a36Sopenharmony_ci FNCN("SPIM2_DI", pinmux_type_fpmx, 0x1D, 0, 7), 49162306a36Sopenharmony_ci FNCN("SPIM3_INT", pinmux_type_fpmx, 0x1D, 8, 7), 49262306a36Sopenharmony_ci FNCN("SPIM3_CLK", pinmux_type_fpmx, 0x1E, 0, 7), 49362306a36Sopenharmony_ci FNCN("SPIM3_EN", pinmux_type_fpmx, 0x1E, 8, 7), 49462306a36Sopenharmony_ci FNCN("SPIM3_DO", pinmux_type_fpmx, 0x1F, 0, 7), 49562306a36Sopenharmony_ci FNCN("SPIM3_DI", pinmux_type_fpmx, 0x1F, 8, 7), 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_ci FNCN("SPI0S_INT", pinmux_type_fpmx, 0x20, 0, 7), /* 4x SPI slaves */ 49862306a36Sopenharmony_ci FNCN("SPI0S_CLK", pinmux_type_fpmx, 0x20, 8, 7), 49962306a36Sopenharmony_ci FNCN("SPI0S_EN", pinmux_type_fpmx, 0x21, 0, 7), 50062306a36Sopenharmony_ci FNCN("SPI0S_DO", pinmux_type_fpmx, 0x21, 8, 7), 50162306a36Sopenharmony_ci FNCN("SPI0S_DI", pinmux_type_fpmx, 0x22, 0, 7), 50262306a36Sopenharmony_ci FNCN("SPI1S_INT", pinmux_type_fpmx, 0x22, 8, 7), 50362306a36Sopenharmony_ci FNCN("SPI1S_CLK", pinmux_type_fpmx, 0x23, 0, 7), 50462306a36Sopenharmony_ci FNCN("SPI1S_EN", pinmux_type_fpmx, 0x23, 8, 7), 50562306a36Sopenharmony_ci FNCN("SPI1S_DO", pinmux_type_fpmx, 0x24, 0, 7), 50662306a36Sopenharmony_ci FNCN("SPI1S_DI", pinmux_type_fpmx, 0x24, 8, 7), 50762306a36Sopenharmony_ci FNCN("SPI2S_INT", pinmux_type_fpmx, 0x25, 0, 7), 50862306a36Sopenharmony_ci FNCN("SPI2S_CLK", pinmux_type_fpmx, 0x25, 8, 7), 50962306a36Sopenharmony_ci FNCN("SPI2S_EN", pinmux_type_fpmx, 0x26, 0, 7), 51062306a36Sopenharmony_ci FNCN("SPI2S_DO", pinmux_type_fpmx, 0x26, 8, 7), 51162306a36Sopenharmony_ci FNCN("SPI2S_DI", pinmux_type_fpmx, 0x27, 0, 7), 51262306a36Sopenharmony_ci FNCN("SPI3S_INT", pinmux_type_fpmx, 0x27, 8, 7), 51362306a36Sopenharmony_ci FNCN("SPI3S_CLK", pinmux_type_fpmx, 0x28, 0, 7), 51462306a36Sopenharmony_ci FNCN("SPI3S_EN", pinmux_type_fpmx, 0x28, 8, 7), 51562306a36Sopenharmony_ci FNCN("SPI3S_DO", pinmux_type_fpmx, 0x29, 0, 7), 51662306a36Sopenharmony_ci FNCN("SPI3S_DI", pinmux_type_fpmx, 0x29, 8, 7), 51762306a36Sopenharmony_ci FNCN("I2CM0_CLK", pinmux_type_fpmx, 0x2A, 0, 7), /* 4x I2C masters */ 51862306a36Sopenharmony_ci FNCN("I2CM0_DAT", pinmux_type_fpmx, 0x2A, 8, 7), 51962306a36Sopenharmony_ci FNCN("I2CM1_CLK", pinmux_type_fpmx, 0x2B, 0, 7), 52062306a36Sopenharmony_ci FNCN("I2CM1_DAT", pinmux_type_fpmx, 0x2B, 8, 7), 52162306a36Sopenharmony_ci FNCN("I2CM2_CLK", pinmux_type_fpmx, 0x2C, 0, 7), 52262306a36Sopenharmony_ci FNCN("I2CM2_DAT", pinmux_type_fpmx, 0x2C, 8, 7), 52362306a36Sopenharmony_ci FNCN("I2CM3_CLK", pinmux_type_fpmx, 0x2D, 0, 7), 52462306a36Sopenharmony_ci FNCN("I2CM3_DAT", pinmux_type_fpmx, 0x2D, 8, 7), 52562306a36Sopenharmony_ci FNCN("UA1_TX", pinmux_type_fpmx, 0x2E, 0, 7), /* 4x UARTS */ 52662306a36Sopenharmony_ci FNCN("UA1_RX", pinmux_type_fpmx, 0x2E, 8, 7), 52762306a36Sopenharmony_ci FNCN("UA1_CTS", pinmux_type_fpmx, 0x2F, 0, 7), 52862306a36Sopenharmony_ci FNCN("UA1_RTS", pinmux_type_fpmx, 0x2F, 8, 7), 52962306a36Sopenharmony_ci 53062306a36Sopenharmony_ci FNCN("UA2_TX", pinmux_type_fpmx, 0x30, 0, 7), 53162306a36Sopenharmony_ci FNCN("UA2_RX", pinmux_type_fpmx, 0x30, 8, 7), 53262306a36Sopenharmony_ci FNCN("UA2_CTS", pinmux_type_fpmx, 0x31, 0, 7), 53362306a36Sopenharmony_ci FNCN("UA2_RTS", pinmux_type_fpmx, 0x31, 8, 7), 53462306a36Sopenharmony_ci FNCN("UA3_TX", pinmux_type_fpmx, 0x32, 0, 7), 53562306a36Sopenharmony_ci FNCN("UA3_RX", pinmux_type_fpmx, 0x32, 8, 7), 53662306a36Sopenharmony_ci FNCN("UA3_CTS", pinmux_type_fpmx, 0x33, 0, 7), 53762306a36Sopenharmony_ci FNCN("UA3_RTS", pinmux_type_fpmx, 0x33, 8, 7), 53862306a36Sopenharmony_ci FNCN("UA4_TX", pinmux_type_fpmx, 0x34, 0, 7), 53962306a36Sopenharmony_ci FNCN("UA4_RX", pinmux_type_fpmx, 0x34, 8, 7), 54062306a36Sopenharmony_ci FNCN("UA4_CTS", pinmux_type_fpmx, 0x35, 0, 7), 54162306a36Sopenharmony_ci FNCN("UA4_RTS", pinmux_type_fpmx, 0x35, 8, 7), 54262306a36Sopenharmony_ci FNCN("TIMER0_INT", pinmux_type_fpmx, 0x36, 0, 7), /* 4x timer int. */ 54362306a36Sopenharmony_ci FNCN("TIMER1_INT", pinmux_type_fpmx, 0x36, 8, 7), 54462306a36Sopenharmony_ci FNCN("TIMER2_INT", pinmux_type_fpmx, 0x37, 0, 7), 54562306a36Sopenharmony_ci FNCN("TIMER3_INT", pinmux_type_fpmx, 0x37, 8, 7), 54662306a36Sopenharmony_ci FNCN("GPIO_INT0", pinmux_type_fpmx, 0x38, 0, 7), /* 8x GPIO int. */ 54762306a36Sopenharmony_ci FNCN("GPIO_INT1", pinmux_type_fpmx, 0x38, 8, 7), 54862306a36Sopenharmony_ci FNCN("GPIO_INT2", pinmux_type_fpmx, 0x39, 0, 7), 54962306a36Sopenharmony_ci FNCN("GPIO_INT3", pinmux_type_fpmx, 0x39, 8, 7), 55062306a36Sopenharmony_ci FNCN("GPIO_INT4", pinmux_type_fpmx, 0x3A, 0, 7), 55162306a36Sopenharmony_ci FNCN("GPIO_INT5", pinmux_type_fpmx, 0x3A, 8, 7), 55262306a36Sopenharmony_ci FNCN("GPIO_INT6", pinmux_type_fpmx, 0x3B, 0, 7), 55362306a36Sopenharmony_ci FNCN("GPIO_INT7", pinmux_type_fpmx, 0x3B, 8, 7), 55462306a36Sopenharmony_ci 55562306a36Sopenharmony_ci /* MOON1 register */ 55662306a36Sopenharmony_ci FNCE("SPI_FLASH", pinmux_type_grp, 0x01, 0, 2, sp7021grps_spif), 55762306a36Sopenharmony_ci FNCE("SPI_FLASH_4BIT", pinmux_type_grp, 0x01, 2, 2, sp7021grps_spi4), 55862306a36Sopenharmony_ci FNCE("SPI_NAND", pinmux_type_grp, 0x01, 4, 1, sp7021grps_snan), 55962306a36Sopenharmony_ci FNCE("CARD0_EMMC", pinmux_type_grp, 0x01, 5, 1, sp7021grps_emmc), 56062306a36Sopenharmony_ci FNCE("SD_CARD", pinmux_type_grp, 0x01, 6, 1, sp7021grps_sdsd), 56162306a36Sopenharmony_ci FNCE("UA0", pinmux_type_grp, 0x01, 7, 1, sp7021grps_uar0), 56262306a36Sopenharmony_ci FNCE("ACHIP_DEBUG", pinmux_type_grp, 0x01, 8, 2, sp7021grps_adbg), 56362306a36Sopenharmony_ci FNCE("ACHIP_UA2AXI", pinmux_type_grp, 0x01, 10, 2, sp7021grps_au2x), 56462306a36Sopenharmony_ci FNCE("FPGA_IFX", pinmux_type_grp, 0x01, 12, 1, sp7021grps_fpga), 56562306a36Sopenharmony_ci FNCE("HDMI_TX", pinmux_type_grp, 0x01, 13, 2, sp7021grps_hdmi), 56662306a36Sopenharmony_ci 56762306a36Sopenharmony_ci FNCE("AUD_EXT_ADC_IFX0", pinmux_type_grp, 0x01, 15, 1, sp7021grps_eadc), 56862306a36Sopenharmony_ci FNCE("AUD_EXT_DAC_IFX0", pinmux_type_grp, 0x02, 0, 1, sp7021grps_edac), 56962306a36Sopenharmony_ci FNCE("SPDIF_RX", pinmux_type_grp, 0x02, 2, 1, sp7021grps_spdi), 57062306a36Sopenharmony_ci FNCE("SPDIF_TX", pinmux_type_grp, 0x02, 3, 1, sp7021grps_spdo), 57162306a36Sopenharmony_ci FNCE("TDMTX_IFX0", pinmux_type_grp, 0x02, 4, 1, sp7021grps_tdmt), 57262306a36Sopenharmony_ci FNCE("TDMRX_IFX0", pinmux_type_grp, 0x02, 5, 1, sp7021grps_tdmr), 57362306a36Sopenharmony_ci FNCE("PDMRX_IFX0", pinmux_type_grp, 0x02, 6, 1, sp7021grps_pdmr), 57462306a36Sopenharmony_ci FNCE("PCM_IEC_TX", pinmux_type_grp, 0x02, 7, 1, sp7021grps_pcmt), 57562306a36Sopenharmony_ci FNCE("LCDIF", pinmux_type_grp, 0x04, 6, 1, sp7021grps_lcdi), 57662306a36Sopenharmony_ci FNCE("DVD_DSP_DEBUG", pinmux_type_grp, 0x02, 8, 1, sp7021grps_dvdd), 57762306a36Sopenharmony_ci FNCE("I2C_DEBUG", pinmux_type_grp, 0x02, 9, 1, sp7021grps_i2cd), 57862306a36Sopenharmony_ci FNCE("I2C_SLAVE", pinmux_type_grp, 0x02, 10, 1, sp7021grps_i2cs), 57962306a36Sopenharmony_ci FNCE("WAKEUP", pinmux_type_grp, 0x02, 11, 1, sp7021grps_wakp), 58062306a36Sopenharmony_ci FNCE("UART2AXI", pinmux_type_grp, 0x02, 12, 2, sp7021grps_u2ax), 58162306a36Sopenharmony_ci FNCE("USB0_I2C", pinmux_type_grp, 0x02, 14, 2, sp7021grps_u0ic), 58262306a36Sopenharmony_ci FNCE("USB1_I2C", pinmux_type_grp, 0x03, 0, 2, sp7021grps_u1ic), 58362306a36Sopenharmony_ci FNCE("USB0_OTG", pinmux_type_grp, 0x03, 2, 1, sp7021grps_u0ot), 58462306a36Sopenharmony_ci FNCE("USB1_OTG", pinmux_type_grp, 0x03, 3, 1, sp7021grps_u1ot), 58562306a36Sopenharmony_ci FNCE("UPHY0_DEBUG", pinmux_type_grp, 0x03, 4, 1, sp7021grps_up0d), 58662306a36Sopenharmony_ci FNCE("UPHY1_DEBUG", pinmux_type_grp, 0x03, 5, 1, sp7021grps_up1d), 58762306a36Sopenharmony_ci FNCE("UPHY0_EXT", pinmux_type_grp, 0x03, 6, 1, sp7021grps_upex), 58862306a36Sopenharmony_ci FNCE("PROBE_PORT", pinmux_type_grp, 0x03, 7, 2, sp7021grps_prbp), 58962306a36Sopenharmony_ci}; 59062306a36Sopenharmony_ci 59162306a36Sopenharmony_ciconst size_t sppctl_list_funcs_sz = ARRAY_SIZE(sppctl_list_funcs); 592