Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c98f6c21 authored by Magnus Damm's avatar Magnus Damm Committed by Simon Horman
Browse files

sh-pfc: Add r8a73a4 pinmux support



Add initial PFC support for the r8a73a4 SoC.

At this point only GPIO interface is supported, move to newer interfaces
planned as incremental changes.

Original authors are Morimoto-san with help from Yoshii-san, thanks to
them for the heavy lifting. Adjusted by Magnus to work together with
updated code in drivers/pinctrl.

Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarTakashi Yoshii <takashi.yoshii.zj@renesas.com>
Signed-off-by: default avatarMagnus Damm <damm@opensource.se>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
parent ba774cc7
Loading
Loading
Loading
Loading
+918 −0
Original line number Diff line number Diff line
#ifndef __ASM_R8A73A4_H__
#define __ASM_R8A73A4_H__

/*
 * Pin Function Controller:
 *	GPIO_FN_xx - GPIO used to select pin function
 *	GPIO_PORTxx - GPIO mapped to real I/O pin on CPU
 */
enum {

	/* PORT */
	GPIO_PORT0, GPIO_PORT1, GPIO_PORT2, GPIO_PORT3, GPIO_PORT4,
	GPIO_PORT5, GPIO_PORT6, GPIO_PORT7, GPIO_PORT8, GPIO_PORT9,

	GPIO_PORT10, GPIO_PORT11, GPIO_PORT12, GPIO_PORT13, GPIO_PORT14,
	GPIO_PORT15, GPIO_PORT16, GPIO_PORT17, GPIO_PORT18, GPIO_PORT19,

	GPIO_PORT20, GPIO_PORT21, GPIO_PORT22, GPIO_PORT23, GPIO_PORT24,
	GPIO_PORT25, GPIO_PORT26, GPIO_PORT27, GPIO_PORT28, GPIO_PORT29,

	GPIO_PORT30, GPIO_PORT32, GPIO_PORT33, GPIO_PORT34,
	GPIO_PORT35, GPIO_PORT36, GPIO_PORT37, GPIO_PORT38, GPIO_PORT39,

	GPIO_PORT40, GPIO_PORT64,
	GPIO_PORT65, GPIO_PORT66, GPIO_PORT67, GPIO_PORT68, GPIO_PORT69,

	GPIO_PORT70, GPIO_PORT71, GPIO_PORT72, GPIO_PORT73, GPIO_PORT74,
	GPIO_PORT75, GPIO_PORT76, GPIO_PORT77, GPIO_PORT78, GPIO_PORT79,

	GPIO_PORT80, GPIO_PORT81, GPIO_PORT82, GPIO_PORT83, GPIO_PORT84,
	GPIO_PORT85, GPIO_PORT96, GPIO_PORT97, GPIO_PORT98, GPIO_PORT99,

	GPIO_PORT100, GPIO_PORT101, GPIO_PORT102, GPIO_PORT103, GPIO_PORT104,
	GPIO_PORT105, GPIO_PORT106, GPIO_PORT107, GPIO_PORT108, GPIO_PORT109,

	GPIO_PORT110, GPIO_PORT111, GPIO_PORT112, GPIO_PORT113, GPIO_PORT114,
	GPIO_PORT115, GPIO_PORT116, GPIO_PORT117, GPIO_PORT118, GPIO_PORT119,

	GPIO_PORT120, GPIO_PORT121, GPIO_PORT122, GPIO_PORT123, GPIO_PORT124,
	GPIO_PORT125, GPIO_PORT126, GPIO_PORT128, GPIO_PORT129,

	GPIO_PORT130, GPIO_PORT131, GPIO_PORT132, GPIO_PORT133, GPIO_PORT134,

	GPIO_PORT160, GPIO_PORT161, GPIO_PORT162, GPIO_PORT163, GPIO_PORT164,
	GPIO_PORT165, GPIO_PORT166, GPIO_PORT167, GPIO_PORT168, GPIO_PORT169,

	GPIO_PORT170, GPIO_PORT171, GPIO_PORT172, GPIO_PORT173, GPIO_PORT174,
	GPIO_PORT175, GPIO_PORT176, GPIO_PORT177, GPIO_PORT178,

	GPIO_PORT192, GPIO_PORT193, GPIO_PORT194,
	GPIO_PORT195, GPIO_PORT196, GPIO_PORT197, GPIO_PORT198, GPIO_PORT199,

	GPIO_PORT200, GPIO_PORT201, GPIO_PORT202, GPIO_PORT203, GPIO_PORT204,
	GPIO_PORT205, GPIO_PORT206, GPIO_PORT207, GPIO_PORT208, GPIO_PORT209,

	GPIO_PORT210, GPIO_PORT211, GPIO_PORT212, GPIO_PORT213, GPIO_PORT214,
	GPIO_PORT215, GPIO_PORT216, GPIO_PORT217, GPIO_PORT218, GPIO_PORT219,

	GPIO_PORT220, GPIO_PORT221, GPIO_PORT222, GPIO_PORT224,
	GPIO_PORT225, GPIO_PORT226, GPIO_PORT227, GPIO_PORT228, GPIO_PORT229,

	GPIO_PORT230, GPIO_PORT231, GPIO_PORT232, GPIO_PORT233, GPIO_PORT234,
	GPIO_PORT235, GPIO_PORT236, GPIO_PORT237, GPIO_PORT238, GPIO_PORT239,

	GPIO_PORT240, GPIO_PORT241, GPIO_PORT242, GPIO_PORT243, GPIO_PORT244,
	GPIO_PORT245, GPIO_PORT246, GPIO_PORT247, GPIO_PORT248, GPIO_PORT249,

	GPIO_PORT250, GPIO_PORT256, GPIO_PORT257, GPIO_PORT258, GPIO_PORT259,

	GPIO_PORT260, GPIO_PORT261, GPIO_PORT262, GPIO_PORT263, GPIO_PORT264,
	GPIO_PORT265, GPIO_PORT266, GPIO_PORT267, GPIO_PORT268, GPIO_PORT269,

	GPIO_PORT270, GPIO_PORT271, GPIO_PORT272, GPIO_PORT273, GPIO_PORT274,
	GPIO_PORT275, GPIO_PORT276, GPIO_PORT277, GPIO_PORT278, GPIO_PORT279,

	GPIO_PORT280, GPIO_PORT281, GPIO_PORT282, GPIO_PORT283,
	GPIO_PORT288, GPIO_PORT289,

	GPIO_PORT290, GPIO_PORT291, GPIO_PORT292, GPIO_PORT293, GPIO_PORT294,
	GPIO_PORT295, GPIO_PORT296, GPIO_PORT297, GPIO_PORT298, GPIO_PORT299,

	GPIO_PORT300, GPIO_PORT301, GPIO_PORT302, GPIO_PORT303, GPIO_PORT304,
	GPIO_PORT305, GPIO_PORT306, GPIO_PORT307, GPIO_PORT308,

	GPIO_PORT320, GPIO_PORT321, GPIO_PORT322, GPIO_PORT323, GPIO_PORT324,
	GPIO_PORT325, GPIO_PORT326, GPIO_PORT327, GPIO_PORT328, GPIO_PORT329,

	/* Port0 */
	GPIO_FN_LCDD0,
	GPIO_FN_PDM2_CLK_0,
	GPIO_FN_DU0_DR0,
	GPIO_FN_IRQ0,

	/* Port1 */
	GPIO_FN_LCDD1,
	GPIO_FN_PDM2_DATA_1,
	GPIO_FN_DU0_DR19,
	GPIO_FN_IRQ1,

	/* Port2 */
	GPIO_FN_LCDD2,
	GPIO_FN_PDM3_CLK_2,
	GPIO_FN_DU0_DR2,
	GPIO_FN_IRQ2,

	/* Port3 */
	GPIO_FN_LCDD3,
	GPIO_FN_PDM3_DATA_3,
	GPIO_FN_DU0_DR3,
	GPIO_FN_IRQ3,

	/* Port4 */
	GPIO_FN_LCDD4,
	GPIO_FN_PDM4_CLK_4,
	GPIO_FN_DU0_DR4,
	GPIO_FN_IRQ4,

	/* Port5 */
	GPIO_FN_LCDD5,
	GPIO_FN_PDM4_DATA_5,
	GPIO_FN_DU0_DR5,
	GPIO_FN_IRQ5,

	/* Port6 */
	GPIO_FN_LCDD6,
	GPIO_FN_PDM0_OUTCLK_6,
	GPIO_FN_DU0_DR6,
	GPIO_FN_IRQ6,

	/* Port7 */
	GPIO_FN_LCDD7,
	GPIO_FN_PDM0_OUTDATA_7,
	GPIO_FN_DU0_DR7,
	GPIO_FN_IRQ7,

	/* Port8 */
	GPIO_FN_LCDD8,
	GPIO_FN_PDM1_OUTCLK_8,
	GPIO_FN_DU0_DG0,
	GPIO_FN_IRQ8,

	/* Port9 */
	GPIO_FN_LCDD9,
	GPIO_FN_PDM1_OUTDATA_9,
	GPIO_FN_DU0_DG1,
	GPIO_FN_IRQ9,

	/* Port10 */
	GPIO_FN_LCDD10,
	GPIO_FN_FSICCK,
	GPIO_FN_DU0_DG2,
	GPIO_FN_IRQ10,

	/* Port11 */
	GPIO_FN_LCDD11,
	GPIO_FN_FSICISLD,
	GPIO_FN_DU0_DG3,
	GPIO_FN_IRQ11,

	/* Port12 */
	GPIO_FN_LCDD12,
	GPIO_FN_FSICOMC,
	GPIO_FN_DU0_DG4,
	GPIO_FN_IRQ12,

	/* Port13 */
	GPIO_FN_LCDD13,
	GPIO_FN_FSICOLR,
	GPIO_FN_FSICILR,
	GPIO_FN_DU0_DG5,
	GPIO_FN_IRQ13,

	/* Port14 */
	GPIO_FN_LCDD14,
	GPIO_FN_FSICOBT,
	GPIO_FN_FSICIBT,
	GPIO_FN_DU0_DG6,
	GPIO_FN_IRQ14,

	/* Port15 */
	GPIO_FN_LCDD15,
	GPIO_FN_FSICOSLD,
	GPIO_FN_DU0_DG7,
	GPIO_FN_IRQ15,

	/* Port16 */
	GPIO_FN_LCDD16,
	GPIO_FN_TPU1TO1,
	GPIO_FN_DU0_DB0,

	/* Port17 */
	GPIO_FN_LCDD17,
	GPIO_FN_SF_IRQ_00,
	GPIO_FN_DU0_DB1,

	/* Port18 */
	GPIO_FN_LCDD18,
	GPIO_FN_SF_IRQ_01,
	GPIO_FN_DU0_DB2,

	/* Port19 */
	GPIO_FN_LCDD19,
	GPIO_FN_SCIFB3_RTS_19,
	GPIO_FN_DU0_DB3,

	/* Port20 */
	GPIO_FN_LCDD20,
	GPIO_FN_SCIFB3_CTS_20,
	GPIO_FN_DU0_DB4,

	/* Port21 */
	GPIO_FN_LCDD21,
	GPIO_FN_SCIFB3_TXD_21,
	GPIO_FN_DU0_DB5,

	/* Port22 */
	GPIO_FN_LCDD22,
	GPIO_FN_SCIFB3_RXD_22,
	GPIO_FN_DU0_DB6,

	/* Port23 */
	GPIO_FN_LCDD23,
	GPIO_FN_SCIFB3_SCK_23,
	GPIO_FN_DU0_DB7,

	/* Port24 */
	GPIO_FN_LCDHSYN,
	GPIO_FN_LCDCS,
	GPIO_FN_SCIFB1_RTS_24,
	GPIO_FN_DU0_EXHSYNC_N_CSYNC_N_HSYNC_N,

	/* Port25 */
	GPIO_FN_LCDVSYN,
	GPIO_FN_SCIFB1_CTS_25,
	GPIO_FN_DU0_EXVSYNC_N_VSYNC_N_CSYNC_N,

	/* Port26 */
	GPIO_FN_LCDDCK,
	GPIO_FN_LCDWR,
	GPIO_FN_SCIFB1_TXD_26,
	GPIO_FN_DU0_DOTCLKIN,

	/* Port27 */
	GPIO_FN_LCDDISP,
	GPIO_FN_LCDRS,
	GPIO_FN_SCIFB1_RXD_27,
	GPIO_FN_DU0_DOTCLKOUT,

	/* Port28 */
	GPIO_FN_LCDRD_N,
	GPIO_FN_SCIFB1_SCK_28,
	GPIO_FN_DU0_DOTCLKOUTB,

	/* Port29 */
	GPIO_FN_LCDLCLK,
	GPIO_FN_SF_IRQ_02,
	GPIO_FN_DU0_DISP_CSYNC_N_DE,

	/* Port30 */
	GPIO_FN_LCDDON,
	GPIO_FN_SF_IRQ_03,
	GPIO_FN_DU0_ODDF_N_CLAMP,

	/* Port32 */
	GPIO_FN_SCIFA0_RTS,
	GPIO_FN_SIM0_DET,
	GPIO_FN_CSCIF0_RTS,

	/* Port33 */
	GPIO_FN_SCIFA0_CTS,
	GPIO_FN_SIM1_DET,
	GPIO_FN_CSCIF0_CTS,

	/* Port34 */
	GPIO_FN_SCIFA0_SCK,
	GPIO_FN_SIM0_PWRON,
	GPIO_FN_CSCIF0_SCK,

	/* Port35 */
	GPIO_FN_SCIFA1_RTS,
	GPIO_FN_CSCIF1_RTS,

	/* Port36 */
	GPIO_FN_SCIFA1_CTS,
	GPIO_FN_CSCIF1_CTS,

	/* Port37 */
	GPIO_FN_SCIFA1_SCK,
	GPIO_FN_CSCIF1_SCK,

	/* Port38 */
	GPIO_FN_SCIFB0_RTS,
	GPIO_FN_TPU0TO1,
	GPIO_FN_SCIFB3_RTS_38,
	GPIO_FN_CHSCIF0_HRTS,

	/* Port39 */
	GPIO_FN_SCIFB0_CTS,
	GPIO_FN_TPU0TO2,
	GPIO_FN_SCIFB3_CTS_39,
	GPIO_FN_CHSCIF0_HCTS,

	/* Port40 */
	GPIO_FN_SCIFB0_SCK,
	GPIO_FN_TPU0TO3,
	GPIO_FN_SCIFB3_SCK_40,
	GPIO_FN_CHSCIF0_HSCK,

	/* Port64 */
	GPIO_FN_PDM0_DATA,

	/* Port65 */
	GPIO_FN_PDM1_DATA,

	/* Port66 */
	GPIO_FN_HSI_RX_WAKE,
	GPIO_FN_SCIFB2_CTS_66,
	GPIO_FN_MSIOF3_SYNC,
	GPIO_FN_GenIO4,
	GPIO_FN_IRQ40,

	/* Port67 */
	GPIO_FN_HSI_RX_READY,
	GPIO_FN_SCIFB1_TXD_67,
	GPIO_FN_GIO_OUT3_67,
	GPIO_FN_CHSCIF1_HTX,

	/* Port68 */
	GPIO_FN_HSI_RX_FLAG,
	GPIO_FN_SCIFB2_TXD_68,
	GPIO_FN_MSIOF3_TXD,
	GPIO_FN_GIO_OUT4_68,

	/* Port69 */
	GPIO_FN_HSI_RX_DATA,
	GPIO_FN_SCIFB2_RXD_69,
	GPIO_FN_MSIOF3_RXD,
	GPIO_FN_GIO_OUT5_69,

	/* Port70 */
	GPIO_FN_HSI_TX_FLAG,
	GPIO_FN_SCIFB1_RTS_70,
	GPIO_FN_GIO_OUT1_70,
	GPIO_FN_HSIC_TSTCLK0,
	GPIO_FN_CHSCIF1_HRTS,

	/* Port71 */
	GPIO_FN_HSI_TX_DATA,
	GPIO_FN_SCIFB1_CTS_71,
	GPIO_FN_GIO_OUT2_71,
	GPIO_FN_HSIC_TSTCLK1,
	GPIO_FN_CHSCIF1_HCTS,

	/* Port72 */
	GPIO_FN_HSI_TX_WAKE,
	GPIO_FN_SCIFB1_RXD_72,
	GPIO_FN_GenIO8,
	GPIO_FN_CHSCIF1_HRX,

	/* Port73 */
	GPIO_FN_HSI_TX_READY,
	GPIO_FN_SCIFB2_RTS_73,
	GPIO_FN_MSIOF3_SCK,
	GPIO_FN_GIO_OUT0_73,

	/* Port74 - Port85 */
	GPIO_FN_IRDA_OUT,
	GPIO_FN_IRDA_IN,
	GPIO_FN_IRDA_FIRSEL,
	GPIO_FN_TPU0TO0,
	GPIO_FN_DIGRFEN,
	GPIO_FN_GPS_TIMESTAMP,
	GPIO_FN_TXP,
	GPIO_FN_TXP2,
	GPIO_FN_COEX_0,
	GPIO_FN_COEX_1,
	GPIO_FN_IRQ19,
	GPIO_FN_IRQ18,

	/* Port96 - Port101 */
	GPIO_FN_KEYIN0,
	GPIO_FN_KEYIN1,
	GPIO_FN_KEYIN2,
	GPIO_FN_KEYIN3,
	GPIO_FN_KEYIN4,
	GPIO_FN_KEYIN5,

	/* Port102 */
	GPIO_FN_KEYIN6,
	GPIO_FN_IRQ41,

	/* Port103 */
	GPIO_FN_KEYIN7,
	GPIO_FN_IRQ42,

	/* Port104 - Port108 */
	GPIO_FN_KEYOUT0,
	GPIO_FN_KEYOUT1,
	GPIO_FN_KEYOUT2,
	GPIO_FN_KEYOUT3,
	GPIO_FN_KEYOUT4,

	/* Port109 */
	GPIO_FN_KEYOUT5,
	GPIO_FN_IRQ43,

	/* Port110 */
	GPIO_FN_KEYOUT6,
	GPIO_FN_IRQ44,

	/* Port111 */
	GPIO_FN_KEYOUT7,
	GPIO_FN_RFANAEN,
	GPIO_FN_IRQ45,

	/* Port112 */
	GPIO_FN_KEYIN8,
	GPIO_FN_KEYOUT8,
	GPIO_FN_SF_IRQ_04,
	GPIO_FN_IRQ46,

	/* Port113 */
	GPIO_FN_KEYIN9,
	GPIO_FN_KEYOUT9,
	GPIO_FN_SF_IRQ_05,
	GPIO_FN_IRQ47,

	/* Port114 */
	GPIO_FN_KEYIN10,
	GPIO_FN_KEYOUT10,
	GPIO_FN_SF_IRQ_06,
	GPIO_FN_IRQ48,

	/* Port115 */
	GPIO_FN_KEYIN11,
	GPIO_FN_KEYOUT11,
	GPIO_FN_SF_IRQ_07,
	GPIO_FN_IRQ49,

	/* Port116 */
	GPIO_FN_SCIFA0_TXD,
	GPIO_FN_CSCIF0_TX,

	/* Port117 */
	GPIO_FN_SCIFA0_RXD,
	GPIO_FN_CSCIF0_RX,

	/* Port118 */
	GPIO_FN_SCIFA1_TXD,
	GPIO_FN_CSCIF1_TX,

	/* Port119 */
	GPIO_FN_SCIFA1_RXD,
	GPIO_FN_CSCIF1_RX,

	/* Port120 */
	GPIO_FN_SF_PORT_1_120,
	GPIO_FN_SCIFB3_RXD_120,
	GPIO_FN_DU0_CDE,

	/* Port121 */
	GPIO_FN_SF_PORT_0_121,
	GPIO_FN_SCIFB3_TXD_121,

	/* Port122 */
	GPIO_FN_SCIFB0_TXD,
	GPIO_FN_CHSCIF0_HTX,

	/* Port123 */
	GPIO_FN_SCIFB0_RXD,
	GPIO_FN_CHSCIF0_HRX,

	/* Port124 */
	GPIO_FN_ISP_STROBE_124,

	/* Port125 */
	GPIO_FN_STP_ISD_0,
	GPIO_FN_PDM4_CLK_125,
	GPIO_FN_MSIOF2_TXD,
	GPIO_FN_SIM0_VOLTSEL0,

	/* Port126 */
	GPIO_FN_TS_SDEN,
	GPIO_FN_MSIOF7_SYNC,
	GPIO_FN_STP_ISEN_1,

	/* Port128 */
	GPIO_FN_STP_ISEN_0,
	GPIO_FN_PDM1_OUTDATA_128,
	GPIO_FN_MSIOF2_SYNC,
	GPIO_FN_SIM1_VOLTSEL1,

	/* Port129 */
	GPIO_FN_TS_SPSYNC,
	GPIO_FN_MSIOF7_RXD,
	GPIO_FN_STP_ISSYNC_1,

	/* Port130 */
	GPIO_FN_STP_ISSYNC_0,
	GPIO_FN_PDM4_DATA_130,
	GPIO_FN_MSIOF2_RXD,
	GPIO_FN_SIM0_VOLTSEL1,

	/* Port131 */
	GPIO_FN_STP_OPWM_0,
	GPIO_FN_SIM1_PWRON,

	/* Port132 */
	GPIO_FN_TS_SCK,
	GPIO_FN_MSIOF7_SCK,
	GPIO_FN_STP_ISCLK_1,

	/* Port133 */
	GPIO_FN_STP_ISCLK_0,
	GPIO_FN_PDM1_OUTCLK_133,
	GPIO_FN_MSIOF2_SCK,
	GPIO_FN_SIM1_VOLTSEL0,

	/* Port134 */
	GPIO_FN_TS_SDAT,
	GPIO_FN_MSIOF7_TXD,
	GPIO_FN_STP_ISD_1,

	/* Port160 - Port178 */
	GPIO_FN_IRQ20,
	GPIO_FN_IRQ21,
	GPIO_FN_IRQ22,
	GPIO_FN_IRQ23,
	GPIO_FN_MMCD0_0,
	GPIO_FN_MMCD0_1,
	GPIO_FN_MMCD0_2,
	GPIO_FN_MMCD0_3,
	GPIO_FN_MMCD0_4,
	GPIO_FN_MMCD0_5,
	GPIO_FN_MMCD0_6,
	GPIO_FN_MMCD0_7,
	GPIO_FN_MMCCMD0,
	GPIO_FN_MMCCLK0,
	GPIO_FN_MMCRST,
	GPIO_FN_IRQ24,
	GPIO_FN_IRQ25,
	GPIO_FN_IRQ26,
	GPIO_FN_IRQ27,

	/* Port192 - Port200 FN1 */
	GPIO_FN_A10,
	GPIO_FN_A9,
	GPIO_FN_A8,
	GPIO_FN_A7,
	GPIO_FN_A6,
	GPIO_FN_A5,
	GPIO_FN_A4,
	GPIO_FN_A3,
	GPIO_FN_A2,

	/* Port192 - Port200 FN2 */
	GPIO_FN_MMCD1_7,
	GPIO_FN_MMCD1_6,
	GPIO_FN_MMCD1_5,
	GPIO_FN_MMCD1_4,
	GPIO_FN_MMCD1_3,
	GPIO_FN_MMCD1_2,
	GPIO_FN_MMCD1_1,
	GPIO_FN_MMCD1_0,
	GPIO_FN_MMCCMD1,

	/* Port192 - Port200 IRQ */
	GPIO_FN_IRQ31,
	GPIO_FN_IRQ32,
	GPIO_FN_IRQ33,
	GPIO_FN_IRQ34,
	GPIO_FN_IRQ35,
	GPIO_FN_IRQ36,
	GPIO_FN_IRQ37,
	GPIO_FN_IRQ38,
	GPIO_FN_IRQ39,

	/* Port201 */
	GPIO_FN_A1,

	/* Port202 */
	GPIO_FN_A0,
	GPIO_FN_BS,

	/* Port203 */
	GPIO_FN_CKO,
	GPIO_FN_MMCCLK1,

	/* Port204 */
	GPIO_FN_CS0_N,
	GPIO_FN_SIM0_GPO1,

	/* Port205 */
	GPIO_FN_CS2_N,
	GPIO_FN_SIM0_GPO2,

	/* Port206 */
	GPIO_FN_CS4_N,
	GPIO_FN_VIO_VD,
	GPIO_FN_SIM1_GPO0,

	/* Port207 - Port212 FN1 */
	GPIO_FN_D15,
	GPIO_FN_D14,
	GPIO_FN_D13,
	GPIO_FN_D12,
	GPIO_FN_D11,
	GPIO_FN_D10,

	/* Port207 - Port212 FN5 */
	GPIO_FN_GIO_OUT15,
	GPIO_FN_GIO_OUT14,
	GPIO_FN_GIO_OUT13,
	GPIO_FN_GIO_OUT12,
	GPIO_FN_WGM_TXP2,
	GPIO_FN_WGM_GPS_TIMEM_ASK_RFCLK,

	/* Port213 - Port222 FN1 */
	GPIO_FN_D9,
	GPIO_FN_D8,
	GPIO_FN_D7,
	GPIO_FN_D6,
	GPIO_FN_D5,
	GPIO_FN_D4,
	GPIO_FN_D3,
	GPIO_FN_D2,
	GPIO_FN_D1,
	GPIO_FN_D0,

	/* Port213 - Port222 FN2 */
	GPIO_FN_VIO_D9,
	GPIO_FN_VIO_D8,
	GPIO_FN_VIO_D7,
	GPIO_FN_VIO_D6,
	GPIO_FN_VIO_D5,
	GPIO_FN_VIO_D4,
	GPIO_FN_VIO_D3,
	GPIO_FN_VIO_D2,
	GPIO_FN_VIO_D1,
	GPIO_FN_VIO_D0,

	/* Port213 - Port222 FN5 */
	GPIO_FN_GIO_OUT9,
	GPIO_FN_GIO_OUT8,
	GPIO_FN_GIO_OUT7,
	GPIO_FN_GIO_OUT6,
	GPIO_FN_GIO_OUT5_217,
	GPIO_FN_GIO_OUT4_218,
	GPIO_FN_GIO_OUT3_219,
	GPIO_FN_GIO_OUT2_220,
	GPIO_FN_GIO_OUT1_221,
	GPIO_FN_GIO_OUT0_222,

	/* Port224 */
	GPIO_FN_RDWR_224,
	GPIO_FN_VIO_HD,
	GPIO_FN_SIM1_GPO2,

	/* Port225 */
	GPIO_FN_RD_N,

	/* Port226 */
	GPIO_FN_WAIT_N,
	GPIO_FN_VIO_CLK,
	GPIO_FN_SIM1_GPO1,

	/* Port227 */
	GPIO_FN_WE0_N,
	GPIO_FN_RDWR_227,

	/* Port228 */
	GPIO_FN_WE1_N,
	GPIO_FN_SIM0_GPO0,

	/* Port229 */
	GPIO_FN_PWMO,
	GPIO_FN_VIO_CKO1_229,

	/* Port230 */
	GPIO_FN_SLIM_CLK,
	GPIO_FN_VIO_CKO4_230,

	/* Port231 */
	GPIO_FN_SLIM_DATA,
	GPIO_FN_VIO_CKO5_231,

	/* Port232 */
	GPIO_FN_VIO_CKO2_232,
	GPIO_FN_SF_PORT_0_232,

	/* Port233 */
	GPIO_FN_VIO_CKO3_233,
	GPIO_FN_SF_PORT_1_233,

	/* Port234 */
	GPIO_FN_FSIACK,
	GPIO_FN_PDM3_CLK_234,
	GPIO_FN_ISP_IRIS1_234,

	/* Port235 */
	GPIO_FN_FSIAISLD,
	GPIO_FN_PDM3_DATA_235,

	/* Port236 */
	GPIO_FN_FSIAOMC,
	GPIO_FN_PDM0_OUTCLK_236,
	GPIO_FN_ISP_IRIS0_236,

	/* Port237 */
	GPIO_FN_FSIAOLR,
	GPIO_FN_FSIAILR,

	/* Port238 */
	GPIO_FN_FSIAOBT,
	GPIO_FN_FSIAIBT,

	/* Port239 */
	GPIO_FN_FSIAOSLD,
	GPIO_FN_PDM0_OUTDATA_239,

	/* Port240 */
	GPIO_FN_FSIBISLD,

	/* Port241 */
	GPIO_FN_FSIBOLR,
	GPIO_FN_FSIBILR,

	/* Port242 */
	GPIO_FN_FSIBOMC,
	GPIO_FN_ISP_SHUTTER1_242,

	/* Port243 */
	GPIO_FN_FSIBOBT,
	GPIO_FN_FSIBIBT,

	/* Port244 */
	GPIO_FN_FSIBOSLD,
	GPIO_FN_FSIASPDIF,

	/* Port245 */
	GPIO_FN_FSIBCK,
	GPIO_FN_ISP_SHUTTER0_245,

	/* Port246 - Port250 FN1 */
	GPIO_FN_ISP_IRIS1_246,
	GPIO_FN_ISP_IRIS0_247,
	GPIO_FN_ISP_SHUTTER1_248,
	GPIO_FN_ISP_SHUTTER0_249,
	GPIO_FN_ISP_STROBE_250,

	/* Port256 - Port258 */
	GPIO_FN_MSIOF0_SYNC,
	GPIO_FN_MSIOF0_RXD,
	GPIO_FN_MSIOF0_SCK,

	/* Port259 */
	GPIO_FN_MSIOF0_SS2,
	GPIO_FN_VIO_CKO3_259,

	/* Port260 */
	GPIO_FN_MSIOF0_TXD,

	/* Port261 */
	GPIO_FN_SCIFB1_SCK_261,
	GPIO_FN_CHSCIF1_HSCK,

	/* Port262 */
	GPIO_FN_SCIFB2_SCK_262,

	/* Port263 - Port266 FN1 */
	GPIO_FN_MSIOF1_SS2,
	GPIO_FN_MSIOF1_TXD,
	GPIO_FN_MSIOF1_RXD,
	GPIO_FN_MSIOF1_SS1,

	/* Port263 - Port266 FN4 */
	GPIO_FN_MSIOF5_SS2,
	GPIO_FN_MSIOF5_TXD,
	GPIO_FN_MSIOF5_RXD,
	GPIO_FN_MSIOF5_SS1,

	/* Port267 */
	GPIO_FN_MSIOF0_SS1,

	/* Port268 */
	GPIO_FN_MSIOF1_SCK,
	GPIO_FN_MSIOF5_SCK,

	/* Port269 */
	GPIO_FN_MSIOF1_SYNC,
	GPIO_FN_MSIOF5_SYNC,

	/* Port270 - Port273 FN1 */
	GPIO_FN_MSIOF2_SS1,
	GPIO_FN_MSIOF2_SS2,
	GPIO_FN_MSIOF3_SS2,
	GPIO_FN_MSIOF3_SS1,

	/* Port270 - Port273 FN3 */
	GPIO_FN_VIO_CKO5_270,
	GPIO_FN_VIO_CKO2_271,
	GPIO_FN_VIO_CKO1_272,
	GPIO_FN_VIO_CKO4_273,

	/* Port274 */
	GPIO_FN_MSIOF4_SS2,
	GPIO_FN_TPU1TO0,

	/* Port275 - Port280 */
	GPIO_FN_IC_DP,
	GPIO_FN_SIM0_RST,
	GPIO_FN_IC_DM,
	GPIO_FN_SIM0_BSICOMP,
	GPIO_FN_SIM0_CLK,
	GPIO_FN_SIM0_IO,

	/* Port281 */
	GPIO_FN_SIM1_IO,
	GPIO_FN_PDM2_DATA_281,

	/* Port282 */
	GPIO_FN_SIM1_CLK,
	GPIO_FN_PDM2_CLK_282,

	/* Port283 */
	GPIO_FN_SIM1_RST,

	/* Port289 */
	GPIO_FN_SDHID1_0,
	GPIO_FN_STMDATA0_2,

	/* Port290 */
	GPIO_FN_SDHID1_1,
	GPIO_FN_STMDATA1_2,
	GPIO_FN_IRQ51,

	/* Port291 - Port294 FN1 */
	GPIO_FN_SDHID1_2,
	GPIO_FN_SDHID1_3,
	GPIO_FN_SDHICLK1,
	GPIO_FN_SDHICMD1,

	/* Port291 - Port294 FN3 */
	GPIO_FN_STMDATA2_2,
	GPIO_FN_STMDATA3_2,
	GPIO_FN_STMCLK_2,
	GPIO_FN_STMSIDI_2,

	/* Port295 */
	GPIO_FN_SDHID2_0,
	GPIO_FN_MSIOF4_TXD,
	GPIO_FN_SCIFB2_TXD_295,
	GPIO_FN_MSIOF6_TXD,

	/* Port296 */
	GPIO_FN_SDHID2_1,
	GPIO_FN_MSIOF6_SS2,
	GPIO_FN_IRQ52,

	/* Port297 - Port300 FN1 */
	GPIO_FN_SDHID2_2,
	GPIO_FN_SDHID2_3,
	GPIO_FN_SDHICLK2,
	GPIO_FN_SDHICMD2,

	/* Port297 - Port300 FN2 */
	GPIO_FN_MSIOF4_RXD,
	GPIO_FN_MSIOF4_SYNC,
	GPIO_FN_MSIOF4_SCK,
	GPIO_FN_MSIOF4_SS1,

	/* Port297 - Port300 FN3 */
	GPIO_FN_SCIFB2_RXD_297,
	GPIO_FN_SCIFB2_CTS_298,
	GPIO_FN_SCIFB2_SCK_299,
	GPIO_FN_SCIFB2_RTS_300,

	/* Port297 - Port300 FN4 */
	GPIO_FN_MSIOF6_RXD,
	GPIO_FN_MSIOF6_SYNC,
	GPIO_FN_MSIOF6_SCK,
	GPIO_FN_MSIOF6_SS1,

	/* Port301 */
	GPIO_FN_SDHICD0,
	GPIO_FN_IRQ50,

	/* Port302 - Port306 FN1 */
	GPIO_FN_SDHID0_0,
	GPIO_FN_SDHID0_1,
	GPIO_FN_SDHID0_2,
	GPIO_FN_SDHID0_3,
	GPIO_FN_SDHICMD0,

	/* Port302 - Port306 FN3 */
	GPIO_FN_STMDATA0_1,
	GPIO_FN_STMDATA1_1,
	GPIO_FN_STMDATA2_1,
	GPIO_FN_STMDATA3_1,
	GPIO_FN_STMSIDI_1,

	/* Port307 */
	GPIO_FN_SDHIWP0,

	/* Port308 */
	GPIO_FN_SDHICLK0,
	GPIO_FN_STMCLK_1,

	/* Port320 - Port329 */
	GPIO_FN_IRQ16,
	GPIO_FN_IRQ17,
	GPIO_FN_IRQ28,
	GPIO_FN_IRQ29,
	GPIO_FN_IRQ30,
	GPIO_FN_IRQ53,
	GPIO_FN_IRQ54,
	GPIO_FN_IRQ55,
	GPIO_FN_IRQ56,
	GPIO_FN_IRQ57,
};

void r8a73a4_add_standard_devices(void);
void r8a73a4_clock_init(void);
void r8a73a4_pinmux_init(void);
+5 −0
Original line number Diff line number Diff line
@@ -22,6 +22,11 @@ config GPIO_SH_PFC
	  This enables support for GPIOs within the SoC's pin function
	  controller.

config PINCTRL_PFC_R8A73A4
	def_bool y
	depends on ARCH_R8A73A4
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7740
	def_bool y
	depends on ARCH_R8A7740
+1 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ ifeq ($(CONFIG_GPIO_SH_PFC),y)
sh-pfc-objs			+= gpio.o
endif
obj-$(CONFIG_PINCTRL_SH_PFC)	+= sh-pfc.o
obj-$(CONFIG_PINCTRL_PFC_R8A73A4)	+= pfc-r8a73a4.o
obj-$(CONFIG_PINCTRL_PFC_R8A7740)	+= pfc-r8a7740.o
obj-$(CONFIG_PINCTRL_PFC_R8A7779)	+= pfc-r8a7779.o
obj-$(CONFIG_PINCTRL_PFC_SH7203)	+= pfc-sh7203.o
+3 −0
Original line number Diff line number Diff line
@@ -418,6 +418,9 @@ static int sh_pfc_remove(struct platform_device *pdev)
}

static const struct platform_device_id sh_pfc_id_table[] = {
#ifdef CONFIG_PINCTRL_PFC_R8A73A4
	{ "pfc-r8a73a4", (kernel_ulong_t)&r8a73a4_pinmux_info },
#endif
#ifdef CONFIG_PINCTRL_PFC_R8A7740
	{ "pfc-r8a7740", (kernel_ulong_t)&r8a7740_pinmux_info },
#endif
+1 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ void sh_pfc_write_raw_reg(void __iomem *mapped_reg, unsigned long reg_width,
int sh_pfc_get_pin_index(struct sh_pfc *pfc, unsigned int pin);
int sh_pfc_config_mux(struct sh_pfc *pfc, unsigned mark, int pinmux_type);

extern const struct sh_pfc_soc_info r8a73a4_pinmux_info;
extern const struct sh_pfc_soc_info r8a7740_pinmux_info;
extern const struct sh_pfc_soc_info r8a7779_pinmux_info;
extern const struct sh_pfc_soc_info sh7203_pinmux_info;
Loading