Skip to content

Commit

Permalink
[AVR32] Add support for AT32AP7001 and AT32AP7002
Browse files Browse the repository at this point in the history
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: Haavard Skinnemoen <[email protected]>
  • Loading branch information
Haavard Skinnemoen committed Jan 25, 2008
1 parent 281ef58 commit 438ff3f
Show file tree
Hide file tree
Showing 12 changed files with 58 additions and 28 deletions.
21 changes: 17 additions & 4 deletions arch/avr32/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,26 @@ config PLATFORM_AT32AP
select MMU
select PERFORMANCE_COUNTERS

config CPU_AT32AP700X
bool
select PLATFORM_AT32AP

choice
prompt "AVR32 CPU type"
default CPU_AT32AP7000

config CPU_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

#
Expand Down Expand Up @@ -126,15 +139,15 @@ source "arch/avr32/mach-at32ap/Kconfig"

config LOAD_ADDRESS
hex
default 0x10000000 if LOADER_U_BOOT=y && CPU_AT32AP7000=y
default 0x10000000 if LOADER_U_BOOT=y && CPU_AT32AP700X=y

config ENTRY_ADDRESS
hex
default 0x90000000 if LOADER_U_BOOT=y && CPU_AT32AP7000=y
default 0x90000000 if LOADER_U_BOOT=y && CPU_AT32AP700X=y

config PHYS_OFFSET
hex
default 0x10000000 if CPU_AT32AP7000=y
default 0x10000000 if CPU_AT32AP700X=y

source "kernel/Kconfig.preempt"

Expand Down
2 changes: 1 addition & 1 deletion arch/avr32/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ KBUILD_AFLAGS += -mrelax -mno-pic
CFLAGS_MODULE += -mno-relax
LDFLAGS_vmlinux += --relax

cpuflags-$(CONFIG_CPU_AT32AP7000) += -mcpu=ap7000
cpuflags-$(CONFIG_PLATFORM_AT32AP) += -march=ap

KBUILD_CFLAGS += $(cpuflags-y)
KBUILD_AFLAGS += $(cpuflags-y)
Expand Down
2 changes: 1 addition & 1 deletion arch/avr32/boards/atngw100/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
#include <asm/io.h>
#include <asm/setup.h>

#include <asm/arch/at32ap7000.h>
#include <asm/arch/at32ap700x.h>
#include <asm/arch/board.h>
#include <asm/arch/init.h>
#include <asm/arch/portmux.h>
Expand Down
9 changes: 6 additions & 3 deletions arch/avr32/configs/atngw100_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -111,17 +111,20 @@ CONFIG_SUBARCH_AVR32B=y
CONFIG_MMU=y
CONFIG_PERFORMANCE_COUNTERS=y
CONFIG_PLATFORM_AT32AP=y
CONFIG_CPU_AT32AP700X=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_ATNGW100=y
CONFIG_LOADER_U_BOOT=y

#
# Atmel AVR32 AP options
#
# CONFIG_AP7000_32_BIT_SMC is not set
CONFIG_AP7000_16_BIT_SMC=y
# CONFIG_AP7000_8_BIT_SMC is not set
# CONFIG_AP700X_32_BIT_SMC is not set
CONFIG_AP700X_16_BIT_SMC=y
# CONFIG_AP700X_8_BIT_SMC is not set
CONFIG_LOAD_ADDRESS=0x10000000
CONFIG_ENTRY_ADDRESS=0x90000000
CONFIG_PHYS_OFFSET=0x10000000
Expand Down
8 changes: 5 additions & 3 deletions arch/avr32/configs/atstk1002_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ CONFIG_MMU=y
CONFIG_PERFORMANCE_COUNTERS=y
CONFIG_PLATFORM_AT32AP=y
CONFIG_CPU_AT32AP7000=y
# CONFIG_CPU_AT32AP7001 is not set
# CONFIG_CPU_AT32AP7002 is not set
CONFIG_BOARD_ATSTK1002=y
CONFIG_BOARD_ATSTK1000=y
# CONFIG_BOARD_ATNGW100 is not set
Expand All @@ -122,9 +124,9 @@ CONFIG_LOADER_U_BOOT=y
#
# Atmel AVR32 AP options
#
# CONFIG_AP7000_32_BIT_SMC is not set
CONFIG_AP7000_16_BIT_SMC=y
# CONFIG_AP7000_8_BIT_SMC is not set
# CONFIG_AP700X_32_BIT_SMC is not set
CONFIG_AP700X_16_BIT_SMC=y
# CONFIG_AP700X_8_BIT_SMC is not set
CONFIG_LOAD_ADDRESS=0x10000000
CONFIG_ENTRY_ADDRESS=0x90000000
CONFIG_PHYS_OFFSET=0x10000000
Expand Down
12 changes: 6 additions & 6 deletions arch/avr32/mach-at32ap/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ if PLATFORM_AT32AP
menu "Atmel AVR32 AP options"

choice
prompt "AT32AP7000 static memory bus width"
depends on CPU_AT32AP7000
default AP7000_16_BIT_SMC
prompt "AT32AP700x static memory bus width"
depends on CPU_AT32AP700X
default AP700X_16_BIT_SMC
help
Define the width of the AP7000 external static memory interface.
This is used to determine how to mangle the address and/or data
Expand All @@ -15,13 +15,13 @@ choice
width for all chip selects, excluding the flash (which is using
raw access and is thus not affected by any of this.)

config AP7000_32_BIT_SMC
config AP700X_32_BIT_SMC
bool "32 bit"

config AP7000_16_BIT_SMC
config AP700X_16_BIT_SMC
bool "16 bit"

config AP7000_8_BIT_SMC
config AP700X_8_BIT_SMC
bool "8 bit"

endchoice
Expand Down
4 changes: 2 additions & 2 deletions arch/avr32/mach-at32ap/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
obj-y += at32ap.o clock.o intc.o extint.o pio.o hsmc.o
obj-$(CONFIG_CPU_AT32AP7000) += at32ap7000.o
obj-$(CONFIG_CPU_AT32AP7000) += time-tc.o
obj-$(CONFIG_CPU_AT32AP700X) += at32ap700x.o
obj-$(CONFIG_CPU_AT32AP700X) += time-tc.o
obj-$(CONFIG_CPU_FREQ_AT32AP) += cpufreq.o
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

#include <asm/io.h>

#include <asm/arch/at32ap7000.h>
#include <asm/arch/at32ap700x.h>
#include <asm/arch/board.h>
#include <asm/arch/portmux.h>

Expand Down Expand Up @@ -803,6 +803,7 @@ void __init at32_setup_serial_console(unsigned int usart_id)
* Ethernet
* -------------------------------------------------------------------- */

#ifdef CONFIG_CPU_AT32AP7000
static struct eth_platform_data macb0_data;
static struct resource macb0_resource[] = {
PBMEM(0xfff01800),
Expand Down Expand Up @@ -890,6 +891,7 @@ at32_add_device_eth(unsigned int id, struct eth_platform_data *data)

return pdev;
}
#endif

/* --------------------------------------------------------------------
* SPI
Expand Down Expand Up @@ -1064,6 +1066,7 @@ struct platform_device *__init at32_add_device_mci(unsigned int id)
/* --------------------------------------------------------------------
* LCDC
* -------------------------------------------------------------------- */
#if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002)
static struct atmel_lcdfb_info atmel_lcdfb0_data;
static struct resource atmel_lcdfb0_resource[] = {
{
Expand Down Expand Up @@ -1179,6 +1182,7 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
kfree(monspecs);
return NULL;
}
#endif

/* --------------------------------------------------------------------
* SSC
Expand Down Expand Up @@ -1332,6 +1336,7 @@ at32_add_device_usba(unsigned int id, struct usba_platform_data *data)
/* --------------------------------------------------------------------
* IDE / CompactFlash
* -------------------------------------------------------------------- */
#if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7001)
static struct resource at32_smc_cs4_resource[] __initdata = {
{
.start = 0x04000000,
Expand Down Expand Up @@ -1464,6 +1469,7 @@ at32_add_device_cf(unsigned int id, unsigned int extint,
platform_device_put(pdev);
return NULL;
}
#endif

/* --------------------------------------------------------------------
* AC97C
Expand Down Expand Up @@ -1639,16 +1645,20 @@ struct clk *at32_clock_list[] = {
&atmel_usart1_usart,
&atmel_usart2_usart,
&atmel_usart3_usart,
#if defined(CONFIG_CPU_AT32AP7000)
&macb0_hclk,
&macb0_pclk,
&macb1_hclk,
&macb1_pclk,
#endif
&atmel_spi0_spi_clk,
&atmel_spi1_spi_clk,
&atmel_twi0_pclk,
&atmel_mci0_pclk,
#if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002)
&atmel_lcdfb0_hck1,
&atmel_lcdfb0_pixclk,
#endif
&ssc0_pclk,
&ssc1_pclk,
&ssc2_pclk,
Expand Down Expand Up @@ -1697,7 +1707,9 @@ void __init at32_clock_init(void)
genclk_init_parent(&gclk2);
genclk_init_parent(&gclk3);
genclk_init_parent(&gclk4);
#if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002)
genclk_init_parent(&atmel_lcdfb0_pixclk);
#endif
genclk_init_parent(&abdac0_sample_clk);

/*
Expand Down
2 changes: 1 addition & 1 deletion drivers/watchdog/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ config DAVINCI_WATCHDOG

config AT32AP700X_WDT
tristate "AT32AP700x watchdog"
depends on CPU_AT32AP7000
depends on CPU_AT32AP700X
help
Watchdog timer embedded into AT32AP700x devices. This will reboot
your system when the timeout is reached.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __ASM_ARCH_AT32AP7000_H__
#define __ASM_ARCH_AT32AP7000_H__
#ifndef __ASM_ARCH_AT32AP700X_H__
#define __ASM_ARCH_AT32AP700X_H__

#define GPIO_PERIPH_A 0
#define GPIO_PERIPH_B 1
Expand All @@ -32,4 +32,4 @@
#define GPIO_PIN_PD(N) (GPIO_PIOD_BASE + (N))
#define GPIO_PIN_PE(N) (GPIO_PIOE_BASE + (N))

#endif /* __ASM_ARCH_AT32AP7000_H__ */
#endif /* __ASM_ARCH_AT32AP700X_H__ */
2 changes: 1 addition & 1 deletion include/asm-avr32/arch-at32ap/cpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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.
*/
#ifdef CONFIG_CPU_AT32AP7000
#ifdef CONFIG_CPU_AT32AP700X
# define cpu_is_at32ap7000() (1)
#else
# define cpu_is_at32ap7000() (0)
Expand Down
4 changes: 2 additions & 2 deletions include/asm-avr32/arch-at32ap/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
/* For "bizarre" halfword swapping */
#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_w(addr) (addr ^ 2UL)
# define __swizzle_addr_l(addr) (addr)
Expand All @@ -14,7 +14,7 @@
# define __mem_ioswabb(a, x) (x)
# define __mem_ioswabw(a, x) swab16(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_w(addr) (addr)
# define __swizzle_addr_l(addr) (addr)
Expand Down

0 comments on commit 438ff3f

Please sign in to comment.