2007-05-12 00:01:28 +04:00
/*
* arch / arm / mach - ks8695 / devices . c
*
* Copyright ( C ) 2006 Andrew Victor
*
* 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 .
*
* 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 <asm/mach/arch.h>
# include <asm/mach/map.h>
# include <linux/platform_device.h>
[ARM] fix AT91, davinci, h720x, ks8695, msm, mx2, mx3, netx, omap1, omap2, pxa, s3c
arch/arm/mach-at91/at91cap9.c:337: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91rm9200.c:301: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91sam9260.c:351: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91sam9261.c:287: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91sam9263.c:312: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91sam9rl.c:304: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-h720x/h7202-eval.c:38: error: implicit declaration of function 'IRQ_CHAINED_GPIOB'
arch/arm/mach-ks8695/devices.c:46: error: 'KS8695_IRQ_WAN_RX_STATUS' undeclared here (not in a function)
arch/arm/mach-msm/devices.c:28: error: 'INT_UART1' undeclared here (not in a function)
arch/arm/mach-mx2/devices.c:233: error: 'MXC_GPIO_IRQ_START' undeclared here (not in a function)
arch/arm/mach-mx3/devices.c:128: error: 'MXC_GPIO_IRQ_START' undeclared here (not in a function)
arch/arm/mach-omap1/mcbsp.c:140: error: 'INT_730_McBSP1RX' undeclared here (not in a function)
arch/arm/mach-omap1/mcbsp.c:165: error: 'INT_McBSP1RX' undeclared here (not in a function)
arch/arm/mach-omap1/mcbsp.c:200: error: 'INT_McBSP1RX' undeclared here (not in a function)
arch/arm/mach-omap2/board-apollon.c:286: error: implicit declaration of function 'omap_set_gpio_direction'
arch/arm/mach-omap2/mcbsp.c:154: error: 'INT_24XX_MCBSP1_IRQ_RX' undeclared here (not in a function)
arch/arm/mach-omap2/mcbsp.c:181: error: 'INT_24XX_MCBSP1_IRQ_RX' undeclared here (not in a function)
arch/arm/mach-pxa/e350.c:36: error: 'IRQ_BOARD_START' undeclared here (not in a function)
arch/arm/plat-s3c/dev-i2c0.c:32: error: 'IRQ_IIC' undeclared here (not in a function)
...
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-01-08 13:01:47 +03:00
# include <mach/irqs.h>
2008-08-05 19:14:15 +04:00
# include <mach/regs-wan.h>
# include <mach/regs-lan.h>
# include <mach/regs-hpna.h>
2008-12-13 23:44:11 +03:00
# include <mach/regs-switch.h>
# include <mach/regs-misc.h>
2007-05-12 00:01:28 +04:00
/* --------------------------------------------------------------------
* Ethernet
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
static u64 eth_dmamask = 0xffffffffUL ;
static struct resource ks8695_wan_resources [ ] = {
[ 0 ] = {
2008-12-13 23:44:11 +03:00
. start = KS8695_WAN_PA ,
. end = KS8695_WAN_PA + 0x00ff ,
2007-05-12 00:01:28 +04:00
. flags = IORESOURCE_MEM ,
} ,
[ 1 ] = {
. name = " WAN RX " ,
. start = KS8695_IRQ_WAN_RX_STATUS ,
. end = KS8695_IRQ_WAN_RX_STATUS ,
. flags = IORESOURCE_IRQ ,
} ,
[ 2 ] = {
. name = " WAN TX " ,
. start = KS8695_IRQ_WAN_TX_STATUS ,
. end = KS8695_IRQ_WAN_TX_STATUS ,
. flags = IORESOURCE_IRQ ,
} ,
[ 3 ] = {
. name = " WAN Link " ,
. start = KS8695_IRQ_WAN_LINK ,
. end = KS8695_IRQ_WAN_LINK ,
. flags = IORESOURCE_IRQ ,
} ,
2008-12-13 23:44:11 +03:00
[ 4 ] = {
. name = " WAN PHY " ,
. start = KS8695_MISC_PA ,
. end = KS8695_MISC_PA + 0x1f ,
. flags = IORESOURCE_MEM ,
} ,
2007-05-12 00:01:28 +04:00
} ;
static struct platform_device ks8695_wan_device = {
. name = " ks8695_ether " ,
. id = 0 ,
. dev = {
. dma_mask = & eth_dmamask ,
. coherent_dma_mask = 0xffffffff ,
} ,
. resource = ks8695_wan_resources ,
. num_resources = ARRAY_SIZE ( ks8695_wan_resources ) ,
} ;
static struct resource ks8695_lan_resources [ ] = {
[ 0 ] = {
2008-12-13 23:44:11 +03:00
. start = KS8695_LAN_PA ,
. end = KS8695_LAN_PA + 0x00ff ,
2007-05-12 00:01:28 +04:00
. flags = IORESOURCE_MEM ,
} ,
[ 1 ] = {
. name = " LAN RX " ,
. start = KS8695_IRQ_LAN_RX_STATUS ,
. end = KS8695_IRQ_LAN_RX_STATUS ,
. flags = IORESOURCE_IRQ ,
} ,
[ 2 ] = {
. name = " LAN TX " ,
. start = KS8695_IRQ_LAN_TX_STATUS ,
. end = KS8695_IRQ_LAN_TX_STATUS ,
. flags = IORESOURCE_IRQ ,
} ,
2008-12-13 23:44:11 +03:00
[ 3 ] = {
. name = " LAN SWITCH " ,
. start = KS8695_SWITCH_PA ,
. end = KS8695_SWITCH_PA + 0x4f ,
. flags = IORESOURCE_MEM ,
} ,
2007-05-12 00:01:28 +04:00
} ;
static struct platform_device ks8695_lan_device = {
. name = " ks8695_ether " ,
. id = 1 ,
. dev = {
. dma_mask = & eth_dmamask ,
. coherent_dma_mask = 0xffffffff ,
} ,
. resource = ks8695_lan_resources ,
. num_resources = ARRAY_SIZE ( ks8695_lan_resources ) ,
} ;
static struct resource ks8695_hpna_resources [ ] = {
[ 0 ] = {
2008-12-13 23:44:11 +03:00
. start = KS8695_HPNA_PA ,
. end = KS8695_HPNA_PA + 0x00ff ,
2007-05-12 00:01:28 +04:00
. flags = IORESOURCE_MEM ,
} ,
[ 1 ] = {
. name = " HPNA RX " ,
. start = KS8695_IRQ_HPNA_RX_STATUS ,
. end = KS8695_IRQ_HPNA_RX_STATUS ,
. flags = IORESOURCE_IRQ ,
} ,
[ 2 ] = {
. name = " HPNA TX " ,
. start = KS8695_IRQ_HPNA_TX_STATUS ,
. end = KS8695_IRQ_HPNA_TX_STATUS ,
. flags = IORESOURCE_IRQ ,
} ,
} ;
static struct platform_device ks8695_hpna_device = {
. name = " ks8695_ether " ,
. id = 2 ,
. dev = {
. dma_mask = & eth_dmamask ,
. coherent_dma_mask = 0xffffffff ,
} ,
. resource = ks8695_hpna_resources ,
. num_resources = ARRAY_SIZE ( ks8695_hpna_resources ) ,
} ;
void __init ks8695_add_device_wan ( void )
{
platform_device_register ( & ks8695_wan_device ) ;
}
void __init ks8695_add_device_lan ( void )
{
platform_device_register ( & ks8695_lan_device ) ;
}
void __init ks8696_add_device_hpna ( void )
{
platform_device_register ( & ks8695_hpna_device ) ;
}
/* --------------------------------------------------------------------
* Watchdog
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
static struct platform_device ks8695_wdt_device = {
. name = " ks8695_wdt " ,
. id = - 1 ,
. num_resources = 0 ,
} ;
static void __init ks8695_add_device_watchdog ( void )
{
platform_device_register ( & ks8695_wdt_device ) ;
}
2008-04-16 00:13:33 +04:00
/* --------------------------------------------------------------------
* LEDs
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
# if defined(CONFIG_LEDS)
short ks8695_leds_cpu = - 1 ;
short ks8695_leds_timer = - 1 ;
void __init ks8695_init_leds ( u8 cpu_led , u8 timer_led )
{
/* Enable GPIO to access the LEDs */
gpio_direction_output ( cpu_led , 1 ) ;
gpio_direction_output ( timer_led , 1 ) ;
2008-12-13 23:44:11 +03:00
ks8695_leds_cpu = cpu_led ;
2008-04-16 00:13:33 +04:00
ks8695_leds_timer = timer_led ;
}
# else
void __init ks8695_init_leds ( u8 cpu_led , u8 timer_led ) { }
# endif
2007-05-12 00:01:28 +04:00
/* -------------------------------------------------------------------- */
/*
* These devices are always present and don ' t need any board - specific
* setup .
*/
static int __init ks8695_add_standard_devices ( void )
{
ks8695_add_device_watchdog ( ) ;
return 0 ;
}
arch_initcall ( ks8695_add_standard_devices ) ;