2006-12-18 00:10:48 +03:00
/*
* linux / arch / arm / mach - ep93xx / micro9 . c
*
* Copyright ( C ) 2006 Contec Steuerungstechnik & Automation GmbH
2009-10-07 11:36:07 +04:00
* Manfred Gruber < m . gruber @ tirol . com >
* Copyright ( C ) 2009 Contec Steuerungstechnik & Automation GmbH
* Hubert Feurstein < hubert . feurstein @ contec . at >
2006-12-18 00:10:48 +03:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# include <linux/kernel.h>
2009-07-06 20:39:50 +04:00
# include <linux/init.h>
2006-12-18 00:10:48 +03:00
# include <linux/platform_device.h>
2009-11-02 22:13:32 +03:00
# include <linux/io.h>
2006-12-18 00:10:48 +03:00
2008-08-05 19:14:15 +04:00
# include <mach/hardware.h>
2006-12-18 00:10:48 +03:00
# include <asm/mach-types.h>
2009-07-06 20:39:50 +04:00
# include <asm/mach/arch.h>
2012-01-11 02:06:08 +04:00
# include "soc.h"
2006-12-18 00:10:48 +03:00
2009-10-07 11:39:09 +04:00
/*************************************************************************
* Micro9 NOR Flash
*
* Micro9 - High has up to 64 MB of 32 - bit flash on CS1
* Micro9 - Mid has up to 64 MB of either 32 - bit or 16 - bit flash on CS1
tree-wide: Assorted spelling fixes
In particular, several occurances of funny versions of 'success',
'unknown', 'therefore', 'acknowledge', 'argument', 'achieve', 'address',
'beginning', 'desirable', 'separate' and 'necessary' are fixed.
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Cc: Joe Perches <joe@perches.com>
Cc: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2010-02-03 03:01:28 +03:00
* Micro9 - Lite uses a separate MTD map driver for flash support
2009-10-07 11:41:01 +04:00
* Micro9 - Slim has up to 64 MB of either 32 - bit or 16 - bit flash on CS1
2009-10-07 11:39:09 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static unsigned int __init micro9_detect_bootwidth ( void )
2006-12-18 00:10:48 +03:00
{
2009-10-07 11:39:09 +04:00
u32 v ;
/* Detect the bus width of the external flash memory */
v = __raw_readl ( EP93XX_SYSCON_SYSCFG ) ;
if ( v & EP93XX_SYSCON_SYSCFG_LCSN7 )
return 4 ; /* 32-bit */
else
return 2 ; /* 16-bit */
2006-12-18 00:10:48 +03:00
}
2009-10-07 11:39:09 +04:00
static void __init micro9_register_flash ( void )
{
2010-06-10 19:19:08 +04:00
unsigned int width ;
2009-10-07 11:39:09 +04:00
if ( machine_is_micro9 ( ) )
2010-06-10 19:19:08 +04:00
width = 4 ;
2009-10-07 11:41:01 +04:00
else if ( machine_is_micro9m ( ) | | machine_is_micro9s ( ) )
2010-06-10 19:19:08 +04:00
width = micro9_detect_bootwidth ( ) ;
else
width = 0 ;
if ( width )
ep93xx_register_flash ( width , EP93XX_CS1_PHYS_BASE , SZ_64M ) ;
2009-10-07 11:39:09 +04:00
}
/*************************************************************************
* Micro9 Ethernet
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2010-03-18 20:04:06 +03:00
static struct ep93xx_eth_data __initdata micro9_eth_data = {
2009-10-07 11:39:09 +04:00
. phy_id = 0x1f ,
} ;
static void __init micro9_init_machine ( void )
2006-12-18 00:10:48 +03:00
{
2008-12-08 19:57:22 +03:00
ep93xx_init_devices ( ) ;
2009-10-07 11:39:09 +04:00
ep93xx_register_eth ( & micro9_eth_data , 1 ) ;
micro9_register_flash ( ) ;
2006-12-18 00:10:48 +03:00
}
2009-10-07 11:39:09 +04:00
# ifdef CONFIG_MACH_MICRO9H
MACHINE_START ( MICRO9 , " Contec Micro9-High " )
2009-10-07 11:36:07 +04:00
/* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */
2011-07-06 06:38:11 +04:00
. atag_offset = 0x100 ,
2008-12-08 19:57:22 +03:00
. map_io = ep93xx_map_io ,
. init_irq = ep93xx_init_irq ,
2012-11-08 23:40:59 +04:00
. init_time = ep93xx_timer_init ,
2009-10-07 11:39:09 +04:00
. init_machine = micro9_init_machine ,
2012-04-26 06:05:15 +04:00
. init_late = ep93xx_init_late ,
2011-11-05 13:54:14 +04:00
. restart = ep93xx_restart ,
2006-12-18 00:10:48 +03:00
MACHINE_END
# endif
# ifdef CONFIG_MACH_MICRO9M
2009-10-07 11:39:09 +04:00
MACHINE_START ( MICRO9M , " Contec Micro9-Mid " )
2009-10-07 11:36:07 +04:00
/* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */
2011-07-06 06:38:11 +04:00
. atag_offset = 0x100 ,
2008-12-08 19:57:22 +03:00
. map_io = ep93xx_map_io ,
. init_irq = ep93xx_init_irq ,
2012-11-08 23:40:59 +04:00
. init_time = ep93xx_timer_init ,
2009-10-07 11:39:09 +04:00
. init_machine = micro9_init_machine ,
2012-04-26 06:05:15 +04:00
. init_late = ep93xx_init_late ,
2011-11-05 13:54:14 +04:00
. restart = ep93xx_restart ,
2006-12-18 00:10:48 +03:00
MACHINE_END
# endif
# ifdef CONFIG_MACH_MICRO9L
2009-10-07 11:39:09 +04:00
MACHINE_START ( MICRO9L , " Contec Micro9-Lite " )
2009-10-07 11:36:07 +04:00
/* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */
2011-07-06 06:38:11 +04:00
. atag_offset = 0x100 ,
2008-12-08 19:57:22 +03:00
. map_io = ep93xx_map_io ,
. init_irq = ep93xx_init_irq ,
2012-11-08 23:40:59 +04:00
. init_time = ep93xx_timer_init ,
2009-10-07 11:39:09 +04:00
. init_machine = micro9_init_machine ,
2012-04-26 06:05:15 +04:00
. init_late = ep93xx_init_late ,
2011-11-05 13:54:14 +04:00
. restart = ep93xx_restart ,
2006-12-18 00:10:48 +03:00
MACHINE_END
# endif
2009-10-07 11:41:01 +04:00
# ifdef CONFIG_MACH_MICRO9S
MACHINE_START ( MICRO9S , " Contec Micro9-Slim " )
/* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */
2011-07-06 06:38:11 +04:00
. atag_offset = 0x100 ,
2009-10-07 11:41:01 +04:00
. map_io = ep93xx_map_io ,
. init_irq = ep93xx_init_irq ,
2012-11-08 23:40:59 +04:00
. init_time = ep93xx_timer_init ,
2009-10-07 11:41:01 +04:00
. init_machine = micro9_init_machine ,
2012-04-26 06:05:15 +04:00
. init_late = ep93xx_init_late ,
2011-11-05 13:54:14 +04:00
. restart = ep93xx_restart ,
2009-10-07 11:41:01 +04:00
MACHINE_END
# endif