The SH7786 has different physical memory layout configurations, configurable through the MMSELR register. The configuration is typically defined by the bootloader, so Linux generally doesn't care. Except that depending on the configuration, some PCI MEM areas may or may not be available. This commit adds a helper function that allows to retrieve the current physical memory layout configuration. It will be used in a following patch to exclude unusable PCI MEM areas during the PCI initialization. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Rich Felker <dalias@libc.org>
142 lines
3.7 KiB
C
142 lines
3.7 KiB
C
/*
|
|
* SH7786 Pinmux
|
|
*
|
|
* Copyright (C) 2008, 2009 Renesas Solutions Corp.
|
|
* Kuninori Morimoto <morimoto.kuninori@renesas.com>
|
|
*
|
|
* Based on sh7785.h
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*/
|
|
|
|
#ifndef __CPU_SH7786_H__
|
|
#define __CPU_SH7786_H__
|
|
|
|
#include <linux/io.h>
|
|
|
|
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_PE7, GPIO_PE6,
|
|
|
|
/* PF */
|
|
GPIO_PF7, GPIO_PF6, GPIO_PF5, GPIO_PF4,
|
|
GPIO_PF3, GPIO_PF2, GPIO_PF1, GPIO_PF0,
|
|
|
|
/* PG */
|
|
GPIO_PG7, GPIO_PG6, GPIO_PG5,
|
|
|
|
/* 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,
|
|
|
|
/* DU */
|
|
GPIO_FN_DCLKIN, GPIO_FN_DCLKOUT, GPIO_FN_ODDF,
|
|
GPIO_FN_VSYNC, GPIO_FN_HSYNC, GPIO_FN_CDE, GPIO_FN_DISP,
|
|
GPIO_FN_DR0, GPIO_FN_DG0, GPIO_FN_DB0,
|
|
GPIO_FN_DR1, GPIO_FN_DG1, GPIO_FN_DB1,
|
|
GPIO_FN_DR2, GPIO_FN_DG2, GPIO_FN_DB2,
|
|
GPIO_FN_DR3, GPIO_FN_DG3, GPIO_FN_DB3,
|
|
GPIO_FN_DR4, GPIO_FN_DG4, GPIO_FN_DB4,
|
|
GPIO_FN_DR5, GPIO_FN_DG5, GPIO_FN_DB5,
|
|
|
|
/* Eth */
|
|
GPIO_FN_ETH_MAGIC, GPIO_FN_ETH_LINK, GPIO_FN_ETH_TX_ER,
|
|
GPIO_FN_ETH_TX_EN, GPIO_FN_ETH_MDIO, GPIO_FN_ETH_RX_CLK,
|
|
GPIO_FN_ETH_MDC, GPIO_FN_ETH_COL, GPIO_FN_ETH_TX_CLK,
|
|
GPIO_FN_ETH_CRS, GPIO_FN_ETH_RX_DV, GPIO_FN_ETH_RX_ER,
|
|
GPIO_FN_ETH_TXD3, GPIO_FN_ETH_TXD2, GPIO_FN_ETH_TXD1, GPIO_FN_ETH_TXD0,
|
|
GPIO_FN_ETH_RXD3, GPIO_FN_ETH_RXD2, GPIO_FN_ETH_RXD1, GPIO_FN_ETH_RXD0,
|
|
|
|
/* HSPI */
|
|
GPIO_FN_HSPI_CLK, GPIO_FN_HSPI_CS, GPIO_FN_HSPI_RX, GPIO_FN_HSPI_TX,
|
|
|
|
/* SCIF0 */
|
|
GPIO_FN_SCIF0_CTS, GPIO_FN_SCIF0_RTS, GPIO_FN_SCIF0_SCK,
|
|
GPIO_FN_SCIF0_RXD, GPIO_FN_SCIF0_TXD,
|
|
|
|
/* SCIF1 */
|
|
GPIO_FN_SCIF1_SCK, GPIO_FN_SCIF1_RXD, GPIO_FN_SCIF1_TXD,
|
|
|
|
/* SCIF3 */
|
|
GPIO_FN_SCIF3_SCK, GPIO_FN_SCIF3_RXD, GPIO_FN_SCIF3_TXD,
|
|
|
|
/* SCIF4 */
|
|
GPIO_FN_SCIF4_SCK, GPIO_FN_SCIF4_RXD, GPIO_FN_SCIF4_TXD,
|
|
|
|
/* SCIF5 */
|
|
GPIO_FN_SCIF5_SCK, GPIO_FN_SCIF5_RXD, GPIO_FN_SCIF5_TXD,
|
|
|
|
/* LBSC */
|
|
GPIO_FN_BREQ, GPIO_FN_IOIS16, GPIO_FN_CE2B, GPIO_FN_CE2A, GPIO_FN_BACK,
|
|
|
|
/* FLCTL */
|
|
GPIO_FN_FALE, GPIO_FN_FRB, GPIO_FN_FSTATUS,
|
|
GPIO_FN_FSE, GPIO_FN_FCLE,
|
|
|
|
/* DMAC */
|
|
GPIO_FN_DACK0, GPIO_FN_DREQ0, GPIO_FN_DRAK0,
|
|
GPIO_FN_DACK1, GPIO_FN_DREQ1, GPIO_FN_DRAK1,
|
|
GPIO_FN_DACK2, GPIO_FN_DREQ2, GPIO_FN_DRAK2,
|
|
GPIO_FN_DACK3, GPIO_FN_DREQ3, GPIO_FN_DRAK3,
|
|
|
|
/* USB */
|
|
GPIO_FN_USB_OVC0, GPIO_FN_USB_PENC0,
|
|
GPIO_FN_USB_OVC1, GPIO_FN_USB_PENC1,
|
|
|
|
/* HAC */
|
|
GPIO_FN_HAC_RES,
|
|
GPIO_FN_HAC0_SDOUT, GPIO_FN_HAC0_SDIN,
|
|
GPIO_FN_HAC0_SYNC, GPIO_FN_HAC0_BITCLK,
|
|
GPIO_FN_HAC1_SDOUT, GPIO_FN_HAC1_SDIN,
|
|
GPIO_FN_HAC1_SYNC, GPIO_FN_HAC1_BITCLK,
|
|
|
|
/* SSI */
|
|
GPIO_FN_SSI0_SDATA, GPIO_FN_SSI0_SCK, GPIO_FN_SSI0_WS, GPIO_FN_SSI0_CLK,
|
|
GPIO_FN_SSI1_SDATA, GPIO_FN_SSI1_SCK, GPIO_FN_SSI1_WS, GPIO_FN_SSI1_CLK,
|
|
GPIO_FN_SSI2_SDATA, GPIO_FN_SSI2_SCK, GPIO_FN_SSI2_WS,
|
|
GPIO_FN_SSI3_SDATA, GPIO_FN_SSI3_SCK, GPIO_FN_SSI3_WS,
|
|
|
|
/* SDIF1 */
|
|
GPIO_FN_SDIF1CMD, GPIO_FN_SDIF1CD, GPIO_FN_SDIF1WP, GPIO_FN_SDIF1CLK,
|
|
GPIO_FN_SDIF1D3, GPIO_FN_SDIF1D2, GPIO_FN_SDIF1D1, GPIO_FN_SDIF1D0,
|
|
|
|
/* SDIF0 */
|
|
GPIO_FN_SDIF0CMD, GPIO_FN_SDIF0CD, GPIO_FN_SDIF0WP, GPIO_FN_SDIF0CLK,
|
|
GPIO_FN_SDIF0D3, GPIO_FN_SDIF0D2, GPIO_FN_SDIF0D1, GPIO_FN_SDIF0D0,
|
|
|
|
/* TMU */
|
|
GPIO_FN_TCLK,
|
|
|
|
/* INTC */
|
|
GPIO_FN_IRL7, GPIO_FN_IRL6, GPIO_FN_IRL5, GPIO_FN_IRL4,
|
|
};
|
|
|
|
static inline u32 sh7786_mm_sel(void)
|
|
{
|
|
return __raw_readl(0xFC400020) & 0x7;
|
|
}
|
|
|
|
#endif /* __CPU_SH7786_H__ */
|