diff options
Diffstat (limited to 'arch/arm/mach-at91/at91sam9rl_devices.c')
| -rw-r--r-- | arch/arm/mach-at91/at91sam9rl_devices.c | 31 | 
1 files changed, 27 insertions, 4 deletions
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index 9be71c11d0f..eda72e83037 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c @@ -20,6 +20,7 @@  #include <mach/board.h>  #include <mach/at91sam9rl.h>  #include <mach/at91sam9rl_matrix.h> +#include <mach/at91_matrix.h>  #include <mach/at91sam9_smc.h>  #include <mach/at_hdmac.h> @@ -265,8 +266,8 @@ void __init at91_add_device_nand(struct atmel_nand_data *data)  	if (!data)  		return; -	csa = at91_sys_read(AT91_MATRIX_EBICSA); -	at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); +	csa = at91_matrix_read(AT91_MATRIX_EBICSA); +	at91_matrix_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA);  	/* enable pin */  	if (gpio_is_valid(data->enable_pin)) @@ -682,6 +683,8 @@ static struct resource rtt_resources[] = {  		.start	= AT91SAM9RL_BASE_RTT,  		.end	= AT91SAM9RL_BASE_RTT + SZ_16 - 1,  		.flags	= IORESOURCE_MEM, +	}, { +		.flags	= IORESOURCE_MEM,  	}  }; @@ -689,11 +692,32 @@ static struct platform_device at91sam9rl_rtt_device = {  	.name		= "at91_rtt",  	.id		= 0,  	.resource	= rtt_resources, -	.num_resources	= ARRAY_SIZE(rtt_resources),  }; +#if IS_ENABLED(CONFIG_RTC_DRV_AT91SAM9) +static void __init at91_add_device_rtt_rtc(void) +{ +	at91sam9rl_rtt_device.name = "rtc-at91sam9"; +	/* +	 * The second resource is needed: +	 * GPBR will serve as the storage for RTC time offset +	 */ +	at91sam9rl_rtt_device.num_resources = 2; +	rtt_resources[1].start = AT91SAM9RL_BASE_GPBR + +				 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; +	rtt_resources[1].end = rtt_resources[1].start + 3; +} +#else +static void __init at91_add_device_rtt_rtc(void) +{ +	/* Only one resource is needed: RTT not used as RTC */ +	at91sam9rl_rtt_device.num_resources = 1; +} +#endif +  static void __init at91_add_device_rtt(void)  { +	at91_add_device_rtt_rtc();  	platform_device_register(&at91sam9rl_rtt_device);  } @@ -1128,7 +1152,6 @@ static inline void configure_usart3_pins(unsigned pins)  }  static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART];	/* the UARTs to use */ -struct platform_device *atmel_default_console_device;	/* the serial console device */  void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)  {  |