if ARCH_AT91

config HAVE_AT91_UTMI
	bool

config HAVE_AT91_USB_CLK
	bool

config COMMON_CLK_AT91
	bool
	select COMMON_CLK

config HAVE_AT91_SMD
	bool

config HAVE_AT91_H32MX
	bool

config SOC_SAMA5
	bool
	select ATMEL_AIC5_IRQ
	select COMMON_CLK_AT91
	select CPU_V7
	select GENERIC_CLOCKEVENTS
	select MEMORY
	select ATMEL_SDRAMC
	select PHYLIB if NETDEVICES

menu "Atmel AT91 System-on-Chip"

choice

	prompt "Core type"

config SOC_SAM_V4_V5
	bool "ARM9 AT91SAM9/AT91RM9200"
	help
	  Select this if you are using one of Atmel's AT91SAM9 or
	  AT91RM9200 SoC.

config SOC_SAM_V7
	bool "Cortex A5"
	help
	  Select this if you are using one of Atmel's SAMA5D3 SoC.

endchoice

comment "Atmel AT91 Processor"

if SOC_SAM_V7
config SOC_SAMA5D3
	bool "SAMA5D3 family"
	select SOC_SAMA5
	select HAVE_FB_ATMEL
	select HAVE_AT91_UTMI
	select HAVE_AT91_SMD
	select HAVE_AT91_USB_CLK
	help
	  Select this if you are using one of Atmel's SAMA5D3 family SoC.
	  This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.

config SOC_SAMA5D4
	bool "SAMA5D4 family"
	select SOC_SAMA5
	select CLKSRC_MMIO
	select CACHE_L2X0
	select CACHE_PL310
	select HAVE_FB_ATMEL
	select HAVE_AT91_UTMI
	select HAVE_AT91_SMD
	select HAVE_AT91_USB_CLK
	select HAVE_AT91_H32MX
	help
	  Select this if you are using one of Atmel's SAMA5D4 family SoC.
endif

if SOC_SAM_V4_V5
config SOC_AT91RM9200
	bool "AT91RM9200"
	select ATMEL_AIC_IRQ
	select COMMON_CLK_AT91
	select CPU_ARM920T
	select GENERIC_CLOCKEVENTS
	select HAVE_AT91_USB_CLK

config SOC_AT91SAM9
	bool "AT91SAM9"
	select ATMEL_AIC_IRQ
	select ATMEL_SDRAMC
	select COMMON_CLK_AT91
	select CPU_ARM926T
	select GENERIC_CLOCKEVENTS
	select HAVE_AT91_SMD
	select HAVE_AT91_USB_CLK
	select HAVE_AT91_UTMI
	select HAVE_FB_ATMEL
	select MEMORY
	help
	  Select this if you are using one of those Atmel SoC:
	    AT91SAM9260
	    AT91SAM9261
	    AT91SAM9263
	    AT91SAM9G15
	    AT91SAM9G20
	    AT91SAM9G25
	    AT91SAM9G35
	    AT91SAM9G45
	    AT91SAM9G46
	    AT91SAM9M10
	    AT91SAM9M11
	    AT91SAM9N12
	    AT91SAM9RL
	    AT91SAM9X25
	    AT91SAM9X35
	    AT91SAM9XE
endif # SOC_SAM_V4_V5

comment "AT91 Feature Selections"

config AT91_SLOW_CLOCK
	bool "Suspend-to-RAM disables main oscillator"
	select SRAM
	depends on SUSPEND
	help
	  Select this if you want Suspend-to-RAM to save the most power
	  possible (without powering off the CPU) by disabling the PLLs
	  and main oscillator so that only the 32 KiHz clock is available.

	  When only that slow-clock is available, some peripherals lose
	  functionality.  Many can't issue wakeup events unless faster
	  clocks are available.  Some lose their operating state and
	  need to be completely re-initialized.

config AT91_TIMER_HZ
       int "Kernel HZ (jiffies per second)"
       range 32 1024
       depends on ARCH_AT91
       default "128" if SOC_AT91RM9200
       default "100"
       help
	  On AT91rm9200 chips where you're using a system clock derived
	  from the 32768 Hz hardware clock, this tick rate should divide
	  it exactly: use a power-of-two value, such as 128 or 256, to
	  reduce timing errors caused by rounding.

	  On AT91sam926x chips, or otherwise when using a higher precision
	  system clock (of at least several MHz), rounding is less of a
	  problem so it can be safer to use a decimal values like 100.

endmenu

endif
