VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   33 Branches   55 Tags
author: Huan Feng <huan.feng@starfivetech.com> 2021-01-08 03:19:19 +0800 committer: Emil Renner Berthing <kernel@esmil.dk> 2021-08-01 13:54:38 +0200 commit: ca2c6cb110b76e69588a55e598ab16572919320d parent: 66473bbfc64984c99ee99620d37917654f9eb98a
Commit Summary:
gpio: starfive-jh7100: Add legacy header and code
Diffstat:
2 files changed, 478 insertions, 0 deletions
diff --git a/drivers/gpio/gpio-starfive-jh7100.c b/drivers/gpio/gpio-starfive-jh7100.c
index b51d6ac4539c..3468a9874057 100644
--- a/drivers/gpio/gpio-starfive-jh7100.c
+++ b/drivers/gpio/gpio-starfive-jh7100.c
@@ -9,6 +9,7 @@
 #include <linux/gpio/driver.h>
 #include <linux/platform_device.h>
 #include <linux/spinlock.h>
+#include <linux/gpio-starfive-vic.h>
 
 /*
  * refer to Section 12. GPIO Registers in JH7100 datasheet:
@@ -67,6 +68,10 @@ struct starfive_gpio {
 	unsigned int		irq_parent[MAX_GPIO];
 };
 
+static DEFINE_SPINLOCK(sfg_lock);
+
+static void __iomem *gpio_base;
+
 static int starfive_direction_input(struct gpio_chip *gc, unsigned int offset)
 {
 	struct starfive_gpio *chip = gpiochip_get_data(gc);
@@ -326,6 +331,121 @@ static irqreturn_t starfive_irq_handler(int irq, void *data)
 	return IRQ_HANDLED;
 }
 
+void sf_vic_gpio_dout_reverse(int gpio, int en)
+{
+	int offset;
+	u32 value;
+
+	if (!gpio_base)
+		return;
+
+	offset = gpio * 8 + GPIO_DOUT_X_REG;
+
+	spin_lock(&sfg_lock);
+	value = ioread32(gpio_base + offset);
+	value &= ~BIT(31);
+	value |= (en & 0x1) << 31;
+	writel(value, gpio_base + offset);
+	spin_unlock(&sfg_lock);
+}
+EXPORT_SYMBOL_GPL(sf_vic_gpio_dout_reverse);
+
+void sf_vic_gpio_dout_value(int gpio, int v)
+{
+	int offset;
+	u32 value;
+
+	if (!gpio_base)
+		return;
+
+	offset = gpio * 8 + GPIO_DOUT_X_REG;
+	spin_lock(&sfg_lock);
+	value = ioread32(gpio_base + offset);
+	value &= ~(0xFF);
+	value |= (v&0xFF);
+	writel(value, gpio_base + offset);
+	spin_unlock(&sfg_lock);
+}
+EXPORT_SYMBOL_GPL(sf_vic_gpio_dout_value);
+
+void sf_vic_gpio_dout_low(int gpio)
+{
+	sf_vic_gpio_dout_value(gpio, 0);
+}
+EXPORT_SYMBOL_GPL(sf_vic_gpio_dout_low);
+
+void sf_vic_gpio_dout_high(int gpio)
+{
+	sf_vic_gpio_dout_value(gpio, 1);
+}
+EXPORT_SYMBOL_GPL(sf_vic_gpio_dout_high);
+
+void sf_vic_gpio_doen_reverse(int gpio, int en)
+{
+	int offset;
+	u32 value;
+
+	if (!gpio_base)
+		return;
+
+	offset = gpio * 8 + GPIO_DOEN_X_REG;
+
+	spin_lock(&sfg_lock);
+	value = ioread32(gpio_base + offset);
+	value &= ~BIT(31);
+	value |= (en & 0x1) << 31;
+	writel(value, gpio_base + offset);
+	spin_unlock(&sfg_lock);
+}
+EXPORT_SYMBOL_GPL(sf_vic_gpio_doen_reverse);
+
+void sf_vic_gpio_doen_value(int gpio, int v)
+{
+	int offset;
+	u32 value;
+
+	if (!gpio_base)
+		return;
+
+	offset = gpio * 8 + GPIO_DOEN_X_REG;
+
+	spin_lock(&sfg_lock);
+	value = ioread32(gpio_base + offset);
+	value &= ~(0xFF);
+	value |= (v&0xFF);
+	writel(value, gpio_base + offset);
+	spin_unlock(&sfg_lock);
+}
+EXPORT_SYMBOL_GPL(sf_vic_gpio_doen_value);
+
+void sf_vic_gpio_doen_low(int gpio)
+{
+	sf_vic_gpio_doen_value(gpio, 0);
+}
+EXPORT_SYMBOL_GPL(sf_vic_gpio_doen_low);
+
+void sf_vic_gpio_doen_high(int gpio)
+{
+	sf_vic_gpio_doen_value(gpio, 1);
+}
+EXPORT_SYMBOL_GPL(sf_vic_gpio_doen_high);
+
+void sf_vic_gpio_manual(int offset, int v)
+{
+	u32 value;
+
+	if (!gpio_base)
+		return;
+
+	spin_lock(&sfg_lock);
+	value = ioread32(gpio_base + offset);
+	value &= ~(0xFF);
+	value |= (v&0xFF);
+	writel(value, gpio_base + offset);
+	spin_unlock(&sfg_lock);
+}
+EXPORT_SYMBOL_GPL(sf_vic_gpio_manual);
+
 static int starfive_gpio_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -343,6 +463,7 @@ static int starfive_gpio_probe(struct platform_device *pdev)
 		dev_err(dev, "failed to allocate device memory\n");
 		return PTR_ERR(chip->base);
 	}
+	gpio_base = chip->base;
 
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
diff --git a/include/linux/gpio-starfive-vic.h b/include/linux/gpio-starfive-vic.h
new file mode 100644
index 000000000000..0afcaf1876fb
--- /dev/null
+++ b/include/linux/gpio-starfive-vic.h
@@ -0,0 +1,384 @@
+#ifndef __GPIO_STARFIVE_VIC_H
+#define __GPIO_STARFIVE_VIC_H
+
+extern void sf_vic_gpio_dout_reverse(int gpio, int en);
+/*
+ * #define SET_GPIO_0_dout_cpu_jtag_tdo {				\
+ *	uint32_t _ezchip_macro_read_value_=MA_INW(gpio_0_dout_REG_ADDR); \
+ *	_ezchip_macro_read_value_ &= ~(0xFF);				\
+ *	_ezchip_macro_read_value_ |= (0x3&0xFF);			\
+ *	MA_OUTW(gpio_0_dout_REG_ADDR,_ezchip_macro_read_value_);	\
+ * }
+ * in this example gpio is: 0, and v is: 0x3
+ */
+extern void sf_vic_gpio_dout_value(int gpio, int v);
+extern void sf_vic_gpio_dout_low(int gpio);
+extern void sf_vic_gpio_dout_high(int gpio);
+
+extern void sf_vic_gpio_doen_reverse(int gpio, int en);
+/*
+ * the same as sf_vic_gpio_dout_value
+ */
+extern void sf_vic_gpio_doen_value(int gpio, int v);
+extern void sf_vic_gpio_doen_low(int gpio);
+extern void sf_vic_gpio_doen_high(int gpio);
+
+/*
+ *#define SET_GPIO_uart2_pad_sin(gpio) { \
+ *	uint32_t _ezchip_macro_read_value_=MA_INW(gpio_uart2_pad_sin_REG_ADDR); \
+ *	_ezchip_macro_read_value_ &= ~(0xFF);				\
+ *	_ezchip_macro_read_value_ |= ((gpio+2)&0xFF);			\
+ *	MA_OUTW(gpio_uart2_pad_sin_REG_ADDR,_ezchip_macro_read_value_); \
+ *}
+ * in this example offset is: 0x370, the offset of gpio_uart2_pad_sin_REG_ADDR
+ * and v is: gpio + 2
+ */
+extern void sf_vic_gpio_manual(int offset, int v);
+
+#define SET_GPIO_dout_reverse_(gpionum, en)                      sf_vic_gpio_dout_reverse(gpionum, en)
+#define SET_GPIO_dout_LOW(gpionum)                               sf_vic_gpio_dout_value(gpionum, 0x0)
+#define SET_GPIO_dout_HIGH(gpionum)                              sf_vic_gpio_dout_value(gpionum, 0x1)
+#define SET_GPIO_dout_clk_gmac_tophyref(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x2)
+#define SET_GPIO_dout_cpu_jtag_tdo(gpionum)                      sf_vic_gpio_dout_value(gpionum, 0x3)
+#define SET_GPIO_dout_cpu_jtag_tdo_oen(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x4)
+#define SET_GPIO_dout_dmic_clk_out(gpionum)                      sf_vic_gpio_dout_value(gpionum, 0x5)
+#define SET_GPIO_dout_dsp_JTDOEn_pad(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x6)
+#define SET_GPIO_dout_dsp_JTDO_pad(gpionum)                      sf_vic_gpio_dout_value(gpionum, 0x7)
+#define SET_GPIO_dout_i2c0_pad_sck_oe(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x8)
+#define SET_GPIO_dout_i2c0_pad_sda_oe(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x9)
+#define SET_GPIO_dout_i2c1_pad_sck_oe(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0xa)
+#define SET_GPIO_dout_i2c1_pad_sda_oe(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0xb)
+#define SET_GPIO_dout_i2c2_pad_sck_oe(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0xc)
+#define SET_GPIO_dout_i2c2_pad_sda_oe(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0xd)
+#define SET_GPIO_dout_i2c3_pad_sck_oe(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0xe)
+#define SET_GPIO_dout_i2c3_pad_sda_oe(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0xf)
+#define SET_GPIO_dout_i2srx_bclk_out(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x10)
+#define SET_GPIO_dout_i2srx_bclk_out_oen(gpionum)                sf_vic_gpio_dout_value(gpionum, 0x11)
+#define SET_GPIO_dout_i2srx_lrck_out(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x12)
+#define SET_GPIO_dout_i2srx_lrck_out_oen(gpionum)                sf_vic_gpio_dout_value(gpionum, 0x13)
+#define SET_GPIO_dout_i2srx_mclk_out(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x14)
+#define SET_GPIO_dout_i2stx_bclk_out(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x15)
+#define SET_GPIO_dout_i2stx_bclk_out_oen(gpionum)                sf_vic_gpio_dout_value(gpionum, 0x16)
+#define SET_GPIO_dout_i2stx_lrck_out(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x17)
+#define SET_GPIO_dout_i2stx_lrckout_oen(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x18)
+#define SET_GPIO_dout_i2stx_mclk_out(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x19)
+#define SET_GPIO_dout_i2stx_sdout0(gpionum)                      sf_vic_gpio_dout_value(gpionum, 0x1a)
+#define SET_GPIO_dout_i2stx_sdout1(gpionum)                      sf_vic_gpio_dout_value(gpionum, 0x1b)
+#define SET_GPIO_dout_lcd_pad_csm_n(gpionum)                     sf_vic_gpio_dout_value(gpionum, 0x1c)
+#define SET_GPIO_dout_pwm_pad_oe_n_bit0(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x1d)
+#define SET_GPIO_dout_pwm_pad_oe_n_bit1(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x1e)
+#define SET_GPIO_dout_pwm_pad_oe_n_bit2(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x1f)
+#define SET_GPIO_dout_pwm_pad_oe_n_bit3(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x20)
+#define SET_GPIO_dout_pwm_pad_oe_n_bit4(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x21)
+#define SET_GPIO_dout_pwm_pad_oe_n_bit5(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x22)
+#define SET_GPIO_dout_pwm_pad_oe_n_bit6(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x23)
+#define SET_GPIO_dout_pwm_pad_oe_n_bit7(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x24)
+#define SET_GPIO_dout_pwm_pad_out_bit0(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x25)
+#define SET_GPIO_dout_pwm_pad_out_bit1(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x26)
+#define SET_GPIO_dout_pwm_pad_out_bit2(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x27)
+#define SET_GPIO_dout_pwm_pad_out_bit3(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x28)
+#define SET_GPIO_dout_pwm_pad_out_bit4(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x29)
+#define SET_GPIO_dout_pwm_pad_out_bit5(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x2a)
+#define SET_GPIO_dout_pwm_pad_out_bit6(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x2b)
+#define SET_GPIO_dout_pwm_pad_out_bit7(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x2c)
+#define SET_GPIO_dout_pwmdac_left_out(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x2d)
+#define SET_GPIO_dout_pwmdac_right_out(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x2e)
+#define SET_GPIO_dout_qspi_csn1_out(gpionum)                     sf_vic_gpio_dout_value(gpionum, 0x2f)
+#define SET_GPIO_dout_qspi_csn2_out(gpionum)                     sf_vic_gpio_dout_value(gpionum, 0x30)
+#define SET_GPIO_dout_qspi_csn3_out(gpionum)                     sf_vic_gpio_dout_value(gpionum, 0x31)
+#define SET_GPIO_dout_register23_SCFG_cmsensor_rst0(gpionum)     sf_vic_gpio_dout_value(gpionum, 0x32)
+#define SET_GPIO_dout_register23_SCFG_cmsensor_rst1(gpionum)     sf_vic_gpio_dout_value(gpionum, 0x33)
+#define SET_GPIO_dout_register32_SCFG_gmac_phy_rstn(gpionum)     sf_vic_gpio_dout_value(gpionum, 0x34)
+#define SET_GPIO_dout_sdio0_pad_card_power_en(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x35)
+#define SET_GPIO_dout_sdio0_pad_cclk_out(gpionum)                sf_vic_gpio_dout_value(gpionum, 0x36)
+#define SET_GPIO_dout_sdio0_pad_ccmd_oe(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x37)
+#define SET_GPIO_dout_sdio0_pad_ccmd_out(gpionum)                sf_vic_gpio_dout_value(gpionum, 0x38)
+#define SET_GPIO_dout_sdio0_pad_cdata_oe_bit0(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x39)
+#define SET_GPIO_dout_sdio0_pad_cdata_oe_bit1(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x3a)
+#define SET_GPIO_dout_sdio0_pad_cdata_oe_bit2(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x3b)
+#define SET_GPIO_dout_sdio0_pad_cdata_oe_bit3(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x3c)
+#define SET_GPIO_dout_sdio0_pad_cdata_oe_bit4(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x3d)
+#define SET_GPIO_dout_sdio0_pad_cdata_oe_bit5(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x3e)
+#define SET_GPIO_dout_sdio0_pad_cdata_oe_bit6(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x3f)
+#define SET_GPIO_dout_sdio0_pad_cdata_oe_bit7(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x40)
+#define SET_GPIO_dout_sdio0_pad_cdata_out_bit0(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x41)
+#define SET_GPIO_dout_sdio0_pad_cdata_out_bit1(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x42)
+#define SET_GPIO_dout_sdio0_pad_cdata_out_bit2(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x43)
+#define SET_GPIO_dout_sdio0_pad_cdata_out_bit3(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x44)
+#define SET_GPIO_dout_sdio0_pad_cdata_out_bit4(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x45)
+#define SET_GPIO_dout_sdio0_pad_cdata_out_bit5(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x46)
+#define SET_GPIO_dout_sdio0_pad_cdata_out_bit6(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x47)
+#define SET_GPIO_dout_sdio0_pad_cdata_out_bit7(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x48)
+#define SET_GPIO_dout_sdio0_pad_rst_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x49)
+#define SET_GPIO_dout_sdio1_pad_card_power_en(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x4a)
+#define SET_GPIO_dout_sdio1_pad_cclk_out(gpionum)                sf_vic_gpio_dout_value(gpionum, 0x4b)
+#define SET_GPIO_dout_sdio1_pad_ccmd_oe(gpionum)                 sf_vic_gpio_dout_value(gpionum, 0x4c)
+#define SET_GPIO_dout_sdio1_pad_ccmd_out(gpionum)                sf_vic_gpio_dout_value(gpionum, 0x4d)
+#define SET_GPIO_dout_sdio1_pad_cdata_oe_bit0(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x4e)
+#define SET_GPIO_dout_sdio1_pad_cdata_oe_bit1(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x4f)
+#define SET_GPIO_dout_sdio1_pad_cdata_oe_bit2(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x50)
+#define SET_GPIO_dout_sdio1_pad_cdata_oe_bit3(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x51)
+#define SET_GPIO_dout_sdio1_pad_cdata_oe_bit4(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x52)
+#define SET_GPIO_dout_sdio1_pad_cdata_oe_bit5(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x53)
+#define SET_GPIO_dout_sdio1_pad_cdata_oe_bit6(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x54)
+#define SET_GPIO_dout_sdio1_pad_cdata_oe_bit7(gpionum)           sf_vic_gpio_dout_value(gpionum, 0x55)
+#define SET_GPIO_dout_sdio1_pad_cdata_out_bit0(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x56)
+#define SET_GPIO_dout_sdio1_pad_cdata_out_bit1(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x57)
+#define SET_GPIO_dout_sdio1_pad_cdata_out_bit2(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x58)
+#define SET_GPIO_dout_sdio1_pad_cdata_out_bit3(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x59)
+#define SET_GPIO_dout_sdio1_pad_cdata_out_bit4(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x5a)
+#define SET_GPIO_dout_sdio1_pad_cdata_out_bit5(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x5b)
+#define SET_GPIO_dout_sdio1_pad_cdata_out_bit6(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x5c)
+#define SET_GPIO_dout_sdio1_pad_cdata_out_bit7(gpionum)          sf_vic_gpio_dout_value(gpionum, 0x5d)
+#define SET_GPIO_dout_sdio1_pad_rst_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x5e)
+#define SET_GPIO_dout_spdif_tx_sdout(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x5f)
+#define SET_GPIO_dout_spdif_tx_sdout_oen(gpionum)                sf_vic_gpio_dout_value(gpionum, 0x60)
+#define SET_GPIO_dout_spi0_pad_oe_n(gpionum)                     sf_vic_gpio_dout_value(gpionum, 0x61)
+#define SET_GPIO_dout_spi0_pad_sck_out(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x62)
+#define SET_GPIO_dout_spi0_pad_ss_0_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x63)
+#define SET_GPIO_dout_spi0_pad_ss_1_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x64)
+#define SET_GPIO_dout_spi0_pad_txd(gpionum)                      sf_vic_gpio_dout_value(gpionum, 0x65)
+#define SET_GPIO_dout_spi1_pad_oe_n(gpionum)                     sf_vic_gpio_dout_value(gpionum, 0x66)
+#define SET_GPIO_dout_spi1_pad_sck_out(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x67)
+#define SET_GPIO_dout_spi1_pad_ss_0_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x68)
+#define SET_GPIO_dout_spi1_pad_ss_1_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x69)
+#define SET_GPIO_dout_spi1_pad_txd(gpionum)                      sf_vic_gpio_dout_value(gpionum, 0x6a)
+#define SET_GPIO_dout_spi2_pad_oe_n(gpionum)                     sf_vic_gpio_dout_value(gpionum, 0x6b)
+#define SET_GPIO_dout_spi2_pad_sck_out(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x6c)
+#define SET_GPIO_dout_spi2_pad_ss_0_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x6d)
+#define SET_GPIO_dout_spi2_pad_ss_1_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x6e)
+#define SET_GPIO_dout_spi2_pad_txd(gpionum)                      sf_vic_gpio_dout_value(gpionum, 0x6f)
+#define SET_GPIO_dout_spi2ahb_pad_oe_n_bit0(gpionum)             sf_vic_gpio_dout_value(gpionum, 0x70)
+#define SET_GPIO_dout_spi2ahb_pad_oe_n_bit1(gpionum)             sf_vic_gpio_dout_value(gpionum, 0x71)
+#define SET_GPIO_dout_spi2ahb_pad_oe_n_bit2(gpionum)             sf_vic_gpio_dout_value(gpionum, 0x72)
+#define SET_GPIO_dout_spi2ahb_pad_oe_n_bit3(gpionum)             sf_vic_gpio_dout_value(gpionum, 0x73)
+#define SET_GPIO_dout_spi2ahb_pad_txd_bit0(gpionum)              sf_vic_gpio_dout_value(gpionum, 0x74)
+#define SET_GPIO_dout_spi2ahb_pad_txd_bit1(gpionum)              sf_vic_gpio_dout_value(gpionum, 0x75)
+#define SET_GPIO_dout_spi2ahb_pad_txd_bit2(gpionum)              sf_vic_gpio_dout_value(gpionum, 0x76)
+#define SET_GPIO_dout_spi2ahb_pad_txd_bit3(gpionum)              sf_vic_gpio_dout_value(gpionum, 0x77)
+#define SET_GPIO_dout_spi3_pad_oe_n(gpionum)                     sf_vic_gpio_dout_value(gpionum, 0x78)
+#define SET_GPIO_dout_spi3_pad_sck_out(gpionum)                  sf_vic_gpio_dout_value(gpionum, 0x79)
+#define SET_GPIO_dout_spi3_pad_ss_0_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x7a)
+#define SET_GPIO_dout_spi3_pad_ss_1_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x7b)
+#define SET_GPIO_dout_spi3_pad_txd(gpionum)                      sf_vic_gpio_dout_value(gpionum, 0x7c)
+#define SET_GPIO_dout_uart0_pad_dtrn(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x7d)
+#define SET_GPIO_dout_uart0_pad_rtsn(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x7e)
+#define SET_GPIO_dout_uart0_pad_sout(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x7f)
+#define SET_GPIO_dout_uart1_pad_sout(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x80)
+#define SET_GPIO_dout_uart2_pad_dtr_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x81)
+#define SET_GPIO_dout_uart2_pad_rts_n(gpionum)                   sf_vic_gpio_dout_value(gpionum, 0x82)
+#define SET_GPIO_dout_uart2_pad_sout(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x83)
+#define SET_GPIO_dout_uart3_pad_sout(gpionum)                    sf_vic_gpio_dout_value(gpionum, 0x84)
+#define SET_GPIO_dout_usb_drv_bus(gpionum)                       sf_vic_gpio_dout_value(gpionum, 0x85)
+#define SET_GPIO_doen_reverse_(gpionum, en)                      sf_vic_gpio_doen_reverse(gpionum, en)
+#define SET_GPIO_doen_LOW(gpionum)                               sf_vic_gpio_doen_value(gpionum, 0x0)
+#define SET_GPIO_doen_HIGH(gpionum)                              sf_vic_gpio_doen_value(gpionum, 0x1)
+#define SET_GPIO_doen_clk_gmac_tophyref(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x2)
+#define SET_GPIO_doen_cpu_jtag_tdo(gpionum)                      sf_vic_gpio_doen_value(gpionum, 0x3)
+#define SET_GPIO_doen_cpu_jtag_tdo_oen(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x4)
+#define SET_GPIO_doen_dmic_clk_out(gpionum)                      sf_vic_gpio_doen_value(gpionum, 0x5)
+#define SET_GPIO_doen_dsp_JTDOEn_pad(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x6)
+#define SET_GPIO_doen_dsp_JTDO_pad(gpionum)                      sf_vic_gpio_doen_value(gpionum, 0x7)
+#define SET_GPIO_doen_i2c0_pad_sck_oe(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x8)
+#define SET_GPIO_doen_i2c0_pad_sda_oe(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x9)
+#define SET_GPIO_doen_i2c1_pad_sck_oe(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0xa)
+#define SET_GPIO_doen_i2c1_pad_sda_oe(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0xb)
+#define SET_GPIO_doen_i2c2_pad_sck_oe(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0xc)
+#define SET_GPIO_doen_i2c2_pad_sda_oe(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0xd)
+#define SET_GPIO_doen_i2c3_pad_sck_oe(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0xe)
+#define SET_GPIO_doen_i2c3_pad_sda_oe(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0xf)
+#define SET_GPIO_doen_i2srx_bclk_out(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x10)
+#define SET_GPIO_doen_i2srx_bclk_out_oen(gpionum)                sf_vic_gpio_doen_value(gpionum, 0x11)
+#define SET_GPIO_doen_i2srx_lrck_out(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x12)
+#define SET_GPIO_doen_i2srx_lrck_out_oen(gpionum)                sf_vic_gpio_doen_value(gpionum, 0x13)
+#define SET_GPIO_doen_i2srx_mclk_out(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x14)
+#define SET_GPIO_doen_i2stx_bclk_out(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x15)
+#define SET_GPIO_doen_i2stx_bclk_out_oen(gpionum)                sf_vic_gpio_doen_value(gpionum, 0x16)
+#define SET_GPIO_doen_i2stx_lrck_out(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x17)
+#define SET_GPIO_doen_i2stx_lrckout_oen(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x18)
+#define SET_GPIO_doen_i2stx_mclk_out(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x19)
+#define SET_GPIO_doen_i2stx_sdout0(gpionum)                      sf_vic_gpio_doen_value(gpionum, 0x1a)
+#define SET_GPIO_doen_i2stx_sdout1(gpionum)                      sf_vic_gpio_doen_value(gpionum, 0x1b)
+#define SET_GPIO_doen_lcd_pad_csm_n(gpionum)                     sf_vic_gpio_doen_value(gpionum, 0x1c)
+#define SET_GPIO_doen_pwm_pad_oe_n_bit0(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x1d)
+#define SET_GPIO_doen_pwm_pad_oe_n_bit1(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x1e)
+#define SET_GPIO_doen_pwm_pad_oe_n_bit2(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x1f)
+#define SET_GPIO_doen_pwm_pad_oe_n_bit3(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x20)
+#define SET_GPIO_doen_pwm_pad_oe_n_bit4(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x21)
+#define SET_GPIO_doen_pwm_pad_oe_n_bit5(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x22)
+#define SET_GPIO_doen_pwm_pad_oe_n_bit6(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x23)
+#define SET_GPIO_doen_pwm_pad_oe_n_bit7(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x24)
+#define SET_GPIO_doen_pwm_pad_out_bit0(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x25)
+#define SET_GPIO_doen_pwm_pad_out_bit1(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x26)
+#define SET_GPIO_doen_pwm_pad_out_bit2(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x27)
+#define SET_GPIO_doen_pwm_pad_out_bit3(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x28)
+#define SET_GPIO_doen_pwm_pad_out_bit4(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x29)
+#define SET_GPIO_doen_pwm_pad_out_bit5(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x2a)
+#define SET_GPIO_doen_pwm_pad_out_bit6(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x2b)
+#define SET_GPIO_doen_pwm_pad_out_bit7(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x2c)
+#define SET_GPIO_doen_pwmdac_left_out(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x2d)
+#define SET_GPIO_doen_pwmdac_right_out(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x2e)
+#define SET_GPIO_doen_qspi_csn1_out(gpionum)                     sf_vic_gpio_doen_value(gpionum, 0x2f)
+#define SET_GPIO_doen_qspi_csn2_out(gpionum)                     sf_vic_gpio_doen_value(gpionum, 0x30)
+#define SET_GPIO_doen_qspi_csn3_out(gpionum)                     sf_vic_gpio_doen_value(gpionum, 0x31)
+#define SET_GPIO_doen_register23_SCFG_cmsensor_rst0(gpionum)     sf_vic_gpio_doen_value(gpionum, 0x32)
+#define SET_GPIO_doen_register23_SCFG_cmsensor_rst1(gpionum)     sf_vic_gpio_doen_value(gpionum, 0x33)
+#define SET_GPIO_doen_register32_SCFG_gmac_phy_rstn(gpionum)     sf_vic_gpio_doen_value(gpionum, 0x34)
+#define SET_GPIO_doen_sdio0_pad_card_power_en(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x35)
+#define SET_GPIO_doen_sdio0_pad_cclk_out(gpionum)                sf_vic_gpio_doen_value(gpionum, 0x36)
+#define SET_GPIO_doen_sdio0_pad_ccmd_oe(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x37)
+#define SET_GPIO_doen_sdio0_pad_ccmd_out(gpionum)                sf_vic_gpio_doen_value(gpionum, 0x38)
+#define SET_GPIO_doen_sdio0_pad_cdata_oe_bit0(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x39)
+#define SET_GPIO_doen_sdio0_pad_cdata_oe_bit1(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x3a)
+#define SET_GPIO_doen_sdio0_pad_cdata_oe_bit2(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x3b)
+#define SET_GPIO_doen_sdio0_pad_cdata_oe_bit3(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x3c)
+#define SET_GPIO_doen_sdio0_pad_cdata_oe_bit4(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x3d)
+#define SET_GPIO_doen_sdio0_pad_cdata_oe_bit5(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x3e)
+#define SET_GPIO_doen_sdio0_pad_cdata_oe_bit6(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x3f)
+#define SET_GPIO_doen_sdio0_pad_cdata_oe_bit7(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x40)
+#define SET_GPIO_doen_sdio0_pad_cdata_out_bit0(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x41)
+#define SET_GPIO_doen_sdio0_pad_cdata_out_bit1(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x42)
+#define SET_GPIO_doen_sdio0_pad_cdata_out_bit2(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x43)
+#define SET_GPIO_doen_sdio0_pad_cdata_out_bit3(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x44)
+#define SET_GPIO_doen_sdio0_pad_cdata_out_bit4(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x45)
+#define SET_GPIO_doen_sdio0_pad_cdata_out_bit5(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x46)
+#define SET_GPIO_doen_sdio0_pad_cdata_out_bit6(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x47)
+#define SET_GPIO_doen_sdio0_pad_cdata_out_bit7(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x48)
+#define SET_GPIO_doen_sdio0_pad_rst_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x49)
+#define SET_GPIO_doen_sdio1_pad_card_power_en(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x4a)
+#define SET_GPIO_doen_sdio1_pad_cclk_out(gpionum)                sf_vic_gpio_doen_value(gpionum, 0x4b)
+#define SET_GPIO_doen_sdio1_pad_ccmd_oe(gpionum)                 sf_vic_gpio_doen_value(gpionum, 0x4c)
+#define SET_GPIO_doen_sdio1_pad_ccmd_out(gpionum)                sf_vic_gpio_doen_value(gpionum, 0x4d)
+#define SET_GPIO_doen_sdio1_pad_cdata_oe_bit0(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x4e)
+#define SET_GPIO_doen_sdio1_pad_cdata_oe_bit1(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x4f)
+#define SET_GPIO_doen_sdio1_pad_cdata_oe_bit2(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x50)
+#define SET_GPIO_doen_sdio1_pad_cdata_oe_bit3(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x51)
+#define SET_GPIO_doen_sdio1_pad_cdata_oe_bit4(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x52)
+#define SET_GPIO_doen_sdio1_pad_cdata_oe_bit5(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x53)
+#define SET_GPIO_doen_sdio1_pad_cdata_oe_bit6(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x54)
+#define SET_GPIO_doen_sdio1_pad_cdata_oe_bit7(gpionum)           sf_vic_gpio_doen_value(gpionum, 0x55)
+#define SET_GPIO_doen_sdio1_pad_cdata_out_bit0(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x56)
+#define SET_GPIO_doen_sdio1_pad_cdata_out_bit1(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x57)
+#define SET_GPIO_doen_sdio1_pad_cdata_out_bit2(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x58)
+#define SET_GPIO_doen_sdio1_pad_cdata_out_bit3(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x59)
+#define SET_GPIO_doen_sdio1_pad_cdata_out_bit4(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x5a)
+#define SET_GPIO_doen_sdio1_pad_cdata_out_bit5(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x5b)
+#define SET_GPIO_doen_sdio1_pad_cdata_out_bit6(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x5c)
+#define SET_GPIO_doen_sdio1_pad_cdata_out_bit7(gpionum)          sf_vic_gpio_doen_value(gpionum, 0x5d)
+#define SET_GPIO_doen_sdio1_pad_rst_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x5e)
+#define SET_GPIO_doen_spdif_tx_sdout(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x5f)
+#define SET_GPIO_doen_spdif_tx_sdout_oen(gpionum)                sf_vic_gpio_doen_value(gpionum, 0x60)
+#define SET_GPIO_doen_spi0_pad_oe_n(gpionum)                     sf_vic_gpio_doen_value(gpionum, 0x61)
+#define SET_GPIO_doen_spi0_pad_sck_out(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x62)
+#define SET_GPIO_doen_spi0_pad_ss_0_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x63)
+#define SET_GPIO_doen_spi0_pad_ss_1_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x64)
+#define SET_GPIO_doen_spi0_pad_txd(gpionum)                      sf_vic_gpio_doen_value(gpionum, 0x65)
+#define SET_GPIO_doen_spi1_pad_oe_n(gpionum)                     sf_vic_gpio_doen_value(gpionum, 0x66)
+#define SET_GPIO_doen_spi1_pad_sck_out(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x67)
+#define SET_GPIO_doen_spi1_pad_ss_0_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x68)
+#define SET_GPIO_doen_spi1_pad_ss_1_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x69)
+#define SET_GPIO_doen_spi1_pad_txd(gpionum)                      sf_vic_gpio_doen_value(gpionum, 0x6a)
+#define SET_GPIO_doen_spi2_pad_oe_n(gpionum)                     sf_vic_gpio_doen_value(gpionum, 0x6b)
+#define SET_GPIO_doen_spi2_pad_sck_out(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x6c)
+#define SET_GPIO_doen_spi2_pad_ss_0_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x6d)
+#define SET_GPIO_doen_spi2_pad_ss_1_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x6e)
+#define SET_GPIO_doen_spi2_pad_txd(gpionum)                      sf_vic_gpio_doen_value(gpionum, 0x6f)
+#define SET_GPIO_doen_spi2ahb_pad_oe_n_bit0(gpionum)             sf_vic_gpio_doen_value(gpionum, 0x70)
+#define SET_GPIO_doen_spi2ahb_pad_oe_n_bit1(gpionum)             sf_vic_gpio_doen_value(gpionum, 0x71)
+#define SET_GPIO_doen_spi2ahb_pad_oe_n_bit2(gpionum)             sf_vic_gpio_doen_value(gpionum, 0x72)
+#define SET_GPIO_doen_spi2ahb_pad_oe_n_bit3(gpionum)             sf_vic_gpio_doen_value(gpionum, 0x73)
+#define SET_GPIO_doen_spi2ahb_pad_txd_bit0(gpionum)              sf_vic_gpio_doen_value(gpionum, 0x74)
+#define SET_GPIO_doen_spi2ahb_pad_txd_bit1(gpionum)              sf_vic_gpio_doen_value(gpionum, 0x75)
+#define SET_GPIO_doen_spi2ahb_pad_txd_bit2(gpionum)              sf_vic_gpio_doen_value(gpionum, 0x76)
+#define SET_GPIO_doen_spi2ahb_pad_txd_bit3(gpionum)              sf_vic_gpio_doen_value(gpionum, 0x77)
+#define SET_GPIO_doen_spi3_pad_oe_n(gpionum)                     sf_vic_gpio_doen_value(gpionum, 0x78)
+#define SET_GPIO_doen_spi3_pad_sck_out(gpionum)                  sf_vic_gpio_doen_value(gpionum, 0x79)
+#define SET_GPIO_doen_spi3_pad_ss_0_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x7a)
+#define SET_GPIO_doen_spi3_pad_ss_1_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x7b)
+#define SET_GPIO_doen_spi3_pad_txd(gpionum)                      sf_vic_gpio_doen_value(gpionum, 0x7c)
+#define SET_GPIO_doen_uart0_pad_dtrn(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x7d)
+#define SET_GPIO_doen_uart0_pad_rtsn(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x7e)
+#define SET_GPIO_doen_uart0_pad_sout(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x7f)
+#define SET_GPIO_doen_uart1_pad_sout(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x80)
+#define SET_GPIO_doen_uart2_pad_dtr_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x81)
+#define SET_GPIO_doen_uart2_pad_rts_n(gpionum)                   sf_vic_gpio_doen_value(gpionum, 0x82)
+#define SET_GPIO_doen_uart2_pad_sout(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x83)
+#define SET_GPIO_doen_uart3_pad_sout(gpionum)                    sf_vic_gpio_doen_value(gpionum, 0x84)
+#define SET_GPIO_doen_usb_drv_bus(gpionum)                       sf_vic_gpio_doen_value(gpionum, 0x85)
+#define SET_GPIO_cpu_jtag_tck(gpionum)                           sf_vic_gpio_manual(0x250, gpionum + 2)
+#define SET_GPIO_cpu_jtag_tdi(gpionum)                           sf_vic_gpio_manual(0x254, gpionum + 2)
+#define SET_GPIO_cpu_jtag_tms(gpionum)                           sf_vic_gpio_manual(0x258, gpionum + 2)
+#define SET_GPIO_cpu_jtag_trst(gpionum)                          sf_vic_gpio_manual(0x25c, gpionum + 2)
+#define SET_GPIO_dmic_sdin_bit0(gpionum)                         sf_vic_gpio_manual(0x260, gpionum + 2)
+#define SET_GPIO_dmic_sdin_bit1(gpionum)                         sf_vic_gpio_manual(0x264, gpionum + 2)
+#define SET_GPIO_dsp_JTCK_pad(gpionum)                           sf_vic_gpio_manual(0x268, gpionum + 2)
+#define SET_GPIO_dsp_JTDI_pad(gpionum)                           sf_vic_gpio_manual(0x26c, gpionum + 2)
+#define SET_GPIO_dsp_JTMS_pad(gpionum)                           sf_vic_gpio_manual(0x270, gpionum + 2)
+#define SET_GPIO_dsp_TRST_pad(gpionum)                           sf_vic_gpio_manual(0x274, gpionum + 2)
+#define SET_GPIO_i2c0_pad_sck_in(gpionum)                        sf_vic_gpio_manual(0x278, gpionum + 2)
+#define SET_GPIO_i2c0_pad_sda_in(gpionum)                        sf_vic_gpio_manual(0x27c, gpionum + 2)
+#define SET_GPIO_i2c1_pad_sck_in(gpionum)                        sf_vic_gpio_manual(0x280, gpionum + 2)
+#define SET_GPIO_i2c1_pad_sda_in(gpionum)                        sf_vic_gpio_manual(0x284, gpionum + 2)
+#define SET_GPIO_i2c2_pad_sck_in(gpionum)                        sf_vic_gpio_manual(0x288, gpionum + 2)
+#define SET_GPIO_i2c2_pad_sda_in(gpionum)                        sf_vic_gpio_manual(0x28c, gpionum + 2)
+#define SET_GPIO_i2c3_pad_sck_in(gpionum)                        sf_vic_gpio_manual(0x290, gpionum + 2)
+#define SET_GPIO_i2c3_pad_sda_in(gpionum)                        sf_vic_gpio_manual(0x294, gpionum + 2)
+#define SET_GPIO_i2srx_bclk_in(gpionum)                          sf_vic_gpio_manual(0x298, gpionum + 2)
+#define SET_GPIO_i2srx_lrck_in(gpionum)                          sf_vic_gpio_manual(0x29c, gpionum + 2)
+#define SET_GPIO_i2srx_sdin_bit0(gpionum)                        sf_vic_gpio_manual(0x2a0, gpionum + 2)
+#define SET_GPIO_i2srx_sdin_bit1(gpionum)                        sf_vic_gpio_manual(0x2a4, gpionum + 2)
+#define SET_GPIO_i2srx_sdin_bit2(gpionum)                        sf_vic_gpio_manual(0x2a8, gpionum + 2)
+#define SET_GPIO_i2stx_bclk_in(gpionum)                          sf_vic_gpio_manual(0x2ac, gpionum + 2)
+#define SET_GPIO_i2stx_lrck_in(gpionum)                          sf_vic_gpio_manual(0x2b0, gpionum + 2)
+#define SET_GPIO_sdio0_pad_card_detect_n(gpionum)                sf_vic_gpio_manual(0x2b4, gpionum + 2)
+#define SET_GPIO_sdio0_pad_card_write_prt(gpionum)               sf_vic_gpio_manual(0x2b8, gpionum + 2)
+#define SET_GPIO_sdio0_pad_ccmd_in(gpionum)                      sf_vic_gpio_manual(0x2bc, gpionum + 2)
+#define SET_GPIO_sdio0_pad_cdata_in_bit0(gpionum)                sf_vic_gpio_manual(0x2c0, gpionum + 2)
+#define SET_GPIO_sdio0_pad_cdata_in_bit1(gpionum)                sf_vic_gpio_manual(0x2c4, gpionum + 2)
+#define SET_GPIO_sdio0_pad_cdata_in_bit2(gpionum)                sf_vic_gpio_manual(0x2c8, gpionum + 2)
+#define SET_GPIO_sdio0_pad_cdata_in_bit3(gpionum)                sf_vic_gpio_manual(0x2cc, gpionum + 2)
+#define SET_GPIO_sdio0_pad_cdata_in_bit4(gpionum)                sf_vic_gpio_manual(0x2d0, gpionum + 2)
+#define SET_GPIO_sdio0_pad_cdata_in_bit5(gpionum)                sf_vic_gpio_manual(0x2d4, gpionum + 2)
+#define SET_GPIO_sdio0_pad_cdata_in_bit6(gpionum)                sf_vic_gpio_manual(0x2d8, gpionum + 2)
+#define SET_GPIO_sdio0_pad_cdata_in_bit7(gpionum)                sf_vic_gpio_manual(0x2dc, gpionum + 2)
+#define SET_GPIO_sdio1_pad_card_detect_n(gpionum)                sf_vic_gpio_manual(0x2e0, gpionum + 2)
+#define SET_GPIO_sdio1_pad_card_write_prt(gpionum)               sf_vic_gpio_manual(0x2e4, gpionum + 2)
+#define SET_GPIO_sdio1_pad_ccmd_in(gpionum)                      sf_vic_gpio_manual(0x2e8, gpionum + 2)
+#define SET_GPIO_sdio1_pad_cdata_in_bit0(gpionum)                sf_vic_gpio_manual(0x2ec, gpionum + 2)
+#define SET_GPIO_sdio1_pad_cdata_in_bit1(gpionum)                sf_vic_gpio_manual(0x2f0, gpionum + 2)
+#define SET_GPIO_sdio1_pad_cdata_in_bit2(gpionum)                sf_vic_gpio_manual(0x2f4, gpionum + 2)
+#define SET_GPIO_sdio1_pad_cdata_in_bit3(gpionum)                sf_vic_gpio_manual(0x2f8, gpionum + 2)
+#define SET_GPIO_sdio1_pad_cdata_in_bit4(gpionum)                sf_vic_gpio_manual(0x2fc, gpionum + 2)
+#define SET_GPIO_sdio1_pad_cdata_in_bit5(gpionum)                sf_vic_gpio_manual(0x300, gpionum + 2)
+#define SET_GPIO_sdio1_pad_cdata_in_bit6(gpionum)                sf_vic_gpio_manual(0x304, gpionum + 2)
+#define SET_GPIO_sdio1_pad_cdata_in_bit7(gpionum)                sf_vic_gpio_manual(0x308, gpionum + 2)
+#define SET_GPIO_spdif_rx_sdin(gpionum)                          sf_vic_gpio_manual(0x30c, gpionum + 2)
+#define SET_GPIO_spi0_pad_rxd(gpionum)                           sf_vic_gpio_manual(0x310, gpionum + 2)
+#define SET_GPIO_spi0_pad_ss_in_n(gpionum)                       sf_vic_gpio_manual(0x314, gpionum + 2)
+#define SET_GPIO_spi1_pad_rxd(gpionum)                           sf_vic_gpio_manual(0x318, gpionum + 2)
+#define SET_GPIO_spi1_pad_ss_in_n(gpionum)                       sf_vic_gpio_manual(0x31c, gpionum + 2)
+#define SET_GPIO_spi2_pad_rxd(gpionum)                           sf_vic_gpio_manual(0x320, gpionum + 2)
+#define SET_GPIO_spi2_pad_ss_in_n(gpionum)                       sf_vic_gpio_manual(0x324, gpionum + 2)
+#define SET_GPIO_spi2ahb_pad_rxd_bit0(gpionum)                   sf_vic_gpio_manual(0x328, gpionum + 2)
+#define SET_GPIO_spi2ahb_pad_rxd_bit1(gpionum)                   sf_vic_gpio_manual(0x32c, gpionum + 2)
+#define SET_GPIO_spi2ahb_pad_rxd_bit2(gpionum)                   sf_vic_gpio_manual(0x330, gpionum + 2)
+#define SET_GPIO_spi2ahb_pad_rxd_bit3(gpionum)                   sf_vic_gpio_manual(0x334, gpionum + 2)
+#define SET_GPIO_spi2ahb_pad_ss_n(gpionum)                       sf_vic_gpio_manual(0x338, gpionum + 2)
+#define SET_GPIO_spi2ahb_slv_sclkin(gpionum)                     sf_vic_gpio_manual(0x33c, gpionum + 2)
+#define SET_GPIO_spi3_pad_rxd(gpionum)                           sf_vic_gpio_manual(0x340, gpionum + 2)
+#define SET_GPIO_spi3_pad_ss_in_n(gpionum)                       sf_vic_gpio_manual(0x344, gpionum + 2)
+#define SET_GPIO_uart0_pad_ctsn(gpionum)                         sf_vic_gpio_manual(0x348, gpionum + 2)
+#define SET_GPIO_uart0_pad_dcdn(gpionum)                         sf_vic_gpio_manual(0x34c, gpionum + 2)
+#define SET_GPIO_uart0_pad_dsrn(gpionum)                         sf_vic_gpio_manual(0x350, gpionum + 2)
+#define SET_GPIO_uart0_pad_rin(gpionum)                          sf_vic_gpio_manual(0x354, gpionum + 2)
+#define SET_GPIO_uart0_pad_sin(gpionum)                          sf_vic_gpio_manual(0x358, gpionum + 2)
+#define SET_GPIO_uart1_pad_sin(gpionum)                          sf_vic_gpio_manual(0x35c, gpionum + 2)
+#define SET_GPIO_uart2_pad_cts_n(gpionum)                        sf_vic_gpio_manual(0x360, gpionum + 2)
+#define SET_GPIO_uart2_pad_dcd_n(gpionum)                        sf_vic_gpio_manual(0x364, gpionum + 2)
+#define SET_GPIO_uart2_pad_dsr_n(gpionum)                        sf_vic_gpio_manual(0x368, gpionum + 2)
+#define SET_GPIO_uart2_pad_ri_n(gpionum)                         sf_vic_gpio_manual(0x36c, gpionum + 2)
+#define SET_GPIO_uart2_pad_sin(gpionum)                          sf_vic_gpio_manual(0x370, gpionum + 2)
+#define SET_GPIO_uart3_pad_sin(gpionum)                          sf_vic_gpio_manual(0x374, gpionum + 2)
+#define SET_GPIO_usb_over_current(gpionum)                       sf_vic_gpio_manual(0x378, gpionum + 2)
+
+#endif /* __GPIO_PXA_H */