Commit 438ff3f3 authored by Haavard Skinnemoen's avatar Haavard Skinnemoen

[AVR32] Add support for AT32AP7001 and AT32AP7002

These are derivatives of the AT32AP7000 chip, which means that most of
the code stays the same. Rename a few files, functions, definitions
and config symbols to reflect that they apply to all AP700x chips, and
exclude some platform devices from chips where they aren't present.
Signed-off-by: default avatarHaavard Skinnemoen <hskinnemoen@atmel.com>
parent 281ef58c
...@@ -84,13 +84,26 @@ config PLATFORM_AT32AP ...@@ -84,13 +84,26 @@ config PLATFORM_AT32AP
select MMU select MMU
select PERFORMANCE_COUNTERS select PERFORMANCE_COUNTERS
config CPU_AT32AP700X
bool
select PLATFORM_AT32AP
choice choice
prompt "AVR32 CPU type" prompt "AVR32 CPU type"
default CPU_AT32AP7000 default CPU_AT32AP7000
config CPU_AT32AP7000 config CPU_AT32AP7000
bool "AT32AP7000" bool "AT32AP7000"
select PLATFORM_AT32AP select CPU_AT32AP700X
config CPU_AT32AP7001
bool "AT32AP7001"
select CPU_AT32AP700X
config CPU_AT32AP7002
bool "AT32AP7002"
select CPU_AT32AP700X
endchoice endchoice
# #
...@@ -126,15 +139,15 @@ source "arch/avr32/mach-at32ap/Kconfig" ...@@ -126,15 +139,15 @@ source "arch/avr32/mach-at32ap/Kconfig"
config LOAD_ADDRESS config LOAD_ADDRESS
hex hex
default 0x10000000 if LOADER_U_BOOT=y && CPU_AT32AP7000=y default 0x10000000 if LOADER_U_BOOT=y && CPU_AT32AP700X=y
config ENTRY_ADDRESS config ENTRY_ADDRESS
hex hex
default 0x90000000 if LOADER_U_BOOT=y && CPU_AT32AP7000=y default 0x90000000 if LOADER_U_BOOT=y && CPU_AT32AP700X=y
config PHYS_OFFSET config PHYS_OFFSET
hex hex
default 0x10000000 if CPU_AT32AP7000=y default 0x10000000 if CPU_AT32AP700X=y
source "kernel/Kconfig.preempt" source "kernel/Kconfig.preempt"
......
...@@ -16,7 +16,7 @@ KBUILD_AFLAGS += -mrelax -mno-pic ...@@ -16,7 +16,7 @@ KBUILD_AFLAGS += -mrelax -mno-pic
CFLAGS_MODULE += -mno-relax CFLAGS_MODULE += -mno-relax
LDFLAGS_vmlinux += --relax LDFLAGS_vmlinux += --relax
cpuflags-$(CONFIG_CPU_AT32AP7000) += -mcpu=ap7000 cpuflags-$(CONFIG_PLATFORM_AT32AP) += -march=ap
KBUILD_CFLAGS += $(cpuflags-y) KBUILD_CFLAGS += $(cpuflags-y)
KBUILD_AFLAGS += $(cpuflags-y) KBUILD_AFLAGS += $(cpuflags-y)
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/arch/at32ap7000.h> #include <asm/arch/at32ap700x.h>
#include <asm/arch/board.h> #include <asm/arch/board.h>
#include <asm/arch/init.h> #include <asm/arch/init.h>
#include <asm/arch/portmux.h> #include <asm/arch/portmux.h>
......
...@@ -111,7 +111,10 @@ CONFIG_SUBARCH_AVR32B=y ...@@ -111,7 +111,10 @@ CONFIG_SUBARCH_AVR32B=y
CONFIG_MMU=y CONFIG_MMU=y
CONFIG_PERFORMANCE_COUNTERS=y CONFIG_PERFORMANCE_COUNTERS=y
CONFIG_PLATFORM_AT32AP=y CONFIG_PLATFORM_AT32AP=y
CONFIG_CPU_AT32AP700X=y
CONFIG_CPU_AT32AP7000=y CONFIG_CPU_AT32AP7000=y
# CONFIG_CPU_AT32AP7001 is not set
# CONFIG_CPU_AT32AP7002 is not set
# CONFIG_BOARD_ATSTK1000 is not set # CONFIG_BOARD_ATSTK1000 is not set
CONFIG_BOARD_ATNGW100=y CONFIG_BOARD_ATNGW100=y
CONFIG_LOADER_U_BOOT=y CONFIG_LOADER_U_BOOT=y
...@@ -119,9 +122,9 @@ CONFIG_LOADER_U_BOOT=y ...@@ -119,9 +122,9 @@ CONFIG_LOADER_U_BOOT=y
# #
# Atmel AVR32 AP options # Atmel AVR32 AP options
# #
# CONFIG_AP7000_32_BIT_SMC is not set # CONFIG_AP700X_32_BIT_SMC is not set
CONFIG_AP7000_16_BIT_SMC=y CONFIG_AP700X_16_BIT_SMC=y
# CONFIG_AP7000_8_BIT_SMC is not set # CONFIG_AP700X_8_BIT_SMC is not set
CONFIG_LOAD_ADDRESS=0x10000000 CONFIG_LOAD_ADDRESS=0x10000000
CONFIG_ENTRY_ADDRESS=0x90000000 CONFIG_ENTRY_ADDRESS=0x90000000
CONFIG_PHYS_OFFSET=0x10000000 CONFIG_PHYS_OFFSET=0x10000000
......
...@@ -114,6 +114,8 @@ CONFIG_MMU=y ...@@ -114,6 +114,8 @@ CONFIG_MMU=y
CONFIG_PERFORMANCE_COUNTERS=y CONFIG_PERFORMANCE_COUNTERS=y
CONFIG_PLATFORM_AT32AP=y CONFIG_PLATFORM_AT32AP=y
CONFIG_CPU_AT32AP7000=y CONFIG_CPU_AT32AP7000=y
# CONFIG_CPU_AT32AP7001 is not set
# CONFIG_CPU_AT32AP7002 is not set
CONFIG_BOARD_ATSTK1002=y CONFIG_BOARD_ATSTK1002=y
CONFIG_BOARD_ATSTK1000=y CONFIG_BOARD_ATSTK1000=y
# CONFIG_BOARD_ATNGW100 is not set # CONFIG_BOARD_ATNGW100 is not set
...@@ -122,9 +124,9 @@ CONFIG_LOADER_U_BOOT=y ...@@ -122,9 +124,9 @@ CONFIG_LOADER_U_BOOT=y
# #
# Atmel AVR32 AP options # Atmel AVR32 AP options
# #
# CONFIG_AP7000_32_BIT_SMC is not set # CONFIG_AP700X_32_BIT_SMC is not set
CONFIG_AP7000_16_BIT_SMC=y CONFIG_AP700X_16_BIT_SMC=y
# CONFIG_AP7000_8_BIT_SMC is not set # CONFIG_AP700X_8_BIT_SMC is not set
CONFIG_LOAD_ADDRESS=0x10000000 CONFIG_LOAD_ADDRESS=0x10000000
CONFIG_ENTRY_ADDRESS=0x90000000 CONFIG_ENTRY_ADDRESS=0x90000000
CONFIG_PHYS_OFFSET=0x10000000 CONFIG_PHYS_OFFSET=0x10000000
......
...@@ -3,9 +3,9 @@ if PLATFORM_AT32AP ...@@ -3,9 +3,9 @@ if PLATFORM_AT32AP
menu "Atmel AVR32 AP options" menu "Atmel AVR32 AP options"
choice choice
prompt "AT32AP7000 static memory bus width" prompt "AT32AP700x static memory bus width"
depends on CPU_AT32AP7000 depends on CPU_AT32AP700X
default AP7000_16_BIT_SMC default AP700X_16_BIT_SMC
help help
Define the width of the AP7000 external static memory interface. Define the width of the AP7000 external static memory interface.
This is used to determine how to mangle the address and/or data This is used to determine how to mangle the address and/or data
...@@ -15,13 +15,13 @@ choice ...@@ -15,13 +15,13 @@ choice
width for all chip selects, excluding the flash (which is using width for all chip selects, excluding the flash (which is using
raw access and is thus not affected by any of this.) raw access and is thus not affected by any of this.)
config AP7000_32_BIT_SMC config AP700X_32_BIT_SMC
bool "32 bit" bool "32 bit"
config AP7000_16_BIT_SMC config AP700X_16_BIT_SMC
bool "16 bit" bool "16 bit"
config AP7000_8_BIT_SMC config AP700X_8_BIT_SMC
bool "8 bit" bool "8 bit"
endchoice endchoice
......
obj-y += at32ap.o clock.o intc.o extint.o pio.o hsmc.o obj-y += at32ap.o clock.o intc.o extint.o pio.o hsmc.o
obj-$(CONFIG_CPU_AT32AP7000) += at32ap7000.o obj-$(CONFIG_CPU_AT32AP700X) += at32ap700x.o
obj-$(CONFIG_CPU_AT32AP7000) += time-tc.o obj-$(CONFIG_CPU_AT32AP700X) += time-tc.o
obj-$(CONFIG_CPU_FREQ_AT32AP) += cpufreq.o obj-$(CONFIG_CPU_FREQ_AT32AP) += cpufreq.o
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/arch/at32ap7000.h> #include <asm/arch/at32ap700x.h>
#include <asm/arch/board.h> #include <asm/arch/board.h>
#include <asm/arch/portmux.h> #include <asm/arch/portmux.h>
...@@ -803,6 +803,7 @@ void __init at32_setup_serial_console(unsigned int usart_id) ...@@ -803,6 +803,7 @@ void __init at32_setup_serial_console(unsigned int usart_id)
* Ethernet * Ethernet
* -------------------------------------------------------------------- */ * -------------------------------------------------------------------- */
#ifdef CONFIG_CPU_AT32AP7000
static struct eth_platform_data macb0_data; static struct eth_platform_data macb0_data;
static struct resource macb0_resource[] = { static struct resource macb0_resource[] = {
PBMEM(0xfff01800), PBMEM(0xfff01800),
...@@ -890,6 +891,7 @@ at32_add_device_eth(unsigned int id, struct eth_platform_data *data) ...@@ -890,6 +891,7 @@ at32_add_device_eth(unsigned int id, struct eth_platform_data *data)
return pdev; return pdev;
} }
#endif
/* -------------------------------------------------------------------- /* --------------------------------------------------------------------
* SPI * SPI
...@@ -1064,6 +1066,7 @@ err_add_resources: ...@@ -1064,6 +1066,7 @@ err_add_resources:
/* -------------------------------------------------------------------- /* --------------------------------------------------------------------
* LCDC * LCDC
* -------------------------------------------------------------------- */ * -------------------------------------------------------------------- */
#if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002)
static struct atmel_lcdfb_info atmel_lcdfb0_data; static struct atmel_lcdfb_info atmel_lcdfb0_data;
static struct resource atmel_lcdfb0_resource[] = { static struct resource atmel_lcdfb0_resource[] = {
{ {
...@@ -1179,6 +1182,7 @@ err_dup_modedb: ...@@ -1179,6 +1182,7 @@ err_dup_modedb:
kfree(monspecs); kfree(monspecs);
return NULL; return NULL;
} }
#endif
/* -------------------------------------------------------------------- /* --------------------------------------------------------------------
* SSC * SSC
...@@ -1332,6 +1336,7 @@ out_free_pdev: ...@@ -1332,6 +1336,7 @@ out_free_pdev:
/* -------------------------------------------------------------------- /* --------------------------------------------------------------------
* IDE / CompactFlash * IDE / CompactFlash
* -------------------------------------------------------------------- */ * -------------------------------------------------------------------- */
#if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7001)
static struct resource at32_smc_cs4_resource[] __initdata = { static struct resource at32_smc_cs4_resource[] __initdata = {
{ {
.start = 0x04000000, .start = 0x04000000,
...@@ -1464,6 +1469,7 @@ fail: ...@@ -1464,6 +1469,7 @@ fail:
platform_device_put(pdev); platform_device_put(pdev);
return NULL; return NULL;
} }
#endif
/* -------------------------------------------------------------------- /* --------------------------------------------------------------------
* AC97C * AC97C
...@@ -1639,16 +1645,20 @@ struct clk *at32_clock_list[] = { ...@@ -1639,16 +1645,20 @@ struct clk *at32_clock_list[] = {
&atmel_usart1_usart, &atmel_usart1_usart,
&atmel_usart2_usart, &atmel_usart2_usart,
&atmel_usart3_usart, &atmel_usart3_usart,
#if defined(CONFIG_CPU_AT32AP7000)
&macb0_hclk, &macb0_hclk,
&macb0_pclk, &macb0_pclk,
&macb1_hclk, &macb1_hclk,
&macb1_pclk, &macb1_pclk,
#endif
&atmel_spi0_spi_clk, &atmel_spi0_spi_clk,
&atmel_spi1_spi_clk, &atmel_spi1_spi_clk,
&atmel_twi0_pclk, &atmel_twi0_pclk,
&atmel_mci0_pclk, &atmel_mci0_pclk,
#if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002)
&atmel_lcdfb0_hck1, &atmel_lcdfb0_hck1,
&atmel_lcdfb0_pixclk, &atmel_lcdfb0_pixclk,
#endif
&ssc0_pclk, &ssc0_pclk,
&ssc1_pclk, &ssc1_pclk,
&ssc2_pclk, &ssc2_pclk,
...@@ -1697,7 +1707,9 @@ void __init at32_clock_init(void) ...@@ -1697,7 +1707,9 @@ void __init at32_clock_init(void)
genclk_init_parent(&gclk2); genclk_init_parent(&gclk2);
genclk_init_parent(&gclk3); genclk_init_parent(&gclk3);
genclk_init_parent(&gclk4); genclk_init_parent(&gclk4);
#if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002)
genclk_init_parent(&atmel_lcdfb0_pixclk); genclk_init_parent(&atmel_lcdfb0_pixclk);
#endif
genclk_init_parent(&abdac0_sample_clk); genclk_init_parent(&abdac0_sample_clk);
/* /*
......
...@@ -223,7 +223,7 @@ config DAVINCI_WATCHDOG ...@@ -223,7 +223,7 @@ config DAVINCI_WATCHDOG
config AT32AP700X_WDT config AT32AP700X_WDT
tristate "AT32AP700x watchdog" tristate "AT32AP700x watchdog"
depends on CPU_AT32AP7000 depends on CPU_AT32AP700X
help help
Watchdog timer embedded into AT32AP700x devices. This will reboot Watchdog timer embedded into AT32AP700x devices. This will reboot
your system when the timeout is reached. your system when the timeout is reached.
......
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#ifndef __ASM_ARCH_AT32AP7000_H__ #ifndef __ASM_ARCH_AT32AP700X_H__
#define __ASM_ARCH_AT32AP7000_H__ #define __ASM_ARCH_AT32AP700X_H__
#define GPIO_PERIPH_A 0 #define GPIO_PERIPH_A 0
#define GPIO_PERIPH_B 1 #define GPIO_PERIPH_B 1
...@@ -32,4 +32,4 @@ ...@@ -32,4 +32,4 @@
#define GPIO_PIN_PD(N) (GPIO_PIOD_BASE + (N)) #define GPIO_PIN_PD(N) (GPIO_PIOD_BASE + (N))
#define GPIO_PIN_PE(N) (GPIO_PIOE_BASE + (N)) #define GPIO_PIN_PE(N) (GPIO_PIOE_BASE + (N))
#endif /* __ASM_ARCH_AT32AP7000_H__ */ #endif /* __ASM_ARCH_AT32AP700X_H__ */
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* Only AT32AP7000 is defined for now. We can identify the specific * Only AT32AP7000 is defined for now. We can identify the specific
* chip at runtime, but I'm not sure if it's really worth it. * chip at runtime, but I'm not sure if it's really worth it.
*/ */
#ifdef CONFIG_CPU_AT32AP7000 #ifdef CONFIG_CPU_AT32AP700X
# define cpu_is_at32ap7000() (1) # define cpu_is_at32ap7000() (1)
#else #else
# define cpu_is_at32ap7000() (0) # define cpu_is_at32ap7000() (0)
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
/* For "bizarre" halfword swapping */ /* For "bizarre" halfword swapping */
#include <linux/byteorder/swabb.h> #include <linux/byteorder/swabb.h>
#if defined(CONFIG_AP7000_32_BIT_SMC) #if defined(CONFIG_AP700X_32_BIT_SMC)
# define __swizzle_addr_b(addr) (addr ^ 3UL) # define __swizzle_addr_b(addr) (addr ^ 3UL)
# define __swizzle_addr_w(addr) (addr ^ 2UL) # define __swizzle_addr_w(addr) (addr ^ 2UL)
# define __swizzle_addr_l(addr) (addr) # define __swizzle_addr_l(addr) (addr)
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
# define __mem_ioswabb(a, x) (x) # define __mem_ioswabb(a, x) (x)
# define __mem_ioswabw(a, x) swab16(x) # define __mem_ioswabw(a, x) swab16(x)
# define __mem_ioswabl(a, x) swab32(x) # define __mem_ioswabl(a, x) swab32(x)
#elif defined(CONFIG_AP7000_16_BIT_SMC) #elif defined(CONFIG_AP700X_16_BIT_SMC)
# define __swizzle_addr_b(addr) (addr ^ 1UL) # define __swizzle_addr_b(addr) (addr ^ 1UL)
# define __swizzle_addr_w(addr) (addr) # define __swizzle_addr_w(addr) (addr)
# define __swizzle_addr_l(addr) (addr) # define __swizzle_addr_l(addr) (addr)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment