| /* |
| * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| /* |
| * ZynqMP system level PM-API functions for pin control. |
| */ |
| |
| #include <arch_helpers.h> |
| #include <platform.h> |
| #include <string.h> |
| #include "pm_api_pinctrl.h" |
| #include "pm_api_sys.h" |
| #include "pm_client.h" |
| #include "pm_common.h" |
| #include "pm_ipi.h" |
| |
| #define PINCTRL_FUNCTION_MASK U(0xFE) |
| #define PINCTRL_VOLTAGE_STATUS_MASK U(0x01) |
| #define NFUNCS_PER_PIN U(13) |
| #define PINCTRL_NUM_MIOS U(78) |
| #define MAX_PIN_PER_REG U(26) |
| #define PINCTRL_BANK_ADDR_STEP U(28) |
| |
| #define PINCTRL_DRVSTRN0_REG_OFFSET U(0) |
| #define PINCTRL_DRVSTRN1_REG_OFFSET U(4) |
| #define PINCTRL_SCHCMOS_REG_OFFSET U(8) |
| #define PINCTRL_PULLCTRL_REG_OFFSET U(12) |
| #define PINCTRL_PULLSTAT_REG_OFFSET U(16) |
| #define PINCTRL_SLEWCTRL_REG_OFFSET U(20) |
| #define PINCTRL_VOLTAGE_STAT_REG_OFFSET U(24) |
| |
| #define IOU_SLCR_BANK1_CTRL5 U(0XFF180164) |
| |
| #define PINCTRL_CFG_ADDR_OFFSET(addr, reg, miopin) \ |
| ((addr) + 4 * PINCTRL_NUM_MIOS + PINCTRL_BANK_ADDR_STEP * \ |
| ((miopin) / MAX_PIN_PER_REG) + (reg)) |
| |
| #define PINCTRL_PIN_OFFSET(_miopin) \ |
| ((_miopin) - (MAX_PIN_PER_REG * ((_miopin) / MAX_PIN_PER_REG))) |
| |
| #define PINCTRL_REGVAL_TO_PIN_CONFIG(_pin, _val) \ |
| (((_val) >> PINCTRL_PIN_OFFSET(_pin)) & 0x1) |
| |
| static uint8_t pm_pinctrl_mux[NFUNCS_PER_PIN] = { |
| 0x02, 0x04, 0x08, 0x10, 0x18, |
| 0x00, 0x20, 0x40, 0x60, 0x80, |
| 0xA0, 0xC0, 0xE0 |
| }; |
| |
| struct pinctrl_function { |
| char name[FUNCTION_NAME_LEN]; |
| uint16_t (*groups)[]; |
| uint8_t regval; |
| }; |
| |
| /* Max groups for one pin */ |
| #define MAX_PIN_GROUPS U(13) |
| |
| struct zynqmp_pin_group { |
| uint16_t (*groups)[]; |
| }; |
| |
| static struct pinctrl_function pinctrl_functions[MAX_FUNCTION] = { |
| [PINCTRL_FUNC_CAN0] = { |
| .name = "can0", |
| .regval = 0x20, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_CAN0_0, |
| PINCTRL_GRP_CAN0_1, |
| PINCTRL_GRP_CAN0_2, |
| PINCTRL_GRP_CAN0_3, |
| PINCTRL_GRP_CAN0_4, |
| PINCTRL_GRP_CAN0_5, |
| PINCTRL_GRP_CAN0_6, |
| PINCTRL_GRP_CAN0_7, |
| PINCTRL_GRP_CAN0_8, |
| PINCTRL_GRP_CAN0_9, |
| PINCTRL_GRP_CAN0_10, |
| PINCTRL_GRP_CAN0_11, |
| PINCTRL_GRP_CAN0_12, |
| PINCTRL_GRP_CAN0_13, |
| PINCTRL_GRP_CAN0_14, |
| PINCTRL_GRP_CAN0_15, |
| PINCTRL_GRP_CAN0_16, |
| PINCTRL_GRP_CAN0_17, |
| PINCTRL_GRP_CAN0_18, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_CAN1] = { |
| .name = "can1", |
| .regval = 0x20, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_CAN1_0, |
| PINCTRL_GRP_CAN1_1, |
| PINCTRL_GRP_CAN1_2, |
| PINCTRL_GRP_CAN1_3, |
| PINCTRL_GRP_CAN1_4, |
| PINCTRL_GRP_CAN1_5, |
| PINCTRL_GRP_CAN1_6, |
| PINCTRL_GRP_CAN1_7, |
| PINCTRL_GRP_CAN1_8, |
| PINCTRL_GRP_CAN1_9, |
| PINCTRL_GRP_CAN1_10, |
| PINCTRL_GRP_CAN1_11, |
| PINCTRL_GRP_CAN1_12, |
| PINCTRL_GRP_CAN1_13, |
| PINCTRL_GRP_CAN1_14, |
| PINCTRL_GRP_CAN1_15, |
| PINCTRL_GRP_CAN1_16, |
| PINCTRL_GRP_CAN1_17, |
| PINCTRL_GRP_CAN1_18, |
| PINCTRL_GRP_CAN1_19, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_ETHERNET0] = { |
| .name = "ethernet0", |
| .regval = 0x02, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_ETHERNET1] = { |
| .name = "ethernet1", |
| .regval = 0x02, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_ETHERNET2] = { |
| .name = "ethernet2", |
| .regval = 0x02, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_ETHERNET3] = { |
| .name = "ethernet3", |
| .regval = 0x02, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_GEMTSU0] = { |
| .name = "gemtsu0", |
| .regval = 0x02, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_GEMTSU0_0, |
| PINCTRL_GRP_GEMTSU0_1, |
| PINCTRL_GRP_GEMTSU0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_GPIO0] = { |
| .name = "gpio0", |
| .regval = 0x00, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_GPIO0_0, |
| PINCTRL_GRP_GPIO0_1, |
| PINCTRL_GRP_GPIO0_2, |
| PINCTRL_GRP_GPIO0_3, |
| PINCTRL_GRP_GPIO0_4, |
| PINCTRL_GRP_GPIO0_5, |
| PINCTRL_GRP_GPIO0_6, |
| PINCTRL_GRP_GPIO0_7, |
| PINCTRL_GRP_GPIO0_8, |
| PINCTRL_GRP_GPIO0_9, |
| PINCTRL_GRP_GPIO0_10, |
| PINCTRL_GRP_GPIO0_11, |
| PINCTRL_GRP_GPIO0_12, |
| PINCTRL_GRP_GPIO0_13, |
| PINCTRL_GRP_GPIO0_14, |
| PINCTRL_GRP_GPIO0_15, |
| PINCTRL_GRP_GPIO0_16, |
| PINCTRL_GRP_GPIO0_17, |
| PINCTRL_GRP_GPIO0_18, |
| PINCTRL_GRP_GPIO0_19, |
| PINCTRL_GRP_GPIO0_20, |
| PINCTRL_GRP_GPIO0_21, |
| PINCTRL_GRP_GPIO0_22, |
| PINCTRL_GRP_GPIO0_23, |
| PINCTRL_GRP_GPIO0_24, |
| PINCTRL_GRP_GPIO0_25, |
| PINCTRL_GRP_GPIO0_26, |
| PINCTRL_GRP_GPIO0_27, |
| PINCTRL_GRP_GPIO0_28, |
| PINCTRL_GRP_GPIO0_29, |
| PINCTRL_GRP_GPIO0_30, |
| PINCTRL_GRP_GPIO0_31, |
| PINCTRL_GRP_GPIO0_32, |
| PINCTRL_GRP_GPIO0_33, |
| PINCTRL_GRP_GPIO0_34, |
| PINCTRL_GRP_GPIO0_35, |
| PINCTRL_GRP_GPIO0_36, |
| PINCTRL_GRP_GPIO0_37, |
| PINCTRL_GRP_GPIO0_38, |
| PINCTRL_GRP_GPIO0_39, |
| PINCTRL_GRP_GPIO0_40, |
| PINCTRL_GRP_GPIO0_41, |
| PINCTRL_GRP_GPIO0_42, |
| PINCTRL_GRP_GPIO0_43, |
| PINCTRL_GRP_GPIO0_44, |
| PINCTRL_GRP_GPIO0_45, |
| PINCTRL_GRP_GPIO0_46, |
| PINCTRL_GRP_GPIO0_47, |
| PINCTRL_GRP_GPIO0_48, |
| PINCTRL_GRP_GPIO0_49, |
| PINCTRL_GRP_GPIO0_50, |
| PINCTRL_GRP_GPIO0_51, |
| PINCTRL_GRP_GPIO0_52, |
| PINCTRL_GRP_GPIO0_53, |
| PINCTRL_GRP_GPIO0_54, |
| PINCTRL_GRP_GPIO0_55, |
| PINCTRL_GRP_GPIO0_56, |
| PINCTRL_GRP_GPIO0_57, |
| PINCTRL_GRP_GPIO0_58, |
| PINCTRL_GRP_GPIO0_59, |
| PINCTRL_GRP_GPIO0_60, |
| PINCTRL_GRP_GPIO0_61, |
| PINCTRL_GRP_GPIO0_62, |
| PINCTRL_GRP_GPIO0_63, |
| PINCTRL_GRP_GPIO0_64, |
| PINCTRL_GRP_GPIO0_65, |
| PINCTRL_GRP_GPIO0_66, |
| PINCTRL_GRP_GPIO0_67, |
| PINCTRL_GRP_GPIO0_68, |
| PINCTRL_GRP_GPIO0_69, |
| PINCTRL_GRP_GPIO0_70, |
| PINCTRL_GRP_GPIO0_71, |
| PINCTRL_GRP_GPIO0_72, |
| PINCTRL_GRP_GPIO0_73, |
| PINCTRL_GRP_GPIO0_74, |
| PINCTRL_GRP_GPIO0_75, |
| PINCTRL_GRP_GPIO0_76, |
| PINCTRL_GRP_GPIO0_77, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_I2C0] = { |
| .name = "i2c0", |
| .regval = 0x40, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_I2C0_0, |
| PINCTRL_GRP_I2C0_1, |
| PINCTRL_GRP_I2C0_2, |
| PINCTRL_GRP_I2C0_3, |
| PINCTRL_GRP_I2C0_4, |
| PINCTRL_GRP_I2C0_5, |
| PINCTRL_GRP_I2C0_6, |
| PINCTRL_GRP_I2C0_7, |
| PINCTRL_GRP_I2C0_8, |
| PINCTRL_GRP_I2C0_9, |
| PINCTRL_GRP_I2C0_10, |
| PINCTRL_GRP_I2C0_11, |
| PINCTRL_GRP_I2C0_12, |
| PINCTRL_GRP_I2C0_13, |
| PINCTRL_GRP_I2C0_14, |
| PINCTRL_GRP_I2C0_15, |
| PINCTRL_GRP_I2C0_16, |
| PINCTRL_GRP_I2C0_17, |
| PINCTRL_GRP_I2C0_18, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_I2C1] = { |
| .name = "i2c1", |
| .regval = 0x40, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_I2C1_0, |
| PINCTRL_GRP_I2C1_1, |
| PINCTRL_GRP_I2C1_2, |
| PINCTRL_GRP_I2C1_3, |
| PINCTRL_GRP_I2C1_4, |
| PINCTRL_GRP_I2C1_5, |
| PINCTRL_GRP_I2C1_6, |
| PINCTRL_GRP_I2C1_7, |
| PINCTRL_GRP_I2C1_8, |
| PINCTRL_GRP_I2C1_9, |
| PINCTRL_GRP_I2C1_10, |
| PINCTRL_GRP_I2C1_11, |
| PINCTRL_GRP_I2C1_12, |
| PINCTRL_GRP_I2C1_13, |
| PINCTRL_GRP_I2C1_14, |
| PINCTRL_GRP_I2C1_15, |
| PINCTRL_GRP_I2C1_16, |
| PINCTRL_GRP_I2C1_17, |
| PINCTRL_GRP_I2C1_18, |
| PINCTRL_GRP_I2C1_19, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_MDIO0] = { |
| .name = "mdio0", |
| .regval = 0x60, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_MDIO0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_MDIO1] = { |
| .name = "mdio1", |
| .regval = 0x80, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_MDIO1_0, |
| PINCTRL_GRP_MDIO1_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_MDIO2] = { |
| .name = "mdio2", |
| .regval = 0xa0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_MDIO2_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_MDIO3] = { |
| .name = "mdio3", |
| .regval = 0xc0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_MDIO3_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_QSPI0] = { |
| .name = "qspi0", |
| .regval = 0x02, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_QSPI_FBCLK] = { |
| .name = "qspi_fbclk", |
| .regval = 0x02, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI_FBCLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_QSPI_SS] = { |
| .name = "qspi_ss", |
| .regval = 0x02, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI_SS, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SPI0] = { |
| .name = "spi0", |
| .regval = 0x80, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SPI0_0, |
| PINCTRL_GRP_SPI0_1, |
| PINCTRL_GRP_SPI0_2, |
| PINCTRL_GRP_SPI0_3, |
| PINCTRL_GRP_SPI0_4, |
| PINCTRL_GRP_SPI0_5, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SPI1] = { |
| .name = "spi1", |
| .regval = 0x80, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SPI1_0, |
| PINCTRL_GRP_SPI1_1, |
| PINCTRL_GRP_SPI1_2, |
| PINCTRL_GRP_SPI1_3, |
| PINCTRL_GRP_SPI1_4, |
| PINCTRL_GRP_SPI1_5, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SPI0_SS] = { |
| .name = "spi0_ss", |
| .regval = 0x80, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SPI0_0_SS0, |
| PINCTRL_GRP_SPI0_0_SS1, |
| PINCTRL_GRP_SPI0_0_SS2, |
| PINCTRL_GRP_SPI0_1_SS0, |
| PINCTRL_GRP_SPI0_1_SS1, |
| PINCTRL_GRP_SPI0_1_SS2, |
| PINCTRL_GRP_SPI0_2_SS0, |
| PINCTRL_GRP_SPI0_2_SS1, |
| PINCTRL_GRP_SPI0_2_SS2, |
| PINCTRL_GRP_SPI0_3_SS0, |
| PINCTRL_GRP_SPI0_3_SS1, |
| PINCTRL_GRP_SPI0_3_SS2, |
| PINCTRL_GRP_SPI0_4_SS0, |
| PINCTRL_GRP_SPI0_4_SS1, |
| PINCTRL_GRP_SPI0_4_SS2, |
| PINCTRL_GRP_SPI0_5_SS0, |
| PINCTRL_GRP_SPI0_5_SS1, |
| PINCTRL_GRP_SPI0_5_SS2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SPI1_SS] = { |
| .name = "spi1_ss", |
| .regval = 0x80, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SPI1_0_SS0, |
| PINCTRL_GRP_SPI1_0_SS1, |
| PINCTRL_GRP_SPI1_0_SS2, |
| PINCTRL_GRP_SPI1_1_SS0, |
| PINCTRL_GRP_SPI1_1_SS1, |
| PINCTRL_GRP_SPI1_1_SS2, |
| PINCTRL_GRP_SPI1_2_SS0, |
| PINCTRL_GRP_SPI1_2_SS1, |
| PINCTRL_GRP_SPI1_2_SS2, |
| PINCTRL_GRP_SPI1_3_SS0, |
| PINCTRL_GRP_SPI1_3_SS1, |
| PINCTRL_GRP_SPI1_3_SS2, |
| PINCTRL_GRP_SPI1_4_SS0, |
| PINCTRL_GRP_SPI1_4_SS1, |
| PINCTRL_GRP_SPI1_4_SS2, |
| PINCTRL_GRP_SPI1_5_SS0, |
| PINCTRL_GRP_SPI1_5_SS1, |
| PINCTRL_GRP_SPI1_5_SS2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SDIO0] = { |
| .name = "sdio0", |
| .regval = 0x08, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_SDIO0_4BIT_0_0, |
| PINCTRL_GRP_SDIO0_4BIT_0_1, |
| PINCTRL_GRP_SDIO0_4BIT_1_0, |
| PINCTRL_GRP_SDIO0_4BIT_1_1, |
| PINCTRL_GRP_SDIO0_4BIT_2_0, |
| PINCTRL_GRP_SDIO0_4BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_0, |
| PINCTRL_GRP_SDIO0_1BIT_0_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_2, |
| PINCTRL_GRP_SDIO0_1BIT_0_3, |
| PINCTRL_GRP_SDIO0_1BIT_0_4, |
| PINCTRL_GRP_SDIO0_1BIT_0_5, |
| PINCTRL_GRP_SDIO0_1BIT_0_6, |
| PINCTRL_GRP_SDIO0_1BIT_0_7, |
| PINCTRL_GRP_SDIO0_1BIT_1_0, |
| PINCTRL_GRP_SDIO0_1BIT_1_1, |
| PINCTRL_GRP_SDIO0_1BIT_1_2, |
| PINCTRL_GRP_SDIO0_1BIT_1_3, |
| PINCTRL_GRP_SDIO0_1BIT_1_4, |
| PINCTRL_GRP_SDIO0_1BIT_1_5, |
| PINCTRL_GRP_SDIO0_1BIT_1_6, |
| PINCTRL_GRP_SDIO0_1BIT_1_7, |
| PINCTRL_GRP_SDIO0_1BIT_2_0, |
| PINCTRL_GRP_SDIO0_1BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_2_2, |
| PINCTRL_GRP_SDIO0_1BIT_2_3, |
| PINCTRL_GRP_SDIO0_1BIT_2_4, |
| PINCTRL_GRP_SDIO0_1BIT_2_5, |
| PINCTRL_GRP_SDIO0_1BIT_2_6, |
| PINCTRL_GRP_SDIO0_1BIT_2_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SDIO0_PC] = { |
| .name = "sdio0_pc", |
| .regval = 0x08, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SDIO0_0_PC, |
| PINCTRL_GRP_SDIO0_1_PC, |
| PINCTRL_GRP_SDIO0_2_PC, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SDIO0_CD] = { |
| .name = "sdio0_cd", |
| .regval = 0x08, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SDIO0_0_CD, |
| PINCTRL_GRP_SDIO0_1_CD, |
| PINCTRL_GRP_SDIO0_2_CD, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SDIO0_WP] = { |
| .name = "sdio0_wp", |
| .regval = 0x08, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SDIO0_0_WP, |
| PINCTRL_GRP_SDIO0_1_WP, |
| PINCTRL_GRP_SDIO0_2_WP, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SDIO1] = { |
| .name = "sdio1", |
| .regval = 0x10, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_SDIO1_4BIT_0_0, |
| PINCTRL_GRP_SDIO1_4BIT_0_1, |
| PINCTRL_GRP_SDIO1_4BIT_1_0, |
| PINCTRL_GRP_SDIO1_1BIT_0_0, |
| PINCTRL_GRP_SDIO1_1BIT_0_1, |
| PINCTRL_GRP_SDIO1_1BIT_0_2, |
| PINCTRL_GRP_SDIO1_1BIT_0_3, |
| PINCTRL_GRP_SDIO1_1BIT_0_4, |
| PINCTRL_GRP_SDIO1_1BIT_0_5, |
| PINCTRL_GRP_SDIO1_1BIT_0_6, |
| PINCTRL_GRP_SDIO1_1BIT_0_7, |
| PINCTRL_GRP_SDIO1_1BIT_1_0, |
| PINCTRL_GRP_SDIO1_1BIT_1_1, |
| PINCTRL_GRP_SDIO1_1BIT_1_2, |
| PINCTRL_GRP_SDIO1_1BIT_1_3, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SDIO1_PC] = { |
| .name = "sdio1_pc", |
| .regval = 0x10, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SDIO1_0_PC, |
| PINCTRL_GRP_SDIO1_1_PC, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SDIO1_CD] = { |
| .name = "sdio1_cd", |
| .regval = 0x10, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SDIO1_0_CD, |
| PINCTRL_GRP_SDIO1_1_CD, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SDIO1_WP] = { |
| .name = "sdio1_wp", |
| .regval = 0x10, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SDIO1_0_WP, |
| PINCTRL_GRP_SDIO1_1_WP, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_NAND0] = { |
| .name = "nand0", |
| .regval = 0x04, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_NAND0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_NAND0_CE] = { |
| .name = "nand0_ce", |
| .regval = 0x04, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_NAND0_0_CE, |
| PINCTRL_GRP_NAND0_1_CE, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_NAND0_RB] = { |
| .name = "nand0_rb", |
| .regval = 0x04, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_NAND0_0_RB, |
| PINCTRL_GRP_NAND0_1_RB, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_NAND0_DQS] = { |
| .name = "nand0_dqs", |
| .regval = 0x04, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_NAND0_0_DQS, |
| PINCTRL_GRP_NAND0_1_DQS, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TTC0_CLK] = { |
| .name = "ttc0_clk", |
| .regval = 0xa0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TTC0_0_CLK, |
| PINCTRL_GRP_TTC0_1_CLK, |
| PINCTRL_GRP_TTC0_2_CLK, |
| PINCTRL_GRP_TTC0_3_CLK, |
| PINCTRL_GRP_TTC0_4_CLK, |
| PINCTRL_GRP_TTC0_5_CLK, |
| PINCTRL_GRP_TTC0_6_CLK, |
| PINCTRL_GRP_TTC0_7_CLK, |
| PINCTRL_GRP_TTC0_8_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TTC0_WAV] = { |
| .name = "ttc0_wav", |
| .regval = 0xa0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TTC0_0_WAV, |
| PINCTRL_GRP_TTC0_1_WAV, |
| PINCTRL_GRP_TTC0_2_WAV, |
| PINCTRL_GRP_TTC0_3_WAV, |
| PINCTRL_GRP_TTC0_4_WAV, |
| PINCTRL_GRP_TTC0_5_WAV, |
| PINCTRL_GRP_TTC0_6_WAV, |
| PINCTRL_GRP_TTC0_7_WAV, |
| PINCTRL_GRP_TTC0_8_WAV, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TTC1_CLK] = { |
| .name = "ttc1_clk", |
| .regval = 0xa0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TTC1_0_CLK, |
| PINCTRL_GRP_TTC1_1_CLK, |
| PINCTRL_GRP_TTC1_2_CLK, |
| PINCTRL_GRP_TTC1_3_CLK, |
| PINCTRL_GRP_TTC1_4_CLK, |
| PINCTRL_GRP_TTC1_5_CLK, |
| PINCTRL_GRP_TTC1_6_CLK, |
| PINCTRL_GRP_TTC1_7_CLK, |
| PINCTRL_GRP_TTC1_8_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TTC1_WAV] = { |
| .name = "ttc1_wav", |
| .regval = 0xa0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TTC1_0_WAV, |
| PINCTRL_GRP_TTC1_1_WAV, |
| PINCTRL_GRP_TTC1_2_WAV, |
| PINCTRL_GRP_TTC1_3_WAV, |
| PINCTRL_GRP_TTC1_4_WAV, |
| PINCTRL_GRP_TTC1_5_WAV, |
| PINCTRL_GRP_TTC1_6_WAV, |
| PINCTRL_GRP_TTC1_7_WAV, |
| PINCTRL_GRP_TTC1_8_WAV, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TTC2_CLK] = { |
| .name = "ttc2_clk", |
| .regval = 0xa0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TTC2_0_CLK, |
| PINCTRL_GRP_TTC2_1_CLK, |
| PINCTRL_GRP_TTC2_2_CLK, |
| PINCTRL_GRP_TTC2_3_CLK, |
| PINCTRL_GRP_TTC2_4_CLK, |
| PINCTRL_GRP_TTC2_5_CLK, |
| PINCTRL_GRP_TTC2_6_CLK, |
| PINCTRL_GRP_TTC2_7_CLK, |
| PINCTRL_GRP_TTC2_8_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TTC2_WAV] = { |
| .name = "ttc2_wav", |
| .regval = 0xa0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TTC2_0_WAV, |
| PINCTRL_GRP_TTC2_1_WAV, |
| PINCTRL_GRP_TTC2_2_WAV, |
| PINCTRL_GRP_TTC2_3_WAV, |
| PINCTRL_GRP_TTC2_4_WAV, |
| PINCTRL_GRP_TTC2_5_WAV, |
| PINCTRL_GRP_TTC2_6_WAV, |
| PINCTRL_GRP_TTC2_7_WAV, |
| PINCTRL_GRP_TTC2_8_WAV, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TTC3_CLK] = { |
| .name = "ttc3_clk", |
| .regval = 0xa0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TTC3_0_CLK, |
| PINCTRL_GRP_TTC3_1_CLK, |
| PINCTRL_GRP_TTC3_2_CLK, |
| PINCTRL_GRP_TTC3_3_CLK, |
| PINCTRL_GRP_TTC3_4_CLK, |
| PINCTRL_GRP_TTC3_5_CLK, |
| PINCTRL_GRP_TTC3_6_CLK, |
| PINCTRL_GRP_TTC3_7_CLK, |
| PINCTRL_GRP_TTC3_8_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TTC3_WAV] = { |
| .name = "ttc3_wav", |
| .regval = 0xa0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TTC3_0_WAV, |
| PINCTRL_GRP_TTC3_1_WAV, |
| PINCTRL_GRP_TTC3_2_WAV, |
| PINCTRL_GRP_TTC3_3_WAV, |
| PINCTRL_GRP_TTC3_4_WAV, |
| PINCTRL_GRP_TTC3_5_WAV, |
| PINCTRL_GRP_TTC3_6_WAV, |
| PINCTRL_GRP_TTC3_7_WAV, |
| PINCTRL_GRP_TTC3_8_WAV, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_UART0] = { |
| .name = "uart0", |
| .regval = 0xc0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_UART0_0, |
| PINCTRL_GRP_UART0_1, |
| PINCTRL_GRP_UART0_2, |
| PINCTRL_GRP_UART0_3, |
| PINCTRL_GRP_UART0_4, |
| PINCTRL_GRP_UART0_5, |
| PINCTRL_GRP_UART0_6, |
| PINCTRL_GRP_UART0_7, |
| PINCTRL_GRP_UART0_8, |
| PINCTRL_GRP_UART0_9, |
| PINCTRL_GRP_UART0_10, |
| PINCTRL_GRP_UART0_11, |
| PINCTRL_GRP_UART0_12, |
| PINCTRL_GRP_UART0_13, |
| PINCTRL_GRP_UART0_14, |
| PINCTRL_GRP_UART0_15, |
| PINCTRL_GRP_UART0_16, |
| PINCTRL_GRP_UART0_17, |
| PINCTRL_GRP_UART0_18, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_UART1] = { |
| .name = "uart1", |
| .regval = 0xc0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_UART1_0, |
| PINCTRL_GRP_UART1_1, |
| PINCTRL_GRP_UART1_2, |
| PINCTRL_GRP_UART1_3, |
| PINCTRL_GRP_UART1_4, |
| PINCTRL_GRP_UART1_5, |
| PINCTRL_GRP_UART1_6, |
| PINCTRL_GRP_UART1_7, |
| PINCTRL_GRP_UART1_8, |
| PINCTRL_GRP_UART1_9, |
| PINCTRL_GRP_UART1_10, |
| PINCTRL_GRP_UART1_11, |
| PINCTRL_GRP_UART1_12, |
| PINCTRL_GRP_UART1_13, |
| PINCTRL_GRP_UART1_14, |
| PINCTRL_GRP_UART1_15, |
| PINCTRL_GRP_UART1_16, |
| PINCTRL_GRP_UART1_17, |
| PINCTRL_GRP_UART1_18, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_USB0] = { |
| .name = "usb0", |
| .regval = 0x04, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_USB0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_USB1] = { |
| .name = "usb1", |
| .regval = 0x04, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_USB1_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SWDT0_CLK] = { |
| .name = "swdt0_clk", |
| .regval = 0x60, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SWDT0_0_CLK, |
| PINCTRL_GRP_SWDT0_1_CLK, |
| PINCTRL_GRP_SWDT0_2_CLK, |
| PINCTRL_GRP_SWDT0_3_CLK, |
| PINCTRL_GRP_SWDT0_4_CLK, |
| PINCTRL_GRP_SWDT0_5_CLK, |
| PINCTRL_GRP_SWDT0_6_CLK, |
| PINCTRL_GRP_SWDT0_7_CLK, |
| PINCTRL_GRP_SWDT0_8_CLK, |
| PINCTRL_GRP_SWDT0_9_CLK, |
| PINCTRL_GRP_SWDT0_10_CLK, |
| PINCTRL_GRP_SWDT0_11_CLK, |
| PINCTRL_GRP_SWDT0_12_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SWDT0_RST] = { |
| .name = "swdt0_rst", |
| .regval = 0x60, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SWDT0_0_RST, |
| PINCTRL_GRP_SWDT0_1_RST, |
| PINCTRL_GRP_SWDT0_2_RST, |
| PINCTRL_GRP_SWDT0_3_RST, |
| PINCTRL_GRP_SWDT0_4_RST, |
| PINCTRL_GRP_SWDT0_5_RST, |
| PINCTRL_GRP_SWDT0_6_RST, |
| PINCTRL_GRP_SWDT0_7_RST, |
| PINCTRL_GRP_SWDT0_8_RST, |
| PINCTRL_GRP_SWDT0_9_RST, |
| PINCTRL_GRP_SWDT0_10_RST, |
| PINCTRL_GRP_SWDT0_11_RST, |
| PINCTRL_GRP_SWDT0_12_RST, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SWDT1_CLK] = { |
| .name = "swdt1_clk", |
| .regval = 0x60, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SWDT1_0_CLK, |
| PINCTRL_GRP_SWDT1_1_CLK, |
| PINCTRL_GRP_SWDT1_2_CLK, |
| PINCTRL_GRP_SWDT1_3_CLK, |
| PINCTRL_GRP_SWDT1_4_CLK, |
| PINCTRL_GRP_SWDT1_5_CLK, |
| PINCTRL_GRP_SWDT1_6_CLK, |
| PINCTRL_GRP_SWDT1_7_CLK, |
| PINCTRL_GRP_SWDT1_8_CLK, |
| PINCTRL_GRP_SWDT1_9_CLK, |
| PINCTRL_GRP_SWDT1_10_CLK, |
| PINCTRL_GRP_SWDT1_11_CLK, |
| PINCTRL_GRP_SWDT1_12_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_SWDT1_RST] = { |
| .name = "swdt1_rst", |
| .regval = 0x60, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_SWDT1_0_RST, |
| PINCTRL_GRP_SWDT1_1_RST, |
| PINCTRL_GRP_SWDT1_2_RST, |
| PINCTRL_GRP_SWDT1_3_RST, |
| PINCTRL_GRP_SWDT1_4_RST, |
| PINCTRL_GRP_SWDT1_5_RST, |
| PINCTRL_GRP_SWDT1_6_RST, |
| PINCTRL_GRP_SWDT1_7_RST, |
| PINCTRL_GRP_SWDT1_8_RST, |
| PINCTRL_GRP_SWDT1_9_RST, |
| PINCTRL_GRP_SWDT1_10_RST, |
| PINCTRL_GRP_SWDT1_11_RST, |
| PINCTRL_GRP_SWDT1_12_RST, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_PMU0] = { |
| .name = "pmu0", |
| .regval = 0x08, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_PMU0_0, |
| PINCTRL_GRP_PMU0_1, |
| PINCTRL_GRP_PMU0_2, |
| PINCTRL_GRP_PMU0_3, |
| PINCTRL_GRP_PMU0_4, |
| PINCTRL_GRP_PMU0_5, |
| PINCTRL_GRP_PMU0_6, |
| PINCTRL_GRP_PMU0_7, |
| PINCTRL_GRP_PMU0_8, |
| PINCTRL_GRP_PMU0_9, |
| PINCTRL_GRP_PMU0_10, |
| PINCTRL_GRP_PMU0_11, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_PCIE0] = { |
| .name = "pcie0", |
| .regval = 0x04, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_PCIE0_0, |
| PINCTRL_GRP_PCIE0_1, |
| PINCTRL_GRP_PCIE0_2, |
| PINCTRL_GRP_PCIE0_3, |
| PINCTRL_GRP_PCIE0_4, |
| PINCTRL_GRP_PCIE0_5, |
| PINCTRL_GRP_PCIE0_6, |
| PINCTRL_GRP_PCIE0_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_CSU0] = { |
| .name = "csu0", |
| .regval = 0x18, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_CSU0_0, |
| PINCTRL_GRP_CSU0_1, |
| PINCTRL_GRP_CSU0_2, |
| PINCTRL_GRP_CSU0_3, |
| PINCTRL_GRP_CSU0_4, |
| PINCTRL_GRP_CSU0_5, |
| PINCTRL_GRP_CSU0_6, |
| PINCTRL_GRP_CSU0_7, |
| PINCTRL_GRP_CSU0_8, |
| PINCTRL_GRP_CSU0_9, |
| PINCTRL_GRP_CSU0_10, |
| PINCTRL_GRP_CSU0_11, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_DPAUX0] = { |
| .name = "dpaux0", |
| .regval = 0x18, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_DPAUX0_0, |
| PINCTRL_GRP_DPAUX0_1, |
| PINCTRL_GRP_DPAUX0_2, |
| PINCTRL_GRP_DPAUX0_3, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_PJTAG0] = { |
| .name = "pjtag0", |
| .regval = 0x60, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_PJTAG0_0, |
| PINCTRL_GRP_PJTAG0_1, |
| PINCTRL_GRP_PJTAG0_2, |
| PINCTRL_GRP_PJTAG0_3, |
| PINCTRL_GRP_PJTAG0_4, |
| PINCTRL_GRP_PJTAG0_5, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TRACE0] = { |
| .name = "trace0", |
| .regval = 0xe0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TRACE0_0, |
| PINCTRL_GRP_TRACE0_1, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TRACE0_CLK] = { |
| .name = "trace0_clk", |
| .regval = 0xe0, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TRACE0_0_CLK, |
| PINCTRL_GRP_TRACE0_1_CLK, |
| PINCTRL_GRP_TRACE0_2_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_FUNC_TESTSCAN0] = { |
| .name = "testscan0", |
| .regval = 0x10, |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_TESTSCAN0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| }; |
| |
| static struct zynqmp_pin_group zynqmp_pin_groups[MAX_PIN] = { |
| [PINCTRL_PIN_0] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_0, |
| PINCTRL_GRP_CAN1_0, |
| PINCTRL_GRP_I2C1_0, |
| PINCTRL_GRP_PJTAG0_0, |
| PINCTRL_GRP_SPI0_0, |
| PINCTRL_GRP_TTC3_0_CLK, |
| PINCTRL_GRP_UART1_0, |
| PINCTRL_GRP_TRACE0_0_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_1] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_1, |
| PINCTRL_GRP_CAN1_0, |
| PINCTRL_GRP_I2C1_0, |
| PINCTRL_GRP_PJTAG0_0, |
| PINCTRL_GRP_SPI0_0_SS2, |
| PINCTRL_GRP_TTC3_0_WAV, |
| PINCTRL_GRP_UART1_0, |
| PINCTRL_GRP_TRACE0_0_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_2] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_2, |
| PINCTRL_GRP_CAN0_0, |
| PINCTRL_GRP_I2C0_0, |
| PINCTRL_GRP_PJTAG0_0, |
| PINCTRL_GRP_SPI0_0_SS1, |
| PINCTRL_GRP_TTC2_0_CLK, |
| PINCTRL_GRP_UART0_0, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_3] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_3, |
| PINCTRL_GRP_CAN0_0, |
| PINCTRL_GRP_I2C0_0, |
| PINCTRL_GRP_PJTAG0_0, |
| PINCTRL_GRP_SPI0_0_SS0, |
| PINCTRL_GRP_TTC2_0_WAV, |
| PINCTRL_GRP_UART0_0, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_4] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_4, |
| PINCTRL_GRP_CAN1_1, |
| PINCTRL_GRP_I2C1_1, |
| PINCTRL_GRP_SWDT1_0_CLK, |
| PINCTRL_GRP_SPI0_0, |
| PINCTRL_GRP_TTC1_0_CLK, |
| PINCTRL_GRP_UART1_1, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_5] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI_SS, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_5, |
| PINCTRL_GRP_CAN1_1, |
| PINCTRL_GRP_I2C1_1, |
| PINCTRL_GRP_SWDT1_0_RST, |
| PINCTRL_GRP_SPI0_0, |
| PINCTRL_GRP_TTC1_0_WAV, |
| PINCTRL_GRP_UART1_1, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_6] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI_FBCLK, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_6, |
| PINCTRL_GRP_CAN0_1, |
| PINCTRL_GRP_I2C0_1, |
| PINCTRL_GRP_SWDT0_0_CLK, |
| PINCTRL_GRP_SPI1_0, |
| PINCTRL_GRP_TTC0_0_CLK, |
| PINCTRL_GRP_UART0_1, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_7] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI_SS, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_7, |
| PINCTRL_GRP_CAN0_1, |
| PINCTRL_GRP_I2C0_1, |
| PINCTRL_GRP_SWDT0_0_RST, |
| PINCTRL_GRP_SPI1_0_SS2, |
| PINCTRL_GRP_TTC0_0_WAV, |
| PINCTRL_GRP_UART0_1, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_8] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_8, |
| PINCTRL_GRP_CAN1_2, |
| PINCTRL_GRP_I2C1_2, |
| PINCTRL_GRP_SWDT1_1_CLK, |
| PINCTRL_GRP_SPI1_0_SS1, |
| PINCTRL_GRP_TTC3_1_CLK, |
| PINCTRL_GRP_UART1_2, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_9] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_NAND0_0_CE, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_9, |
| PINCTRL_GRP_CAN1_2, |
| PINCTRL_GRP_I2C1_2, |
| PINCTRL_GRP_SWDT1_1_RST, |
| PINCTRL_GRP_SPI1_0_SS0, |
| PINCTRL_GRP_TTC3_1_WAV, |
| PINCTRL_GRP_UART1_2, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_10] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_NAND0_0_RB, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_10, |
| PINCTRL_GRP_CAN0_2, |
| PINCTRL_GRP_I2C0_2, |
| PINCTRL_GRP_SWDT0_1_CLK, |
| PINCTRL_GRP_SPI1_0, |
| PINCTRL_GRP_TTC2_1_CLK, |
| PINCTRL_GRP_UART0_2, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_11] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_NAND0_0_RB, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_11, |
| PINCTRL_GRP_CAN0_2, |
| PINCTRL_GRP_I2C0_2, |
| PINCTRL_GRP_SWDT0_1_RST, |
| PINCTRL_GRP_SPI1_0, |
| PINCTRL_GRP_TTC2_1_WAV, |
| PINCTRL_GRP_UART0_2, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_12] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_QSPI0_0, |
| PINCTRL_GRP_NAND0_0_DQS, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_12, |
| PINCTRL_GRP_CAN1_3, |
| PINCTRL_GRP_I2C1_3, |
| PINCTRL_GRP_PJTAG0_1, |
| PINCTRL_GRP_SPI0_1, |
| PINCTRL_GRP_TTC1_1_CLK, |
| PINCTRL_GRP_UART1_3, |
| PINCTRL_GRP_TRACE0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_13] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_13, |
| PINCTRL_GRP_CAN1_3, |
| PINCTRL_GRP_I2C1_3, |
| PINCTRL_GRP_PJTAG0_1, |
| PINCTRL_GRP_SPI0_1_SS2, |
| PINCTRL_GRP_TTC1_1_WAV, |
| PINCTRL_GRP_UART1_3, |
| PINCTRL_GRP_TRACE0_0, |
| PINCTRL_GRP_SDIO0_4BIT_0_0, |
| PINCTRL_GRP_SDIO0_1BIT_0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_14] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_14, |
| PINCTRL_GRP_CAN0_3, |
| PINCTRL_GRP_I2C0_3, |
| PINCTRL_GRP_PJTAG0_1, |
| PINCTRL_GRP_SPI0_1_SS1, |
| PINCTRL_GRP_TTC0_1_CLK, |
| PINCTRL_GRP_UART0_3, |
| PINCTRL_GRP_TRACE0_0, |
| PINCTRL_GRP_SDIO0_4BIT_0_0, |
| PINCTRL_GRP_SDIO0_1BIT_0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_15] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_15, |
| PINCTRL_GRP_CAN0_3, |
| PINCTRL_GRP_I2C0_3, |
| PINCTRL_GRP_PJTAG0_1, |
| PINCTRL_GRP_SPI0_1_SS0, |
| PINCTRL_GRP_TTC0_1_WAV, |
| PINCTRL_GRP_UART0_3, |
| PINCTRL_GRP_TRACE0_0, |
| PINCTRL_GRP_SDIO0_4BIT_0_0, |
| PINCTRL_GRP_SDIO0_1BIT_0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_16] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_16, |
| PINCTRL_GRP_CAN1_4, |
| PINCTRL_GRP_I2C1_4, |
| PINCTRL_GRP_SWDT1_2_CLK, |
| PINCTRL_GRP_SPI0_1, |
| PINCTRL_GRP_TTC3_2_CLK, |
| PINCTRL_GRP_UART1_4, |
| PINCTRL_GRP_TRACE0_0, |
| PINCTRL_GRP_SDIO0_4BIT_0_0, |
| PINCTRL_GRP_SDIO0_1BIT_0_3, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_17] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_17, |
| PINCTRL_GRP_CAN1_4, |
| PINCTRL_GRP_I2C1_4, |
| PINCTRL_GRP_SWDT1_2_RST, |
| PINCTRL_GRP_SPI0_1, |
| PINCTRL_GRP_TTC3_2_WAV, |
| PINCTRL_GRP_UART1_4, |
| PINCTRL_GRP_TRACE0_0, |
| PINCTRL_GRP_SDIO0_4BIT_0_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_4, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_18] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_0, |
| PINCTRL_GRP_GPIO0_18, |
| PINCTRL_GRP_CAN0_4, |
| PINCTRL_GRP_I2C0_4, |
| PINCTRL_GRP_SWDT0_2_CLK, |
| PINCTRL_GRP_SPI1_1, |
| PINCTRL_GRP_TTC2_2_CLK, |
| PINCTRL_GRP_UART0_4, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_0_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_5, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_19] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_1, |
| PINCTRL_GRP_GPIO0_19, |
| PINCTRL_GRP_CAN0_4, |
| PINCTRL_GRP_I2C0_4, |
| PINCTRL_GRP_SWDT0_2_RST, |
| PINCTRL_GRP_SPI1_1_SS2, |
| PINCTRL_GRP_TTC2_2_WAV, |
| PINCTRL_GRP_UART0_4, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_0_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_6, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_20] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_2, |
| PINCTRL_GRP_GPIO0_20, |
| PINCTRL_GRP_CAN1_5, |
| PINCTRL_GRP_I2C1_5, |
| PINCTRL_GRP_SWDT1_3_CLK, |
| PINCTRL_GRP_SPI1_1_SS1, |
| PINCTRL_GRP_TTC1_2_CLK, |
| PINCTRL_GRP_UART1_5, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_0_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_21] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_3, |
| PINCTRL_GRP_GPIO0_21, |
| PINCTRL_GRP_CAN1_5, |
| PINCTRL_GRP_I2C1_5, |
| PINCTRL_GRP_SWDT1_3_RST, |
| PINCTRL_GRP_SPI1_1_SS0, |
| PINCTRL_GRP_TTC1_2_WAV, |
| PINCTRL_GRP_UART1_5, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_0_0, |
| PINCTRL_GRP_SDIO0_4BIT_0_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_0, |
| PINCTRL_GRP_SDIO0_1BIT_0_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_2, |
| PINCTRL_GRP_SDIO0_1BIT_0_3, |
| PINCTRL_GRP_SDIO0_1BIT_0_4, |
| PINCTRL_GRP_SDIO0_1BIT_0_5, |
| PINCTRL_GRP_SDIO0_1BIT_0_6, |
| PINCTRL_GRP_SDIO0_1BIT_0_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_22] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_4, |
| PINCTRL_GRP_GPIO0_22, |
| PINCTRL_GRP_CAN0_5, |
| PINCTRL_GRP_I2C0_5, |
| PINCTRL_GRP_SWDT0_3_CLK, |
| PINCTRL_GRP_SPI1_1, |
| PINCTRL_GRP_TTC0_2_CLK, |
| PINCTRL_GRP_UART0_5, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_0_0, |
| PINCTRL_GRP_SDIO0_4BIT_0_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_0, |
| PINCTRL_GRP_SDIO0_1BIT_0_1, |
| PINCTRL_GRP_SDIO0_1BIT_0_2, |
| PINCTRL_GRP_SDIO0_1BIT_0_3, |
| PINCTRL_GRP_SDIO0_1BIT_0_4, |
| PINCTRL_GRP_SDIO0_1BIT_0_5, |
| PINCTRL_GRP_SDIO0_1BIT_0_6, |
| PINCTRL_GRP_SDIO0_1BIT_0_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_23] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0_PC, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_5, |
| PINCTRL_GRP_GPIO0_23, |
| PINCTRL_GRP_CAN0_5, |
| PINCTRL_GRP_I2C0_5, |
| PINCTRL_GRP_SWDT0_3_RST, |
| PINCTRL_GRP_SPI1_1, |
| PINCTRL_GRP_TTC0_2_WAV, |
| PINCTRL_GRP_UART0_5, |
| PINCTRL_GRP_RESERVED, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_24] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0_CD, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_6, |
| PINCTRL_GRP_GPIO0_24, |
| PINCTRL_GRP_CAN1_6, |
| PINCTRL_GRP_I2C1_6, |
| PINCTRL_GRP_SWDT1_4_CLK, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TTC3_3_CLK, |
| PINCTRL_GRP_UART1_6, |
| PINCTRL_GRP_RESERVED, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_25] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_NAND0_0, |
| PINCTRL_GRP_SDIO0_0_WP, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_7, |
| PINCTRL_GRP_GPIO0_25, |
| PINCTRL_GRP_CAN1_6, |
| PINCTRL_GRP_I2C1_6, |
| PINCTRL_GRP_SWDT1_4_RST, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_TTC3_3_WAV, |
| PINCTRL_GRP_UART1_6, |
| PINCTRL_GRP_RESERVED, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_26] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_GEMTSU0_0, |
| PINCTRL_GRP_NAND0_1_CE, |
| PINCTRL_GRP_PMU0_0, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_8, |
| PINCTRL_GRP_GPIO0_26, |
| PINCTRL_GRP_CAN0_6, |
| PINCTRL_GRP_I2C0_6, |
| PINCTRL_GRP_PJTAG0_2, |
| PINCTRL_GRP_SPI0_2, |
| PINCTRL_GRP_TTC2_3_CLK, |
| PINCTRL_GRP_UART0_6, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_27] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_NAND0_1_RB, |
| PINCTRL_GRP_PMU0_1, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_DPAUX0_0, |
| PINCTRL_GRP_GPIO0_27, |
| PINCTRL_GRP_CAN0_6, |
| PINCTRL_GRP_I2C0_6, |
| PINCTRL_GRP_PJTAG0_2, |
| PINCTRL_GRP_SPI0_2_SS2, |
| PINCTRL_GRP_TTC2_3_WAV, |
| PINCTRL_GRP_UART0_6, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_28] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_NAND0_1_RB, |
| PINCTRL_GRP_PMU0_2, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_DPAUX0_0, |
| PINCTRL_GRP_GPIO0_28, |
| PINCTRL_GRP_CAN1_7, |
| PINCTRL_GRP_I2C1_7, |
| PINCTRL_GRP_PJTAG0_2, |
| PINCTRL_GRP_SPI0_2_SS1, |
| PINCTRL_GRP_TTC1_3_CLK, |
| PINCTRL_GRP_UART1_7, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_29] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_PCIE0_0, |
| PINCTRL_GRP_PMU0_3, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_DPAUX0_1, |
| PINCTRL_GRP_GPIO0_29, |
| PINCTRL_GRP_CAN1_7, |
| PINCTRL_GRP_I2C1_7, |
| PINCTRL_GRP_PJTAG0_2, |
| PINCTRL_GRP_SPI0_2_SS0, |
| PINCTRL_GRP_TTC1_3_WAV, |
| PINCTRL_GRP_UART1_7, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_30] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_PCIE0_1, |
| PINCTRL_GRP_PMU0_4, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_DPAUX0_1, |
| PINCTRL_GRP_GPIO0_30, |
| PINCTRL_GRP_CAN0_7, |
| PINCTRL_GRP_I2C0_7, |
| PINCTRL_GRP_SWDT0_4_CLK, |
| PINCTRL_GRP_SPI0_2, |
| PINCTRL_GRP_TTC0_3_CLK, |
| PINCTRL_GRP_UART0_7, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_31] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_PCIE0_2, |
| PINCTRL_GRP_PMU0_5, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_9, |
| PINCTRL_GRP_GPIO0_31, |
| PINCTRL_GRP_CAN0_7, |
| PINCTRL_GRP_I2C0_7, |
| PINCTRL_GRP_SWDT0_4_RST, |
| PINCTRL_GRP_SPI0_2, |
| PINCTRL_GRP_TTC0_3_WAV, |
| PINCTRL_GRP_UART0_7, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_32] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_NAND0_1_DQS, |
| PINCTRL_GRP_PMU0_6, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_10, |
| PINCTRL_GRP_GPIO0_32, |
| PINCTRL_GRP_CAN1_8, |
| PINCTRL_GRP_I2C1_8, |
| PINCTRL_GRP_SWDT1_5_CLK, |
| PINCTRL_GRP_SPI1_2, |
| PINCTRL_GRP_TTC3_4_CLK, |
| PINCTRL_GRP_UART1_8, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_33] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_PCIE0_3, |
| PINCTRL_GRP_PMU0_7, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_CSU0_11, |
| PINCTRL_GRP_GPIO0_33, |
| PINCTRL_GRP_CAN1_8, |
| PINCTRL_GRP_I2C1_8, |
| PINCTRL_GRP_SWDT1_5_RST, |
| PINCTRL_GRP_SPI1_2_SS2, |
| PINCTRL_GRP_TTC3_4_WAV, |
| PINCTRL_GRP_UART1_8, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_34] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_PCIE0_4, |
| PINCTRL_GRP_PMU0_8, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_DPAUX0_2, |
| PINCTRL_GRP_GPIO0_34, |
| PINCTRL_GRP_CAN0_8, |
| PINCTRL_GRP_I2C0_8, |
| PINCTRL_GRP_SWDT0_5_CLK, |
| PINCTRL_GRP_SPI1_2_SS1, |
| PINCTRL_GRP_TTC2_4_CLK, |
| PINCTRL_GRP_UART0_8, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_35] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_PCIE0_5, |
| PINCTRL_GRP_PMU0_9, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_DPAUX0_2, |
| PINCTRL_GRP_GPIO0_35, |
| PINCTRL_GRP_CAN0_8, |
| PINCTRL_GRP_I2C0_8, |
| PINCTRL_GRP_SWDT0_5_RST, |
| PINCTRL_GRP_SPI1_2_SS0, |
| PINCTRL_GRP_TTC2_4_WAV, |
| PINCTRL_GRP_UART0_8, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_36] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_PCIE0_6, |
| PINCTRL_GRP_PMU0_10, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_DPAUX0_3, |
| PINCTRL_GRP_GPIO0_36, |
| PINCTRL_GRP_CAN1_9, |
| PINCTRL_GRP_I2C1_9, |
| PINCTRL_GRP_SWDT1_6_CLK, |
| PINCTRL_GRP_SPI1_2, |
| PINCTRL_GRP_TTC1_4_CLK, |
| PINCTRL_GRP_UART1_9, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_37] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET0_0, |
| PINCTRL_GRP_PCIE0_7, |
| PINCTRL_GRP_PMU0_11, |
| PINCTRL_GRP_TESTSCAN0_0, |
| PINCTRL_GRP_DPAUX0_3, |
| PINCTRL_GRP_GPIO0_37, |
| PINCTRL_GRP_CAN1_9, |
| PINCTRL_GRP_I2C1_9, |
| PINCTRL_GRP_SWDT1_6_RST, |
| PINCTRL_GRP_SPI1_2, |
| PINCTRL_GRP_TTC1_4_WAV, |
| PINCTRL_GRP_UART1_9, |
| PINCTRL_GRP_TRACE0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_38] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_38, |
| PINCTRL_GRP_CAN0_9, |
| PINCTRL_GRP_I2C0_9, |
| PINCTRL_GRP_PJTAG0_3, |
| PINCTRL_GRP_SPI0_3, |
| PINCTRL_GRP_TTC0_4_CLK, |
| PINCTRL_GRP_UART0_9, |
| PINCTRL_GRP_TRACE0_1_CLK, |
| PINCTRL_GRP_SDIO0_4BIT_1_0, |
| PINCTRL_GRP_SDIO0_4BIT_1_1, |
| PINCTRL_GRP_SDIO0_1BIT_1_0, |
| PINCTRL_GRP_SDIO0_1BIT_1_1, |
| PINCTRL_GRP_SDIO0_1BIT_1_2, |
| PINCTRL_GRP_SDIO0_1BIT_1_3, |
| PINCTRL_GRP_SDIO0_1BIT_1_4, |
| PINCTRL_GRP_SDIO0_1BIT_1_5, |
| PINCTRL_GRP_SDIO0_1BIT_1_6, |
| PINCTRL_GRP_SDIO0_1BIT_1_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_39] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1_CD, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_39, |
| PINCTRL_GRP_CAN0_9, |
| PINCTRL_GRP_I2C0_9, |
| PINCTRL_GRP_PJTAG0_3, |
| PINCTRL_GRP_SPI0_3_SS2, |
| PINCTRL_GRP_TTC0_4_WAV, |
| PINCTRL_GRP_UART0_9, |
| PINCTRL_GRP_TRACE0_1_CLK, |
| PINCTRL_GRP_SDIO1_4BIT_0_0, |
| PINCTRL_GRP_SDIO1_1BIT_0_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_40] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_40, |
| PINCTRL_GRP_CAN1_10, |
| PINCTRL_GRP_I2C1_10, |
| PINCTRL_GRP_PJTAG0_3, |
| PINCTRL_GRP_SPI0_3_SS1, |
| PINCTRL_GRP_TTC3_5_CLK, |
| PINCTRL_GRP_UART1_10, |
| PINCTRL_GRP_TRACE0_1, |
| PINCTRL_GRP_SDIO0_4BIT_1_0, |
| PINCTRL_GRP_SDIO0_4BIT_1_1, |
| PINCTRL_GRP_SDIO0_1BIT_1_0, |
| PINCTRL_GRP_SDIO0_1BIT_1_1, |
| PINCTRL_GRP_SDIO0_1BIT_1_2, |
| PINCTRL_GRP_SDIO0_1BIT_1_3, |
| PINCTRL_GRP_SDIO0_1BIT_1_4, |
| PINCTRL_GRP_SDIO0_1BIT_1_5, |
| PINCTRL_GRP_SDIO0_1BIT_1_6, |
| PINCTRL_GRP_SDIO0_1BIT_1_7, |
| PINCTRL_GRP_SDIO1_4BIT_0_0, |
| PINCTRL_GRP_SDIO1_1BIT_0_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_41] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_41, |
| PINCTRL_GRP_CAN1_10, |
| PINCTRL_GRP_I2C1_10, |
| PINCTRL_GRP_PJTAG0_3, |
| PINCTRL_GRP_SPI0_3_SS0, |
| PINCTRL_GRP_TTC3_5_WAV, |
| PINCTRL_GRP_UART1_10, |
| PINCTRL_GRP_TRACE0_1, |
| PINCTRL_GRP_SDIO0_4BIT_1_0, |
| PINCTRL_GRP_SDIO0_1BIT_1_0, |
| PINCTRL_GRP_SDIO1_4BIT_0_0, |
| PINCTRL_GRP_SDIO1_1BIT_0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_42] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_42, |
| PINCTRL_GRP_CAN0_10, |
| PINCTRL_GRP_I2C0_10, |
| PINCTRL_GRP_SWDT0_6_CLK, |
| PINCTRL_GRP_SPI0_3, |
| PINCTRL_GRP_TTC2_5_CLK, |
| PINCTRL_GRP_UART0_10, |
| PINCTRL_GRP_TRACE0_1, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO0_4BIT_1_0, |
| PINCTRL_GRP_SDIO0_1BIT_1_1, |
| PINCTRL_GRP_SDIO1_4BIT_0_0, |
| PINCTRL_GRP_SDIO1_1BIT_0_3, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_43] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO1_0_PC, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_43, |
| PINCTRL_GRP_CAN0_10, |
| PINCTRL_GRP_I2C0_10, |
| PINCTRL_GRP_SWDT0_6_RST, |
| PINCTRL_GRP_SPI0_3, |
| PINCTRL_GRP_TTC2_5_WAV, |
| PINCTRL_GRP_UART0_10, |
| PINCTRL_GRP_TRACE0_1, |
| PINCTRL_GRP_SDIO0_4BIT_1_0, |
| PINCTRL_GRP_SDIO0_1BIT_1_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_44] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO1_0_WP, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_44, |
| PINCTRL_GRP_CAN1_11, |
| PINCTRL_GRP_I2C1_11, |
| PINCTRL_GRP_SWDT1_7_CLK, |
| PINCTRL_GRP_SPI1_3, |
| PINCTRL_GRP_TTC1_5_CLK, |
| PINCTRL_GRP_UART1_11, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_1_0, |
| PINCTRL_GRP_SDIO0_1BIT_1_3, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_45] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO1_0_CD, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_45, |
| PINCTRL_GRP_CAN1_11, |
| PINCTRL_GRP_I2C1_11, |
| PINCTRL_GRP_SWDT1_7_RST, |
| PINCTRL_GRP_SPI1_3_SS2, |
| PINCTRL_GRP_TTC1_5_WAV, |
| PINCTRL_GRP_UART1_11, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_1_1, |
| PINCTRL_GRP_SDIO0_1BIT_1_4, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_46] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_46, |
| PINCTRL_GRP_CAN0_11, |
| PINCTRL_GRP_I2C0_11, |
| PINCTRL_GRP_SWDT0_7_CLK, |
| PINCTRL_GRP_SPI1_3_SS1, |
| PINCTRL_GRP_TTC0_5_CLK, |
| PINCTRL_GRP_UART0_11, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_1_1, |
| PINCTRL_GRP_SDIO0_1BIT_1_5, |
| PINCTRL_GRP_SDIO1_4BIT_0_1, |
| PINCTRL_GRP_SDIO1_1BIT_0_4, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_47] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_47, |
| PINCTRL_GRP_CAN0_11, |
| PINCTRL_GRP_I2C0_11, |
| PINCTRL_GRP_SWDT0_7_RST, |
| PINCTRL_GRP_SPI1_3_SS0, |
| PINCTRL_GRP_TTC0_5_WAV, |
| PINCTRL_GRP_UART0_11, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_1_1, |
| PINCTRL_GRP_SDIO0_1BIT_1_6, |
| PINCTRL_GRP_SDIO1_4BIT_0_1, |
| PINCTRL_GRP_SDIO1_1BIT_0_5, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_48] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_48, |
| PINCTRL_GRP_CAN1_12, |
| PINCTRL_GRP_I2C1_12, |
| PINCTRL_GRP_SWDT1_8_CLK, |
| PINCTRL_GRP_SPI1_3, |
| PINCTRL_GRP_TTC3_6_CLK, |
| PINCTRL_GRP_UART1_12, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_1_1, |
| PINCTRL_GRP_SDIO0_1BIT_1_7, |
| PINCTRL_GRP_SDIO1_4BIT_0_1, |
| PINCTRL_GRP_SDIO1_1BIT_0_6, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_49] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1_PC, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_49, |
| PINCTRL_GRP_CAN1_12, |
| PINCTRL_GRP_I2C1_12, |
| PINCTRL_GRP_SWDT1_8_RST, |
| PINCTRL_GRP_SPI1_3, |
| PINCTRL_GRP_TTC3_6_WAV, |
| PINCTRL_GRP_UART1_12, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO1_4BIT_0_1, |
| PINCTRL_GRP_SDIO1_1BIT_0_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_50] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_GEMTSU0_1, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_1_WP, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_50, |
| PINCTRL_GRP_CAN0_12, |
| PINCTRL_GRP_I2C0_12, |
| PINCTRL_GRP_SWDT0_8_CLK, |
| PINCTRL_GRP_MDIO1_0, |
| PINCTRL_GRP_TTC2_6_CLK, |
| PINCTRL_GRP_UART0_12, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO1_4BIT_0_0, |
| PINCTRL_GRP_SDIO1_4BIT_0_1, |
| PINCTRL_GRP_SDIO1_1BIT_0_0, |
| PINCTRL_GRP_SDIO1_1BIT_0_1, |
| PINCTRL_GRP_SDIO1_1BIT_0_2, |
| PINCTRL_GRP_SDIO1_1BIT_0_3, |
| PINCTRL_GRP_SDIO1_1BIT_0_4, |
| PINCTRL_GRP_SDIO1_1BIT_0_5, |
| PINCTRL_GRP_SDIO1_1BIT_0_6, |
| PINCTRL_GRP_SDIO1_1BIT_0_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_51] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_GEMTSU0_2, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_51, |
| PINCTRL_GRP_CAN0_12, |
| PINCTRL_GRP_I2C0_12, |
| PINCTRL_GRP_SWDT0_8_RST, |
| PINCTRL_GRP_MDIO1_0, |
| PINCTRL_GRP_TTC2_6_WAV, |
| PINCTRL_GRP_UART0_12, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO1_4BIT_0_0, |
| PINCTRL_GRP_SDIO1_4BIT_0_1, |
| PINCTRL_GRP_SDIO1_1BIT_0_0, |
| PINCTRL_GRP_SDIO1_1BIT_0_1, |
| PINCTRL_GRP_SDIO1_1BIT_0_2, |
| PINCTRL_GRP_SDIO1_1BIT_0_3, |
| PINCTRL_GRP_SDIO1_1BIT_0_4, |
| PINCTRL_GRP_SDIO1_1BIT_0_5, |
| PINCTRL_GRP_SDIO1_1BIT_0_6, |
| PINCTRL_GRP_SDIO1_1BIT_0_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_52] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_52, |
| PINCTRL_GRP_CAN1_13, |
| PINCTRL_GRP_I2C1_13, |
| PINCTRL_GRP_PJTAG0_4, |
| PINCTRL_GRP_SPI0_4, |
| PINCTRL_GRP_TTC1_6_CLK, |
| PINCTRL_GRP_UART1_13, |
| PINCTRL_GRP_TRACE0_2_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_53] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_53, |
| PINCTRL_GRP_CAN1_13, |
| PINCTRL_GRP_I2C1_13, |
| PINCTRL_GRP_PJTAG0_4, |
| PINCTRL_GRP_SPI0_4_SS2, |
| PINCTRL_GRP_TTC1_6_WAV, |
| PINCTRL_GRP_UART1_13, |
| PINCTRL_GRP_TRACE0_2_CLK, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_54] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_54, |
| PINCTRL_GRP_CAN0_13, |
| PINCTRL_GRP_I2C0_13, |
| PINCTRL_GRP_PJTAG0_4, |
| PINCTRL_GRP_SPI0_4_SS1, |
| PINCTRL_GRP_TTC0_6_CLK, |
| PINCTRL_GRP_UART0_13, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_55] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_55, |
| PINCTRL_GRP_CAN0_13, |
| PINCTRL_GRP_I2C0_13, |
| PINCTRL_GRP_PJTAG0_4, |
| PINCTRL_GRP_SPI0_4_SS0, |
| PINCTRL_GRP_TTC0_6_WAV, |
| PINCTRL_GRP_UART0_13, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_56] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_56, |
| PINCTRL_GRP_CAN1_14, |
| PINCTRL_GRP_I2C1_14, |
| PINCTRL_GRP_SWDT1_9_CLK, |
| PINCTRL_GRP_SPI0_4, |
| PINCTRL_GRP_TTC3_7_CLK, |
| PINCTRL_GRP_UART1_14, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_57] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_57, |
| PINCTRL_GRP_CAN1_14, |
| PINCTRL_GRP_I2C1_14, |
| PINCTRL_GRP_SWDT1_9_RST, |
| PINCTRL_GRP_SPI0_4, |
| PINCTRL_GRP_TTC3_7_WAV, |
| PINCTRL_GRP_UART1_14, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_58] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_58, |
| PINCTRL_GRP_CAN0_14, |
| PINCTRL_GRP_I2C0_14, |
| PINCTRL_GRP_PJTAG0_5, |
| PINCTRL_GRP_SPI1_4, |
| PINCTRL_GRP_TTC2_7_CLK, |
| PINCTRL_GRP_UART0_14, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_59] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_59, |
| PINCTRL_GRP_CAN0_14, |
| PINCTRL_GRP_I2C0_14, |
| PINCTRL_GRP_PJTAG0_5, |
| PINCTRL_GRP_SPI1_4_SS2, |
| PINCTRL_GRP_TTC2_7_WAV, |
| PINCTRL_GRP_UART0_14, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_60] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_60, |
| PINCTRL_GRP_CAN1_15, |
| PINCTRL_GRP_I2C1_15, |
| PINCTRL_GRP_PJTAG0_5, |
| PINCTRL_GRP_SPI1_4_SS1, |
| PINCTRL_GRP_TTC1_7_CLK, |
| PINCTRL_GRP_UART1_15, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_61] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_61, |
| PINCTRL_GRP_CAN1_15, |
| PINCTRL_GRP_I2C1_15, |
| PINCTRL_GRP_PJTAG0_5, |
| PINCTRL_GRP_SPI1_4_SS0, |
| PINCTRL_GRP_TTC1_7_WAV, |
| PINCTRL_GRP_UART1_15, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_62] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_62, |
| PINCTRL_GRP_CAN0_15, |
| PINCTRL_GRP_I2C0_15, |
| PINCTRL_GRP_SWDT0_9_CLK, |
| PINCTRL_GRP_SPI1_4, |
| PINCTRL_GRP_TTC0_7_CLK, |
| PINCTRL_GRP_UART0_15, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_63] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET2_0, |
| PINCTRL_GRP_USB0_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_63, |
| PINCTRL_GRP_CAN0_15, |
| PINCTRL_GRP_I2C0_15, |
| PINCTRL_GRP_SWDT0_9_RST, |
| PINCTRL_GRP_SPI1_4, |
| PINCTRL_GRP_TTC0_7_WAV, |
| PINCTRL_GRP_UART0_15, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_64] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_64, |
| PINCTRL_GRP_CAN1_16, |
| PINCTRL_GRP_I2C1_16, |
| PINCTRL_GRP_SWDT1_10_CLK, |
| PINCTRL_GRP_SPI0_5, |
| PINCTRL_GRP_TTC3_8_CLK, |
| PINCTRL_GRP_UART1_16, |
| PINCTRL_GRP_TRACE0_2, |
| PINCTRL_GRP_SDIO0_4BIT_2_0, |
| PINCTRL_GRP_SDIO0_4BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_2_0, |
| PINCTRL_GRP_SDIO0_1BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_2_2, |
| PINCTRL_GRP_SDIO0_1BIT_2_3, |
| PINCTRL_GRP_SDIO0_1BIT_2_4, |
| PINCTRL_GRP_SDIO0_1BIT_2_5, |
| PINCTRL_GRP_SDIO0_1BIT_2_6, |
| PINCTRL_GRP_SDIO0_1BIT_2_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_65] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2_CD, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_65, |
| PINCTRL_GRP_CAN1_16, |
| PINCTRL_GRP_I2C1_16, |
| PINCTRL_GRP_SWDT1_10_RST, |
| PINCTRL_GRP_SPI0_5_SS2, |
| PINCTRL_GRP_TTC3_8_WAV, |
| PINCTRL_GRP_UART1_16, |
| PINCTRL_GRP_TRACE0_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_66] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_66, |
| PINCTRL_GRP_CAN0_16, |
| PINCTRL_GRP_I2C0_16, |
| PINCTRL_GRP_SWDT0_10_CLK, |
| PINCTRL_GRP_SPI0_5_SS1, |
| PINCTRL_GRP_TTC2_8_CLK, |
| PINCTRL_GRP_UART0_16, |
| PINCTRL_GRP_TRACE0_2, |
| PINCTRL_GRP_SDIO0_4BIT_2_0, |
| PINCTRL_GRP_SDIO0_4BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_2_0, |
| PINCTRL_GRP_SDIO0_1BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_2_2, |
| PINCTRL_GRP_SDIO0_1BIT_2_3, |
| PINCTRL_GRP_SDIO0_1BIT_2_4, |
| PINCTRL_GRP_SDIO0_1BIT_2_5, |
| PINCTRL_GRP_SDIO0_1BIT_2_6, |
| PINCTRL_GRP_SDIO0_1BIT_2_7, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_67] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_67, |
| PINCTRL_GRP_CAN0_16, |
| PINCTRL_GRP_I2C0_16, |
| PINCTRL_GRP_SWDT0_10_RST, |
| PINCTRL_GRP_SPI0_5_SS0, |
| PINCTRL_GRP_TTC2_8_WAV, |
| PINCTRL_GRP_UART0_16, |
| PINCTRL_GRP_TRACE0_2, |
| PINCTRL_GRP_SDIO0_4BIT_2_0, |
| PINCTRL_GRP_SDIO0_1BIT_2_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_68] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_68, |
| PINCTRL_GRP_CAN1_17, |
| PINCTRL_GRP_I2C1_17, |
| PINCTRL_GRP_SWDT1_11_CLK, |
| PINCTRL_GRP_SPI0_5, |
| PINCTRL_GRP_TTC1_8_CLK, |
| PINCTRL_GRP_UART1_17, |
| PINCTRL_GRP_TRACE0_2, |
| PINCTRL_GRP_SDIO0_4BIT_2_0, |
| PINCTRL_GRP_SDIO0_1BIT_2_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_69] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_SDIO1_1_WP, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_69, |
| PINCTRL_GRP_CAN1_17, |
| PINCTRL_GRP_I2C1_17, |
| PINCTRL_GRP_SWDT1_11_RST, |
| PINCTRL_GRP_SPI0_5, |
| PINCTRL_GRP_TTC1_8_WAV, |
| PINCTRL_GRP_UART1_17, |
| PINCTRL_GRP_TRACE0_2, |
| PINCTRL_GRP_SDIO0_4BIT_2_0, |
| PINCTRL_GRP_SDIO0_1BIT_2_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_70] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_SDIO1_1_PC, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_70, |
| PINCTRL_GRP_CAN0_17, |
| PINCTRL_GRP_I2C0_17, |
| PINCTRL_GRP_SWDT0_11_CLK, |
| PINCTRL_GRP_SPI1_5, |
| PINCTRL_GRP_TTC0_8_CLK, |
| PINCTRL_GRP_UART0_17, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_2_0, |
| PINCTRL_GRP_SDIO0_1BIT_2_3, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_71] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_SDIO1_4BIT_1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_71, |
| PINCTRL_GRP_CAN0_17, |
| PINCTRL_GRP_I2C0_17, |
| PINCTRL_GRP_SWDT0_11_RST, |
| PINCTRL_GRP_SPI1_5_SS2, |
| PINCTRL_GRP_TTC0_8_WAV, |
| PINCTRL_GRP_UART0_17, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_SDIO0_4BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_2_4, |
| PINCTRL_GRP_SDIO1_1BIT_1_0, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_72] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_SDIO1_4BIT_1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_72, |
| PINCTRL_GRP_CAN1_18, |
| PINCTRL_GRP_I2C1_18, |
| PINCTRL_GRP_SWDT1_12_CLK, |
| PINCTRL_GRP_SPI1_5_SS1, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_UART1_18, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_2_5, |
| PINCTRL_GRP_SDIO1_1BIT_1_1, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_73] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_SDIO1_4BIT_1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_73, |
| PINCTRL_GRP_CAN1_18, |
| PINCTRL_GRP_I2C1_18, |
| PINCTRL_GRP_SWDT1_12_RST, |
| PINCTRL_GRP_SPI1_5_SS0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_UART1_18, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_2_6, |
| PINCTRL_GRP_SDIO1_1BIT_1_2, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_74] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2, |
| PINCTRL_GRP_SDIO1_4BIT_1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_74, |
| PINCTRL_GRP_CAN0_18, |
| PINCTRL_GRP_I2C0_18, |
| PINCTRL_GRP_SWDT0_12_CLK, |
| PINCTRL_GRP_SPI1_5, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_UART0_18, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_4BIT_2_1, |
| PINCTRL_GRP_SDIO0_1BIT_2_7, |
| PINCTRL_GRP_SDIO1_1BIT_1_3, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_75] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_ETHERNET3_0, |
| PINCTRL_GRP_USB1_0, |
| PINCTRL_GRP_SDIO0_2_PC, |
| PINCTRL_GRP_SDIO1_4BIT_1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_75, |
| PINCTRL_GRP_CAN0_18, |
| PINCTRL_GRP_I2C0_18, |
| PINCTRL_GRP_SWDT0_12_RST, |
| PINCTRL_GRP_SPI1_5, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_UART0_18, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO1_1BIT_1_0, |
| PINCTRL_GRP_SDIO1_1BIT_1_1, |
| PINCTRL_GRP_SDIO1_1BIT_1_2, |
| PINCTRL_GRP_SDIO1_1BIT_1_3, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_76] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO0_2_WP, |
| PINCTRL_GRP_SDIO1_4BIT_1_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_76, |
| PINCTRL_GRP_CAN1_19, |
| PINCTRL_GRP_I2C1_19, |
| PINCTRL_GRP_MDIO0_0, |
| PINCTRL_GRP_MDIO1_1, |
| PINCTRL_GRP_MDIO2_0, |
| PINCTRL_GRP_MDIO3_0, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO1_1BIT_1_0, |
| PINCTRL_GRP_SDIO1_1BIT_1_1, |
| PINCTRL_GRP_SDIO1_1BIT_1_2, |
| PINCTRL_GRP_SDIO1_1BIT_1_3, |
| END_OF_GROUPS, |
| }), |
| }, |
| [PINCTRL_PIN_77] = { |
| .groups = &((uint16_t []) { |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_SDIO1_1_CD, |
| PINCTRL_GRP_RESERVED, |
| PINCTRL_GRP_GPIO0_77, |
| PINCTRL_GRP_CAN1_19, |
| PINCTRL_GRP_I2C1_19, |
| PINCTRL_GRP_MDIO0_0, |
| PINCTRL_GRP_MDIO1_1, |
| PINCTRL_GRP_MDIO2_0, |
| PINCTRL_GRP_MDIO3_0, |
| PINCTRL_GRP_RESERVED, |
| END_OF_GROUPS, |
| }), |
| }, |
| }; |
| |
| /** |
| * pm_api_pinctrl_get_num_pins() - PM call to request number of pins |
| * @npins Number of pins |
| * |
| * This function is used by master to get number of pins |
| * |
| * @return Returns success. |
| */ |
| enum pm_ret_status pm_api_pinctrl_get_num_pins(unsigned int *npins) |
| { |
| *npins = MAX_PIN; |
| |
| return PM_RET_SUCCESS; |
| } |
| |
| /** |
| * pm_api_pinctrl_get_num_functions() - PM call to request number of functions |
| * @nfuncs Number of functions |
| * |
| * This function is used by master to get number of functions |
| * |
| * @return Returns success. |
| */ |
| enum pm_ret_status pm_api_pinctrl_get_num_functions(unsigned int *nfuncs) |
| { |
| *nfuncs = MAX_FUNCTION; |
| |
| return PM_RET_SUCCESS; |
| } |
| |
| /** |
| * pm_api_pinctrl_get_num_func_groups() - PM call to request number of |
| * function groups |
| * @fid Function Id |
| * @ngroups Number of function groups |
| * |
| * This function is used by master to get number of function groups |
| * |
| * @return Returns success. |
| */ |
| enum pm_ret_status pm_api_pinctrl_get_num_func_groups(unsigned int fid, |
| unsigned int *ngroups) |
| { |
| int i = 0; |
| uint16_t *grps; |
| |
| if (fid >= MAX_FUNCTION) |
| return PM_RET_ERROR_ARGS; |
| |
| *ngroups = 0; |
| |
| grps = *pinctrl_functions[fid].groups; |
| if (grps == NULL) |
| return PM_RET_SUCCESS; |
| |
| while (grps[i++] != (uint16_t)END_OF_GROUPS) |
| (*ngroups)++; |
| |
| return PM_RET_SUCCESS; |
| } |
| |
| /** |
| * pm_api_pinctrl_get_function_name() - PM call to request a function name |
| * @fid Function ID |
| * @name Name of function (max 16 bytes) |
| * |
| * This function is used by master to get name of function specified |
| * by given function ID. |
| * |
| * @return Returns success. In case of error, name data is 0. |
| */ |
| enum pm_ret_status pm_api_pinctrl_get_function_name(unsigned int fid, |
| char *name) |
| { |
| if (fid >= MAX_FUNCTION) |
| memcpy(name, END_OF_FUNCTION, FUNCTION_NAME_LEN); |
| else |
| memcpy(name, pinctrl_functions[fid].name, FUNCTION_NAME_LEN); |
| |
| return PM_RET_SUCCESS; |
| } |
| |
| /** |
| * pm_api_pinctrl_get_function_groups() - PM call to request first 6 function |
| * groups of function Id |
| * @fid Function ID |
| * @index Index of next function groups |
| * @groups Function groups |
| * |
| * This function is used by master to get function groups specified |
| * by given function Id. This API will return 6 function groups with |
| * a single response. To get other function groups, master should call |
| * same API in loop with new function groups index till error is returned. |
| * |
| * E.g First call should have index 0 which will return function groups |
| * 0, 1, 2, 3, 4 and 5. Next call, index should be 6 which will return |
| * function groups 6, 7, 8, 9, 10 and 11 and so on. |
| * |
| * Return: Returns status, either success or error+reason. |
| */ |
| enum pm_ret_status pm_api_pinctrl_get_function_groups(unsigned int fid, |
| unsigned int index, |
| uint16_t *groups) |
| { |
| unsigned int i; |
| uint16_t *grps; |
| |
| if (fid >= MAX_FUNCTION) |
| return PM_RET_ERROR_ARGS; |
| |
| memset(groups, END_OF_GROUPS, GROUPS_PAYLOAD_LEN); |
| |
| grps = *pinctrl_functions[fid].groups; |
| if (grps == NULL) |
| return PM_RET_SUCCESS; |
| |
| /* Skip groups till index */ |
| for (i = 0; i < index; i++) |
| if (grps[i] == (uint16_t)END_OF_GROUPS) |
| return PM_RET_SUCCESS; |
| |
| for (i = 0; i < NUM_GROUPS_PER_RESP; i++) { |
| groups[i] = grps[index + i]; |
| if (groups[i] == (uint16_t)END_OF_GROUPS) |
| break; |
| } |
| |
| return PM_RET_SUCCESS; |
| } |
| |
| /** |
| * pm_api_pinctrl_get_pin_groups() - PM call to request first 6 pin |
| * groups of pin |
| * @pin Pin |
| * @index Index of next pin groups |
| * @groups pin groups |
| * |
| * This function is used by master to get pin groups specified |
| * by given pin Id. This API will return 6 pin groups with |
| * a single response. To get other pin groups, master should call |
| * same API in loop with new pin groups index till error is returned. |
| * |
| * E.g First call should have index 0 which will return pin groups |
| * 0, 1, 2, 3, 4 and 5. Next call, index should be 6 which will return |
| * pin groups 6, 7, 8, 9, 10 and 11 and so on. |
| * |
| * Return: Returns status, either success or error+reason. |
| */ |
| enum pm_ret_status pm_api_pinctrl_get_pin_groups(unsigned int pin, |
| unsigned int index, |
| uint16_t *groups) |
| { |
| unsigned int i; |
| uint16_t *grps; |
| |
| if (pin >= MAX_PIN) |
| return PM_RET_ERROR_ARGS; |
| |
| memset(groups, END_OF_GROUPS, GROUPS_PAYLOAD_LEN); |
| |
| grps = *zynqmp_pin_groups[pin].groups; |
| if (!grps) |
| return PM_RET_SUCCESS; |
| |
| /* Skip groups till index */ |
| for (i = 0; i < index; i++) |
| if (grps[i] == (uint16_t)END_OF_GROUPS) |
| return PM_RET_SUCCESS; |
| |
| for (i = 0; i < NUM_GROUPS_PER_RESP; i++) { |
| groups[i] = grps[index + i]; |
| if (groups[i] == (uint16_t)END_OF_GROUPS) |
| break; |
| } |
| |
| return PM_RET_SUCCESS; |
| } |
| |
| /** |
| * pm_api_pinctrl_get_function() - Read function id set for the given pin |
| * @pin Pin number |
| * @nid Node ID of function currently set for given pin |
| * |
| * This function provides the function currently set for the given pin. |
| * |
| * @return Returns status, either success or error+reason |
| */ |
| enum pm_ret_status pm_api_pinctrl_get_function(unsigned int pin, |
| unsigned int *id) |
| { |
| unsigned int i = 0, j = 0; |
| enum pm_ret_status ret = PM_RET_SUCCESS; |
| unsigned int ctrlreg, val, gid; |
| uint16_t *grps; |
| |
| ctrlreg = IOU_SLCR_BASEADDR + 4U * pin; |
| ret = pm_mmio_read(ctrlreg, &val); |
| if (ret != PM_RET_SUCCESS) |
| return ret; |
| |
| val &= PINCTRL_FUNCTION_MASK; |
| |
| for (i = 0; i < NFUNCS_PER_PIN; i++) |
| if (val == pm_pinctrl_mux[i]) |
| break; |
| |
| if (i == NFUNCS_PER_PIN) |
| return PM_RET_ERROR_NOTSUPPORTED; |
| |
| gid = *(*zynqmp_pin_groups[pin].groups + i); |
| |
| for (i = 0; i < MAX_FUNCTION; i++) { |
| grps = *pinctrl_functions[i].groups; |
| if (grps == NULL) |
| continue; |
| if (val != pinctrl_functions[i].regval) |
| continue; |
| |
| for (j = 0; grps[j] != (uint16_t)END_OF_GROUPS; j++) { |
| if (gid == grps[j]) { |
| *id = i; |
| goto done; |
| } |
| } |
| } |
| if (i == MAX_FUNCTION) |
| ret = PM_RET_ERROR_ARGS; |
| done: |
| return ret; |
| } |
| |
| /** |
| * pm_api_pinctrl_set_function() - Set function id set for the given pin |
| * @pin Pin number |
| * @nid Node ID of function to set for given pin |
| * |
| * This function provides the function currently set for the given pin. |
| * |
| * @return Returns status, either success or error+reason |
| */ |
| enum pm_ret_status pm_api_pinctrl_set_function(unsigned int pin, |
| unsigned int fid) |
| { |
| int i, j; |
| unsigned int ctrlreg, val; |
| uint16_t *pgrps, *fgrps; |
| |
| ctrlreg = IOU_SLCR_BASEADDR + 4U * pin; |
| val = pinctrl_functions[fid].regval; |
| |
| for (i = 0; i < NFUNCS_PER_PIN; i++) |
| if (val == pm_pinctrl_mux[i]) |
| break; |
| |
| if (i == NFUNCS_PER_PIN) |
| return PM_RET_ERROR_NOTSUPPORTED; |
| |
| pgrps = *zynqmp_pin_groups[pin].groups; |
| if (!pgrps) |
| return PM_RET_ERROR_NOTSUPPORTED; |
| |
| fgrps = *pinctrl_functions[fid].groups; |
| if (!fgrps) |
| return PM_RET_ERROR_NOTSUPPORTED; |
| |
| for (i = 0; fgrps[i] != (uint16_t)END_OF_GROUPS; i++) |
| for (j = 0; pgrps[j] != (uint16_t)END_OF_GROUPS; j++) |
| if (fgrps[i] == pgrps[j]) |
| goto match; |
| |
| return PM_RET_ERROR_NOTSUPPORTED; |
| |
| match: |
| return pm_mmio_write(ctrlreg, PINCTRL_FUNCTION_MASK, val); |
| } |
| |
| /** |
| * pm_api_pinctrl_set_config() - Set configuration parameter for given pin |
| * @pin: Pin for which configuration is to be set |
| * @param: Configuration parameter to be set |
| * @value: Value to be set for configuration parameter |
| * |
| * This function sets value of requested configuration parameter for given pin. |
| * |
| * @return Returns status, either success or error+reason |
| */ |
| enum pm_ret_status pm_api_pinctrl_set_config(unsigned int pin, |
| unsigned int param, |
| unsigned int value) |
| { |
| enum pm_ret_status ret; |
| unsigned int ctrlreg, mask, val, offset; |
| |
| if (param >= PINCTRL_CONFIG_MAX) |
| return PM_RET_ERROR_NOTSUPPORTED; |
| |
| if (pin >= PINCTRL_NUM_MIOS) |
| return PM_RET_ERROR_ARGS; |
| |
| mask = 1 << PINCTRL_PIN_OFFSET(pin); |
| |
| switch (param) { |
| case PINCTRL_CONFIG_SLEW_RATE: |
| if (value != PINCTRL_SLEW_RATE_FAST && |
| value != PINCTRL_SLEW_RATE_SLOW) |
| return PM_RET_ERROR_ARGS; |
| |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_SLEWCTRL_REG_OFFSET, |
| pin); |
| val = value << PINCTRL_PIN_OFFSET(pin); |
| ret = pm_mmio_write(ctrlreg, mask, val); |
| break; |
| case PINCTRL_CONFIG_BIAS_STATUS: |
| if (value != PINCTRL_BIAS_ENABLE && |
| value != PINCTRL_BIAS_DISABLE) |
| return PM_RET_ERROR_ARGS; |
| |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_PULLSTAT_REG_OFFSET, |
| pin); |
| |
| offset = PINCTRL_PIN_OFFSET(pin); |
| if (ctrlreg == IOU_SLCR_BANK1_CTRL5) |
| offset = (offset < 12U) ? |
| (offset + 14U) : (offset - 12U); |
| |
| val = value << offset; |
| mask = 1 << offset; |
| ret = pm_mmio_write(ctrlreg, mask, val); |
| break; |
| case PINCTRL_CONFIG_PULL_CTRL: |
| |
| if (value != PINCTRL_BIAS_PULL_DOWN && |
| value != PINCTRL_BIAS_PULL_UP) |
| return PM_RET_ERROR_ARGS; |
| |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_PULLSTAT_REG_OFFSET, |
| pin); |
| |
| offset = PINCTRL_PIN_OFFSET(pin); |
| if (ctrlreg == IOU_SLCR_BANK1_CTRL5) |
| offset = (offset < 12U) ? |
| (offset + 14U) : (offset - 12U); |
| |
| val = PINCTRL_BIAS_ENABLE << offset; |
| ret = pm_mmio_write(ctrlreg, 1 << offset, val); |
| if (ret != PM_RET_SUCCESS) |
| return ret; |
| |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_PULLCTRL_REG_OFFSET, |
| pin); |
| val = value << PINCTRL_PIN_OFFSET(pin); |
| ret = pm_mmio_write(ctrlreg, mask, val); |
| break; |
| case PINCTRL_CONFIG_SCHMITT_CMOS: |
| if (value != PINCTRL_INPUT_TYPE_CMOS && |
| value != PINCTRL_INPUT_TYPE_SCHMITT) |
| return PM_RET_ERROR_ARGS; |
| |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_SCHCMOS_REG_OFFSET, |
| pin); |
| |
| val = value << PINCTRL_PIN_OFFSET(pin); |
| ret = pm_mmio_write(ctrlreg, mask, val); |
| break; |
| case PINCTRL_CONFIG_DRIVE_STRENGTH: |
| if (value > PINCTRL_DRIVE_STRENGTH_12MA) |
| return PM_RET_ERROR_ARGS; |
| |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_DRVSTRN0_REG_OFFSET, |
| pin); |
| val = (value >> 1) << PINCTRL_PIN_OFFSET(pin); |
| ret = pm_mmio_write(ctrlreg, mask, val); |
| if (ret) |
| return ret; |
| |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_DRVSTRN1_REG_OFFSET, |
| pin); |
| val = (value & 0x01U) << PINCTRL_PIN_OFFSET(pin); |
| ret = pm_mmio_write(ctrlreg, mask, val); |
| break; |
| default: |
| ERROR("Invalid parameter %u\n", param); |
| ret = PM_RET_ERROR_NOTSUPPORTED; |
| break; |
| } |
| |
| return ret; |
| } |
| |
| /** |
| * pm_api_pinctrl_get_config() - Get configuration parameter value for given pin |
| * @pin: Pin for which configuration is to be read |
| * @param: Configuration parameter to be read |
| * @value: buffer to store value of configuration parameter |
| * |
| * This function reads value of requested configuration parameter for given pin. |
| * |
| * @return Returns status, either success or error+reason |
| */ |
| enum pm_ret_status pm_api_pinctrl_get_config(unsigned int pin, |
| unsigned int param, |
| unsigned int *value) |
| { |
| enum pm_ret_status ret; |
| unsigned int ctrlreg, val; |
| |
| if (param >= PINCTRL_CONFIG_MAX) |
| return PM_RET_ERROR_NOTSUPPORTED; |
| |
| if (pin >= PINCTRL_NUM_MIOS) |
| return PM_RET_ERROR_ARGS; |
| |
| switch (param) { |
| case PINCTRL_CONFIG_SLEW_RATE: |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_SLEWCTRL_REG_OFFSET, |
| pin); |
| |
| ret = pm_mmio_read(ctrlreg, &val); |
| if (ret != PM_RET_SUCCESS) |
| return ret; |
| |
| *value = PINCTRL_REGVAL_TO_PIN_CONFIG(pin, val); |
| break; |
| case PINCTRL_CONFIG_BIAS_STATUS: |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_PULLSTAT_REG_OFFSET, |
| pin); |
| |
| ret = pm_mmio_read(ctrlreg, &val); |
| if (ret) |
| return ret; |
| |
| if (ctrlreg == IOU_SLCR_BANK1_CTRL5) |
| val = ((val & 0x3FFF) << 12) | ((val >> 14) & 0xFFF); |
| |
| *value = PINCTRL_REGVAL_TO_PIN_CONFIG(pin, val); |
| break; |
| case PINCTRL_CONFIG_PULL_CTRL: |
| |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_PULLCTRL_REG_OFFSET, |
| pin); |
| |
| ret = pm_mmio_read(ctrlreg, &val); |
| if (ret) |
| return ret; |
| |
| *value = PINCTRL_REGVAL_TO_PIN_CONFIG(pin, val); |
| break; |
| case PINCTRL_CONFIG_SCHMITT_CMOS: |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_SCHCMOS_REG_OFFSET, |
| pin); |
| |
| ret = pm_mmio_read(ctrlreg, &val); |
| if (ret) |
| return ret; |
| |
| *value = PINCTRL_REGVAL_TO_PIN_CONFIG(pin, val); |
| break; |
| case PINCTRL_CONFIG_DRIVE_STRENGTH: |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_DRVSTRN0_REG_OFFSET, |
| pin); |
| ret = pm_mmio_read(ctrlreg, &val); |
| if (ret) |
| return ret; |
| |
| *value = PINCTRL_REGVAL_TO_PIN_CONFIG(pin, val) << 1; |
| |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_DRVSTRN1_REG_OFFSET, |
| pin); |
| ret = pm_mmio_read(ctrlreg, &val); |
| if (ret) |
| return ret; |
| |
| *value |= PINCTRL_REGVAL_TO_PIN_CONFIG(pin, val); |
| break; |
| case PINCTRL_CONFIG_VOLTAGE_STATUS: |
| ctrlreg = PINCTRL_CFG_ADDR_OFFSET(IOU_SLCR_BASEADDR, |
| PINCTRL_VOLTAGE_STAT_REG_OFFSET, |
| pin); |
| |
| ret = pm_mmio_read(ctrlreg, &val); |
| if (ret) |
| return ret; |
| |
| *value = val & PINCTRL_VOLTAGE_STATUS_MASK; |
| break; |
| default: |
| return PM_RET_ERROR_NOTSUPPORTED; |
| } |
| |
| return PM_RET_SUCCESS; |
| } |