Subject: [PATCH] ppc32: Register definition for MPC52xx

From: Grant Likely <[email-masked]>
Date: Sun, 17 Jul 2005 01:06:03 -0600

Here are additional register definitions for the MPC52xx.  CDM clock
enables and port config bit settings in mpc52xx.h.  Registers needed
to support non-UART PSC modes in mpc52xx_psc.h.  Drivers which use
these regs/bits are to follow once I'm happy with them, but I thought
that others may be interested in them now.

Cheers,
g.

Signed-off-by: Grant Likely <[email-masked]>

General Dynamics Canada, Ltd. relinquishes copywrite on this patch to
the public domain

--- k/include/asm-ppc/mpc52xx.h  (mode:100644)
+++ l/include/asm-ppc/mpc52xx.h  (mode:100644)
@@ -146,6 +146,28 @@ enum ppc_sys_devices {
 #define MPC52xx_XLB_ARB_IRQ		(MPC52xx_PERP_IRQ_BASE + 21)
 #define MPC52xx_BDLC_IRQ		(MPC52xx_PERP_IRQ_BASE + 22)
 
+/* CDM Cloke enable bits */
+#define MPC52xx_CDM_CLKENABLE_MEM_CLK		(0x00080000)
+#define MPC52xx_CDM_CLKENABLE_PCI_CLK		(0x00040000)
+#define MPC52xx_CDM_CLKENABLE_LPC_CLK		(0x00020000)
+#define MPC52xx_CDM_CLKENABLE_SIT_CLK		(0x00010000)
+#define MPC52xx_CDM_CLKENABLE_SCOM_CLK		(0x00008000)
+#define MPC52xx_CDM_CLKENABLE_ATA_CLK		(0x00004000)
+#define MPC52xx_CDM_CLKENABLE_ETH_CLK		(0x00002000)
+#define MPC52xx_CDM_CLKENABLE_USB_CLK		(0x00001000)
+#define MPC52xx_CDM_CLKENABLE_SPI_CLK		(0x00000800)
+#define MPC52xx_CDM_CLKENABLE_BDLC_CLK		(0x00000400)
+#define MPC52xx_CDM_CLKENABLE_IRRX_CLK		(0x00000200)
+#define MPC52xx_CDM_CLKENABLE_IRTX_CLK		(0x00000100)
+#define MPC52xx_CDM_CLKENABLE_PSC345_CLK	(0x00000080)
+#define MPC52xx_CDM_CLKENABLE_PSC2_CLK		(0x00000040)
+#define MPC52xx_CDM_CLKENABLE_PSC1_CLK		(0x00000020)
+#define MPC52xx_CDM_CLKENABLE_PSC6_CLK		(0x00000010)
+#define MPC52xx_CDM_CLKENABLE_MSCAN_CLK		(0x00000008)
+#define MPC52xx_CDM_CLKENABLE_I2C_CLK		(0x00000004)
+#define MPC52xx_CDM_CLKENABLE_TIMER_CLK		(0x00000002)
+#define MPC52xx_CDM_CLKENABLE_GPIO_CLK		(0x00000001)
+

 /* ======================================================================== */
@@ -266,6 +288,49 @@ struct mpc52xx_rtc {
 };
 
  /* GPIO */
+#define PORT_CONFIG_CS1			0x80000000
+#define PORT_CONFIG_ALT_MASK		0x30000000
+#define PORT_CONFIG_CS7			0x08000000
+#define PORT_CONFIG_CS6			0x04000000
+#define PORT_CONFIG_ATA			0x03000000
+#define PORT_CONFIG_IR_USB_CLK		0x00800000
+#define PORT_CONFIG_IRDA_MASK		0x00700000 /* PSC6 */
+#define PORT_CONFIG_IRDA_GPIO		0x00000000
+#define PORT_CONFIG_IRDA_UART		0x00500000
+#define PORT_CONFIG_IRDA_CODEC		0x00700000
+#define PORT_CONFIG_ETHER_MASK		0x000F0000
+#define PORT_CONFIG_PCI_DIS		0x00008000
+#define PORT_CONFIG_USB_SE		0x00004000 /* Single ended mode */
+#define PORT_CONFIG_USB_MASK		0x00004000 /* (USB1 or 2 UARTs) */
+#define PORT_CONFIG_USB_USB		0x00001000
+#define PORT_CONFIG_USB_2UART		0x00002000
+#define PORT_CONFIG_PSC3_MASK		0x00000F00
+#define PORT_CONFIG_PSC3_GPIO		0x00000000
+#define PORT_CONFIG_PSC3_USB2		0x00000100
+#define PORT_CONFIG_PSC3_UART		0x00000400
+#define PORT_CONFIG_PSC3_UARTE_CD	0x00000500
+#define PORT_CONFIG_PSC3_CODEC		0x00000600
+#define PORT_CONFIG_PSC3_CODEC_MCLK	0x00000700
+#define PORT_CONFIG_PSC3_SPI		0x00000800
+#define PORT_CONFIG_PSC3_SPI_UART	0x00000C00
+#define PORT_CONFIG_PSC3_SPI_UARTE	0x00000D00
+#define PORT_CONFIG_PSC3_SPI_CODEC	0x00000E00
+#define PORT_CONFIG_PSC2_MASK		0x00000070
+#define PORT_CONFIG_PSC2_GPIO		0x00000000
+#define PORT_CONFIG_PSC2_CAN		0x00000010
+#define PORT_CONFIG_PSC2_AC97		0x00000020
+#define PORT_CONFIG_PSC2_UART		0x00000040
+#define PORT_CONFIG_PSC2_UARTE_CD	0x00000050
+#define PORT_CONFIG_PSC2_CODEC		0x00000060
+#define PORT_CONFIG_PSC2_CODEC_MCLK	0x00000070
+#define PORT_CONFIG_PSC1_MASK		0x00000007
+#define PORT_CONFIG_PSC1_GPIO		0x00000000
+#define PORT_CONFIG_PSC1_AC97		0x00000002
+#define PORT_CONFIG_PSC1_UART		0x00000004
+#define PORT_CONFIG_PSC1_UARTE_CD	0x00000005
+#define PORT_CONFIG_PSC1_CODEC		0x00000006
+#define PORT_CONFIG_PSC1_CODEC_MCLK	0x00000007
+
  struct mpc52xx_gpio {
  	u32	port_config;	/* GPIO + 0x00 */
  	u32	simple_gpioe;	/* GPIO + 0x04 */
--- k/include/asm-ppc/mpc52xx_psc.h  (mode:100644)
+++ l/include/asm-ppc/mpc52xx_psc.h  (mode:100644)
@@ -72,6 +72,51 @@
 #define MPC52xx_PSC_D_CTS		0x10
 #define MPC52xx_PSC_D_DCD		0x20
 
+/* PSC Serial Interface Control Register (SICR) bits */
+/* SICR Field masks */
+#define MPC52xx_PSC_SICR_ACRB		0x80000000
+#define MPC52xx_PSC_SICR_AWR		0x40000000
+#define MPC52xx_PSC_SICR_DTS1		0x20000000
+#define MPC52xx_PSC_SICR_SHDIR		0x10000000
+#define MPC52xx_PSC_SICR_SIM		0x0F000000
+#define MPC52xx_PSC_SICR_GENCLK		0x00800000
+#define MPC52xx_PSC_SICR_MULTIWD	0x00400000
+#define MPC52xx_PSC_SICR_CLKPOL		0x00200000
+#define MPC52xx_PSC_SICR_SYNCPOL	0x00100000
+#define MPC52xx_PSC_SICR_CELLSLAVE	0x00080000
+#define MPC52xx_PSC_SICR_CELL2XCLK	0x00040000
+#define MPC52xx_PSC_SICR_SPI		0x00008000
+#define MPC52xx_PSC_SICR_MSTR		0x00004000
+#define MPC52xx_PSC_SICR_CPOL		0x00002000
+#define MPC52xx_PSC_SICR_CPHA		0x00001000
+#define MPC52xx_PSC_SICR_USEEOF		0x00000800
+/* Operation modes */
+#define MPC52xx_PSC_SICR_SIM_UART		0x00000000
+#define MPC52xx_PSC_SICR_SIM_UART_DCD		0x08000000
+#define MPC52xx_PSC_SICR_SIM_CODEC8		0x01000000
+#define MPC52xx_PSC_SICR_SIM_CODEC16		0x02000000
+#define MPC52xx_PSC_SICR_SIM_AC97		0x03000000
+#define MPC52xx_PSC_SICR_SIM_SIR		0x04000000
+#define MPC52xx_PSC_SICR_SIM_SIR_DCD		0x0C000000
+#define MPC52xx_PSC_SICR_SIM_MIR		0x05000000
+#define MPC52xx_PSC_SICR_SIM_FIR		0x06000000
+#define MPC52xx_PSC_SICR_SIM_CODEC24		0x07000000
+#define MPC52xx_PSC_SICR_SIM_CODEC32		0x0F000000
+
+/* IRCR1 bit masks */
+#define MPC52xx_PSC_IRCR1_FD			0x04
+#define MPC52xx_PSC_IRCR1_SIPEN			0x02
+#define MPC52xx_PSC_IRCR1_SPUL			0x01
+
+/* IRCR2 bit masks */
+#define MPC52xx_PSC_IRCR2_SIPREQ		0x04
+#define MPC52xx_PSC_IRCR2_ABORT			0x02
+#define MPC52xx_PSC_IRCR2_NXTEOF		0x01
+
+/* Codec Clock Register fields */
+#define MPC52xx_PSC_CCR_FRAME_SYNC_DIV		0xFF00
+#define MPC52xx_PSC_CCR_BIT_CLK_DIV		0xFF00
+
  /* PSC mode fields */
 #define MPC52xx_PSC_MODE_5_BITS			0x00
 #define MPC52xx_PSC_MODE_6_BITS			0x01