i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
/*
* Copyright ( C ) 2010 Eric Benard - eric @ eukrea . com
* Copyright ( C ) 2009 Sascha Hauer , Pengutronix
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
# include <linux/types.h>
# include <linux/init.h>
# include <linux/platform_device.h>
# include <linux/mtd/physmap.h>
# include <linux/memory.h>
# include <linux/gpio.h>
# include <linux/interrupt.h>
# include <linux/delay.h>
# include <linux/i2c.h>
# include <linux/i2c/tsc2007.h>
# include <linux/usb/otg.h>
# include <linux/usb/ulpi.h>
2010-10-02 19:15:26 +04:00
# include <linux/i2c-gpio.h>
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/mach/time.h>
# include <asm/mach/map.h>
2012-09-13 17:01:00 +04:00
# include "common.h"
2010-06-30 14:16:24 +04:00
# include "devices-imx35.h"
2012-09-13 05:37:49 +04:00
# include "eukrea-baseboards.h"
2012-09-14 10:14:45 +04:00
# include "hardware.h"
2012-09-13 09:26:00 +04:00
# include "iomux-mx35.h"
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
2010-06-30 14:16:24 +04:00
static const struct imxuart_platform_data uart_pdata __initconst = {
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
. flags = IMXUART_HAVE_RTSCTS ,
} ;
2010-06-30 14:16:24 +04:00
static const struct imxi2c_platform_data
2010-10-02 19:15:26 +04:00
eukrea_cpuimx35_i2c0_data __initconst = {
. bitrate = 100000 ,
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
} ;
2011-12-13 10:31:44 +04:00
# define TSC2007_IRQGPIO IMX_GPIO_NR(3, 2)
static int tsc2007_get_pendown_state ( void )
{
return ! gpio_get_value ( TSC2007_IRQGPIO ) ;
}
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
static struct tsc2007_platform_data tsc2007_info = {
. model = 2007 ,
. x_plate_ohms = 180 ,
2011-12-13 10:31:44 +04:00
. get_pendown_state = tsc2007_get_pendown_state ,
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
} ;
static struct i2c_board_info eukrea_cpuimx35_i2c_devices [ ] = {
{
I2C_BOARD_INFO ( " pcf8563 " , 0x51 ) ,
} , {
I2C_BOARD_INFO ( " tsc2007 " , 0x48 ) ,
. platform_data = & tsc2007_info ,
2011-12-02 11:31:11 +04:00
/* irq number is run-time assigned */
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
} ,
} ;
2010-10-26 16:28:31 +04:00
static iomux_v3_cfg_t eukrea_cpuimx35_pads [ ] = {
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
/* UART1 */
MX35_PAD_CTS1__UART1_CTS ,
MX35_PAD_RTS1__UART1_RTS ,
MX35_PAD_TXD1__UART1_TXD_MUX ,
MX35_PAD_RXD1__UART1_RXD_MUX ,
/* FEC */
MX35_PAD_FEC_TX_CLK__FEC_TX_CLK ,
MX35_PAD_FEC_RX_CLK__FEC_RX_CLK ,
MX35_PAD_FEC_RX_DV__FEC_RX_DV ,
MX35_PAD_FEC_COL__FEC_COL ,
MX35_PAD_FEC_RDATA0__FEC_RDATA_0 ,
MX35_PAD_FEC_TDATA0__FEC_TDATA_0 ,
MX35_PAD_FEC_TX_EN__FEC_TX_EN ,
MX35_PAD_FEC_MDC__FEC_MDC ,
MX35_PAD_FEC_MDIO__FEC_MDIO ,
MX35_PAD_FEC_TX_ERR__FEC_TX_ERR ,
MX35_PAD_FEC_RX_ERR__FEC_RX_ERR ,
MX35_PAD_FEC_CRS__FEC_CRS ,
MX35_PAD_FEC_RDATA1__FEC_RDATA_1 ,
MX35_PAD_FEC_TDATA1__FEC_TDATA_1 ,
MX35_PAD_FEC_RDATA2__FEC_RDATA_2 ,
MX35_PAD_FEC_TDATA2__FEC_TDATA_2 ,
MX35_PAD_FEC_RDATA3__FEC_RDATA_3 ,
MX35_PAD_FEC_TDATA3__FEC_TDATA_3 ,
/* I2C1 */
MX35_PAD_I2C1_CLK__I2C1_SCL ,
MX35_PAD_I2C1_DAT__I2C1_SDA ,
/* TSC2007 IRQ */
MX35_PAD_ATA_DA2__GPIO3_2 ,
} ;
2010-06-30 14:16:24 +04:00
static const struct mxc_nand_platform_data
2010-10-02 19:15:26 +04:00
eukrea_cpuimx35_nand_board_info __initconst = {
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
. width = 1 ,
. hw_ecc = 1 ,
. flash_bbt = 1 ,
} ;
2011-01-03 13:30:28 +03:00
static int eukrea_cpuimx35_otg_init ( struct platform_device * pdev )
{
return mx35_initialize_usb_hw ( pdev - > id , MXC_EHCI_INTERFACE_DIFF_UNI ) ;
}
2010-11-15 13:57:49 +03:00
static const struct mxc_usbh_platform_data otg_pdata __initconst = {
2011-01-03 13:30:28 +03:00
. init = eukrea_cpuimx35_otg_init ,
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
. portsc = MXC_EHCI_MODE_UTMI ,
} ;
2011-01-03 13:30:28 +03:00
static int eukrea_cpuimx35_usbh1_init ( struct platform_device * pdev )
{
return mx35_initialize_usb_hw ( pdev - > id , MXC_EHCI_INTERFACE_SINGLE_UNI |
MXC_EHCI_INTERNAL_PHY | MXC_EHCI_IPPUE_DOWN ) ;
}
2010-11-15 13:57:49 +03:00
static const struct mxc_usbh_platform_data usbh1_pdata __initconst = {
2011-01-03 13:30:28 +03:00
. init = eukrea_cpuimx35_usbh1_init ,
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
. portsc = MXC_EHCI_MODE_SERIAL ,
} ;
2010-11-12 18:40:06 +03:00
static const struct fsl_usb2_platform_data otg_device_pdata __initconst = {
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
. operating_mode = FSL_USB2_DR_DEVICE ,
. phy_mode = FSL_USB2_PHY_UTMI ,
2010-10-15 16:30:58 +04:00
. workaround = FLS_USB2_WORKAROUND_ENGCM09152 ,
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
} ;
2012-06-12 21:46:43 +04:00
static bool otg_mode_host __initdata ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
static int __init eukrea_cpuimx35_otg_mode ( char * options )
{
if ( ! strcmp ( options , " host " ) )
2012-06-12 21:46:43 +04:00
otg_mode_host = true ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
else if ( ! strcmp ( options , " device " ) )
2012-06-12 21:46:43 +04:00
otg_mode_host = false ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
else
pr_info ( " otg_mode neither \" host \" nor \" device \" . "
" Defaulting to device \n " ) ;
2012-06-12 21:46:43 +04:00
return 1 ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
}
__setup ( " otg_mode= " , eukrea_cpuimx35_otg_mode ) ;
/*
* Board specific initialization .
*/
2011-02-11 12:23:19 +03:00
static void __init eukrea_cpuimx35_init ( void )
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
{
2011-06-05 20:07:55 +04:00
imx35_soc_init ( ) ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
mxc_iomux_v3_setup_multiple_pads ( eukrea_cpuimx35_pads ,
ARRAY_SIZE ( eukrea_cpuimx35_pads ) ) ;
2010-10-06 14:00:18 +04:00
imx35_add_fec ( NULL ) ;
2012-07-04 18:35:54 +04:00
imx35_add_imx2_wdt ( ) ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
2010-06-30 14:16:24 +04:00
imx35_add_imx_uart0 ( & uart_pdata ) ;
imx35_add_mxc_nand ( & eukrea_cpuimx35_nand_board_info ) ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
2011-12-02 11:31:11 +04:00
eukrea_cpuimx35_i2c_devices [ 1 ] . irq = gpio_to_irq ( TSC2007_IRQGPIO ) ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
i2c_register_board_info ( 0 , eukrea_cpuimx35_i2c_devices ,
ARRAY_SIZE ( eukrea_cpuimx35_i2c_devices ) ) ;
2010-06-30 14:16:24 +04:00
imx35_add_imx_i2c0 ( & eukrea_cpuimx35_i2c0_data ) ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
2010-10-05 20:02:30 +04:00
if ( otg_mode_host )
2010-11-15 13:57:49 +03:00
imx35_add_mxc_ehci_otg ( & otg_pdata ) ;
2010-10-05 20:02:30 +04:00
else
2010-11-12 18:40:06 +03:00
imx35_add_fsl_usb2_udc ( & otg_device_pdata ) ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
2010-11-15 13:57:49 +03:00
imx35_add_mxc_ehci_hs ( & usbh1_pdata ) ;
2010-10-05 20:02:30 +04:00
2010-07-31 00:58:40 +04:00
# ifdef CONFIG_MACH_EUKREA_MBIMXSD35_BASEBOARD
eukrea_mbimxsd35_baseboard_init ( ) ;
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
# endif
}
static void __init eukrea_cpuimx35_timer_init ( void )
{
mx35_clocks_init ( ) ;
}
2011-08-22 18:41:46 +04:00
MACHINE_START ( EUKREA_CPUIMX35SD , " Eukrea CPUIMX35 " )
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
/* Maintainer: Eukrea Electromatique */
2011-07-06 06:38:12 +04:00
. atag_offset = 0x100 ,
2011-02-07 18:35:20 +03:00
. map_io = mx35_map_io ,
2011-03-01 23:30:58 +03:00
. init_early = imx35_init_early ,
2011-02-07 18:35:20 +03:00
. init_irq = mx35_init_irq ,
2011-09-20 16:31:24 +04:00
. handle_irq = imx35_handle_irq ,
2012-11-08 23:40:59 +04:00
. init_time = eukrea_cpuimx35_timer_init ,
2011-02-11 12:23:19 +03:00
. init_machine = eukrea_cpuimx35_init ,
2011-11-06 21:12:08 +04:00
. restart = mxc_restart ,
i.MX35: add cpuimx35 support and its baseboard
* cpuimx35 integrates i.MX35, RAM, NAND, Ethernet, I2C RTC, USB Host,
USB OTG and I2C touchscreen controller
* mbimxsd provides access to LCD, Audio, LED, Switch button, UART ...
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2010-06-10 18:07:50 +04:00
MACHINE_END