diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-27 16:47:35 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-27 16:47:35 -0700 | 
| commit | 66f03c614c0902ccf7d6160459362a9352f33271 (patch) | |
| tree | b9a8864efe5aa7fc5c96cc5ccbeca41f5cd6f6a7 /arch/arm/mach-at91/at91sam9263_devices.c | |
| parent | 34800598b2eebe061445216473b1e4c2ff5cba99 (diff) | |
| parent | cdc3df6f44f72c5924a16a47e1663c3fb0e57820 (diff) | |
| download | olio-linux-3.10-66f03c614c0902ccf7d6160459362a9352f33271.tar.xz olio-linux-3.10-66f03c614c0902ccf7d6160459362a9352f33271.zip  | |
Merge tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull "ARM: device tree work" from Arnd Bergmann:
 "Most of these patches convert code from using static platform data to
  describing the hardware in the device tree.  This is only the first
  half of the changes for v3.4 because a lot of patches for this topic
  came in the last week before the merge window.
  Signed-off-by: Arnd Bergmann <arnd@arndb.de>"
Fix up trivial conflicts in arch/arm/mach-vexpress/{Kconfig,core.h}
* tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (86 commits)
  Document: devicetree: add OF documents for arch-mmp
  ARM: dts: append DTS file of pxa168
  ARM: mmp: append OF support on pxa168
  ARM: mmp: enable rtc clk in pxa168
  i2c: pxa: add OF support
  serial: pxa: add OF support
  arm/dts: mt_ventoux: very basic support for TeeJet Mt.Ventoux board
  ARM: OMAP2+: Remove extra ifdefs for board-generic
  ARM: OMAP2+: Fix build error when only ARCH_OMAP2/3 or 4 is selected
  ASoC: DT: Add digital microphone binding to PAZ00 board.
  ARM: dt: Add ARM PMU to tegra*.dtsi
  ARM: at91: at91sam9x5cm/dt: add leds support
  ARM: at91: usb_a9g20/dt: add gpio-keys support
  ARM: at91: at91sam9m10g45ek/dt: add gpio-keys support
  ARM: at91: at91sam9m10g45ek/dt: add leds support
  ARM: at91: usb_a9g20/dt: add leds support
  ARM: at91/pio: add new PIO3 features
  ARM: at91: add sam9_smc.o to at91sam9x5 build
  ARM: at91/tc/clocksource: Add 32 bit variant to Timer Counter
  ARM: at91/tc: add device tree support to atmel_tclib
  ...
Diffstat (limited to 'arch/arm/mach-at91/at91sam9263_devices.c')
| -rw-r--r-- | arch/arm/mach-at91/at91sam9263_devices.c | 59 | 
1 files changed, 52 insertions, 7 deletions
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index 70709ab0102..53688c46f95 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c @@ -23,6 +23,7 @@  #include <mach/board.h>  #include <mach/at91sam9263.h>  #include <mach/at91sam9263_matrix.h> +#include <mach/at91_matrix.h>  #include <mach/at91sam9_smc.h>  #include "generic.h" @@ -409,7 +410,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data)  	 * we assume SMC timings are configured by board code,  	 * except True IDE where timings are controlled by driver  	 */ -	ebi0_csa = at91_sys_read(AT91_MATRIX_EBI0CSA); +	ebi0_csa = at91_matrix_read(AT91_MATRIX_EBI0CSA);  	switch (data->chipselect) {  	case 4:  		at91_set_A_periph(AT91_PIN_PD6, 0);  /* EBI0_NCS4/CFCS0 */ @@ -428,7 +429,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data)  		       data->chipselect);  		return;  	} -	at91_sys_write(AT91_MATRIX_EBI0CSA, ebi0_csa); +	at91_matrix_write(AT91_MATRIX_EBI0CSA, ebi0_csa);  	if (gpio_is_valid(data->det_pin)) {  		at91_set_gpio_input(data->det_pin, 1); @@ -496,8 +497,8 @@ void __init at91_add_device_nand(struct atmel_nand_data *data)  	if (!data)  		return; -	csa = at91_sys_read(AT91_MATRIX_EBI0CSA); -	at91_sys_write(AT91_MATRIX_EBI0CSA, csa | AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA); +	csa = at91_matrix_read(AT91_MATRIX_EBI0CSA); +	at91_matrix_write(AT91_MATRIX_EBI0CSA, csa | AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA);  	/* enable pin */  	if (gpio_is_valid(data->enable_pin)) @@ -966,6 +967,8 @@ static struct resource rtt0_resources[] = {  		.start	= AT91SAM9263_BASE_RTT0,  		.end	= AT91SAM9263_BASE_RTT0 + SZ_16 - 1,  		.flags	= IORESOURCE_MEM, +	}, { +		.flags	= IORESOURCE_MEM,  	}  }; @@ -973,7 +976,6 @@ static struct platform_device at91sam9263_rtt0_device = {  	.name		= "at91_rtt",  	.id		= 0,  	.resource	= rtt0_resources, -	.num_resources	= ARRAY_SIZE(rtt0_resources),  };  static struct resource rtt1_resources[] = { @@ -981,6 +983,8 @@ static struct resource rtt1_resources[] = {  		.start	= AT91SAM9263_BASE_RTT1,  		.end	= AT91SAM9263_BASE_RTT1 + SZ_16 - 1,  		.flags	= IORESOURCE_MEM, +	}, { +		.flags	= IORESOURCE_MEM,  	}  }; @@ -988,11 +992,53 @@ static struct platform_device at91sam9263_rtt1_device = {  	.name		= "at91_rtt",  	.id		= 1,  	.resource	= rtt1_resources, -	.num_resources	= ARRAY_SIZE(rtt1_resources),  }; +#if IS_ENABLED(CONFIG_RTC_DRV_AT91SAM9) +static void __init at91_add_device_rtt_rtc(void) +{ +	struct platform_device *pdev; +	struct resource *r; + +	switch (CONFIG_RTC_DRV_AT91SAM9_RTT) { +	case 0: +		/* +		 * The second resource is needed only for the chosen RTT: +		 * GPBR will serve as the storage for RTC time offset +		 */ +		at91sam9263_rtt0_device.num_resources = 2; +		at91sam9263_rtt1_device.num_resources = 1; +		pdev = &at91sam9263_rtt0_device; +		r = rtt0_resources; +		break; +	case 1: +		at91sam9263_rtt0_device.num_resources = 1; +		at91sam9263_rtt1_device.num_resources = 2; +		pdev = &at91sam9263_rtt1_device; +		r = rtt1_resources; +		break; +	default: +		pr_err("at91sam9263: only supports 2 RTT (%d)\n", +		       CONFIG_RTC_DRV_AT91SAM9_RTT); +		return; +	} + +	pdev->name = "rtc-at91sam9"; +	r[1].start = AT91SAM9263_BASE_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; +	r[1].end = r[1].start + 3; +} +#else +static void __init at91_add_device_rtt_rtc(void) +{ +	/* Only one resource is needed: RTT not used as RTC */ +	at91sam9263_rtt0_device.num_resources = 1; +	at91sam9263_rtt1_device.num_resources = 1; +} +#endif +  static void __init at91_add_device_rtt(void)  { +	at91_add_device_rtt_rtc();  	platform_device_register(&at91sam9263_rtt0_device);  	platform_device_register(&at91sam9263_rtt1_device);  } @@ -1378,7 +1424,6 @@ static inline void configure_usart2_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)  {  |