2008-11-14 11:01:38 +01:00
/*
2009-12-09 20:12:07 +01:00
* arch / arm / mach - imx / mach - mx1ads . c
2008-11-14 11:01:38 +01:00
*
* Initially based on :
* linux - 2.6 .7 - imx / arch / arm / mach - imx / scb9328 . c
* Copyright ( c ) 2004 Sascha Hauer < sascha @ saschahauer . de >
*
* 2004 ( c ) MontaVista Software , Inc .
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed " as is " without any
* warranty of any kind , whether express or implied .
*/
2009-04-29 13:14:19 +02:00
# include <linux/i2c.h>
# include <linux/i2c/pcf857x.h>
2008-11-14 11:01:38 +01:00
# include <linux/init.h>
2009-04-29 13:14:19 +02:00
# include <linux/kernel.h>
2008-11-14 11:01:38 +01:00
# include <linux/platform_device.h>
# include <linux/mtd/physmap.h>
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/mach/time.h>
# include <mach/common.h>
2009-04-29 13:14:19 +02:00
# include <mach/hardware.h>
2009-01-28 14:06:20 +01:00
# include <mach/i2c.h>
2009-04-29 13:14:19 +02:00
# include <mach/imx-uart.h>
2010-02-16 11:07:49 +01:00
# include <mach/iomux-mx1.h>
2009-04-29 13:14:19 +02:00
# include <mach/irqs.h>
2008-11-14 11:01:38 +01:00
# include "devices.h"
2009-04-29 13:17:21 +02:00
static int mx1ads_pins [ ] = {
/* UART1 */
2008-11-14 11:01:38 +01:00
PC9_PF_UART1_CTS ,
PC10_PF_UART1_RTS ,
PC11_PF_UART1_TXD ,
PC12_PF_UART1_RXD ,
2009-04-29 13:17:21 +02:00
/* UART2 */
2008-11-14 11:01:38 +01:00
PB28_PF_UART2_CTS ,
PB29_PF_UART2_RTS ,
PB30_PF_UART2_TXD ,
PB31_PF_UART2_RXD ,
2009-04-29 13:17:21 +02:00
/* I2C */
PA15_PF_I2C_SDA ,
PA16_PF_I2C_SCL ,
/* SPI */
PC13_PF_SPI1_SPI_RDY ,
PC14_PF_SPI1_SCLK ,
PC15_PF_SPI1_SS ,
PC16_PF_SPI1_MISO ,
PC17_PF_SPI1_MOSI ,
2008-11-14 11:01:38 +01:00
} ;
2009-04-29 13:17:21 +02:00
/*
* UARTs platform data
*/
2008-11-14 11:01:38 +01:00
static struct imxuart_platform_data uart_pdata [ ] = {
{
. flags = IMXUART_HAVE_RTSCTS ,
} , {
. flags = IMXUART_HAVE_RTSCTS ,
} ,
} ;
/*
* Physmap flash
*/
static struct physmap_flash_data mx1ads_flash_data = {
. width = 4 , /* bankwidth in bytes */
} ;
static struct resource flash_resource = {
2010-03-04 21:02:41 +01:00
. start = MX1_CS0_PHYS ,
. end = MX1_CS0_PHYS + SZ_32M - 1 ,
2008-11-14 11:01:38 +01:00
. flags = IORESOURCE_MEM ,
} ;
static struct platform_device flash_device = {
. name = " physmap-flash " ,
. id = 0 ,
. resource = & flash_resource ,
. num_resources = 1 ,
} ;
2009-01-28 14:06:20 +01:00
/*
* I2C
*/
static struct pcf857x_platform_data pcf857x_data [ ] = {
{
. gpio_base = 4 * 32 ,
} , {
. gpio_base = 4 * 32 + 16 ,
}
} ;
static struct imxi2c_platform_data mx1ads_i2c_data = {
. bitrate = 100000 ,
} ;
static struct i2c_board_info mx1ads_i2c_devices [ ] = {
{
2009-07-20 08:18:47 +02:00
I2C_BOARD_INFO ( " pcf8575 " , 0x22 ) ,
2009-01-28 14:06:20 +01:00
. platform_data = & pcf857x_data [ 0 ] ,
} , {
2009-07-20 08:18:47 +02:00
I2C_BOARD_INFO ( " pcf8575 " , 0x24 ) ,
2009-01-28 14:06:20 +01:00
. platform_data = & pcf857x_data [ 1 ] ,
} ,
} ;
2008-11-14 11:01:38 +01:00
/*
* Board init
*/
static void __init mx1ads_init ( void )
{
2009-04-29 13:17:21 +02:00
mxc_gpio_setup_multiple_pins ( mx1ads_pins ,
ARRAY_SIZE ( mx1ads_pins ) , " mx1ads " ) ;
2008-11-14 11:01:38 +01:00
/* UART */
2010-06-10 18:02:25 +02:00
mxc_register_device ( & imx1_uart_device0 , & uart_pdata [ 0 ] ) ;
mxc_register_device ( & imx1_uart_device1 , & uart_pdata [ 1 ] ) ;
2008-11-14 11:01:38 +01:00
/* Physmap flash */
mxc_register_device ( & flash_device , & mx1ads_flash_data ) ;
2009-01-28 14:06:20 +01:00
/* I2C */
i2c_register_board_info ( 0 , mx1ads_i2c_devices ,
ARRAY_SIZE ( mx1ads_i2c_devices ) ) ;
2010-06-10 17:48:04 +02:00
mxc_register_device ( & imx_i2c_device0 , & mx1ads_i2c_data ) ;
2008-11-14 11:01:38 +01:00
}
static void __init mx1ads_timer_init ( void )
{
2009-02-16 14:36:49 +01:00
mx1_clocks_init ( 32000 ) ;
2008-11-14 11:01:38 +01:00
}
struct sys_timer mx1ads_timer = {
. init = mx1ads_timer_init ,
} ;
MACHINE_START ( MX1ADS , " Freescale MX1ADS " )
/* Maintainer: Sascha Hauer, Pengutronix */
2010-03-04 21:02:41 +01:00
. phys_io = MX1_IO_BASE_ADDR ,
. io_pg_offst = ( MX1_IO_BASE_ADDR_VIRT > > 18 ) & 0xfffc ,
2010-01-29 17:36:05 +01:00
. boot_params = MX1_PHYS_OFFSET + 0x100 ,
2009-04-29 13:41:40 +02:00
. map_io = mx1_map_io ,
2009-05-25 17:36:19 +02:00
. init_irq = mx1_init_irq ,
2008-11-14 11:01:38 +01:00
. timer = & mx1ads_timer ,
. init_machine = mx1ads_init ,
MACHINE_END
MACHINE_START ( MXLADS , " Freescale MXLADS " )
2010-03-04 21:02:41 +01:00
. phys_io = MX1_IO_BASE_ADDR ,
. io_pg_offst = ( MX1_IO_BASE_ADDR_VIRT > > 18 ) & 0xfffc ,
2010-01-29 17:36:05 +01:00
. boot_params = MX1_PHYS_OFFSET + 0x100 ,
2009-04-02 22:32:10 +02:00
. map_io = mx1_map_io ,
2009-05-25 17:36:19 +02:00
. init_irq = mx1_init_irq ,
2008-11-14 11:01:38 +01:00
. timer = & mx1ads_timer ,
. init_machine = mx1ads_init ,
MACHINE_END