/*
 * Copyright (C) 2013-2014 Apple Inc. All rights reserved.
 *
 * This document is the property of Apple Inc.
 * It is considered confidential and proprietary.
 *
 * This document may not be reproduced or transmitted in any form,
 * in whole or in part, without the express written permission of
 * Apple Inc.
 */

/* THIS FILE IS AUTOMATICALLY GENERATED BY tools/csvtopinconfig.py. DO NOT EDIT!
   I/O Spreadsheet version: rev 3.0.0
   I/O Spreadsheet tracker: <rdar://problem/14957338> J96-J97 IO spreadsheet tracker
   Conversion command: csvtopinconfig.py --soc fiji --radar '<rdar://problem/14957338> J96-J97 IO spreadsheet tracker' --copyright 2013-2014 --config-column 'j96:j96 config' --config-column 'j97:j97 config' --pupd-column 'j96:j96 pu/pd' --pupd-column 'j97:j97 pu/pd' <filename>
*/

#include <debug.h>
#include <drivers/apple/gpio.h>
#include <platform.h>
#include <platform/soc/hwregbase.h>
#include <stdint.h>
#include <target/boardid.h>

static const uint32_t pinconfig_j96ap_0[GPIO_GROUP_COUNT * GPIOPADPINS] = {

/* Port  0 */
	CFG_DISABLED,							//   0 : ULPI_DIR		-> nc_soc_gpio_0
	CFG_DISABLED,							//   1 : ULPI_STP		->
	CFG_IN | PULL_UP,						//   2 : ULPI_NXT		-> gpio_spkamp_left_irq_l
	CFG_DISABLED,							//   3 : ULPI_DATA[7]		->
	CFG_IN | PULL_UP,						//   4 : ULPI_DATA[6]		-> gpio_spkamp_right_irq_l
	CFG_DISABLED,							//   5 : ULPI_DATA[5]		->
	CFG_OUT_0 | SLOW_SLEW,						//   6 : ULPI_DATA[4]		-> gpio_spkamp_keepalive
	CFG_DISABLED,							//   7 : ULPI_CLK		->

/* Port  1 */
	CFG_DISABLED,							//   8 : ULPI_DATA[3]		->
	CFG_DISABLED,							//   9 : ULPI_DATA[2]		->
	CFG_DISABLED,							//  10 : ULPI_DATA[1]		-> i2c1_soc2oscar_swdio_1v8
	CFG_DISABLED,							//  11 : ULPI_DATA[0]		-> i2c1_soc2oscar_swdclk_1v8
	CFG_FUNC0 | SLOW_SLEW,						//  12 : SPI1_SCLK		-> spi1_grape_sclk
	CFG_FUNC0 | SLOW_SLEW,						//  13 : SPI1_MOSI		-> spi1_grape_mosi
	CFG_FUNC0,							//  14 : SPI1_MISO		-> spi1_grape_miso
	CFG_OUT_1 | SLOW_SLEW,						//  15 : SPI1_SSIN		-> spi1_grape_cs_l

/* Port  2 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port  3 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port  4 */
	CFG_IN,								//  32 : GPIO[11]		-> gpio_btn_home_l
	CFG_IN,								//  33 : GPIO[12]		-> gpio_btn_onoff_l
	CFG_DISABLED,							//  34 : I2S3_MCK		->
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  35 : I2S3_LRCK		-> i2s3_soc2bt_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  36 : I2S3_BCLK		-> i2s3_soc2bt_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  37 : I2S3_DOUT		-> i2s3_soc2bt_data
	CFG_FUNC0,							//  38 : I2S3_DIN		-> i2s3_bt2soc_data
	CFG_FUNC0 | SLOW_SLEW,						//  39 : CLK32K_OUT		-> clk_32k_soc2cumulus

/* Port  5 */
	CFG_DISABLED,							//  40 : PCIE_CLKREQ0_N		->
	CFG_FUNC0 | SLOW_SLEW | INPUT_SCHMITT,				//  41 : PCIE_CLKREQ1_N		-> pcie1_wlan2soc_clkreq_l
	CFG_DISABLED,							//  42 : NAND_SYS_CLK		->
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				//  43 : GPIO[0]		-> gpio_soc2bb_wake_modem
	CFG_IN | PULL_UP,						//  44 : GPIO[1]		-> gpio_codec_irq_l
	CFG_IN | PULL_UP,						//  45 : GPIO[2]		-> gpio_btn_vol_up_l
	CFG_IN | PULL_UP,						//  46 : GPIO[3]		-> gpio_btn_vol_down_l
	CFG_OUT_0 | SLOW_SLEW,						//  47 : GPIO[4]		-> gpio_soc2grape_1v8_en

/* Port  6 */
	CFG_DISABLED,							//  48 : GPIO[5]		-> GPIO_SOC2CODEC_RST_L
	CFG_OUT_0 | SLOW_SLEW,						//  49 : GPIO[6]		-> gpio_soc2aj_hs4_shunt_en
	CFG_OUT_0 | SLOW_SLEW,						//  50 : GPIO[7]		-> gpio_soc2aj_hs3_shunt_en
	CFG_DISABLED | PULL_DOWN,					//  51 : GPIO[14]		-> bb_ipc_gpio
	CFG_DISABLED,							//  52 : GPIO[16]		-> gpio_board_id3
	CFG_DISABLED | PULL_DOWN,					//  53 : GPIO[17]		-> gpio_bb2soc_reset_det_l
	CFG_DISABLED,							//  54 : GPIO[18]		-> gpio_boot_config0
	CFG_OUT_0 | SLOW_SLEW,						//  55 : GPIO[20]		-> gpio_soc2pmu_keepact

/* Port  7 */
	CFG_OUT_0 | SLOW_SLEW,						//  56 : GPIO[21]		-> gpio_grape_rst_l
	CFG_FUNC0 | SLOW_SLEW,						//  57 : UART5_RTXD		-> uart5_batt_rtxd
	CFG_DISABLED,							//  58 : UART8_TXD		->
	CFG_IN,								//  59 : UART8_RXD		-> pmu_gpio_oscar2pmu_host_wake
	CFG_DISABLED,							//  60 : SPI0_SCLK		-> gpio_board_id0
	CFG_DISABLED,							//  61 : SPI0_MOSI		-> gpio_board_id1
	CFG_DISABLED,							//  62 : SPI0_MISO		-> gpio_board_id2
	CFG_OUT_0 | SLOW_SLEW,						//  63 : SPI0_SSIN		-> gpio_soc2wlan_pcie_dev_wake

/* Port  8 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  64 : I2C2_SDA		-> i2c2_sda_1v8
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  65 : I2C2_SCL		-> i2c2_scl_1v8
	CFG_DISABLED | PULL_DOWN,					//  66 : GPIO[22]		-> gpio_bb2soc_gps_sync
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				//  67 : GPIO[23]		-> gpio_soc2bb_radio_on_l
	CFG_DISABLED,							//  68 : GPIO[25]		-> gpio_boot_config1
	CFG_DISABLED,							//  69 : GPIO[28]		-> gpio_boot_config2
	CFG_DISABLED,							//  70 : GPIO[29]		->
	CFG_DISABLED,							//  71 : GPIO[34]		->

/* Port  9 */
	CFG_OUT_0 | SLOW_SLEW,						//  72 : GPIO[35]		-> gpio_soc2bt_wake
	CFG_IN,								//  73 : GPIO[36]		-> gpio_ts2soc2pmu_int
	CFG_DISABLED,							//  74 : GPIO[37]		->
	CFG_DISABLED,							//  75 : GPIO[39]/PCIE_PERST0_N	->
	CFG_DISABLED,							//  76 : GPIO[42]		->
	CFG_IN | SLOW_SLEW,						//  77 : GPIO[43]/PCIE_PERST1_N	-> pcie1_soc2wlan_rst_l
	CFG_OUT_0 | PULL_DOWN,						//  78 : DISP_VSYNC		-> display_sync
	CFG_FUNC0 | SLOW_SLEW,						//  79 : UART0_TXD		-> uart0_soc_txd

/* Port 10 */
	CFG_FUNC0,							//  80 : UART0_RXD		-> uart0_soc_rxd
	CFG_OUT_0 | SLOW_SLEW,						//  81 : TMR32_PWM0		-> oscar_time_sync_host_int
	CFG_DISABLED,							//  82 : TMR32_PWM1		->
	CFG_DISABLED,							//  83 : TMR32_PWM2		->
	CFG_FUNC0 | SLOW_SLEW,						//  84 : UART6_TXD		-> uart6_ts_acc_txd
	CFG_FUNC0,							//  85 : UART6_RXD		-> uart6_ts_acc_rxd
	CFG_FUNC0 | SLOW_SLEW,						//  86 : I2C3_SDA		-> i2c3_sda_1v8
	CFG_FUNC0 | SLOW_SLEW,						//  87 : I2C3_SCL		-> i2c3_scl_1v8

/* Port 11 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 12 */
	CFG_FUNC0 | SLOW_SLEW,						//  96 : I2C0_SDA		-> i2c0_sda_1v8
	CFG_FUNC0 | SLOW_SLEW,						//  97 : I2C0_SCL		-> i2c0_scl_1v8
	CFG_DISABLED,							//  98 : GPIO[38]		->
	CFG_FUNC0 | SLOW_SLEW,						//  99 : UART2_TXD		-> uart2_soc2wlan_tx
	CFG_FUNC0,							// 100 : UART2_RXD		-> uart2_wlan2soc_tx
	CFG_OUT_1 | SLOW_SLEW,						// 101 : UART2_RTSN		-> uart2_soc2wlan_rts_l
	CFG_FUNC0,							// 102 : UART2_CTSN		-> uart2_wlan2soc_rts_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 103 : DWI_DO			-> dwi_ap_do

/* Port 13 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 104 : DWI_CLK		-> dwi_ap_clk
	CFG_FUNC0 | SLOW_SLEW,						// 105 : WDOG			-> wdog_soc
	CFG_IN | PULL_UP,						// 106 : GPIO[13]		-> gpio_grape_irq_l
	CFG_IN | PULL_UP,						// 107 : GPIO[19]		-> gpio_pmu2soc_irq_l
	CFG_IN,								// 108 : GPIO[26]		-> gpio_force_dfu
	CFG_DISABLED,							// 109 : GPIO[27]		-> tp_gpio_dfu_status
	CFG_FUNC0 | SLOW_SLEW,						// 110 : SOCHOT0		-> sochot0_l
	CFG_FUNC0 | SLOW_SLEW,						// 111 : SOCHOT1		-> sochot1_l

/* Port 14 */
	CFG_DISABLED,							// 112 : UNSPECIFIED		-> UNSPECIFIED
	CFG_DISABLED,							// 113 : UNSPECIFIED		-> UNSPECIFIED
	CFG_DISABLED,							// 114 : GPIO[8]		-> gpio_board_rev0
	CFG_DISABLED,							// 115 : GPIO[9]		-> gpio_board_rev1
	CFG_DISABLED,							// 116 : GPIO[10]		-> gpio_board_rev2
	CFG_IN | PULL_UP,						// 117 : GPIO[15]		-> gpio_als1_irq_l
	CFG_IN | PULL_UP | SLOW_SLEW,					// 118 : UART4_TXD		-> uart4_soc2oslo_tx
	CFG_FUNC0,							// 119 : UART4_RXD		-> uart4_oslo2soc_tx

/* Port 15 */
	CFG_IN | PULL_UP | SLOW_SLEW,					// 120 : UART4_RTSN		-> uart4_soc2oslo_rts_l
	CFG_FUNC0,							// 121 : UART4_CTSN		-> uart4_oslo2soc_rts_l
	CFG_FUNC0 | SLOW_SLEW,						// 122 : SPI3_MOSI		-> spi_mesa_mosi
	CFG_FUNC0,							// 123 : SPI3_MISO		-> spi_mesa_miso
	CFG_FUNC0 | SLOW_SLEW | INPUT_SCHMITT,				// 124 : SPI3_SCLK		-> spi_mesa_sclk_r
	CFG_IN | PULL_DOWN,						// 125 : SPI3_SSIN		-> gpio_mesa2soc_int
	CFG_DISABLED,							// 126 : GPIO[24]		-> bb_jtag_tms
	CFG_DISABLED | PULL_DOWN,					// 127 : GPIO[30]		-> hsic1_bb2soc_device_rdy

/* Port 16 */
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				// 128 : GPIO[31]		-> gpio_soc2bb_rst_l
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				// 129 : GPIO[32]		-> hsic1_soc2bb_host_rdy
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				// 130 : GPIO[33]		-> gpio_soc2bb_coredump
	CFG_IN | PULL_UP,						// 131 : GPIO[40]		-> gpio_als2_irq_l
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 132 : GPIO[41]		-> gpio_soc2oslo_fw_dwl_req
	CFG_DISABLED,							// 133 : I2S4_MCK		-> bb_jtag_tck
	CFG_DISABLED,							// 134 : I2S4_LRCK		->
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 135 : I2S4_BCLK		-> gpio_soc2oslo_en

/* Port 17 */
	CFG_DISABLED,							// 136 : I2S4_DOUT		->
	CFG_DISABLED,							// 137 : I2S4_DIN		->
	CFG_DISABLED,							// 138 : I2C1_SDA		->
	CFG_DISABLED,							// 139 : I2C1_SCL		->
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 18 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 19 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 20 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 160 : I2S0_LRCK		-> i2s0_codec_asp_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 161 : I2S0_BCLK		-> i2s0_codec_asp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 162 : I2S0_DOUT		-> i2s0_codec_asp_dout
	CFG_FUNC0,							// 163 : I2S0_DIN		-> i2s0_codec_asp_din
	CFG_FUNC0 | DRIVE_X4 | SLOW_SLEW,				// 164 : I2S1_MCK		-> i2s1_spkamp_mck_r
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 165 : I2S1_LRCK		-> i2s1_spkamp_lrck
	CFG_FUNC0 | PULL_DOWN | DRIVE_X2 | SLOW_SLEW,			// 166 : I2S1_BCLK		-> i2s1_spkamp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 167 : I2S1_DOUT		-> i2s1_spkamp_dout

/* Port 21 */
	CFG_FUNC0,							// 168 : I2S1_DIN		-> i2s1_spkamp_din
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 169 : I2S2_LRCK		-> i2s2_codec_xsp_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 170 : I2S2_BCLK		-> i2s2_codec_xsp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 171 : I2S2_DOUT		-> i2s2_codec_xsp_dout
	CFG_FUNC0,							// 172 : I2S2_DIN		-> i2s2_codec_xsp_din
	CFG_FUNC0 | SLOW_SLEW,						// 173 : UART1_TXD		-> uart1_soc2bt_tx
	CFG_FUNC0,							// 174 : UART1_RXD		-> uart1_bt2soc_tx
	CFG_OUT_1 | SLOW_SLEW,						// 175 : UART1_RTSN		-> uart1_soc2bt_rts_l

/* Port 22 */
	CFG_FUNC0,							// 176 : UART1_CTSN		-> uart1_bt2soc_rts_l
	CFG_FUNC0,							// 177 : EDP_HPD		-> edp_hpd
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				// 178 : UART3_TXD		-> uart3_soc2bb_tx
	CFG_DISABLED | PULL_DOWN,					// 179 : UART3_RXD		-> uart3_bb2soc_tx
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				// 180 : UART3_RTSN		-> uart3_soc2bb_rts_l
	CFG_DISABLED | PULL_DOWN,					// 181 : UART3_CTSN		-> uart3_bb2soc_rts_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 182 : SPI2_SCLK		-> spi2_codec_sclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 183 : SPI2_MOSI		-> spi2_codec_mosi

/* Port 23 */
	CFG_FUNC0,							// 184 : SPI2_MISO		-> spi2_codec_miso
	CFG_OUT_1 | SLOW_SLEW,						// 185 : SPI2_SSIN		-> spi2_codec_cs_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 186 : ISP0_SDA		-> isp0_cam_rear_sda
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 187 : ISP0_SCL		-> isp0_cam_rear_scl
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 188 : ISP1_SDA		-> isp1_cam_front_sda
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 189 : ISP1_SCL		-> isp1_cam_front_scl
	CFG_OUT_0 | SLOW_SLEW,						// 190 : SENSOR0_RST		-> isp0_cam_rear_shutdown_l
	CFG_OUT_0 | DRIVE_X4 | SLOW_SLEW,				// 191 : SENSOR0_CLK		-> isp0_cam_rear_clk_r

/* Port 24 */
	CFG_DISABLED,							// 192 : SENSOR0_XSHUTDOWN	->
	CFG_DISABLED,							// 193 : SENSOR0_ISTRB		->
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 194 : ISP_UART0_TXD		-> soc2oscar_isp_uart_txd
	CFG_FUNC0,							// 195 : ISP_UART0_RXD		-> oscar2soc_isp_uart_rxd
	CFG_OUT_0 | SLOW_SLEW,						// 196 : SENSOR1_RST		-> isp1_cam_front_shutdown_l
	CFG_OUT_0 | DRIVE_X4 | SLOW_SLEW,				// 197 : SENSOR1_CLK		-> isp1_cam_front_clk_r
	CFG_DISABLED,							// 198 : SENSOR1_XSHUTDOWN	->
	CFG_DISABLED,							// 199 : SENSOR1_ISTRB		->

/* Port 25 */
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 200 : UART7_TXD		-> uart7_soc2oscar_txd
	CFG_FUNC0,							// 201 : UART7_RXD		-> uart7_oscar2soc_rxd
	CFG_FUNC0 | DRIVE_X4 | SLOW_SLEW,				// 202 : I2S0_MCK		-> i2s0_codec_asp_mck_r
	CFG_DISABLED,							// 203 : I2S2_MCK		->
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
};

static const uint32_t pinconfig_j96dev_0[GPIO_GROUP_COUNT * GPIOPADPINS] = {

/* Port  0 */
	CFG_DISABLED,							//   0 : ULPI_DIR		-> nc_soc_gpio_0
	CFG_DISABLED,							//   1 : ULPI_STP		->
	CFG_IN | PULL_UP,						//   2 : ULPI_NXT		-> gpio_spkamp_left_irq_l
	CFG_DISABLED,							//   3 : ULPI_DATA[7]		->
	CFG_IN | PULL_UP,						//   4 : ULPI_DATA[6]		-> gpio_spkamp_right_irq_l
	CFG_DISABLED,							//   5 : ULPI_DATA[5]		->
	CFG_OUT_0 | SLOW_SLEW,						//   6 : ULPI_DATA[4]		-> gpio_spkamp_keepalive
	CFG_DISABLED,							//   7 : ULPI_CLK		->

/* Port  1 */
	CFG_DISABLED,							//   8 : ULPI_DATA[3]		->
	CFG_DISABLED,							//   9 : ULPI_DATA[2]		->
	CFG_DISABLED,							//  10 : ULPI_DATA[1]		-> i2c1_soc2oscar_swdio_1v8
	CFG_DISABLED,							//  11 : ULPI_DATA[0]		-> i2c1_soc2oscar_swdclk_1v8
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  12 : SPI1_SCLK		-> spi1_grape_sclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  13 : SPI1_MOSI		-> spi1_grape_mosi
	CFG_FUNC0,							//  14 : SPI1_MISO		-> spi1_grape_miso
	CFG_OUT_1 | SLOW_SLEW,						//  15 : SPI1_SSIN		-> spi1_grape_cs_l

/* Port  2 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port  3 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port  4 */
	CFG_IN,								//  32 : GPIO[11]		-> gpio_btn_home_l
	CFG_IN,								//  33 : GPIO[12]		-> gpio_btn_onoff_l
	CFG_DISABLED,							//  34 : I2S3_MCK		->
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  35 : I2S3_LRCK		-> i2s3_soc2bt_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  36 : I2S3_BCLK		-> i2s3_soc2bt_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  37 : I2S3_DOUT		-> i2s3_soc2bt_data
	CFG_FUNC0,							//  38 : I2S3_DIN		-> i2s3_bt2soc_data
	CFG_FUNC0 | SLOW_SLEW,						//  39 : CLK32K_OUT		-> clk_32k_soc2cumulus

/* Port  5 */
	CFG_DISABLED,							//  40 : PCIE_CLKREQ0_N		->
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW | INPUT_SCHMITT,		//  41 : PCIE_CLKREQ1_N		-> pcie1_wlan2soc_clkreq_l
	CFG_DISABLED,							//  42 : NAND_SYS_CLK		->
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				//  43 : GPIO[0]		-> gpio_soc2bb_wake_modem
	CFG_IN | PULL_UP,						//  44 : GPIO[1]		-> gpio_codec_irq_l
	CFG_IN | PULL_UP,						//  45 : GPIO[2]		-> gpio_btn_vol_up_l
	CFG_IN | PULL_UP,						//  46 : GPIO[3]		-> gpio_btn_vol_down_l
	CFG_OUT_0 | SLOW_SLEW,						//  47 : GPIO[4]		-> gpio_soc2grape_1v8_en

/* Port  6 */
	CFG_DISABLED,							//  48 : GPIO[5]		-> GPIO_SOC2CODEC_RST_L
	CFG_OUT_0 | SLOW_SLEW,						//  49 : GPIO[6]		-> gpio_soc2aj_hs4_shunt_en
	CFG_OUT_0 | SLOW_SLEW,						//  50 : GPIO[7]		-> gpio_soc2aj_hs3_shunt_en
	CFG_DISABLED | PULL_DOWN,					//  51 : GPIO[14]		-> bb_ipc_gpio
	CFG_DISABLED,							//  52 : GPIO[16]		-> gpio_board_id3
	CFG_DISABLED | PULL_DOWN,					//  53 : GPIO[17]		-> gpio_bb2soc_reset_det_l
	CFG_DISABLED,							//  54 : GPIO[18]		-> gpio_boot_config0
	CFG_OUT_0 | SLOW_SLEW,						//  55 : GPIO[20]		-> gpio_soc2pmu_keepact

/* Port  7 */
	CFG_OUT_0 | SLOW_SLEW,						//  56 : GPIO[21]		-> gpio_grape_rst_l
	CFG_FUNC0 | SLOW_SLEW,						//  57 : UART5_RTXD		-> uart5_batt_rtxd
	CFG_DISABLED,							//  58 : UART8_TXD		->
	CFG_IN,								//  59 : UART8_RXD		-> pmu_gpio_oscar2pmu_host_wake
	CFG_DISABLED,							//  60 : SPI0_SCLK		-> gpio_board_id0
	CFG_DISABLED,							//  61 : SPI0_MOSI		-> gpio_board_id1
	CFG_DISABLED,							//  62 : SPI0_MISO		-> gpio_board_id2
	CFG_OUT_0 | SLOW_SLEW,						//  63 : SPI0_SSIN		-> gpio_soc2wlan_pcie_dev_wake

/* Port  8 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  64 : I2C2_SDA		-> i2c2_sda_1v8
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  65 : I2C2_SCL		-> i2c2_scl_1v8
	CFG_DISABLED | PULL_DOWN,					//  66 : GPIO[22]		-> gpio_bb2soc_gps_sync
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				//  67 : GPIO[23]		-> gpio_soc2bb_radio_on_l
	CFG_DISABLED,							//  68 : GPIO[25]		-> gpio_boot_config1
	CFG_DISABLED,							//  69 : GPIO[28]		-> gpio_boot_config2
	CFG_DISABLED,							//  70 : GPIO[29]		->
	CFG_DISABLED,							//  71 : GPIO[34]		->

/* Port  9 */
	CFG_OUT_0 | SLOW_SLEW,						//  72 : GPIO[35]		-> gpio_soc2bt_wake
	CFG_IN,								//  73 : GPIO[36]		-> gpio_ts2soc2pmu_int
	CFG_DISABLED,							//  74 : GPIO[37]		->
	CFG_DISABLED,							//  75 : GPIO[39]/PCIE_PERST0_N	->
	CFG_DISABLED,							//  76 : GPIO[42]		->
	CFG_IN | DRIVE_X2 | SLOW_SLEW,					//  77 : GPIO[43]/PCIE_PERST1_N	-> pcie1_soc2wlan_rst_l
	CFG_OUT_0 | PULL_DOWN,						//  78 : DISP_VSYNC		-> display_sync
	CFG_FUNC0 | SLOW_SLEW,						//  79 : UART0_TXD		-> uart0_soc_txd

/* Port 10 */
	CFG_FUNC0,							//  80 : UART0_RXD		-> uart0_soc_rxd
	CFG_OUT_0 | SLOW_SLEW,						//  81 : TMR32_PWM0		-> oscar_time_sync_host_int
	CFG_DISABLED,							//  82 : TMR32_PWM1		->
	CFG_DISABLED,							//  83 : TMR32_PWM2		->
	CFG_FUNC0 | SLOW_SLEW,						//  84 : UART6_TXD		-> uart6_ts_acc_txd
	CFG_FUNC0,							//  85 : UART6_RXD		-> uart6_ts_acc_rxd
	CFG_FUNC0 | SLOW_SLEW,						//  86 : I2C3_SDA		-> i2c3_sda_1v8
	CFG_FUNC0 | SLOW_SLEW,						//  87 : I2C3_SCL		-> i2c3_scl_1v8

/* Port 11 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 12 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  96 : I2C0_SDA		-> i2c0_sda_1v8
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  97 : I2C0_SCL		-> i2c0_scl_1v8
	CFG_DISABLED,							//  98 : GPIO[38]		->
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  99 : UART2_TXD		-> uart2_soc2wlan_tx
	CFG_FUNC0,							// 100 : UART2_RXD		-> uart2_wlan2soc_tx
	CFG_OUT_1 | DRIVE_X2 | SLOW_SLEW,				// 101 : UART2_RTSN		-> uart2_soc2wlan_rts_l
	CFG_FUNC0,							// 102 : UART2_CTSN		-> uart2_wlan2soc_rts_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 103 : DWI_DO			-> dwi_ap_do

/* Port 13 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 104 : DWI_CLK		-> dwi_ap_clk
	CFG_FUNC0 | SLOW_SLEW,						// 105 : WDOG			-> wdog_soc
	CFG_IN | PULL_UP,						// 106 : GPIO[13]		-> gpio_grape_irq_l
	CFG_IN | PULL_UP,						// 107 : GPIO[19]		-> gpio_pmu2soc_irq_l
	CFG_IN,								// 108 : GPIO[26]		-> gpio_force_dfu
	CFG_DISABLED,							// 109 : GPIO[27]		-> tp_gpio_dfu_status
	CFG_FUNC0 | SLOW_SLEW,						// 110 : SOCHOT0		-> sochot0_l
	CFG_FUNC0 | SLOW_SLEW,						// 111 : SOCHOT1		-> sochot1_l

/* Port 14 */
	CFG_DISABLED,							// 112 : UNSPECIFIED		-> UNSPECIFIED
	CFG_DISABLED,							// 113 : UNSPECIFIED		-> UNSPECIFIED
	CFG_DISABLED,							// 114 : GPIO[8]		-> gpio_board_rev0
	CFG_DISABLED,							// 115 : GPIO[9]		-> gpio_board_rev1
	CFG_DISABLED,							// 116 : GPIO[10]		-> gpio_board_rev2
	CFG_IN | PULL_UP,						// 117 : GPIO[15]		-> gpio_als1_irq_l
	CFG_IN | PULL_UP | DRIVE_X2 | SLOW_SLEW,			// 118 : UART4_TXD		-> uart4_soc2oslo_tx
	CFG_FUNC0,							// 119 : UART4_RXD		-> uart4_oslo2soc_tx

/* Port 15 */
	CFG_IN | PULL_UP | DRIVE_X2 | SLOW_SLEW,			// 120 : UART4_RTSN		-> uart4_soc2oslo_rts_l
	CFG_FUNC0,							// 121 : UART4_CTSN		-> uart4_oslo2soc_rts_l
	CFG_FUNC0 | SLOW_SLEW,						// 122 : SPI3_MOSI		-> spi_mesa_mosi
	CFG_FUNC0,							// 123 : SPI3_MISO		-> spi_mesa_miso
	CFG_FUNC0 | SLOW_SLEW | INPUT_SCHMITT,				// 124 : SPI3_SCLK		-> spi_mesa_sclk_r
	CFG_IN | PULL_DOWN,						// 125 : SPI3_SSIN		-> gpio_mesa2soc_int
	CFG_DISABLED,							// 126 : GPIO[24]		-> bb_jtag_tms
	CFG_DISABLED | PULL_DOWN,					// 127 : GPIO[30]		-> hsic1_bb2soc_device_rdy

/* Port 16 */
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				// 128 : GPIO[31]		-> gpio_soc2bb_rst_l
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				// 129 : GPIO[32]		-> hsic1_soc2bb_host_rdy
	CFG_DISABLED | PULL_DOWN | SLOW_SLEW,				// 130 : GPIO[33]		-> gpio_soc2bb_coredump
	CFG_IN | PULL_UP,						// 131 : GPIO[40]		-> gpio_als2_irq_l
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 132 : GPIO[41]		-> gpio_soc2oslo_fw_dwl_req
	CFG_DISABLED,							// 133 : I2S4_MCK		-> bb_jtag_tck
	CFG_DISABLED,							// 134 : I2S4_LRCK		->
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 135 : I2S4_BCLK		-> gpio_soc2oslo_en

/* Port 17 */
	CFG_DISABLED,							// 136 : I2S4_DOUT		->
	CFG_DISABLED,							// 137 : I2S4_DIN		->
	CFG_DISABLED,							// 138 : I2C1_SDA		->
	CFG_DISABLED,							// 139 : I2C1_SCL		->
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 18 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 19 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 20 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 160 : I2S0_LRCK		-> i2s0_codec_asp_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 161 : I2S0_BCLK		-> i2s0_codec_asp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 162 : I2S0_DOUT		-> i2s0_codec_asp_dout
	CFG_FUNC0,							// 163 : I2S0_DIN		-> i2s0_codec_asp_din
	CFG_FUNC0 | DRIVE_X4 | SLOW_SLEW,				// 164 : I2S1_MCK		-> i2s1_spkamp_mck_r
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 165 : I2S1_LRCK		-> i2s1_spkamp_lrck
	CFG_FUNC0 | PULL_DOWN | DRIVE_X2 | SLOW_SLEW,			// 166 : I2S1_BCLK		-> i2s1_spkamp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 167 : I2S1_DOUT		-> i2s1_spkamp_dout

/* Port 21 */
	CFG_FUNC0,							// 168 : I2S1_DIN		-> i2s1_spkamp_din
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 169 : I2S2_LRCK		-> i2s2_codec_xsp_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 170 : I2S2_BCLK		-> i2s2_codec_xsp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 171 : I2S2_DOUT		-> i2s2_codec_xsp_dout
	CFG_FUNC0,							// 172 : I2S2_DIN		-> i2s2_codec_xsp_din
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 173 : UART1_TXD		-> uart1_soc2bt_tx
	CFG_FUNC0,							// 174 : UART1_RXD		-> uart1_bt2soc_tx
	CFG_OUT_1 | DRIVE_X2 | SLOW_SLEW,				// 175 : UART1_RTSN		-> uart1_soc2bt_rts_l

/* Port 22 */
	CFG_FUNC0,							// 176 : UART1_CTSN		-> uart1_bt2soc_rts_l
	CFG_FUNC0,							// 177 : EDP_HPD		-> edp_hpd
	CFG_DISABLED | PULL_DOWN | DRIVE_X2 | SLOW_SLEW,		// 178 : UART3_TXD		-> uart3_soc2bb_tx
	CFG_DISABLED | PULL_DOWN,					// 179 : UART3_RXD		-> uart3_bb2soc_tx
	CFG_DISABLED | PULL_DOWN | DRIVE_X2 | SLOW_SLEW,		// 180 : UART3_RTSN		-> uart3_soc2bb_rts_l
	CFG_DISABLED | PULL_DOWN,					// 181 : UART3_CTSN		-> uart3_bb2soc_rts_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 182 : SPI2_SCLK		-> spi2_codec_sclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 183 : SPI2_MOSI		-> spi2_codec_mosi

/* Port 23 */
	CFG_FUNC0,							// 184 : SPI2_MISO		-> spi2_codec_miso
	CFG_OUT_1 | SLOW_SLEW,						// 185 : SPI2_SSIN		-> spi2_codec_cs_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 186 : ISP0_SDA		-> isp0_cam_rear_sda
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 187 : ISP0_SCL		-> isp0_cam_rear_scl
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 188 : ISP1_SDA		-> isp1_cam_front_sda
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 189 : ISP1_SCL		-> isp1_cam_front_scl
	CFG_OUT_0 | SLOW_SLEW,						// 190 : SENSOR0_RST		-> isp0_cam_rear_shutdown_l
	CFG_OUT_0 | DRIVE_X4 | SLOW_SLEW,				// 191 : SENSOR0_CLK		-> isp0_cam_rear_clk_r

/* Port 24 */
	CFG_DISABLED,							// 192 : SENSOR0_XSHUTDOWN	->
	CFG_DISABLED,							// 193 : SENSOR0_ISTRB		->
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 194 : ISP_UART0_TXD		-> soc2oscar_isp_uart_txd
	CFG_FUNC0,							// 195 : ISP_UART0_RXD		-> oscar2soc_isp_uart_rxd
	CFG_OUT_0 | SLOW_SLEW,						// 196 : SENSOR1_RST		-> isp1_cam_front_shutdown_l
	CFG_OUT_0 | DRIVE_X4 | SLOW_SLEW,				// 197 : SENSOR1_CLK		-> isp1_cam_front_clk_r
	CFG_DISABLED,							// 198 : SENSOR1_XSHUTDOWN	->
	CFG_DISABLED,							// 199 : SENSOR1_ISTRB		->

/* Port 25 */
	CFG_IN | PULL_DOWN | DRIVE_X2 | SLOW_SLEW,			// 200 : UART7_TXD		-> uart7_soc2oscar_txd
	CFG_FUNC0,							// 201 : UART7_RXD		-> uart7_oscar2soc_rxd
	CFG_FUNC0 | DRIVE_X4 | SLOW_SLEW,				// 202 : I2S0_MCK		-> i2s0_codec_asp_mck_r
	CFG_DISABLED,							// 203 : I2S2_MCK		->
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
};

static const uint32_t pinconfig_j97ap_0[GPIO_GROUP_COUNT * GPIOPADPINS] = {

/* Port  0 */
	CFG_DISABLED,							//   0 : ULPI_DIR		-> nc_soc_gpio_0
	CFG_DISABLED,							//   1 : ULPI_STP		->
	CFG_IN | PULL_UP,						//   2 : ULPI_NXT		-> gpio_spkamp_left_irq_l
	CFG_DISABLED,							//   3 : ULPI_DATA[7]		->
	CFG_IN | PULL_UP,						//   4 : ULPI_DATA[6]		-> gpio_spkamp_right_irq_l
	CFG_DISABLED,							//   5 : ULPI_DATA[5]		->
	CFG_OUT_0 | SLOW_SLEW,						//   6 : ULPI_DATA[4]		-> gpio_spkamp_keepalive
	CFG_DISABLED,							//   7 : ULPI_CLK		->

/* Port  1 */
	CFG_DISABLED,							//   8 : ULPI_DATA[3]		->
	CFG_DISABLED,							//   9 : ULPI_DATA[2]		->
	CFG_DISABLED,							//  10 : ULPI_DATA[1]		-> i2c1_soc2oscar_swdio_1v8
	CFG_DISABLED,							//  11 : ULPI_DATA[0]		-> i2c1_soc2oscar_swdclk_1v8
	CFG_FUNC0 | SLOW_SLEW,						//  12 : SPI1_SCLK		-> spi1_grape_sclk
	CFG_FUNC0 | SLOW_SLEW,						//  13 : SPI1_MOSI		-> spi1_grape_mosi
	CFG_FUNC0,							//  14 : SPI1_MISO		-> spi1_grape_miso
	CFG_OUT_1 | SLOW_SLEW,						//  15 : SPI1_SSIN		-> spi1_grape_cs_l

/* Port  2 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port  3 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port  4 */
	CFG_IN,								//  32 : GPIO[11]		-> gpio_btn_home_l
	CFG_IN,								//  33 : GPIO[12]		-> gpio_btn_onoff_l
	CFG_DISABLED,							//  34 : I2S3_MCK		->
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  35 : I2S3_LRCK		-> i2s3_soc2bt_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  36 : I2S3_BCLK		-> i2s3_soc2bt_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  37 : I2S3_DOUT		-> i2s3_soc2bt_data
	CFG_FUNC0,							//  38 : I2S3_DIN		-> i2s3_bt2soc_data
	CFG_FUNC0 | SLOW_SLEW,						//  39 : CLK32K_OUT		-> clk_32k_soc2cumulus

/* Port  5 */
	CFG_DISABLED,							//  40 : PCIE_CLKREQ0_N		->
	CFG_FUNC0 | SLOW_SLEW | INPUT_SCHMITT,				//  41 : PCIE_CLKREQ1_N		-> pcie1_wlan2soc_clkreq_l
	CFG_DISABLED,							//  42 : NAND_SYS_CLK		->
	CFG_OUT_0 | SLOW_SLEW,						//  43 : GPIO[0]		-> gpio_soc2bb_wake_modem
	CFG_IN | PULL_UP,						//  44 : GPIO[1]		-> gpio_codec_irq_l
	CFG_IN | PULL_UP,						//  45 : GPIO[2]		-> gpio_btn_vol_up_l
	CFG_IN | PULL_UP,						//  46 : GPIO[3]		-> gpio_btn_vol_down_l
	CFG_OUT_0 | SLOW_SLEW,						//  47 : GPIO[4]		-> gpio_soc2grape_1v8_en

/* Port  6 */
	CFG_DISABLED,							//  48 : GPIO[5]		-> GPIO_SOC2CODEC_RST_L
	CFG_OUT_0 | SLOW_SLEW,						//  49 : GPIO[6]		-> gpio_soc2aj_hs4_shunt_en
	CFG_OUT_0 | SLOW_SLEW,						//  50 : GPIO[7]		-> gpio_soc2aj_hs3_shunt_en
	CFG_DISABLED,							//  51 : GPIO[14]		-> bb_ipc_gpio
	CFG_DISABLED,							//  52 : GPIO[16]		-> gpio_board_id3
	CFG_IN | PULL_DOWN,						//  53 : GPIO[17]		-> gpio_bb2soc_reset_det_l
	CFG_DISABLED,							//  54 : GPIO[18]		-> gpio_boot_config0
	CFG_OUT_0 | SLOW_SLEW,						//  55 : GPIO[20]		-> gpio_soc2pmu_keepact

/* Port  7 */
	CFG_OUT_0 | SLOW_SLEW,						//  56 : GPIO[21]		-> gpio_grape_rst_l
	CFG_FUNC0 | SLOW_SLEW,						//  57 : UART5_RTXD		-> uart5_batt_rtxd
	CFG_DISABLED,							//  58 : UART8_TXD		->
	CFG_IN,								//  59 : UART8_RXD		-> pmu_gpio_oscar2pmu_host_wake
	CFG_DISABLED,							//  60 : SPI0_SCLK		-> gpio_board_id0
	CFG_DISABLED,							//  61 : SPI0_MOSI		-> gpio_board_id1
	CFG_DISABLED,							//  62 : SPI0_MISO		-> gpio_board_id2
	CFG_OUT_0 | SLOW_SLEW,						//  63 : SPI0_SSIN		-> gpio_soc2wlan_pcie_dev_wake

/* Port  8 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  64 : I2C2_SDA		-> i2c2_sda_1v8
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  65 : I2C2_SCL		-> i2c2_scl_1v8
	CFG_DISABLED,							//  66 : GPIO[22]		-> gpio_bb2soc_gps_sync
	CFG_IN | SLOW_SLEW,						//  67 : GPIO[23]		-> gpio_soc2bb_radio_on_l
	CFG_DISABLED,							//  68 : GPIO[25]		-> gpio_boot_config1
	CFG_DISABLED,							//  69 : GPIO[28]		-> gpio_boot_config2
	CFG_DISABLED,							//  70 : GPIO[29]		->
	CFG_DISABLED,							//  71 : GPIO[34]		->

/* Port  9 */
	CFG_OUT_0 | SLOW_SLEW,						//  72 : GPIO[35]		-> gpio_soc2bt_wake
	CFG_IN,								//  73 : GPIO[36]		-> gpio_ts2soc2pmu_int
	CFG_DISABLED,							//  74 : GPIO[37]		->
	CFG_DISABLED,							//  75 : GPIO[39]/PCIE_PERST0_N	->
	CFG_DISABLED,							//  76 : GPIO[42]		->
	CFG_IN | SLOW_SLEW,						//  77 : GPIO[43]/PCIE_PERST1_N	-> pcie1_soc2wlan_rst_l
	CFG_OUT_0 | PULL_DOWN,						//  78 : DISP_VSYNC		-> display_sync
	CFG_FUNC0 | SLOW_SLEW,						//  79 : UART0_TXD		-> uart0_soc_txd

/* Port 10 */
	CFG_FUNC0,							//  80 : UART0_RXD		-> uart0_soc_rxd
	CFG_OUT_0 | SLOW_SLEW,						//  81 : TMR32_PWM0		-> oscar_time_sync_host_int
	CFG_DISABLED,							//  82 : TMR32_PWM1		->
	CFG_DISABLED,							//  83 : TMR32_PWM2		->
	CFG_FUNC0 | SLOW_SLEW,						//  84 : UART6_TXD		-> uart6_ts_acc_txd
	CFG_FUNC0,							//  85 : UART6_RXD		-> uart6_ts_acc_rxd
	CFG_FUNC0 | SLOW_SLEW,						//  86 : I2C3_SDA		-> i2c3_sda_1v8
	CFG_FUNC0 | SLOW_SLEW,						//  87 : I2C3_SCL		-> i2c3_scl_1v8

/* Port 11 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 12 */
	CFG_FUNC0 | SLOW_SLEW,						//  96 : I2C0_SDA		-> i2c0_sda_1v8
	CFG_FUNC0 | SLOW_SLEW,						//  97 : I2C0_SCL		-> i2c0_scl_1v8
	CFG_DISABLED,							//  98 : GPIO[38]		->
	CFG_FUNC0 | SLOW_SLEW,						//  99 : UART2_TXD		-> uart2_soc2wlan_tx
	CFG_FUNC0,							// 100 : UART2_RXD		-> uart2_wlan2soc_tx
	CFG_OUT_1 | SLOW_SLEW,						// 101 : UART2_RTSN		-> uart2_soc2wlan_rts_l
	CFG_FUNC0,							// 102 : UART2_CTSN		-> uart2_wlan2soc_rts_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 103 : DWI_DO			-> dwi_ap_do

/* Port 13 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 104 : DWI_CLK		-> dwi_ap_clk
	CFG_FUNC0 | SLOW_SLEW,						// 105 : WDOG			-> wdog_soc
	CFG_IN | PULL_UP,						// 106 : GPIO[13]		-> gpio_grape_irq_l
	CFG_IN | PULL_UP,						// 107 : GPIO[19]		-> gpio_pmu2soc_irq_l
	CFG_IN,								// 108 : GPIO[26]		-> gpio_force_dfu
	CFG_DISABLED,							// 109 : GPIO[27]		-> tp_gpio_dfu_status
	CFG_FUNC0 | SLOW_SLEW,						// 110 : SOCHOT0		-> sochot0_l
	CFG_FUNC0 | SLOW_SLEW,						// 111 : SOCHOT1		-> sochot1_l

/* Port 14 */
	CFG_DISABLED,							// 112 : UNSPECIFIED		-> UNSPECIFIED
	CFG_DISABLED,							// 113 : UNSPECIFIED		-> UNSPECIFIED
	CFG_DISABLED,							// 114 : GPIO[8]		-> gpio_board_rev0
	CFG_DISABLED,							// 115 : GPIO[9]		-> gpio_board_rev1
	CFG_DISABLED,							// 116 : GPIO[10]		-> gpio_board_rev2
	CFG_IN | PULL_UP,						// 117 : GPIO[15]		-> gpio_als1_irq_l
	CFG_IN | PULL_UP | SLOW_SLEW,					// 118 : UART4_TXD		-> uart4_soc2oslo_tx
	CFG_FUNC0,							// 119 : UART4_RXD		-> uart4_oslo2soc_tx

/* Port 15 */
	CFG_IN | PULL_UP | SLOW_SLEW,					// 120 : UART4_RTSN		-> uart4_soc2oslo_rts_l
	CFG_FUNC0,							// 121 : UART4_CTSN		-> uart4_oslo2soc_rts_l
	CFG_FUNC0 | SLOW_SLEW,						// 122 : SPI3_MOSI		-> spi_mesa_mosi
	CFG_FUNC0,							// 123 : SPI3_MISO		-> spi_mesa_miso
	CFG_FUNC0 | SLOW_SLEW | INPUT_SCHMITT,				// 124 : SPI3_SCLK		-> spi_mesa_sclk_r
	CFG_IN | PULL_DOWN,						// 125 : SPI3_SSIN		-> gpio_mesa2soc_int
	CFG_DISABLED,							// 126 : GPIO[24]		-> bb_jtag_tms
	CFG_IN | PULL_DOWN,						// 127 : GPIO[30]		-> hsic1_bb2soc_device_rdy

/* Port 16 */
	CFG_IN | SLOW_SLEW,						// 128 : GPIO[31]		-> gpio_soc2bb_rst_l
	CFG_OUT_0 | SLOW_SLEW,						// 129 : GPIO[32]		-> hsic1_soc2bb_host_rdy
	CFG_OUT_0 | SLOW_SLEW,						// 130 : GPIO[33]		-> gpio_soc2bb_coredump
	CFG_IN | PULL_UP,						// 131 : GPIO[40]		-> gpio_als2_irq_l
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 132 : GPIO[41]		-> gpio_soc2oslo_fw_dwl_req
	CFG_DISABLED,							// 133 : I2S4_MCK		-> bb_jtag_tck
	CFG_DISABLED,							// 134 : I2S4_LRCK		->
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 135 : I2S4_BCLK		-> gpio_soc2oslo_en

/* Port 17 */
	CFG_DISABLED,							// 136 : I2S4_DOUT		->
	CFG_DISABLED,							// 137 : I2S4_DIN		->
	CFG_DISABLED,							// 138 : I2C1_SDA		->
	CFG_DISABLED,							// 139 : I2C1_SCL		->
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 18 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 19 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 20 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 160 : I2S0_LRCK		-> i2s0_codec_asp_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 161 : I2S0_BCLK		-> i2s0_codec_asp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 162 : I2S0_DOUT		-> i2s0_codec_asp_dout
	CFG_FUNC0,							// 163 : I2S0_DIN		-> i2s0_codec_asp_din
	CFG_FUNC0 | DRIVE_X4 | SLOW_SLEW,				// 164 : I2S1_MCK		-> i2s1_spkamp_mck_r
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 165 : I2S1_LRCK		-> i2s1_spkamp_lrck
	CFG_FUNC0 | PULL_DOWN | DRIVE_X2 | SLOW_SLEW,			// 166 : I2S1_BCLK		-> i2s1_spkamp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 167 : I2S1_DOUT		-> i2s1_spkamp_dout

/* Port 21 */
	CFG_FUNC0,							// 168 : I2S1_DIN		-> i2s1_spkamp_din
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 169 : I2S2_LRCK		-> i2s2_codec_xsp_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 170 : I2S2_BCLK		-> i2s2_codec_xsp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 171 : I2S2_DOUT		-> i2s2_codec_xsp_dout
	CFG_FUNC0,							// 172 : I2S2_DIN		-> i2s2_codec_xsp_din
	CFG_FUNC0 | SLOW_SLEW,						// 173 : UART1_TXD		-> uart1_soc2bt_tx
	CFG_FUNC0,							// 174 : UART1_RXD		-> uart1_bt2soc_tx
	CFG_OUT_1 | SLOW_SLEW,						// 175 : UART1_RTSN		-> uart1_soc2bt_rts_l

/* Port 22 */
	CFG_FUNC0,							// 176 : UART1_CTSN		-> uart1_bt2soc_rts_l
	CFG_FUNC0,							// 177 : EDP_HPD		-> edp_hpd
	CFG_IN | SLOW_SLEW,						// 178 : UART3_TXD		-> uart3_soc2bb_tx
	CFG_FUNC0,							// 179 : UART3_RXD		-> uart3_bb2soc_tx
	CFG_IN | SLOW_SLEW,						// 180 : UART3_RTSN		-> uart3_soc2bb_rts_l
	CFG_FUNC0,							// 181 : UART3_CTSN		-> uart3_bb2soc_rts_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 182 : SPI2_SCLK		-> spi2_codec_sclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 183 : SPI2_MOSI		-> spi2_codec_mosi

/* Port 23 */
	CFG_FUNC0,							// 184 : SPI2_MISO		-> spi2_codec_miso
	CFG_OUT_1 | SLOW_SLEW,						// 185 : SPI2_SSIN		-> spi2_codec_cs_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 186 : ISP0_SDA		-> isp0_cam_rear_sda
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 187 : ISP0_SCL		-> isp0_cam_rear_scl
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 188 : ISP1_SDA		-> isp1_cam_front_sda
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 189 : ISP1_SCL		-> isp1_cam_front_scl
	CFG_OUT_0 | SLOW_SLEW,						// 190 : SENSOR0_RST		-> isp0_cam_rear_shutdown_l
	CFG_OUT_0 | DRIVE_X4 | SLOW_SLEW,				// 191 : SENSOR0_CLK		-> isp0_cam_rear_clk_r

/* Port 24 */
	CFG_DISABLED,							// 192 : SENSOR0_XSHUTDOWN	->
	CFG_DISABLED,							// 193 : SENSOR0_ISTRB		->
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 194 : ISP_UART0_TXD		-> soc2oscar_isp_uart_txd
	CFG_FUNC0,							// 195 : ISP_UART0_RXD		-> oscar2soc_isp_uart_rxd
	CFG_OUT_0 | SLOW_SLEW,						// 196 : SENSOR1_RST		-> isp1_cam_front_shutdown_l
	CFG_OUT_0 | DRIVE_X4 | SLOW_SLEW,				// 197 : SENSOR1_CLK		-> isp1_cam_front_clk_r
	CFG_DISABLED,							// 198 : SENSOR1_XSHUTDOWN	->
	CFG_DISABLED,							// 199 : SENSOR1_ISTRB		->

/* Port 25 */
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 200 : UART7_TXD		-> uart7_soc2oscar_txd
	CFG_FUNC0,							// 201 : UART7_RXD		-> uart7_oscar2soc_rxd
	CFG_FUNC0 | DRIVE_X4 | SLOW_SLEW,				// 202 : I2S0_MCK		-> i2s0_codec_asp_mck_r
	CFG_DISABLED,							// 203 : I2S2_MCK		->
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
};

static const uint32_t pinconfig_j97dev_0[GPIO_GROUP_COUNT * GPIOPADPINS] = {

/* Port  0 */
	CFG_DISABLED,							//   0 : ULPI_DIR		-> nc_soc_gpio_0
	CFG_DISABLED,							//   1 : ULPI_STP		->
	CFG_IN | PULL_UP,						//   2 : ULPI_NXT		-> gpio_spkamp_left_irq_l
	CFG_DISABLED,							//   3 : ULPI_DATA[7]		->
	CFG_IN | PULL_UP,						//   4 : ULPI_DATA[6]		-> gpio_spkamp_right_irq_l
	CFG_DISABLED,							//   5 : ULPI_DATA[5]		->
	CFG_OUT_0 | SLOW_SLEW,						//   6 : ULPI_DATA[4]		-> gpio_spkamp_keepalive
	CFG_DISABLED,							//   7 : ULPI_CLK		->

/* Port  1 */
	CFG_DISABLED,							//   8 : ULPI_DATA[3]		->
	CFG_DISABLED,							//   9 : ULPI_DATA[2]		->
	CFG_DISABLED,							//  10 : ULPI_DATA[1]		-> i2c1_soc2oscar_swdio_1v8
	CFG_DISABLED,							//  11 : ULPI_DATA[0]		-> i2c1_soc2oscar_swdclk_1v8
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  12 : SPI1_SCLK		-> spi1_grape_sclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  13 : SPI1_MOSI		-> spi1_grape_mosi
	CFG_FUNC0,							//  14 : SPI1_MISO		-> spi1_grape_miso
	CFG_OUT_1 | SLOW_SLEW,						//  15 : SPI1_SSIN		-> spi1_grape_cs_l

/* Port  2 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port  3 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port  4 */
	CFG_IN,								//  32 : GPIO[11]		-> gpio_btn_home_l
	CFG_IN,								//  33 : GPIO[12]		-> gpio_btn_onoff_l
	CFG_DISABLED,							//  34 : I2S3_MCK		->
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  35 : I2S3_LRCK		-> i2s3_soc2bt_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  36 : I2S3_BCLK		-> i2s3_soc2bt_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  37 : I2S3_DOUT		-> i2s3_soc2bt_data
	CFG_FUNC0,							//  38 : I2S3_DIN		-> i2s3_bt2soc_data
	CFG_FUNC0 | SLOW_SLEW,						//  39 : CLK32K_OUT		-> clk_32k_soc2cumulus

/* Port  5 */
	CFG_DISABLED,							//  40 : PCIE_CLKREQ0_N		->
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW | INPUT_SCHMITT,		//  41 : PCIE_CLKREQ1_N		-> pcie1_wlan2soc_clkreq_l
	CFG_DISABLED,							//  42 : NAND_SYS_CLK		->
	CFG_OUT_0 | SLOW_SLEW,						//  43 : GPIO[0]		-> gpio_soc2bb_wake_modem
	CFG_IN | PULL_UP,						//  44 : GPIO[1]		-> gpio_codec_irq_l
	CFG_IN | PULL_UP,						//  45 : GPIO[2]		-> gpio_btn_vol_up_l
	CFG_IN | PULL_UP,						//  46 : GPIO[3]		-> gpio_btn_vol_down_l
	CFG_OUT_0 | SLOW_SLEW,						//  47 : GPIO[4]		-> gpio_soc2grape_1v8_en

/* Port  6 */
	CFG_DISABLED,							//  48 : GPIO[5]		-> GPIO_SOC2CODEC_RST_L
	CFG_OUT_0 | SLOW_SLEW,						//  49 : GPIO[6]		-> gpio_soc2aj_hs4_shunt_en
	CFG_OUT_0 | SLOW_SLEW,						//  50 : GPIO[7]		-> gpio_soc2aj_hs3_shunt_en
	CFG_DISABLED,							//  51 : GPIO[14]		-> bb_ipc_gpio
	CFG_DISABLED,							//  52 : GPIO[16]		-> gpio_board_id3
	CFG_IN | PULL_DOWN,						//  53 : GPIO[17]		-> gpio_bb2soc_reset_det_l
	CFG_DISABLED,							//  54 : GPIO[18]		-> gpio_boot_config0
	CFG_OUT_0 | SLOW_SLEW,						//  55 : GPIO[20]		-> gpio_soc2pmu_keepact

/* Port  7 */
	CFG_OUT_0 | SLOW_SLEW,						//  56 : GPIO[21]		-> gpio_grape_rst_l
	CFG_FUNC0 | SLOW_SLEW,						//  57 : UART5_RTXD		-> uart5_batt_rtxd
	CFG_DISABLED,							//  58 : UART8_TXD		->
	CFG_IN,								//  59 : UART8_RXD		-> pmu_gpio_oscar2pmu_host_wake
	CFG_DISABLED,							//  60 : SPI0_SCLK		-> gpio_board_id0
	CFG_DISABLED,							//  61 : SPI0_MOSI		-> gpio_board_id1
	CFG_DISABLED,							//  62 : SPI0_MISO		-> gpio_board_id2
	CFG_OUT_0 | SLOW_SLEW,						//  63 : SPI0_SSIN		-> gpio_soc2wlan_pcie_dev_wake

/* Port  8 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  64 : I2C2_SDA		-> i2c2_sda_1v8
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  65 : I2C2_SCL		-> i2c2_scl_1v8
	CFG_DISABLED,							//  66 : GPIO[22]		-> gpio_bb2soc_gps_sync
	CFG_IN | SLOW_SLEW,						//  67 : GPIO[23]		-> gpio_soc2bb_radio_on_l
	CFG_DISABLED,							//  68 : GPIO[25]		-> gpio_boot_config1
	CFG_DISABLED,							//  69 : GPIO[28]		-> gpio_boot_config2
	CFG_DISABLED,							//  70 : GPIO[29]		->
	CFG_DISABLED,							//  71 : GPIO[34]		->

/* Port  9 */
	CFG_OUT_0 | SLOW_SLEW,						//  72 : GPIO[35]		-> gpio_soc2bt_wake
	CFG_IN,								//  73 : GPIO[36]		-> gpio_ts2soc2pmu_int
	CFG_DISABLED,							//  74 : GPIO[37]		->
	CFG_DISABLED,							//  75 : GPIO[39]/PCIE_PERST0_N	->
	CFG_DISABLED,							//  76 : GPIO[42]		->
	CFG_IN | DRIVE_X2 | SLOW_SLEW,					//  77 : GPIO[43]/PCIE_PERST1_N	-> pcie1_soc2wlan_rst_l
	CFG_OUT_0 | PULL_DOWN,						//  78 : DISP_VSYNC		-> display_sync
	CFG_FUNC0 | SLOW_SLEW,						//  79 : UART0_TXD		-> uart0_soc_txd

/* Port 10 */
	CFG_FUNC0,							//  80 : UART0_RXD		-> uart0_soc_rxd
	CFG_OUT_0 | SLOW_SLEW,						//  81 : TMR32_PWM0		-> oscar_time_sync_host_int
	CFG_DISABLED,							//  82 : TMR32_PWM1		->
	CFG_DISABLED,							//  83 : TMR32_PWM2		->
	CFG_FUNC0 | SLOW_SLEW,						//  84 : UART6_TXD		-> uart6_ts_acc_txd
	CFG_FUNC0,							//  85 : UART6_RXD		-> uart6_ts_acc_rxd
	CFG_FUNC0 | SLOW_SLEW,						//  86 : I2C3_SDA		-> i2c3_sda_1v8
	CFG_FUNC0 | SLOW_SLEW,						//  87 : I2C3_SCL		-> i2c3_scl_1v8

/* Port 11 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 12 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  96 : I2C0_SDA		-> i2c0_sda_1v8
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  97 : I2C0_SCL		-> i2c0_scl_1v8
	CFG_DISABLED,							//  98 : GPIO[38]		->
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				//  99 : UART2_TXD		-> uart2_soc2wlan_tx
	CFG_FUNC0,							// 100 : UART2_RXD		-> uart2_wlan2soc_tx
	CFG_OUT_1 | DRIVE_X2 | SLOW_SLEW,				// 101 : UART2_RTSN		-> uart2_soc2wlan_rts_l
	CFG_FUNC0,							// 102 : UART2_CTSN		-> uart2_wlan2soc_rts_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 103 : DWI_DO			-> dwi_ap_do

/* Port 13 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 104 : DWI_CLK		-> dwi_ap_clk
	CFG_FUNC0 | SLOW_SLEW,						// 105 : WDOG			-> wdog_soc
	CFG_IN | PULL_UP,						// 106 : GPIO[13]		-> gpio_grape_irq_l
	CFG_IN | PULL_UP,						// 107 : GPIO[19]		-> gpio_pmu2soc_irq_l
	CFG_IN,								// 108 : GPIO[26]		-> gpio_force_dfu
	CFG_DISABLED,							// 109 : GPIO[27]		-> tp_gpio_dfu_status
	CFG_FUNC0 | SLOW_SLEW,						// 110 : SOCHOT0		-> sochot0_l
	CFG_FUNC0 | SLOW_SLEW,						// 111 : SOCHOT1		-> sochot1_l

/* Port 14 */
	CFG_DISABLED,							// 112 : UNSPECIFIED		-> UNSPECIFIED
	CFG_DISABLED,							// 113 : UNSPECIFIED		-> UNSPECIFIED
	CFG_DISABLED,							// 114 : GPIO[8]		-> gpio_board_rev0
	CFG_DISABLED,							// 115 : GPIO[9]		-> gpio_board_rev1
	CFG_DISABLED,							// 116 : GPIO[10]		-> gpio_board_rev2
	CFG_IN | PULL_UP,						// 117 : GPIO[15]		-> gpio_als1_irq_l
	CFG_IN | PULL_UP | DRIVE_X2 | SLOW_SLEW,			// 118 : UART4_TXD		-> uart4_soc2oslo_tx
	CFG_FUNC0,							// 119 : UART4_RXD		-> uart4_oslo2soc_tx

/* Port 15 */
	CFG_IN | PULL_UP | DRIVE_X2 | SLOW_SLEW,			// 120 : UART4_RTSN		-> uart4_soc2oslo_rts_l
	CFG_FUNC0,							// 121 : UART4_CTSN		-> uart4_oslo2soc_rts_l
	CFG_FUNC0 | SLOW_SLEW,						// 122 : SPI3_MOSI		-> spi_mesa_mosi
	CFG_FUNC0,							// 123 : SPI3_MISO		-> spi_mesa_miso
	CFG_FUNC0 | SLOW_SLEW | INPUT_SCHMITT,				// 124 : SPI3_SCLK		-> spi_mesa_sclk_r
	CFG_IN | PULL_DOWN,						// 125 : SPI3_SSIN		-> gpio_mesa2soc_int
	CFG_DISABLED,							// 126 : GPIO[24]		-> bb_jtag_tms
	CFG_IN | PULL_DOWN,						// 127 : GPIO[30]		-> hsic1_bb2soc_device_rdy

/* Port 16 */
	CFG_IN | SLOW_SLEW,						// 128 : GPIO[31]		-> gpio_soc2bb_rst_l
	CFG_OUT_0 | SLOW_SLEW,						// 129 : GPIO[32]		-> hsic1_soc2bb_host_rdy
	CFG_OUT_0 | SLOW_SLEW,						// 130 : GPIO[33]		-> gpio_soc2bb_coredump
	CFG_IN | PULL_UP,						// 131 : GPIO[40]		-> gpio_als2_irq_l
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 132 : GPIO[41]		-> gpio_soc2oslo_fw_dwl_req
	CFG_DISABLED,							// 133 : I2S4_MCK		-> bb_jtag_tck
	CFG_DISABLED,							// 134 : I2S4_LRCK		->
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 135 : I2S4_BCLK		-> gpio_soc2oslo_en

/* Port 17 */
	CFG_DISABLED,							// 136 : I2S4_DOUT		->
	CFG_DISABLED,							// 137 : I2S4_DIN		->
	CFG_DISABLED,							// 138 : I2C1_SDA		->
	CFG_DISABLED,							// 139 : I2C1_SCL		->
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 18 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 19 */
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,

/* Port 20 */
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 160 : I2S0_LRCK		-> i2s0_codec_asp_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 161 : I2S0_BCLK		-> i2s0_codec_asp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 162 : I2S0_DOUT		-> i2s0_codec_asp_dout
	CFG_FUNC0,							// 163 : I2S0_DIN		-> i2s0_codec_asp_din
	CFG_FUNC0 | DRIVE_X4 | SLOW_SLEW,				// 164 : I2S1_MCK		-> i2s1_spkamp_mck_r
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 165 : I2S1_LRCK		-> i2s1_spkamp_lrck
	CFG_FUNC0 | PULL_DOWN | DRIVE_X2 | SLOW_SLEW,			// 166 : I2S1_BCLK		-> i2s1_spkamp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 167 : I2S1_DOUT		-> i2s1_spkamp_dout

/* Port 21 */
	CFG_FUNC0,							// 168 : I2S1_DIN		-> i2s1_spkamp_din
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 169 : I2S2_LRCK		-> i2s2_codec_xsp_lrck
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 170 : I2S2_BCLK		-> i2s2_codec_xsp_bclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 171 : I2S2_DOUT		-> i2s2_codec_xsp_dout
	CFG_FUNC0,							// 172 : I2S2_DIN		-> i2s2_codec_xsp_din
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 173 : UART1_TXD		-> uart1_soc2bt_tx
	CFG_FUNC0,							// 174 : UART1_RXD		-> uart1_bt2soc_tx
	CFG_OUT_1 | DRIVE_X2 | SLOW_SLEW,				// 175 : UART1_RTSN		-> uart1_soc2bt_rts_l

/* Port 22 */
	CFG_FUNC0,							// 176 : UART1_CTSN		-> uart1_bt2soc_rts_l
	CFG_FUNC0,							// 177 : EDP_HPD		-> edp_hpd
	CFG_IN | DRIVE_X2 | SLOW_SLEW,					// 178 : UART3_TXD		-> uart3_soc2bb_tx
	CFG_FUNC0,							// 179 : UART3_RXD		-> uart3_bb2soc_tx
	CFG_IN | DRIVE_X2 | SLOW_SLEW,					// 180 : UART3_RTSN		-> uart3_soc2bb_rts_l
	CFG_FUNC0,							// 181 : UART3_CTSN		-> uart3_bb2soc_rts_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 182 : SPI2_SCLK		-> spi2_codec_sclk
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 183 : SPI2_MOSI		-> spi2_codec_mosi

/* Port 23 */
	CFG_FUNC0,							// 184 : SPI2_MISO		-> spi2_codec_miso
	CFG_OUT_1 | SLOW_SLEW,						// 185 : SPI2_SSIN		-> spi2_codec_cs_l
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 186 : ISP0_SDA		-> isp0_cam_rear_sda
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 187 : ISP0_SCL		-> isp0_cam_rear_scl
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 188 : ISP1_SDA		-> isp1_cam_front_sda
	CFG_FUNC0 | DRIVE_X2 | SLOW_SLEW,				// 189 : ISP1_SCL		-> isp1_cam_front_scl
	CFG_OUT_0 | SLOW_SLEW,						// 190 : SENSOR0_RST		-> isp0_cam_rear_shutdown_l
	CFG_OUT_0 | DRIVE_X4 | SLOW_SLEW,				// 191 : SENSOR0_CLK		-> isp0_cam_rear_clk_r

/* Port 24 */
	CFG_DISABLED,							// 192 : SENSOR0_XSHUTDOWN	->
	CFG_DISABLED,							// 193 : SENSOR0_ISTRB		->
	CFG_IN | PULL_DOWN | SLOW_SLEW,					// 194 : ISP_UART0_TXD		-> soc2oscar_isp_uart_txd
	CFG_FUNC0,							// 195 : ISP_UART0_RXD		-> oscar2soc_isp_uart_rxd
	CFG_OUT_0 | SLOW_SLEW,						// 196 : SENSOR1_RST		-> isp1_cam_front_shutdown_l
	CFG_OUT_0 | DRIVE_X4 | SLOW_SLEW,				// 197 : SENSOR1_CLK		-> isp1_cam_front_clk_r
	CFG_DISABLED,							// 198 : SENSOR1_XSHUTDOWN	->
	CFG_DISABLED,							// 199 : SENSOR1_ISTRB		->

/* Port 25 */
	CFG_IN | PULL_DOWN | DRIVE_X2 | SLOW_SLEW,			// 200 : UART7_TXD		-> uart7_soc2oscar_txd
	CFG_FUNC0,							// 201 : UART7_RXD		-> uart7_oscar2soc_rxd
	CFG_FUNC0 | DRIVE_X4 | SLOW_SLEW,				// 202 : I2S0_MCK		-> i2s0_codec_asp_mck_r
	CFG_DISABLED,							// 203 : I2S2_MCK		->
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
	CFG_DISABLED,
};

struct pinconfig_map {
	uint32_t board_id;
	uint32_t board_id_mask;
	const uint32_t *pinconfigs[GPIOC_COUNT];
};

static const struct pinconfig_map cfg_map[] = {
	{ TARGET_BOARD_ID_J96AP,  ~0, { pinconfig_j96ap_0  } },
	{ TARGET_BOARD_ID_J96DEV, ~0, { pinconfig_j96dev_0 } },
	{ TARGET_BOARD_ID_J97AP,  ~0, { pinconfig_j97ap_0  } },
	{ TARGET_BOARD_ID_J97DEV, ~0, { pinconfig_j97dev_0 } },
};

const uint32_t * target_get_default_gpio_cfg(int gpioc)
{
	static const struct pinconfig_map *selected_map = NULL;

	if (selected_map == NULL) {
		uint32_t board_id = platform_get_board_id();
		for (unsigned i = 0; i < sizeof(cfg_map)/sizeof(cfg_map[0]); i++) {
			if ((board_id & cfg_map[i].board_id_mask) == cfg_map[i].board_id) {
				selected_map = &cfg_map[i];
				break;
			}
		}

		if (selected_map == NULL)
			panic("no default pinconfig for board id %u", board_id);
	}

	ASSERT(gpioc < GPIOC_COUNT);
	return selected_map->pinconfigs[gpioc];
}
