162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Pinctrl data for VIA VT8500 SoC 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (c) 2013 Tony Prisk <linux@prisktech.co.nz> 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <linux/io.h> 962306a36Sopenharmony_ci#include <linux/init.h> 1062306a36Sopenharmony_ci#include <linux/pinctrl/pinctrl.h> 1162306a36Sopenharmony_ci#include <linux/platform_device.h> 1262306a36Sopenharmony_ci#include <linux/slab.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include "pinctrl-wmt.h" 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci/* 1762306a36Sopenharmony_ci * Describe the register offsets within the GPIO memory space 1862306a36Sopenharmony_ci * The dedicated external GPIO's should always be listed in bank 0 1962306a36Sopenharmony_ci * so they are exported in the 0..31 range which is what users 2062306a36Sopenharmony_ci * expect. 2162306a36Sopenharmony_ci * 2262306a36Sopenharmony_ci * Do not reorder these banks as it will change the pin numbering 2362306a36Sopenharmony_ci */ 2462306a36Sopenharmony_cistatic const struct wmt_pinctrl_bank_registers vt8500_banks[] = { 2562306a36Sopenharmony_ci WMT_PINCTRL_BANK(NO_REG, 0x3C, 0x5C, 0x7C, NO_REG, NO_REG), /* 0 */ 2662306a36Sopenharmony_ci WMT_PINCTRL_BANK(0x00, 0x20, 0x40, 0x60, NO_REG, NO_REG), /* 1 */ 2762306a36Sopenharmony_ci WMT_PINCTRL_BANK(0x04, 0x24, 0x44, 0x64, NO_REG, NO_REG), /* 2 */ 2862306a36Sopenharmony_ci WMT_PINCTRL_BANK(0x08, 0x28, 0x48, 0x68, NO_REG, NO_REG), /* 3 */ 2962306a36Sopenharmony_ci WMT_PINCTRL_BANK(0x0C, 0x2C, 0x4C, 0x6C, NO_REG, NO_REG), /* 4 */ 3062306a36Sopenharmony_ci WMT_PINCTRL_BANK(0x10, 0x30, 0x50, 0x70, NO_REG, NO_REG), /* 5 */ 3162306a36Sopenharmony_ci WMT_PINCTRL_BANK(0x14, 0x34, 0x54, 0x74, NO_REG, NO_REG), /* 6 */ 3262306a36Sopenharmony_ci}; 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci/* Please keep sorted by bank/bit */ 3562306a36Sopenharmony_ci#define WMT_PIN_EXTGPIO0 WMT_PIN(0, 0) 3662306a36Sopenharmony_ci#define WMT_PIN_EXTGPIO1 WMT_PIN(0, 1) 3762306a36Sopenharmony_ci#define WMT_PIN_EXTGPIO2 WMT_PIN(0, 2) 3862306a36Sopenharmony_ci#define WMT_PIN_EXTGPIO3 WMT_PIN(0, 3) 3962306a36Sopenharmony_ci#define WMT_PIN_EXTGPIO4 WMT_PIN(0, 4) 4062306a36Sopenharmony_ci#define WMT_PIN_EXTGPIO5 WMT_PIN(0, 5) 4162306a36Sopenharmony_ci#define WMT_PIN_EXTGPIO6 WMT_PIN(0, 6) 4262306a36Sopenharmony_ci#define WMT_PIN_EXTGPIO7 WMT_PIN(0, 7) 4362306a36Sopenharmony_ci#define WMT_PIN_EXTGPIO8 WMT_PIN(0, 8) 4462306a36Sopenharmony_ci#define WMT_PIN_UART0RTS WMT_PIN(1, 0) 4562306a36Sopenharmony_ci#define WMT_PIN_UART0TXD WMT_PIN(1, 1) 4662306a36Sopenharmony_ci#define WMT_PIN_UART0CTS WMT_PIN(1, 2) 4762306a36Sopenharmony_ci#define WMT_PIN_UART0RXD WMT_PIN(1, 3) 4862306a36Sopenharmony_ci#define WMT_PIN_UART1RTS WMT_PIN(1, 4) 4962306a36Sopenharmony_ci#define WMT_PIN_UART1TXD WMT_PIN(1, 5) 5062306a36Sopenharmony_ci#define WMT_PIN_UART1CTS WMT_PIN(1, 6) 5162306a36Sopenharmony_ci#define WMT_PIN_UART1RXD WMT_PIN(1, 7) 5262306a36Sopenharmony_ci#define WMT_PIN_SPI0CLK WMT_PIN(1, 8) 5362306a36Sopenharmony_ci#define WMT_PIN_SPI0SS WMT_PIN(1, 9) 5462306a36Sopenharmony_ci#define WMT_PIN_SPI0MISO WMT_PIN(1, 10) 5562306a36Sopenharmony_ci#define WMT_PIN_SPI0MOSI WMT_PIN(1, 11) 5662306a36Sopenharmony_ci#define WMT_PIN_SPI1CLK WMT_PIN(1, 12) 5762306a36Sopenharmony_ci#define WMT_PIN_SPI1SS WMT_PIN(1, 13) 5862306a36Sopenharmony_ci#define WMT_PIN_SPI1MISO WMT_PIN(1, 14) 5962306a36Sopenharmony_ci#define WMT_PIN_SPI1MOSI WMT_PIN(1, 15) 6062306a36Sopenharmony_ci#define WMT_PIN_SPI2CLK WMT_PIN(1, 16) 6162306a36Sopenharmony_ci#define WMT_PIN_SPI2SS WMT_PIN(1, 17) 6262306a36Sopenharmony_ci#define WMT_PIN_SPI2MISO WMT_PIN(1, 18) 6362306a36Sopenharmony_ci#define WMT_PIN_SPI2MOSI WMT_PIN(1, 19) 6462306a36Sopenharmony_ci#define WMT_PIN_SDDATA0 WMT_PIN(2, 0) 6562306a36Sopenharmony_ci#define WMT_PIN_SDDATA1 WMT_PIN(2, 1) 6662306a36Sopenharmony_ci#define WMT_PIN_SDDATA2 WMT_PIN(2, 2) 6762306a36Sopenharmony_ci#define WMT_PIN_SDDATA3 WMT_PIN(2, 3) 6862306a36Sopenharmony_ci#define WMT_PIN_MMCDATA0 WMT_PIN(2, 4) 6962306a36Sopenharmony_ci#define WMT_PIN_MMCDATA1 WMT_PIN(2, 5) 7062306a36Sopenharmony_ci#define WMT_PIN_MMCDATA2 WMT_PIN(2, 6) 7162306a36Sopenharmony_ci#define WMT_PIN_MMCDATA3 WMT_PIN(2, 7) 7262306a36Sopenharmony_ci#define WMT_PIN_SDCLK WMT_PIN(2, 8) 7362306a36Sopenharmony_ci#define WMT_PIN_SDWP WMT_PIN(2, 9) 7462306a36Sopenharmony_ci#define WMT_PIN_SDCMD WMT_PIN(2, 10) 7562306a36Sopenharmony_ci#define WMT_PIN_MSDATA0 WMT_PIN(2, 16) 7662306a36Sopenharmony_ci#define WMT_PIN_MSDATA1 WMT_PIN(2, 17) 7762306a36Sopenharmony_ci#define WMT_PIN_MSDATA2 WMT_PIN(2, 18) 7862306a36Sopenharmony_ci#define WMT_PIN_MSDATA3 WMT_PIN(2, 19) 7962306a36Sopenharmony_ci#define WMT_PIN_MSCLK WMT_PIN(2, 20) 8062306a36Sopenharmony_ci#define WMT_PIN_MSBS WMT_PIN(2, 21) 8162306a36Sopenharmony_ci#define WMT_PIN_MSINS WMT_PIN(2, 22) 8262306a36Sopenharmony_ci#define WMT_PIN_I2C0SCL WMT_PIN(2, 24) 8362306a36Sopenharmony_ci#define WMT_PIN_I2C0SDA WMT_PIN(2, 25) 8462306a36Sopenharmony_ci#define WMT_PIN_I2C1SCL WMT_PIN(2, 26) 8562306a36Sopenharmony_ci#define WMT_PIN_I2C1SDA WMT_PIN(2, 27) 8662306a36Sopenharmony_ci#define WMT_PIN_MII0RXD0 WMT_PIN(3, 0) 8762306a36Sopenharmony_ci#define WMT_PIN_MII0RXD1 WMT_PIN(3, 1) 8862306a36Sopenharmony_ci#define WMT_PIN_MII0RXD2 WMT_PIN(3, 2) 8962306a36Sopenharmony_ci#define WMT_PIN_MII0RXD3 WMT_PIN(3, 3) 9062306a36Sopenharmony_ci#define WMT_PIN_MII0RXCLK WMT_PIN(3, 4) 9162306a36Sopenharmony_ci#define WMT_PIN_MII0RXDV WMT_PIN(3, 5) 9262306a36Sopenharmony_ci#define WMT_PIN_MII0RXERR WMT_PIN(3, 6) 9362306a36Sopenharmony_ci#define WMT_PIN_MII0PHYRST WMT_PIN(3, 7) 9462306a36Sopenharmony_ci#define WMT_PIN_MII0TXD0 WMT_PIN(3, 8) 9562306a36Sopenharmony_ci#define WMT_PIN_MII0TXD1 WMT_PIN(3, 9) 9662306a36Sopenharmony_ci#define WMT_PIN_MII0TXD2 WMT_PIN(3, 10) 9762306a36Sopenharmony_ci#define WMT_PIN_MII0TXD3 WMT_PIN(3, 11) 9862306a36Sopenharmony_ci#define WMT_PIN_MII0TXCLK WMT_PIN(3, 12) 9962306a36Sopenharmony_ci#define WMT_PIN_MII0TXEN WMT_PIN(3, 13) 10062306a36Sopenharmony_ci#define WMT_PIN_MII0TXERR WMT_PIN(3, 14) 10162306a36Sopenharmony_ci#define WMT_PIN_MII0PHYPD WMT_PIN(3, 15) 10262306a36Sopenharmony_ci#define WMT_PIN_MII0COL WMT_PIN(3, 16) 10362306a36Sopenharmony_ci#define WMT_PIN_MII0CRS WMT_PIN(3, 17) 10462306a36Sopenharmony_ci#define WMT_PIN_MII0MDIO WMT_PIN(3, 18) 10562306a36Sopenharmony_ci#define WMT_PIN_MII0MDC WMT_PIN(3, 19) 10662306a36Sopenharmony_ci#define WMT_PIN_SEECS WMT_PIN(3, 20) 10762306a36Sopenharmony_ci#define WMT_PIN_SEECK WMT_PIN(3, 21) 10862306a36Sopenharmony_ci#define WMT_PIN_SEEDI WMT_PIN(3, 22) 10962306a36Sopenharmony_ci#define WMT_PIN_SEEDO WMT_PIN(3, 23) 11062306a36Sopenharmony_ci#define WMT_PIN_IDEDREQ0 WMT_PIN(3, 24) 11162306a36Sopenharmony_ci#define WMT_PIN_IDEDREQ1 WMT_PIN(3, 25) 11262306a36Sopenharmony_ci#define WMT_PIN_IDEIOW WMT_PIN(3, 26) 11362306a36Sopenharmony_ci#define WMT_PIN_IDEIOR WMT_PIN(3, 27) 11462306a36Sopenharmony_ci#define WMT_PIN_IDEDACK WMT_PIN(3, 28) 11562306a36Sopenharmony_ci#define WMT_PIN_IDEIORDY WMT_PIN(3, 29) 11662306a36Sopenharmony_ci#define WMT_PIN_IDEINTRQ WMT_PIN(3, 30) 11762306a36Sopenharmony_ci#define WMT_PIN_VDIN0 WMT_PIN(4, 0) 11862306a36Sopenharmony_ci#define WMT_PIN_VDIN1 WMT_PIN(4, 1) 11962306a36Sopenharmony_ci#define WMT_PIN_VDIN2 WMT_PIN(4, 2) 12062306a36Sopenharmony_ci#define WMT_PIN_VDIN3 WMT_PIN(4, 3) 12162306a36Sopenharmony_ci#define WMT_PIN_VDIN4 WMT_PIN(4, 4) 12262306a36Sopenharmony_ci#define WMT_PIN_VDIN5 WMT_PIN(4, 5) 12362306a36Sopenharmony_ci#define WMT_PIN_VDIN6 WMT_PIN(4, 6) 12462306a36Sopenharmony_ci#define WMT_PIN_VDIN7 WMT_PIN(4, 7) 12562306a36Sopenharmony_ci#define WMT_PIN_VDOUT0 WMT_PIN(4, 8) 12662306a36Sopenharmony_ci#define WMT_PIN_VDOUT1 WMT_PIN(4, 9) 12762306a36Sopenharmony_ci#define WMT_PIN_VDOUT2 WMT_PIN(4, 10) 12862306a36Sopenharmony_ci#define WMT_PIN_VDOUT3 WMT_PIN(4, 11) 12962306a36Sopenharmony_ci#define WMT_PIN_VDOUT4 WMT_PIN(4, 12) 13062306a36Sopenharmony_ci#define WMT_PIN_VDOUT5 WMT_PIN(4, 13) 13162306a36Sopenharmony_ci#define WMT_PIN_NANDCLE0 WMT_PIN(4, 14) 13262306a36Sopenharmony_ci#define WMT_PIN_NANDCLE1 WMT_PIN(4, 15) 13362306a36Sopenharmony_ci#define WMT_PIN_VDOUT6_7 WMT_PIN(4, 16) 13462306a36Sopenharmony_ci#define WMT_PIN_VHSYNC WMT_PIN(4, 17) 13562306a36Sopenharmony_ci#define WMT_PIN_VVSYNC WMT_PIN(4, 18) 13662306a36Sopenharmony_ci#define WMT_PIN_TSDIN0 WMT_PIN(5, 8) 13762306a36Sopenharmony_ci#define WMT_PIN_TSDIN1 WMT_PIN(5, 9) 13862306a36Sopenharmony_ci#define WMT_PIN_TSDIN2 WMT_PIN(5, 10) 13962306a36Sopenharmony_ci#define WMT_PIN_TSDIN3 WMT_PIN(5, 11) 14062306a36Sopenharmony_ci#define WMT_PIN_TSDIN4 WMT_PIN(5, 12) 14162306a36Sopenharmony_ci#define WMT_PIN_TSDIN5 WMT_PIN(5, 13) 14262306a36Sopenharmony_ci#define WMT_PIN_TSDIN6 WMT_PIN(5, 14) 14362306a36Sopenharmony_ci#define WMT_PIN_TSDIN7 WMT_PIN(5, 15) 14462306a36Sopenharmony_ci#define WMT_PIN_TSSYNC WMT_PIN(5, 16) 14562306a36Sopenharmony_ci#define WMT_PIN_TSVALID WMT_PIN(5, 17) 14662306a36Sopenharmony_ci#define WMT_PIN_TSCLK WMT_PIN(5, 18) 14762306a36Sopenharmony_ci#define WMT_PIN_LCDD0 WMT_PIN(6, 0) 14862306a36Sopenharmony_ci#define WMT_PIN_LCDD1 WMT_PIN(6, 1) 14962306a36Sopenharmony_ci#define WMT_PIN_LCDD2 WMT_PIN(6, 2) 15062306a36Sopenharmony_ci#define WMT_PIN_LCDD3 WMT_PIN(6, 3) 15162306a36Sopenharmony_ci#define WMT_PIN_LCDD4 WMT_PIN(6, 4) 15262306a36Sopenharmony_ci#define WMT_PIN_LCDD5 WMT_PIN(6, 5) 15362306a36Sopenharmony_ci#define WMT_PIN_LCDD6 WMT_PIN(6, 6) 15462306a36Sopenharmony_ci#define WMT_PIN_LCDD7 WMT_PIN(6, 7) 15562306a36Sopenharmony_ci#define WMT_PIN_LCDD8 WMT_PIN(6, 8) 15662306a36Sopenharmony_ci#define WMT_PIN_LCDD9 WMT_PIN(6, 9) 15762306a36Sopenharmony_ci#define WMT_PIN_LCDD10 WMT_PIN(6, 10) 15862306a36Sopenharmony_ci#define WMT_PIN_LCDD11 WMT_PIN(6, 11) 15962306a36Sopenharmony_ci#define WMT_PIN_LCDD12 WMT_PIN(6, 12) 16062306a36Sopenharmony_ci#define WMT_PIN_LCDD13 WMT_PIN(6, 13) 16162306a36Sopenharmony_ci#define WMT_PIN_LCDD14 WMT_PIN(6, 14) 16262306a36Sopenharmony_ci#define WMT_PIN_LCDD15 WMT_PIN(6, 15) 16362306a36Sopenharmony_ci#define WMT_PIN_LCDD16 WMT_PIN(6, 16) 16462306a36Sopenharmony_ci#define WMT_PIN_LCDD17 WMT_PIN(6, 17) 16562306a36Sopenharmony_ci#define WMT_PIN_LCDCLK WMT_PIN(6, 18) 16662306a36Sopenharmony_ci#define WMT_PIN_LCDDEN WMT_PIN(6, 19) 16762306a36Sopenharmony_ci#define WMT_PIN_LCDLINE WMT_PIN(6, 20) 16862306a36Sopenharmony_ci#define WMT_PIN_LCDFRM WMT_PIN(6, 21) 16962306a36Sopenharmony_ci#define WMT_PIN_LCDBIAS WMT_PIN(6, 22) 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_cistatic const struct pinctrl_pin_desc vt8500_pins[] = { 17262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_EXTGPIO0, "extgpio0"), 17362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_EXTGPIO1, "extgpio1"), 17462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_EXTGPIO2, "extgpio2"), 17562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_EXTGPIO3, "extgpio3"), 17662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_EXTGPIO4, "extgpio4"), 17762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_EXTGPIO5, "extgpio5"), 17862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_EXTGPIO6, "extgpio6"), 17962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_EXTGPIO7, "extgpio7"), 18062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_EXTGPIO8, "extgpio8"), 18162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_UART0RTS, "uart0_rts"), 18262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_UART0TXD, "uart0_txd"), 18362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_UART0CTS, "uart0_cts"), 18462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_UART0RXD, "uart0_rxd"), 18562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_UART1RTS, "uart1_rts"), 18662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_UART1TXD, "uart1_txd"), 18762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_UART1CTS, "uart1_cts"), 18862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_UART1RXD, "uart1_rxd"), 18962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI0CLK, "spi0_clk"), 19062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI0SS, "spi0_ss"), 19162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI0MISO, "spi0_miso"), 19262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI0MOSI, "spi0_mosi"), 19362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI1CLK, "spi1_clk"), 19462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI1SS, "spi1_ss"), 19562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI1MISO, "spi1_miso"), 19662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI1MOSI, "spi1_mosi"), 19762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI2CLK, "spi2_clk"), 19862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI2SS, "spi2_ss"), 19962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI2MISO, "spi2_miso"), 20062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SPI2MOSI, "spi2_mosi"), 20162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SDDATA0, "sd_data0"), 20262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SDDATA1, "sd_data1"), 20362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SDDATA2, "sd_data2"), 20462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SDDATA3, "sd_data3"), 20562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MMCDATA0, "mmc_data0"), 20662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MMCDATA1, "mmc_data1"), 20762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MMCDATA2, "mmc_data2"), 20862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MMCDATA3, "mmc_data3"), 20962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SDCLK, "sd_clk"), 21062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SDWP, "sd_wp"), 21162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SDCMD, "sd_cmd"), 21262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MSDATA0, "ms_data0"), 21362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MSDATA1, "ms_data1"), 21462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MSDATA2, "ms_data2"), 21562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MSDATA3, "ms_data3"), 21662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MSCLK, "ms_clk"), 21762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MSBS, "ms_bs"), 21862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MSINS, "ms_ins"), 21962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_I2C0SCL, "i2c0_scl"), 22062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_I2C0SDA, "i2c0_sda"), 22162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_I2C1SCL, "i2c1_scl"), 22262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_I2C1SDA, "i2c1_sda"), 22362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0RXD0, "mii0_rxd0"), 22462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0RXD1, "mii0_rxd1"), 22562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0RXD2, "mii0_rxd2"), 22662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0RXD3, "mii0_rxd3"), 22762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0RXCLK, "mii0_rxclk"), 22862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0RXDV, "mii0_rxdv"), 22962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0RXERR, "mii0_rxerr"), 23062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0PHYRST, "mii0_phyrst"), 23162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0TXD0, "mii0_txd0"), 23262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0TXD1, "mii0_txd1"), 23362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0TXD2, "mii0_txd2"), 23462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0TXD3, "mii0_txd3"), 23562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0TXCLK, "mii0_txclk"), 23662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0TXEN, "mii0_txen"), 23762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0TXERR, "mii0_txerr"), 23862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0PHYPD, "mii0_phypd"), 23962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0COL, "mii0_col"), 24062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0CRS, "mii0_crs"), 24162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0MDIO, "mii0_mdio"), 24262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_MII0MDC, "mii0_mdc"), 24362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SEECS, "see_cs"), 24462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SEECK, "see_ck"), 24562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SEEDI, "see_di"), 24662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_SEEDO, "see_do"), 24762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_IDEDREQ0, "ide_dreq0"), 24862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_IDEDREQ1, "ide_dreq1"), 24962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_IDEIOW, "ide_iow"), 25062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_IDEIOR, "ide_ior"), 25162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_IDEDACK, "ide_dack"), 25262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_IDEIORDY, "ide_iordy"), 25362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_IDEINTRQ, "ide_intrq"), 25462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDIN0, "vdin0"), 25562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDIN1, "vdin1"), 25662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDIN2, "vdin2"), 25762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDIN3, "vdin3"), 25862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDIN4, "vdin4"), 25962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDIN5, "vdin5"), 26062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDIN6, "vdin6"), 26162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDIN7, "vdin7"), 26262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDOUT0, "vdout0"), 26362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDOUT1, "vdout1"), 26462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDOUT2, "vdout2"), 26562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDOUT3, "vdout3"), 26662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDOUT4, "vdout4"), 26762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDOUT5, "vdout5"), 26862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_NANDCLE0, "nand_cle0"), 26962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_NANDCLE1, "nand_cle1"), 27062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VDOUT6_7, "vdout6_7"), 27162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VHSYNC, "vhsync"), 27262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_VVSYNC, "vvsync"), 27362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSDIN0, "tsdin0"), 27462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSDIN1, "tsdin1"), 27562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSDIN2, "tsdin2"), 27662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSDIN3, "tsdin3"), 27762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSDIN4, "tsdin4"), 27862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSDIN5, "tsdin5"), 27962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSDIN6, "tsdin6"), 28062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSDIN7, "tsdin7"), 28162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSSYNC, "tssync"), 28262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSVALID, "tsvalid"), 28362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_TSCLK, "tsclk"), 28462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD0, "lcd_d0"), 28562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD1, "lcd_d1"), 28662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD2, "lcd_d2"), 28762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD3, "lcd_d3"), 28862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD4, "lcd_d4"), 28962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD5, "lcd_d5"), 29062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD6, "lcd_d6"), 29162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD7, "lcd_d7"), 29262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD8, "lcd_d8"), 29362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD9, "lcd_d9"), 29462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD10, "lcd_d10"), 29562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD11, "lcd_d11"), 29662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD12, "lcd_d12"), 29762306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD13, "lcd_d13"), 29862306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD14, "lcd_d14"), 29962306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD15, "lcd_d15"), 30062306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD16, "lcd_d16"), 30162306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDD17, "lcd_d17"), 30262306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDCLK, "lcd_clk"), 30362306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDDEN, "lcd_den"), 30462306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDLINE, "lcd_line"), 30562306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDFRM, "lcd_frm"), 30662306a36Sopenharmony_ci PINCTRL_PIN(WMT_PIN_LCDBIAS, "lcd_bias"), 30762306a36Sopenharmony_ci}; 30862306a36Sopenharmony_ci 30962306a36Sopenharmony_ci/* Order of these names must match the above list */ 31062306a36Sopenharmony_cistatic const char * const vt8500_groups[] = { 31162306a36Sopenharmony_ci "extgpio0", 31262306a36Sopenharmony_ci "extgpio1", 31362306a36Sopenharmony_ci "extgpio2", 31462306a36Sopenharmony_ci "extgpio3", 31562306a36Sopenharmony_ci "extgpio4", 31662306a36Sopenharmony_ci "extgpio5", 31762306a36Sopenharmony_ci "extgpio6", 31862306a36Sopenharmony_ci "extgpio7", 31962306a36Sopenharmony_ci "extgpio8", 32062306a36Sopenharmony_ci "uart0_rts", 32162306a36Sopenharmony_ci "uart0_txd", 32262306a36Sopenharmony_ci "uart0_cts", 32362306a36Sopenharmony_ci "uart0_rxd", 32462306a36Sopenharmony_ci "uart1_rts", 32562306a36Sopenharmony_ci "uart1_txd", 32662306a36Sopenharmony_ci "uart1_cts", 32762306a36Sopenharmony_ci "uart1_rxd", 32862306a36Sopenharmony_ci "spi0_clk", 32962306a36Sopenharmony_ci "spi0_ss", 33062306a36Sopenharmony_ci "spi0_miso", 33162306a36Sopenharmony_ci "spi0_mosi", 33262306a36Sopenharmony_ci "spi1_clk", 33362306a36Sopenharmony_ci "spi1_ss", 33462306a36Sopenharmony_ci "spi1_miso", 33562306a36Sopenharmony_ci "spi1_mosi", 33662306a36Sopenharmony_ci "spi2_clk", 33762306a36Sopenharmony_ci "spi2_ss", 33862306a36Sopenharmony_ci "spi2_miso", 33962306a36Sopenharmony_ci "spi2_mosi", 34062306a36Sopenharmony_ci "sd_data0", 34162306a36Sopenharmony_ci "sd_data1", 34262306a36Sopenharmony_ci "sd_data2", 34362306a36Sopenharmony_ci "sd_data3", 34462306a36Sopenharmony_ci "mmc_data0", 34562306a36Sopenharmony_ci "mmc_data1", 34662306a36Sopenharmony_ci "mmc_data2", 34762306a36Sopenharmony_ci "mmc_data3", 34862306a36Sopenharmony_ci "sd_clk", 34962306a36Sopenharmony_ci "sd_wp", 35062306a36Sopenharmony_ci "sd_cmd", 35162306a36Sopenharmony_ci "ms_data0", 35262306a36Sopenharmony_ci "ms_data1", 35362306a36Sopenharmony_ci "ms_data2", 35462306a36Sopenharmony_ci "ms_data3", 35562306a36Sopenharmony_ci "ms_clk", 35662306a36Sopenharmony_ci "ms_bs", 35762306a36Sopenharmony_ci "ms_ins", 35862306a36Sopenharmony_ci "i2c0_scl", 35962306a36Sopenharmony_ci "i2c0_sda", 36062306a36Sopenharmony_ci "i2c1_scl", 36162306a36Sopenharmony_ci "i2c1_sda", 36262306a36Sopenharmony_ci "mii0_rxd0", 36362306a36Sopenharmony_ci "mii0_rxd1", 36462306a36Sopenharmony_ci "mii0_rxd2", 36562306a36Sopenharmony_ci "mii0_rxd3", 36662306a36Sopenharmony_ci "mii0_rxclk", 36762306a36Sopenharmony_ci "mii0_rxdv", 36862306a36Sopenharmony_ci "mii0_rxerr", 36962306a36Sopenharmony_ci "mii0_phyrst", 37062306a36Sopenharmony_ci "mii0_txd0", 37162306a36Sopenharmony_ci "mii0_txd1", 37262306a36Sopenharmony_ci "mii0_txd2", 37362306a36Sopenharmony_ci "mii0_txd3", 37462306a36Sopenharmony_ci "mii0_txclk", 37562306a36Sopenharmony_ci "mii0_txen", 37662306a36Sopenharmony_ci "mii0_txerr", 37762306a36Sopenharmony_ci "mii0_phypd", 37862306a36Sopenharmony_ci "mii0_col", 37962306a36Sopenharmony_ci "mii0_crs", 38062306a36Sopenharmony_ci "mii0_mdio", 38162306a36Sopenharmony_ci "mii0_mdc", 38262306a36Sopenharmony_ci "see_cs", 38362306a36Sopenharmony_ci "see_ck", 38462306a36Sopenharmony_ci "see_di", 38562306a36Sopenharmony_ci "see_do", 38662306a36Sopenharmony_ci "ide_dreq0", 38762306a36Sopenharmony_ci "ide_dreq1", 38862306a36Sopenharmony_ci "ide_iow", 38962306a36Sopenharmony_ci "ide_ior", 39062306a36Sopenharmony_ci "ide_dack", 39162306a36Sopenharmony_ci "ide_iordy", 39262306a36Sopenharmony_ci "ide_intrq", 39362306a36Sopenharmony_ci "vdin0", 39462306a36Sopenharmony_ci "vdin1", 39562306a36Sopenharmony_ci "vdin2", 39662306a36Sopenharmony_ci "vdin3", 39762306a36Sopenharmony_ci "vdin4", 39862306a36Sopenharmony_ci "vdin5", 39962306a36Sopenharmony_ci "vdin6", 40062306a36Sopenharmony_ci "vdin7", 40162306a36Sopenharmony_ci "vdout0", 40262306a36Sopenharmony_ci "vdout1", 40362306a36Sopenharmony_ci "vdout2", 40462306a36Sopenharmony_ci "vdout3", 40562306a36Sopenharmony_ci "vdout4", 40662306a36Sopenharmony_ci "vdout5", 40762306a36Sopenharmony_ci "nand_cle0", 40862306a36Sopenharmony_ci "nand_cle1", 40962306a36Sopenharmony_ci "vdout6_7", 41062306a36Sopenharmony_ci "vhsync", 41162306a36Sopenharmony_ci "vvsync", 41262306a36Sopenharmony_ci "tsdin0", 41362306a36Sopenharmony_ci "tsdin1", 41462306a36Sopenharmony_ci "tsdin2", 41562306a36Sopenharmony_ci "tsdin3", 41662306a36Sopenharmony_ci "tsdin4", 41762306a36Sopenharmony_ci "tsdin5", 41862306a36Sopenharmony_ci "tsdin6", 41962306a36Sopenharmony_ci "tsdin7", 42062306a36Sopenharmony_ci "tssync", 42162306a36Sopenharmony_ci "tsvalid", 42262306a36Sopenharmony_ci "tsclk", 42362306a36Sopenharmony_ci "lcd_d0", 42462306a36Sopenharmony_ci "lcd_d1", 42562306a36Sopenharmony_ci "lcd_d2", 42662306a36Sopenharmony_ci "lcd_d3", 42762306a36Sopenharmony_ci "lcd_d4", 42862306a36Sopenharmony_ci "lcd_d5", 42962306a36Sopenharmony_ci "lcd_d6", 43062306a36Sopenharmony_ci "lcd_d7", 43162306a36Sopenharmony_ci "lcd_d8", 43262306a36Sopenharmony_ci "lcd_d9", 43362306a36Sopenharmony_ci "lcd_d10", 43462306a36Sopenharmony_ci "lcd_d11", 43562306a36Sopenharmony_ci "lcd_d12", 43662306a36Sopenharmony_ci "lcd_d13", 43762306a36Sopenharmony_ci "lcd_d14", 43862306a36Sopenharmony_ci "lcd_d15", 43962306a36Sopenharmony_ci "lcd_d16", 44062306a36Sopenharmony_ci "lcd_d17", 44162306a36Sopenharmony_ci "lcd_clk", 44262306a36Sopenharmony_ci "lcd_den", 44362306a36Sopenharmony_ci "lcd_line", 44462306a36Sopenharmony_ci "lcd_frm", 44562306a36Sopenharmony_ci "lcd_bias", 44662306a36Sopenharmony_ci}; 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_cistatic int vt8500_pinctrl_probe(struct platform_device *pdev) 44962306a36Sopenharmony_ci{ 45062306a36Sopenharmony_ci struct wmt_pinctrl_data *data; 45162306a36Sopenharmony_ci 45262306a36Sopenharmony_ci data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); 45362306a36Sopenharmony_ci if (!data) 45462306a36Sopenharmony_ci return -ENOMEM; 45562306a36Sopenharmony_ci 45662306a36Sopenharmony_ci data->banks = vt8500_banks; 45762306a36Sopenharmony_ci data->nbanks = ARRAY_SIZE(vt8500_banks); 45862306a36Sopenharmony_ci data->pins = vt8500_pins; 45962306a36Sopenharmony_ci data->npins = ARRAY_SIZE(vt8500_pins); 46062306a36Sopenharmony_ci data->groups = vt8500_groups; 46162306a36Sopenharmony_ci data->ngroups = ARRAY_SIZE(vt8500_groups); 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_ci return wmt_pinctrl_probe(pdev, data); 46462306a36Sopenharmony_ci} 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_cistatic const struct of_device_id wmt_pinctrl_of_match[] = { 46762306a36Sopenharmony_ci { .compatible = "via,vt8500-pinctrl" }, 46862306a36Sopenharmony_ci { /* sentinel */ }, 46962306a36Sopenharmony_ci}; 47062306a36Sopenharmony_ci 47162306a36Sopenharmony_cistatic struct platform_driver wmt_pinctrl_driver = { 47262306a36Sopenharmony_ci .probe = vt8500_pinctrl_probe, 47362306a36Sopenharmony_ci .driver = { 47462306a36Sopenharmony_ci .name = "pinctrl-vt8500", 47562306a36Sopenharmony_ci .of_match_table = wmt_pinctrl_of_match, 47662306a36Sopenharmony_ci .suppress_bind_attrs = true, 47762306a36Sopenharmony_ci }, 47862306a36Sopenharmony_ci}; 47962306a36Sopenharmony_cibuiltin_platform_driver(wmt_pinctrl_driver); 480