mach-pcm038.c revision bff0b53bd77df7e44a1d6b1a13162e26def5d17a
17e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert/* 27e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * Copyright 2007 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix 37e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de) 47e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * 57e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * This program is free software; you can redistribute it and/or 67e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * modify it under the terms of the GNU General Public License 77e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * as published by the Free Software Foundation; either version 2 87e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * of the License, or (at your option) any later version. 97e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * This program is distributed in the hope that it will be useful, 107e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * but WITHOUT ANY WARRANTY; without even the implied warranty of 117e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 127e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * GNU General Public License for more details. 137e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * 147e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * You should have received a copy of the GNU General Public License 157e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * along with this program; if not, write to the Free Software 167e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 177e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * MA 02110-1301, USA. 187e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert */ 197e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 20a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer#include <linux/i2c.h> 21a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer#include <linux/i2c/at24.h> 22bff0b53bd77df7e44a1d6b1a13162e26def5d17aSascha Hauer#include <linux/io.h> 23bff0b53bd77df7e44a1d6b1a13162e26def5d17aSascha Hauer#include <linux/mtd/plat-ram.h> 24bff0b53bd77df7e44a1d6b1a13162e26def5d17aSascha Hauer#include <linux/mtd/physmap.h> 25bff0b53bd77df7e44a1d6b1a13162e26def5d17aSascha Hauer#include <linux/platform_device.h> 26a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer 277e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert#include <asm/mach-types.h> 28bff0b53bd77df7e44a1d6b1a13162e26def5d17aSascha Hauer#include <asm/mach/arch.h> 29bff0b53bd77df7e44a1d6b1a13162e26def5d17aSascha Hauer#include <asm/mach/time.h> 30bff0b53bd77df7e44a1d6b1a13162e26def5d17aSascha Hauer 31bff0b53bd77df7e44a1d6b1a13162e26def5d17aSascha Hauer#include <mach/board-pcm038.h> 32a09e64fbc0094e3073dbb09c3b4bfe4ab669244bRussell King#include <mach/common.h> 33a09e64fbc0094e3073dbb09c3b4bfe4ab669244bRussell King#include <mach/hardware.h> 34a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer#include <mach/i2c.h> 35bff0b53bd77df7e44a1d6b1a13162e26def5d17aSascha Hauer#include <mach/iomux.h> 36a09e64fbc0094e3073dbb09c3b4bfe4ab669244bRussell King#include <mach/imx-uart.h> 3701f71a371969c753add171991d8f5ecce3b368d4Sascha Hauer#include <mach/mxc_nand.h> 387e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 397e90534a8fde3a528606ada5dedfa244d8e0452dSascha Hauer#include "devices.h" 407e90534a8fde3a528606ada5dedfa244d8e0452dSascha Hauer 41f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauerstatic int pcm038_pins[] = { 42f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer /* UART1 */ 43f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE12_PF_UART1_TXD, 44f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE13_PF_UART1_RXD, 45f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE14_PF_UART1_CTS, 46f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE15_PF_UART1_RTS, 47f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer /* UART2 */ 48f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE3_PF_UART2_CTS, 49f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE4_PF_UART2_RTS, 50f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE6_PF_UART2_TXD, 51f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE7_PF_UART2_RXD, 52f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer /* UART3 */ 53f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE8_PF_UART3_TXD, 54f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE9_PF_UART3_RXD, 55f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE10_PF_UART3_CTS, 56f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PE11_PF_UART3_RTS, 57f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer /* FEC */ 58f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD0_AIN_FEC_TXD0, 59f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD1_AIN_FEC_TXD1, 60f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD2_AIN_FEC_TXD2, 61f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD3_AIN_FEC_TXD3, 62f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD4_AOUT_FEC_RX_ER, 63f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD5_AOUT_FEC_RXD1, 64f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD6_AOUT_FEC_RXD2, 65f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD7_AOUT_FEC_RXD3, 66f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD8_AF_FEC_MDIO, 67f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD9_AIN_FEC_MDC, 68f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD10_AOUT_FEC_CRS, 69f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD11_AOUT_FEC_TX_CLK, 70f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD12_AOUT_FEC_RXD0, 71f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD13_AOUT_FEC_RX_DV, 72f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD14_AOUT_FEC_RX_CLK, 73f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD15_AOUT_FEC_COL, 74f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD16_AIN_FEC_TX_ER, 75f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PF23_AIN_FEC_TX_EN, 76f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer /* I2C2 */ 77f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC5_PF_I2C2_SDA, 78f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC6_PF_I2C2_SCL, 79f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer /* SPI1 */ 80f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD25_PF_CSPI1_RDY, 81f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD27_PF_CSPI1_SS1, 82f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD28_PF_CSPI1_SS0, 83f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD29_PF_CSPI1_SCLK, 84f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD30_PF_CSPI1_MISO, 85f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PD31_PF_CSPI1_MOSI, 86f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer /* SSI1 */ 87f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC20_PF_SSI1_FS, 88f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC21_PF_SSI1_RXD, 89f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC22_PF_SSI1_TXD, 90f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC23_PF_SSI1_CLK, 91f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer /* SSI4 */ 92f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC16_PF_SSI4_FS, 93f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC17_PF_SSI4_RXD, 94f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC18_PF_SSI4_TXD, 95f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer PC19_PF_SSI4_CLK, 96f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer}; 97f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer 987e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert/* 993620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer * Phytec's PCM038 comes with 2MiB battery buffered SRAM, 1003620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer * 16 bit width 1013620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer */ 1023620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer 1033620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauerstatic struct platdata_mtd_ram pcm038_sram_data = { 1043620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .bankwidth = 2, 1053620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer}; 1063620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer 1073620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauerstatic struct resource pcm038_sram_resource = { 1083620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .start = CS1_BASE_ADDR, 1093620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .end = CS1_BASE_ADDR + 512 * 1024 - 1, 1103620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .flags = IORESOURCE_MEM, 1113620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer}; 1123620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer 1133620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauerstatic struct platform_device pcm038_sram_mtd_device = { 1143620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .name = "mtd-ram", 1153620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .id = 0, 1163620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .dev = { 1173620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .platform_data = &pcm038_sram_data, 1183620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer }, 1193620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .num_resources = 1, 1203620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer .resource = &pcm038_sram_resource, 1213620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer}; 1223620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer 1233620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer/* 1247e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * Phytec's phyCORE-i.MX27 comes with 32MiB flash, 1257e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert * 16 bit width 1267e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert */ 1277e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisertstatic struct physmap_flash_data pcm038_flash_data = { 1287e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .width = 2, 1297e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert}; 1307e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 1317e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisertstatic struct resource pcm038_flash_resource = { 1327e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .start = 0xc0000000, 1337e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .end = 0xc1ffffff, 1347e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .flags = IORESOURCE_MEM, 1357e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert}; 1367e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 1377e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisertstatic struct platform_device pcm038_nor_mtd_device = { 1387e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .name = "physmap-flash", 1397e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .id = 0, 1407e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .dev = { 1417e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .platform_data = &pcm038_flash_data, 1427e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert }, 1437e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .num_resources = 1, 1447e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .resource = &pcm038_flash_resource, 1457e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert}; 1467e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 1477e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisertstatic struct imxuart_platform_data uart_pdata[] = { 1487e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert { 1497e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .flags = IMXUART_HAVE_RTSCTS, 1507e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert }, { 1517e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .flags = IMXUART_HAVE_RTSCTS, 1527e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert }, { 1537e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .flags = IMXUART_HAVE_RTSCTS, 1547e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert }, 1557e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert}; 1567e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 15701f71a371969c753add171991d8f5ecce3b368d4Sascha Hauerstatic struct mxc_nand_platform_data pcm038_nand_board_info = { 15801f71a371969c753add171991d8f5ecce3b368d4Sascha Hauer .width = 1, 15901f71a371969c753add171991d8f5ecce3b368d4Sascha Hauer .hw_ecc = 1, 16001f71a371969c753add171991d8f5ecce3b368d4Sascha Hauer}; 16101f71a371969c753add171991d8f5ecce3b368d4Sascha Hauer 1627e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisertstatic struct platform_device *platform_devices[] __initdata = { 1637e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert &pcm038_nor_mtd_device, 164d40a09920be4d64414c3e5396c6399ac96ad0e00Sascha Hauer &mxc_w1_master_device, 165879fea1b486d2b6fa399c40b8aed172b0dfdedb9Sascha Hauer &mxc_fec_device, 1663620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer &pcm038_sram_mtd_device, 1677e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert}; 1687e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 1693620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer/* On pcm038 there's a sram attached to CS1, we enable the chipselect here and 1703620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer * setup other stuffs to access the sram. */ 1713620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauerstatic void __init pcm038_init_sram(void) 1723620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer{ 1733620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer __raw_writel(0x0000d843, CSCR_U(1)); 1743620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer __raw_writel(0x22252521, CSCR_L(1)); 1753620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer __raw_writel(0x22220a00, CSCR_A(1)); 1763620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer} 1773620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer 178a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauerstatic struct imxi2c_platform_data pcm038_i2c_1_data = { 179a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer .bitrate = 100000, 180a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer}; 181a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer 182a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauerstatic struct at24_platform_data board_eeprom = { 183a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer .byte_len = 4096, 184a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer .page_size = 32, 185a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer .flags = AT24_FLAG_ADDR16, 186a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer}; 187a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer 188a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauerstatic struct i2c_board_info pcm038_i2c_devices[] = { 189a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer [0] = { 190a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */ 191a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer .platform_data = &board_eeprom, 192a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer }, 193a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer [1] = { 194a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer I2C_BOARD_INFO("rtc-pcf8563", 0x51), 195a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer .type = "pcf8563" 196a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer }, 197a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer [2] = { 198a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer I2C_BOARD_INFO("lm75", 0x4a), 199a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer .type = "lm75" 200a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer } 201a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer}; 202a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer 2037e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisertstatic void __init pcm038_init(void) 2047e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert{ 205f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer mxc_gpio_setup_multiple_pins(pcm038_pins, ARRAY_SIZE(pcm038_pins), 206f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer "PCM038"); 207f231ea441a6e4b025d971b023ff010094626fdb0Sascha Hauer 2083620c0dccfd35cd39324508d8c962d10f9a44eadSascha Hauer pcm038_init_sram(); 2097e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 2107e90534a8fde3a528606ada5dedfa244d8e0452dSascha Hauer mxc_register_device(&mxc_uart_device0, &uart_pdata[0]); 2117e90534a8fde3a528606ada5dedfa244d8e0452dSascha Hauer mxc_register_device(&mxc_uart_device1, &uart_pdata[1]); 2127e90534a8fde3a528606ada5dedfa244d8e0452dSascha Hauer mxc_register_device(&mxc_uart_device2, &uart_pdata[2]); 21301f71a371969c753add171991d8f5ecce3b368d4Sascha Hauer 214ccfe30a7c8329e85ae426813a1060e27e2547dd1Holger Schurig mxc_gpio_mode(PE16_AF_OWIRE); 21501f71a371969c753add171991d8f5ecce3b368d4Sascha Hauer mxc_register_device(&mxc_nand_device, &pcm038_nand_board_info); 2167e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 217a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer /* only the i2c master 1 is used on this CPU card */ 218a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer i2c_register_board_info(1, pcm038_i2c_devices, 219a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer ARRAY_SIZE(pcm038_i2c_devices)); 220a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer 221a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer mxc_register_device(&mxc_i2c_device1, &pcm038_i2c_1_data); 222a4e9a65a1f90e94eca3af1a69b42d039054ef9deSascha Hauer 2237e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 224ff6552e4f3505da9c2886098773146be71c872e3Juergen Beisert 225ff6552e4f3505da9c2886098773146be71c872e3Juergen Beisert#ifdef CONFIG_MACH_PCM970_BASEBOARD 226ff6552e4f3505da9c2886098773146be71c872e3Juergen Beisert pcm970_baseboard_init(); 227ff6552e4f3505da9c2886098773146be71c872e3Juergen Beisert#endif 2287e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert} 2297e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 2307e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisertstatic void __init pcm038_timer_init(void) 2317e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert{ 23230c730f8f90b08d77a73998d2ee34cf1f56e95ccSascha Hauer mx27_clocks_init(26000000); 2337e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert} 2347e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 235058b7a6f465bebd87c1f295afdd56cc6a33dffbdHolger Schurigstatic struct sys_timer pcm038_timer = { 2367e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .init = pcm038_timer_init, 2377e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert}; 2387e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert 2397e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen BeisertMACHINE_START(PCM038, "phyCORE-i.MX27") 2407e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .phys_io = AIPI_BASE_ADDR, 2417e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .io_pg_offst = ((AIPI_BASE_ADDR_VIRT) >> 18) & 0xfffc, 2427e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .boot_params = PHYS_OFFSET + 0x100, 243cd4a05f9df859e7cd2efa96e035444a3decb427aSascha Hauer .map_io = mx27_map_io, 2447e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .init_irq = mxc_init_irq, 2457e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .init_machine = pcm038_init, 2467e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen Beisert .timer = &pcm038_timer, 2477e5e9f5457f5cd019fd7e2f3da94e9fc72cc9ff6Juergen BeisertMACHINE_END 248