PIN
LN_FUNC(lochnagar##REV##_##ID##_pin.name, PIN, OP)
LN_FUNC(lochnagar2_##ID##_BCLK_pin.name, PIN, BOP), \
LN_FUNC(lochnagar2_##ID##_LRCLK_pin.name, PIN, LROP), \
LN_FUNC(lochnagar2_##ID##_RXDAT_pin.name, PIN, RXOP), \
LN_FUNC(lochnagar2_##ID##_TXDAT_pin.name, PIN, TXOP)
LN_FUNC("dsp-gpio1", PIN, 0x01),
LN_FUNC("dsp-gpio2", PIN, 0x02),
LN_FUNC("dsp-gpio3", PIN, 0x03),
LN_FUNC("codec-gpio1", PIN, 0x04),
LN_FUNC("codec-gpio2", PIN, 0x05),
LN_FUNC("codec-gpio3", PIN, 0x06),
LN_FUNC("codec-gpio4", PIN, 0x07),
LN_FUNC("codec-gpio5", PIN, 0x08),
LN_FUNC("codec-gpio6", PIN, 0x09),
LN_FUNC("codec-gpio7", PIN, 0x0A),
LN_FUNC("codec-gpio8", PIN, 0x0B),
LN_FUNC("aif", PIN, LN2_OP_AIF),
LN_FUNC("codec-clkout", PIN, 0x20),
LN_FUNC("dsp-clkout", PIN, 0x21),
LN_FUNC("pmic-32k", PIN, 0x22),
LN_FUNC("spdif-clkout", PIN, 0x23),
LN_FUNC("clk-12m288", PIN, 0x24),
LN_FUNC("clk-11m2986", PIN, 0x25),
LN_FUNC("clk-24m576", PIN, 0x26),
LN_FUNC("clk-22m5792", PIN, 0x27),
LN_FUNC("xmos-mclk", PIN, 0x29),
LN_FUNC("gf-clkout1", PIN, 0x2A),
LN_FUNC("gf-mclk1", PIN, 0x2B),
LN_FUNC("gf-mclk3", PIN, 0x2C),
LN_FUNC("gf-mclk2", PIN, 0x2D),
LN_FUNC("gf-clkout2", PIN, 0x2E),
LN_FUNC("spdif-mclk", PIN, 0x34),
LN_FUNC("codec-irq", PIN, 0x42),
LN_FUNC("dsp-irq", PIN, 0x45),
LN_FUNC("usb-uart-tx", PIN, 0xC7),
#define PIN_BANK_MUX_ROUTE_FLAGS(ID, PIN, FUNC, REG, VAL, FLAG) \
.pin = PIN, \
#define RK_MUXROUTE_SAME(ID, PIN, FUNC, REG, VAL) \
PIN_BANK_MUX_ROUTE_FLAGS(ID, PIN, FUNC, REG, VAL, ROCKCHIP_ROUTE_SAME)
#define RK_MUXROUTE_GRF(ID, PIN, FUNC, REG, VAL) \
PIN_BANK_MUX_ROUTE_FLAGS(ID, PIN, FUNC, REG, VAL, ROCKCHIP_ROUTE_GRF)
#define RK_MUXROUTE_PMU(ID, PIN, FUNC, REG, VAL) \
PIN_BANK_MUX_ROUTE_FLAGS(ID, PIN, FUNC, REG, VAL, ROCKCHIP_ROUTE_PMU)
#define RK3588_PIN_BANK_FLAGS(ID, PIN, LABEL, M, P) \
PIN_BANK_IOMUX_FLAGS_PULL_FLAGS(ID, PIN, LABEL, M, M, M, M, P, P, P, P)
PIN(0, spi0, dpi, uart1, i2c0, _, gpio, proc_rio, pio, spi2),
PIN(1, spi0, dpi, uart1, i2c0, _, gpio, proc_rio, pio, spi2),
PIN(2, spi0, dpi, uart1, i2c1, ir, gpio, proc_rio, pio, spi2),
PIN(3, spi0, dpi, uart1, i2c1, ir, gpio, proc_rio, pio, spi2),
PIN(4, gpclk0, dpi, uart2, i2c2, uart0, gpio, proc_rio, pio, spi3),
PIN(5, gpclk1, dpi, uart2, i2c2, uart0, gpio, proc_rio, pio, spi3),
PIN(6, gpclk2, dpi, uart2, i2c3, uart0, gpio, proc_rio, pio, spi3),
PIN(7, spi0, dpi, uart2, i2c3, uart0, gpio, proc_rio, pio, spi3),
PIN(8, spi0, dpi, uart3, i2c0, _, gpio, proc_rio, pio, spi4),
PIN(9, spi0, dpi, uart3, i2c0, _, gpio, proc_rio, pio, spi4),
PIN(10, spi0, dpi, uart3, i2c1, _, gpio, proc_rio, pio, spi4),
PIN(11, spi0, dpi, uart3, i2c1, _, gpio, proc_rio, pio, spi4),
PIN(12, pwm0, dpi, uart4, i2c2, aaud, gpio, proc_rio, pio, spi5),
PIN(13, pwm0, dpi, uart4, i2c2, aaud, gpio, proc_rio, pio, spi5),
PIN(14, pwm0, dpi, uart4, i2c3, uart0, gpio, proc_rio, pio, spi5),
PIN(15, pwm0, dpi, uart4, i2c3, uart0, gpio, proc_rio, pio, spi5),
PIN(16, spi1, dpi, dsi0_te_ext, _, uart0, gpio, proc_rio, pio, _),
PIN(17, spi1, dpi, dsi1_te_ext, _, uart0, gpio, proc_rio, pio, _),
PIN(18, spi1, dpi, i2s0, pwm0, i2s1, gpio, proc_rio, pio, gpclk1),
PIN(19, spi1, dpi, i2s0, pwm0, i2s1, gpio, proc_rio, pio, _),
PIN(20, spi1, dpi, i2s0, gpclk0, i2s1, gpio, proc_rio, pio, _),
PIN(21, spi1, dpi, i2s0, gpclk1, i2s1, gpio, proc_rio, pio, _),
PIN(22, sd0, dpi, i2s0, i2c3, i2s1, gpio, proc_rio, pio, _),
PIN(23, sd0, dpi, i2s0, i2c3, i2s1, gpio, proc_rio, pio, _),
PIN(24, sd0, dpi, i2s0, _, i2s1, gpio, proc_rio, pio, spi2),
PIN(25, sd0, dpi, i2s0, mic, i2s1, gpio, proc_rio, pio, spi3),
PIN(26, sd0, dpi, i2s0, mic, i2s1, gpio, proc_rio, pio, spi5),
PIN(27, sd0, dpi, i2s0, mic, i2s1, gpio, proc_rio, pio, spi1),
PIN(28, sd1, i2c4, i2s2, spi6, vbus0, gpio, proc_rio, _, _),
PIN(29, sd1, i2c4, i2s2, spi6, vbus0, gpio, proc_rio, _, _),
PIN(30, sd1, i2c5, i2s2, spi6, uart5, gpio, proc_rio, _, _),
PIN(31, sd1, i2c5, i2s2, spi6, uart5, gpio, proc_rio, _, _),
PIN(32, sd1, gpclk3, i2s2, spi6, uart5, gpio, proc_rio, _, _),
PIN(33, sd1, gpclk4, i2s2, spi6, uart5, gpio, proc_rio, _, _),
PIN(34, pwm1, gpclk3, vbus0, i2c4, mic, gpio, proc_rio, _, _),
PIN(35, spi8, pwm1, vbus0, i2c4, mic, gpio, proc_rio, _, _),
PIN(36, spi8, uart5, pcie_clkreq_n, i2c5, mic, gpio, proc_rio, _, _),
PIN(37, spi8, uart5, mic, i2c5, pcie_clkreq_n, gpio, proc_rio, _, _),
PIN(38, spi8, uart5, mic, i2c6, aaud, gpio, proc_rio, dsi0_te_ext, _),
PIN(39, spi8, uart5, mic, i2c6, aaud, gpio, proc_rio, dsi1_te_ext, _),
PIN(40, pwm1, uart5, i2c4, spi6, aaud, gpio, proc_rio, _, _),
PIN(41, pwm1, uart5, i2c4, spi6, aaud, gpio, proc_rio, _, _),
PIN(42, gpclk5, uart5, vbus1, spi6, i2s2, gpio, proc_rio, _, _),
PIN(43, gpclk4, uart5, vbus1, spi6, i2s2, gpio, proc_rio, _, _),
PIN(44, gpclk5, i2c5, pwm1, spi6, i2s2, gpio, proc_rio, _, _),
PIN(45, pwm1, i2c5, spi7, spi6, i2s2, gpio, proc_rio, _, _),
PIN(46, gpclk3, i2c4, spi7, mic, i2s2, gpio, proc_rio, dsi0_te_ext, _),
PIN(47, gpclk5, i2c4, spi7, mic, i2s2, gpio, proc_rio, dsi1_te_ext, _),
PIN(48, pwm1, pcie_clkreq_n, spi7, mic, uart5, gpio, proc_rio, _, _),
PIN(49, spi8, spi7, i2c5, aaud, uart5, gpio, proc_rio, _, _),
PIN(50, spi8, spi7, i2c5, aaud, vbus2, gpio, proc_rio, _, _),
PIN(51, spi8, spi7, i2c6, aaud, vbus2, gpio, proc_rio, _, _),
PIN(52, spi8, _, i2c6, aaud, vbus3, gpio, proc_rio, _, _),
PIN(53, spi8, spi7, _, pcie_clkreq_n, vbus3, gpio, proc_rio, _, _),
return !!(readb(pctrl->base + PIN(off)) & BIT(bit));
return !!(rzt2h_pinctrl_readb(pctrl, port, PIN(port)) & BIT(bit));