blob: 09df4b89e8be1ee04711df00fb715037edc473d7 [file] [log] [blame]
Greg Ungerer88a605b2005-11-07 14:09:50 +10001/***************************************************************************/
2
3/*
4 * linux/arch/m68knommu/platform/520x/config.c
5 *
6 * Copyright (C) 2005, Freescale (www.freescale.com)
7 * Copyright (C) 2005, Intec Automation (mike@steroidmicros.com)
Greg Ungerer7dabb9a2008-02-01 17:34:10 +10008 * Copyright (C) 1999-2007, Greg Ungerer (gerg@snapgear.com)
Greg Ungerer88a605b2005-11-07 14:09:50 +10009 * Copyright (C) 2001-2003, SnapGear Inc. (www.snapgear.com)
10 */
11
12/***************************************************************************/
13
Greg Ungerer88a605b2005-11-07 14:09:50 +100014#include <linux/kernel.h>
15#include <linux/param.h>
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100016#include <linux/init.h>
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100017#include <linux/io.h>
Greg Ungerer88a605b2005-11-07 14:09:50 +100018#include <asm/machdep.h>
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100019#include <asm/coldfire.h>
20#include <asm/mcfsim.h>
21#include <asm/mcfuart.h>
Greg Ungerer88a605b2005-11-07 14:09:50 +100022
23/***************************************************************************/
24
Steven King83ca6002012-05-06 12:22:53 -070025#if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI)
Steven King91d60412010-01-22 12:43:03 -080026
27static void __init m520x_qspi_init(void)
28{
29 u16 par;
30 /* setup Port QS for QSPI with gpio CS control */
Greg Ungerer571f0602011-03-05 23:50:37 +100031 writeb(0x3f, MCF_GPIO_PAR_QSPI);
Steven King91d60412010-01-22 12:43:03 -080032 /* make U1CTS and U2RTS gpio for cs_control */
Greg Ungerer571f0602011-03-05 23:50:37 +100033 par = readw(MCF_GPIO_PAR_UART);
Steven King91d60412010-01-22 12:43:03 -080034 par &= 0x00ff;
Greg Ungerer571f0602011-03-05 23:50:37 +100035 writew(par, MCF_GPIO_PAR_UART);
Steven King91d60412010-01-22 12:43:03 -080036}
Steven King91d60412010-01-22 12:43:03 -080037
Steven King83ca6002012-05-06 12:22:53 -070038#endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100039
40/***************************************************************************/
41
Greg Ungererb92225c2011-12-24 00:53:54 +100042static void __init m520x_uarts_init(void)
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100043{
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100044 u16 par;
45 u8 par2;
46
Greg Ungererb92225c2011-12-24 00:53:54 +100047 /* UART0 and UART1 GPIO pin setup */
48 par = readw(MCF_GPIO_PAR_UART);
49 par |= MCF_GPIO_PAR_UART_PAR_UTXD0 | MCF_GPIO_PAR_UART_PAR_URXD0;
50 par |= MCF_GPIO_PAR_UART_PAR_UTXD1 | MCF_GPIO_PAR_UART_PAR_URXD1;
51 writew(par, MCF_GPIO_PAR_UART);
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100052
Greg Ungererb92225c2011-12-24 00:53:54 +100053 /* UART1 GPIO pin setup */
54 par2 = readb(MCF_GPIO_PAR_FECI2C);
55 par2 &= ~0x0F;
56 par2 |= MCF_GPIO_PAR_FECI2C_PAR_SCL_UTXD2 |
57 MCF_GPIO_PAR_FECI2C_PAR_SDA_URXD2;
58 writeb(par2, MCF_GPIO_PAR_FECI2C);
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100059}
60
61/***************************************************************************/
62
Greg Ungererffba3f42009-02-26 22:40:38 -080063static void __init m520x_fec_init(void)
64{
Greg Ungererffba3f42009-02-26 22:40:38 -080065 u8 v;
66
Greg Ungererffba3f42009-02-26 22:40:38 -080067 /* Set multi-function pins to ethernet mode */
Greg Ungerer571f0602011-03-05 23:50:37 +100068 v = readb(MCF_GPIO_PAR_FEC);
69 writeb(v | 0xf0, MCF_GPIO_PAR_FEC);
Greg Ungererffba3f42009-02-26 22:40:38 -080070
Greg Ungerer571f0602011-03-05 23:50:37 +100071 v = readb(MCF_GPIO_PAR_FECI2C);
72 writeb(v | 0x0f, MCF_GPIO_PAR_FECI2C);
Greg Ungererffba3f42009-02-26 22:40:38 -080073}
74
75/***************************************************************************/
76
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100077void __init config_BSP(char *commandp, int size)
Greg Ungerer88a605b2005-11-07 14:09:50 +100078{
Greg Ungerer35aefb22012-01-23 15:34:58 +100079 mach_sched_init = hw_timer_init;
Greg Ungerer7dabb9a2008-02-01 17:34:10 +100080 m520x_uarts_init();
Greg Ungererffba3f42009-02-26 22:40:38 -080081 m520x_fec_init();
Steven King83ca6002012-05-06 12:22:53 -070082#if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI)
Steven King91d60412010-01-22 12:43:03 -080083 m520x_qspi_init();
84#endif
Greg Ungerer88a605b2005-11-07 14:09:50 +100085}
86
87/***************************************************************************/