/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7785_H__
#define __ASM_SH7785_H__

/* Boot Mode Pins:
 *
 * MODE0: CPG - Initial Pck/Bck Frequency [FRQMR1]
 * MODE1: CPG - Initial Uck/SHck/DDRck Frequency [FRQMR1]
 * MODE2: CPG - Reserved (L: Normal operation)
 * MODE3: CPG - Reserved (L: Normal operation)
 * MODE4: CPG - Initial PLL setting (72x/36x)
 * MODE5: LBSC - Area0 Memory Type / Bus Width [CS0BCR.8]
 * MODE6: LBSC - Area0 Memory Type / Bus Width [CS0BCR.9]
 * MODE7: LBSC - Area0 Memory Type / Bus Width [CS0BCR.3]
 * MODE8: LBSC - Endian Mode (L: Big, H: Little) [BCR.31]
 * MODE9: LBSC - Master/Slave Mode (L: Slave) [BCR.30]
 * MODE10: CPG - Clock Input (L: Ext Clk, H: Crystal)
 * MODE11: PCI - Pin Mode (LL: PCI host, LH: PCI slave)
 * MODE12: PCI - Pin Mode (HL: Local bus, HH: DU)
 * MODE13: Boot Address Mode (L: 29-bit, H: 32-bit)
 * MODE14: Reserved (H: Normal operation)
 *
 * More information in sh7785 manual Rev.1.00, page 1628.
 */

/* Pin Function Controller:
 * GPIO_FN_xx - GPIO used to select pin function
 * GPIO_Pxx - GPIO mapped to real I/O pin on CPU
 */
enum {
	/* PA */
	GPIO_PA7, GPIO_PA6, GPIO_PA5, GPIO_PA4,
	GPIO_PA3, GPIO_PA2, GPIO_PA1, GPIO_PA0,

	/* PB */
	GPIO_PB7, GPIO_PB6, GPIO_PB5, GPIO_PB4,
	GPIO_PB3, GPIO_PB2, GPIO_PB1, GPIO_PB0,

	/* PC */
	GPIO_PC7, GPIO_PC6, GPIO_PC5, GPIO_PC4,
	GPIO_PC3, GPIO_PC2, GPIO_PC1, GPIO_PC0,

	/* PD */
	GPIO_PD7, GPIO_PD6, GPIO_PD5, GPIO_PD4,
	GPIO_PD3, GPIO_PD2, GPIO_PD1, GPIO_PD0,

	/* PE */
	GPIO_PE5, GPIO_PE4, GPIO_PE3, GPIO_PE2,
	GPIO_PE1, GPIO_PE0,

	/* PF */
	GPIO_PF7, GPIO_PF6, GPIO_PF5, GPIO_PF4,
	GPIO_PF3, GPIO_PF2, GPIO_PF1, GPIO_PF0,

	/* PG */
	GPIO_PG7, GPIO_PG6, GPIO_PG5, GPIO_PG4,
	GPIO_PG3, GPIO_PG2, GPIO_PG1, GPIO_PG0,

	/* PH */
	GPIO_PH7, GPIO_PH6, GPIO_PH5, GPIO_PH4,
	GPIO_PH3, GPIO_PH2, GPIO_PH1, GPIO_PH0,

	/* PJ */
	GPIO_PJ7, GPIO_PJ6, GPIO_PJ5, GPIO_PJ4,
	GPIO_PJ3, GPIO_PJ2, GPIO_PJ1, GPIO_PJ0,

	/* PK */
	GPIO_PK7, GPIO_PK6, GPIO_PK5, GPIO_PK4,
	GPIO_PK3, GPIO_PK2, GPIO_PK1, GPIO_PK0,

	/* PL */
	GPIO_PL7, GPIO_PL6, GPIO_PL5, GPIO_PL4,
	GPIO_PL3, GPIO_PL2, GPIO_PL1, GPIO_PL0,

	/* PM */
	GPIO_PM1, GPIO_PM0,

	/* PN */
	GPIO_PN7, GPIO_PN6, GPIO_PN5, GPIO_PN4,
	GPIO_PN3, GPIO_PN2, GPIO_PN1, GPIO_PN0,

	/* PP */
	GPIO_PP5, GPIO_PP4,
	GPIO_PP3, GPIO_PP2, GPIO_PP1, GPIO_PP0,

	/* PQ */
	GPIO_PQ4,
	GPIO_PQ3, GPIO_PQ2, GPIO_PQ1, GPIO_PQ0,

	/* PR */
	GPIO_PR3, GPIO_PR2, GPIO_PR1, GPIO_PR0,

	GPIO_FN_D63_AD31,
	GPIO_FN_D62_AD30,
	GPIO_FN_D61_AD29,
	GPIO_FN_D60_AD28,
	GPIO_FN_D59_AD27,
	GPIO_FN_D58_AD26,
	GPIO_FN_D57_AD25,
	GPIO_FN_D56_AD24,
	GPIO_FN_D55_AD23,
	GPIO_FN_D54_AD22,
	GPIO_FN_D53_AD21,
	GPIO_FN_D52_AD20,
	GPIO_FN_D51_AD19,
	GPIO_FN_D50_AD18,
	GPIO_FN_D49_AD17_DB5,
	GPIO_FN_D48_AD16_DB4,
	GPIO_FN_D47_AD15_DB3,
	GPIO_FN_D46_AD14_DB2,
	GPIO_FN_D45_AD13_DB1,
	GPIO_FN_D44_AD12_DB0,
	GPIO_FN_D43_AD11_DG5,
	GPIO_FN_D42_AD10_DG4,
	GPIO_FN_D41_AD9_DG3,
	GPIO_FN_D40_AD8_DG2,
	GPIO_FN_D39_AD7_DG1,
	GPIO_FN_D38_AD6_DG0,
	GPIO_FN_D37_AD5_DR5,
	GPIO_FN_D36_AD4_DR4,
	GPIO_FN_D35_AD3_DR3,
	GPIO_FN_D34_AD2_DR2,
	GPIO_FN_D33_AD1_DR1,
	GPIO_FN_D32_AD0_DR0,
	GPIO_FN_REQ1,
	GPIO_FN_REQ2,
	GPIO_FN_REQ3,
	GPIO_FN_GNT1,
	GPIO_FN_GNT2,
	GPIO_FN_GNT3,
	GPIO_FN_MMCCLK,
	GPIO_FN_D31,
	GPIO_FN_D30,
	GPIO_FN_D29,
	GPIO_FN_D28,
	GPIO_FN_D27,
	GPIO_FN_D26,
	GPIO_FN_D25,
	GPIO_FN_D24,
	GPIO_FN_D23,
	GPIO_FN_D22,
	GPIO_FN_D21,
	GPIO_FN_D20,
	GPIO_FN_D19,
	GPIO_FN_D18,
	GPIO_FN_D17,
	GPIO_FN_D16,
	GPIO_FN_SCIF1_SCK,
	GPIO_FN_SCIF1_RXD,
	GPIO_FN_SCIF1_TXD,
	GPIO_FN_SCIF0_CTS,
	GPIO_FN_INTD,
	GPIO_FN_FCE,
	GPIO_FN_SCIF0_RTS,
	GPIO_FN_HSPI_CS,
	GPIO_FN_FSE,
	GPIO_FN_SCIF0_SCK,
	GPIO_FN_HSPI_CLK,
	GPIO_FN_FRE,
	GPIO_FN_SCIF0_RXD,
	GPIO_FN_HSPI_RX,
	GPIO_FN_FRB,
	GPIO_FN_SCIF0_TXD,
	GPIO_FN_HSPI_TX,
	GPIO_FN_FWE,
	GPIO_FN_SCIF5_TXD,
	GPIO_FN_HAC1_SYNC,
	GPIO_FN_SSI1_WS,
	GPIO_FN_SIOF_TXD_PJ,
	GPIO_FN_HAC0_SDOUT,
	GPIO_FN_SSI0_SDATA,
	GPIO_FN_SIOF_RXD_PJ,
	GPIO_FN_HAC0_SDIN,
	GPIO_FN_SSI0_SCK,
	GPIO_FN_SIOF_SYNC_PJ,
	GPIO_FN_HAC0_SYNC,
	GPIO_FN_SSI0_WS,
	GPIO_FN_SIOF_MCLK_PJ,
	GPIO_FN_HAC_RES,
	GPIO_FN_SIOF_SCK_PJ,
	GPIO_FN_HAC0_BITCLK,
	GPIO_FN_SSI0_CLK,
	GPIO_FN_HAC1_BITCLK,
	GPIO_FN_SSI1_CLK,
	GPIO_FN_TCLK,
	GPIO_FN_IOIS16,
	GPIO_FN_STATUS0,
	GPIO_FN_DRAK0_PK3,
	GPIO_FN_STATUS1,
	GPIO_FN_DRAK1_PK2,
	GPIO_FN_DACK2,
	GPIO_FN_SCIF2_TXD,
	GPIO_FN_MMCCMD,
	GPIO_FN_SIOF_TXD_PK,
	GPIO_FN_DACK3,
	GPIO_FN_SCIF2_SCK,
	GPIO_FN_MMCDAT,
	GPIO_FN_SIOF_SCK_PK,
	GPIO_FN_DREQ0,
	GPIO_FN_DREQ1,
	GPIO_FN_DRAK0_PK1,
	GPIO_FN_DRAK1_PK0,
	GPIO_FN_DREQ2,
	GPIO_FN_INTB,
	GPIO_FN_DREQ3,
	GPIO_FN_INTC,
	GPIO_FN_DRAK2,
	GPIO_FN_CE2A,
	GPIO_FN_IRL4,
	GPIO_FN_FD4,
	GPIO_FN_IRL5,
	GPIO_FN_FD5,
	GPIO_FN_IRL6,
	GPIO_FN_FD6,
	GPIO_FN_IRL7,
	GPIO_FN_FD7,
	GPIO_FN_DRAK3,
	GPIO_FN_CE2B,
	GPIO_FN_BREQ_BSACK,
	GPIO_FN_BACK_BSREQ,
	GPIO_FN_SCIF5_RXD,
	GPIO_FN_HAC1_SDIN,
	GPIO_FN_SSI1_SCK,
	GPIO_FN_SCIF5_SCK,
	GPIO_FN_HAC1_SDOUT,
	GPIO_FN_SSI1_SDATA,
	GPIO_FN_SCIF3_TXD,
	GPIO_FN_FCLE,
	GPIO_FN_SCIF3_RXD,
	GPIO_FN_FALE,
	GPIO_FN_SCIF3_SCK,
	GPIO_FN_FD0,
	GPIO_FN_SCIF4_TXD,
	GPIO_FN_FD1,
	GPIO_FN_SCIF4_RXD,
	GPIO_FN_FD2,
	GPIO_FN_SCIF4_SCK,
	GPIO_FN_FD3,
	GPIO_FN_DEVSEL_DCLKOUT,
	GPIO_FN_STOP_CDE,
	GPIO_FN_LOCK_ODDF,
	GPIO_FN_TRDY_DISPL,
	GPIO_FN_IRDY_HSYNC,
	GPIO_FN_PCIFRAME_VSYNC,
	GPIO_FN_INTA,
	GPIO_FN_GNT0_GNTIN,
	GPIO_FN_REQ0_REQOUT,
	GPIO_FN_PERR,
	GPIO_FN_SERR,
	GPIO_FN_WE7_CBE3,
	GPIO_FN_WE6_CBE2,
	GPIO_FN_WE5_CBE1,
	GPIO_FN_WE4_CBE0,
	GPIO_FN_SCIF2_RXD,
	GPIO_FN_SIOF_RXD,
	GPIO_FN_MRESETOUT,
	GPIO_FN_IRQOUT,
};

#endif /* __ASM_SH7785_H__ */