ARM: at91: add sama5d4ek board support
v2 cover ARM: at91: add sama5d4ek board support
This patch series add Atmel new SoC SAMA5D4 support, which embedded the Cortex-A5 core.
This patch series also add the EK board base on SAMA5D4 SoC support.
Changes in v2:
- Using clkdev_add_physbase for GPIO clock.
- Using multi line for #define which make it readable.
- Correct the configuration for GEM with only FE feature enable.
Bo Shen (4):
net: macb: enable GEM with only FE feature
ARM: at91: add sama5d4 soc support #1
ARM: at91: add sama5d4 soc support #2
ARM: at91: add sama5d4ek board support
arch/arm/boards/Makefile | 1 + arch/arm/boards/sama5d4ek/Makefile | 1 + arch/arm/boards/sama5d4ek/env/bin/init_board | 15 + arch/arm/boards/sama5d4ek/env/config | 42 +++ arch/arm/boards/sama5d4ek/sama5d4ek.c | 317 +++++++++++++++++ arch/arm/configs/sama5d4ek_defconfig | 85 +++++ arch/arm/mach-at91/Kconfig | 26 ++ arch/arm/mach-at91/Makefile | 2 + arch/arm/mach-at91/clock.c | 58 +++- arch/arm/mach-at91/clock.h | 2 +- arch/arm/mach-at91/include/mach/at91_pmc.h | 1 + arch/arm/mach-at91/include/mach/cpu.h | 28 ++ arch/arm/mach-at91/include/mach/hardware.h | 4 + arch/arm/mach-at91/include/mach/sama5d4.h | 134 ++++++++ arch/arm/mach-at91/sam9_smc.c | 24 +- arch/arm/mach-at91/sama5d4.c | 304 ++++++++++++++++ arch/arm/mach-at91/sama5d4_devices.c | 495 +++++++++++++++++++++++++++ arch/arm/mach-at91/setup.c | 41 ++- arch/arm/mach-at91/soc.h | 5 + drivers/net/macb.c | 6 +- 20 files changed, 1568 insertions(+), 23 deletions(-) create mode 100644 arch/arm/boards/sama5d4ek/Makefile create mode 100644 arch/arm/boards/sama5d4ek/env/bin/init_board create mode 100644 arch/arm/boards/sama5d4ek/env/config create mode 100644 arch/arm/boards/sama5d4ek/sama5d4ek.c create mode 100644 arch/arm/configs/sama5d4ek_defconfig create mode 100644 arch/arm/mach-at91/include/mach/sama5d4.h create mode 100644 arch/arm/mach-at91/sama5d4.c create mode 100644 arch/arm/mach-at91/sama5d4_devices.c
Signature · 7 lines
2.1.0.24.g4109c28 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v2 1/4 net: macb: enable GEM with only FE feature
If the GEM is used, however only FE featuren enabled, then it can not support FBLDO configured as 16, and no RGMII/GMII configuratin bit.
So, in order to support GEM only with FE feature enabled, we do:
- using default value for FBLDO.
- using same bit for RMII/MII configuration as GEM for RGMII/GMII.
---
Changes in v2:
- using the same bit for RMII/MII configuration for GEM only with FE feature.
drivers/net/macb.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/net/macb.c +4 -2
@@ -304,7 +304,6 @@ static void macb_configure_dma(struct macb_device *bp)if (macb_is_gem (bp)) { dmacfg =gem_readl (bp,DMACFG ) & ~GEM_BF (RXBS ,-1L ); dmacfg |=GEM_BF (RXBS , bp->rx_buffer_size /RX_BUFFER_MULTIPLE ); - dmacfg |=GEM_BF (FBLDO ,16 ); dmacfg |=GEM_BIT (TXPBMS ) |GEM_BF (RXBMS ,-1L ); dmacfg |=GEM_BIT (DDRP ); dmacfg &= ~GEM_BIT (ENDIA );
@@ -352,7 +351,10 @@ static void macb_init(struct macb_device *macb)break ;case PHY_INTERFACE_MODE_RMII :if (IS_ENABLED (CONFIG_ARCH_AT91 )) - val =MACB_BIT (RMII ) |MACB_BIT (CLKEN ); +if (macb_is_gem (macb)) + val =GEM_BIT (RGMII ); +else + val =MACB_BIT (RMII ) |MACB_BIT (CLKEN );else val =0 ;break ;
Signature · 7 lines
2.1.0.24.g4109c28 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v2 2/4 ARM: at91: add sama5d4 soc support #1
In reply to Bo Shen---
Changes in v2:
- Multi line the #define
arch/arm/mach-at91/clock.c | 58 +++++++++++++++++++++++------- arch/arm/mach-at91/clock.h | 2 +- arch/arm/mach-at91/include/mach/at91_pmc.h | 1 + arch/arm/mach-at91/include/mach/cpu.h | 28 +++++++++++++++ arch/arm/mach-at91/include/mach/hardware.h | 4 +++ arch/arm/mach-at91/sam9_smc.c | 24 +++++++++++-- arch/arm/mach-at91/setup.c | 41 ++++++++++++++++++--- arch/arm/mach-at91/soc.h | 5 +++ 8 files changed, 142 insertions(+), 21 deletions(-)
arch/arm/mach-at91/clock.c +46 -12
@@ -37,6 +37,7 @@#define clk_is_programmable (x) ((x)->type & CLK_TYPE_PROGRAMMABLE)#define clk_is_peripheral (x) ((x)->type & CLK_TYPE_PERIPHERAL)#define clk_is_sys (x) ((x)->type & CLK_TYPE_SYSTEM) +#define clk_is_periph_h64mx (x) ((x)->type & CLK_TYPE_PERIPH_H64MX)/*
@@ -45,7 +46,10 @@#define cpu_has_utmi () ( cpu_is_at91sam9rl() \ || cpu_is_at91sam9g45() \ || cpu_is_at91sam9x5() \ - || cpu_is_sama5d3()) + || cpu_is_sama5d3() \ + || cpu_is_sama5d4()) + +#define cpu_has_1200M_plla () (cpu_is_sama5d4())#define cpu_has_1056M_plla () (cpu_is_sama5d3())
@@ -65,11 +69,13 @@#define cpu_has_pllb () (!(cpu_is_at91sam9rl() \ || cpu_is_at91sam9g45() \ || cpu_is_at91sam9x5() \ - || cpu_is_sama5d3())) + || cpu_is_sama5d3() \ + || cpu_is_sama5d4()))#define cpu_has_upll () (cpu_is_at91sam9g45() \ || cpu_is_at91sam9x5() \ - || cpu_is_sama5d3()) + || cpu_is_sama5d3() \ + || cpu_is_sama5d4())/* USB host HS & FS */ #define cpu_has_uhp () (!cpu_is_at91sam9rl())
@@ -78,23 +84,30 @@#define cpu_has_udpfs () (!(cpu_is_at91sam9rl() \ || cpu_is_at91sam9g45() \ || cpu_is_at91sam9x5() \ - || cpu_is_sama5d3())) + || cpu_is_sama5d3() \ + || cpu_is_sama5d4()))#define cpu_has_plladiv2 () (cpu_is_at91sam9g45() \ || cpu_is_at91sam9x5() \ || cpu_is_at91sam9n12() \ - || cpu_is_sama5d3()) + || cpu_is_sama5d3() \ + || cpu_is_sama5d4())#define cpu_has_mdiv3 () (cpu_is_at91sam9g45() \ || cpu_is_at91sam9x5() \ || cpu_is_at91sam9n12() \ - || cpu_is_sama5d3()) + || cpu_is_sama5d3() \ + || cpu_is_sama5d4())#define cpu_has_alt_prescaler () (cpu_is_at91sam9x5() \ || cpu_is_at91sam9n12() \ - || cpu_is_sama5d3()) + || cpu_is_sama5d3() \ + || cpu_is_sama5d4()) + +#define cpu_has_pcr () (cpu_is_sama5d3() \ + || cpu_is_sama5d4()) -#define cpu_has_pcr () (cpu_is_sama5d3()) +#define cpu_has_dual_matrix () (cpu_is_sama5d4())static LIST_HEAD (clocks);
@@ -214,6 +227,12 @@ struct clk mck = { .pmc_mask = AT91_PMC_MCKRDY, /* in PMC_SR */ }; +struct clk h32mx_clk = { + .name ="h32mx" , + .parent = &mck, + .pmc_mask =AT91_PMC_H32MXDIV ,/* in PMC_MCKR */ +}; +static void pmc_periph_mode (struct clk *clk,int is_on) {u32 regval =0 ;
@@ -455,8 +474,12 @@ static void __init at91_clk_add(struct clk *clk)int clk_register (struct clk *clk) {if (clk_is_peripheral (clk)) { -if (!clk->parent) - clk->parent = &mck; +if (!clk->parent) { +if (!cpu_has_dual_matrix () ||clk_is_periph_h64mx (clk)) + clk->parent = &mck; +else + clk->parent = &h32mx_clk; + }if (cpu_has_pcr ()) clk->rate_hz =DIV_ROUND_UP (clk->parent->rate_hz,1 << clk->div); clk->mode = pmc_periph_mode;
@@ -484,7 +507,7 @@ static u32 at91_pll_rate(struct clk *pll, u32 freq, u32 reg)unsigned mul, div; div = reg &0xff ; -if (cpu_is_sama5d3 ()) +if (cpu_is_sama5d3 () ||cpu_is_sama5d4 ()) mul = (reg >>18 ) &0x7ff ;else mul = (reg >>16 ) &0x7ff ;
@@ -649,7 +672,10 @@ int at91_clock_init(void)/* report if PLLA is more than mildly overclocked */ plla.rate_hz =at91_pll_rate (&plla, main_clock,at91_pmc_read (AT91_CKGR_PLLAR )); -if (cpu_has_1056M_plla ()) { +if (cpu_has_1200M_plla ()) { +if (plla.rate_hz >1200000000 ) + pll_overclock =1 ; + }else if (cpu_has_1056M_plla ()) {if (plla.rate_hz >1056000000 ) pll_overclock =1 ; }else if (cpu_has_300M_plla ()) {
@@ -736,6 +762,12 @@ int at91_clock_init(void) mck.id =4 ; } +if (cpu_has_dual_matrix ()) { +at91_clk_add (&h32mx_clk); + h32mx_clk.rate_hz = h32mx_clk.parent->rate_hz; + h32mx_clk.rate_hz /= (1 << ((mckr &AT91_PMC_H32MXDIV ) >>24 ));/* H32MX divisor by 2 */ + } + cpu_freq = freq;/* Register the PMC's standard clocks */
@@ -756,6 +788,8 @@ int at91_clock_init(void)/* MCK and CPU clock are "always on" */ clk_enable (&mck); +if (cpu_has_dual_matrix ()) +clk_enable (&h32mx_clk);return 0 ; }
arch/arm/mach-at91/clock.h +1 -1
@@ -13,7 +13,7 @@#define CLK_TYPE_PROGRAMMABLE 0x4#define CLK_TYPE_PERIPHERAL 0x8#define CLK_TYPE_SYSTEM 0x10 - +#define CLK_TYPE_PERIPH_H64MX 0x80struct clk {struct list_head node;
arch/arm/mach-at91/include/mach/at91_pmc.h +1 -0
@@ -118,6 +118,7 @@#define AT91_PMC_PLLADIV2 (1 << 12)/* PLLA divisor by 2 [some SAM9 only] */ #define AT91_PMC_PLLADIV2_OFF (0 << 12)#define AT91_PMC_PLLADIV2_ON (1 << 12) +#define AT91_PMC_H32MXDIV (1 << 24)/* AHB 32-bit Matrix Divisor [some SAMA5 only] */ #define AT91_PMC_USB 0x38/* USB Clock Register [some SAM9 only] */ #define AT91_PMC_USBS (0x1 << 0)/* USB OHCI Input clock selection */
arch/arm/mach-at91/include/mach/cpu.h +28 -0
@@ -48,12 +48,19 @@#define ARCH_EXID_AT91SAM9G25 0x00000003#define ARCH_EXID_AT91SAM9X25 0x00000004 +#define ARCH_EXID_SAMA5D3 0x00004300#define ARCH_EXID_SAMA5D31 0x00444300#define ARCH_EXID_SAMA5D33 0x00414300#define ARCH_EXID_SAMA5D34 0x00414301#define ARCH_EXID_SAMA5D35 0x00584300#define ARCH_EXID_SAMA5D36 0x00004301 +#define ARCH_EXID_SAMA5D4 0x00000007 +#define ARCH_EXID_SAMA5D41 0x00000001 +#define ARCH_EXID_SAMA5D42 0x00000002 +#define ARCH_EXID_SAMA5D43 0x00000003 +#define ARCH_EXID_SAMA5D44 0x00000004 +#define ARCH_FAMILY_AT91X92 0x09200000#define ARCH_FAMILY_AT91SAM9 0x01900000#define ARCH_FAMILY_AT91SAM9XE 0x02900000
@@ -85,6 +92,9 @@ enum at91_soc_type {/* SAMA5D3 */ AT91_SOC_SAMA5D3 , +/* SAMA5D4 */ +AT91_SOC_SAMA5D4 , +/* Unknown type */ AT91_SOC_NONE };
@@ -107,6 +117,10 @@ enum at91_soc_subtype {AT91_SOC_SAMA5D31 ,AT91_SOC_SAMA5D33 ,AT91_SOC_SAMA5D34 ,AT91_SOC_SAMA5D35 ,AT91_SOC_SAMA5D36 , +/* SAMA5D4 */ +AT91_SOC_SAMA5D41 ,AT91_SOC_SAMA5D42 ,AT91_SOC_SAMA5D43 , +AT91_SOC_SAMA5D44 , +/* Unknown subtype */ AT91_SOC_SUBTYPE_NONE };
@@ -217,6 +231,20 @@ static inline int at91_soc_is_detected(void)#define cpu_is_sama5d36 () (0)#endif +#ifdef CONFIG_ARCH_SAMA5D4 +#define cpu_is_sama5d4 () (at91_soc_initdata.type == AT91_SOC_SAMA5D4) +#define cpu_is_sama5d41 () (at91_soc_initdata.subtype == AT91_SOC_SAMA5D41) +#define cpu_is_sama5d42 () (at91_soc_initdata.subtype == AT91_SOC_SAMA5D42) +#define cpu_is_sama5d43 () (at91_soc_initdata.subtype == AT91_SOC_SAMA5D43) +#define cpu_is_sama5d44 () (at91_soc_initdata.subtype == AT91_SOC_SAMA5D44) +#else +#define cpu_is_sama5d4 () (0) +#define cpu_is_sama5d41 () (0) +#define cpu_is_sama5d42 () (0) +#define cpu_is_sama5d43 () (0) +#define cpu_is_sama5d44 () (0) +#endif +/* * Since this is ARM, we will never run on any AVR32 CPU. But these * definitions may reduce clutter in common drivers.
arch/arm/mach-at91/include/mach/hardware.h +4 -0
@@ -19,6 +19,8 @@#define AT91_BASE_DBGU0 0xfffff200/* 9263, 9g45 */ #define AT91_BASE_DBGU1 0xffffee00 +/* sama5d4 */ +#define AT91_BASE_DBGU2 0xfc069000#if defined(CONFIG_ARCH_AT91RM9200 )#include <mach/at91rm9200.h>
@@ -38,6 +40,8 @@#include <mach/at91sam9x5.h> #elif defined(CONFIG_ARCH_SAMA5D3 )#include <mach/sama5d3.h> +#elif defined(CONFIG_ARCH_SAMA5D4 ) +#include <mach/sama5d4.h> #elif defined(CONFIG_ARCH_AT91CAP9 )#include <mach/at91cap9.h> #elif defined(CONFIG_ARCH_AT91X40 )
arch/arm/mach-at91/sam9_smc.c +21 -3
@@ -19,7 +19,9 @@#define AT91_SAM9_SMC_CS_STRIDE 0x10#define AT91_SAMA5_SMC_CS_STRIDE 0x14 -#define AT91_SMC_CS_STRIDE ((at91_soc_initdata.type == AT91_SOC_SAMA5D3) ? AT91_SAMA5_SMC_CS_STRIDE : AT91_SAM9_SMC_CS_STRIDE) +#define AT91_SMC_CS_STRIDE ((at91_soc_initdata.type == AT91_SOC_SAMA5D3 \ + || at91_soc_initdata.type == AT91_SOC_SAMA5D4) \ + ? AT91_SAMA5_SMC_CS_STRIDE : AT91_SAM9_SMC_CS_STRIDE)#define AT91_SMC_CS (id, n) (smc_base_addr[id] + ((n) * AT91_SMC_CS_STRIDE))static void __iomem *smc_base_addr[2 ];
@@ -29,7 +31,15 @@ static void sam9_smc_cs_write_mode(void __iomem *base, {void __iomem *mode_reg; - mode_reg = base + ((at91_soc_initdata.type ==AT91_SOC_SAMA5D3 ) ?AT91_SAMA5_SMC_MODE :AT91_SAM9_SMC_MODE ); +switch (at91_soc_initdata.type) { +case AT91_SOC_SAMA5D3 : +case AT91_SOC_SAMA5D4 : + mode_reg = base +AT91_SAMA5_SMC_MODE ; +break ; +default : + mode_reg = base +AT91_SAM9_SMC_MODE ; +break ; + } __raw_writel(config->mode | AT91_SMC_TDF_(config->tdf_cycles),
@@ -95,7 +105,15 @@ static void sam9_smc_cs_read_mode(void __iomem *base,u32 val;void __iomem *mode_reg; - mode_reg = base + ((at91_soc_initdata.type ==AT91_SOC_SAMA5D3 ) ?AT91_SAMA5_SMC_MODE :AT91_SAM9_SMC_MODE ); +switch (at91_soc_initdata.type) { +case AT91_SOC_SAMA5D3 : +case AT91_SOC_SAMA5D4 : + mode_reg = base +AT91_SAMA5_SMC_MODE ; +break ; +default : + mode_reg = base +AT91_SAM9_SMC_MODE ; +break ; + } val =__raw_readl (mode_reg);
arch/arm/mach-at91/setup.c +36 -5
83 lines not on this page · raw message
arch/arm/mach-at91/soc.h +5 -0
@@ -19,6 +19,7 @@ extern struct at91_init_soc at91sam9rl_soc;extern struct at91_init_soc at91sam9x5_soc;extern struct at91_init_soc at91sam9n12_soc;extern struct at91_init_soc at91sama5d3_soc; +extern struct at91_init_soc at91sama5d4_soc;#define AT91_SOC_START (_name) \ struct at91_init_soc __initdata at91##_name##_soc \
@@ -69,3 +70,7 @@ static inline int at91_soc_is_enabled(void)#if !defined(CONFIG_ARCH_SAMA5D3 )#define at91sama5d3_soc at91_boot_soc#endif + +#if !defined(CONFIG_ARCH_SAMA5D4 ) +#define at91sama5d4_soc at91_boot_soc +#endif
Signature · 7 lines
2.1.0.24.g4109c28 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v2 3/4 ARM: at91: add sama5d4 soc support #2
In reply to Bo Shen---
Changes in v2:
- Using clkdev_add_physbase to define GPIO clock.
arch/arm/mach-at91/include/mach/sama5d4.h | 134 ++++++++ arch/arm/mach-at91/sama5d4.c | 304 ++++++++++++++++++ arch/arm/mach-at91/sama5d4_devices.c | 495 ++++++++++++++++++++++++++++++ 3 files changed, 933 insertions(+) create mode 100644 arch/arm/mach-at91/include/mach/sama5d4.h create mode 100644 arch/arm/mach-at91/sama5d4.c create mode 100644 arch/arm/mach-at91/sama5d4_devices.c
arch/arm/mach-at91/include/mach/sama5d4.h new file +134 -0
@@ -0,0 +1,134 @@ +/* +* Chip-specific header file for the SAMA5D4 family +* +* Copyright (C) 2014 Atmel Corporation, +* Bo Shen <[email protected]> +* +* Common definitions. +* Based on SAMA5D4 datasheet. +* +* Licensed under GPLv2 or later. +*/ + +#ifndef SAMA5D4_H +#define SAMA5D4_H + +/* +* Peripheral identifiers/interrupts. +*/ +#define SAMA5D4_ID_PIT 3 +#define SAMA5D4_ID_WDT 4 +#define SAMA5D4_ID_PIOD 5 +#define SAMA5D4_ID_USART0 6 +#define SAMA5D4_ID_USART1 7 +#define SAMA5D4_ID_DMA0 8 +#define SAMA5D4_ID_ICM 9 +#define SAMA5D4_ID_PKCC 10 +#define SAMA5D4_ID_SCI 11 +#define SAMA5D4_ID_AES 12 +#define SAMA5D4_ID_AESB 13 +#define SAMA5D4_ID_TDES 14 +#define SAMA5D4_ID_SHA 15 +#define SAMA5D4_ID_MPDDRC 16 +#define SAMA5D4_ID_MATRIX1 17 +#define SAMA5D4_ID_MATRIX0 18 +#define SAMA5D4_ID_VDEC 19 +#define SAMA5D4_ID_SECUMOD 20 +#define SAMA5D4_ID_MSADCC 21 +#define SAMA5D4_ID_HSMC 22 +#define SAMA5D4_ID_PIOA 23 +#define SAMA5D4_ID_PIOB 24 +#define SAMA5D4_ID_PIOC 25 +#define SAMA5D4_ID_PIOE 26 +#define SAMA5D4_ID_UART0 27 +#define SAMA5D4_ID_UART1 28 +#define SAMA5D4_ID_USART2 29 +#define SAMA5D4_ID_USART3 30 +#define SAMA5D4_ID_USART4 31 +#define SAMA5D4_ID_TWI0 32 +#define SAMA5D4_ID_TWI1 33 +#define SAMA5D4_ID_TWI2 34 +#define SAMA5D4_ID_HSMCI0 35 +#define SAMA5D4_ID_HSMCI1 36 +#define SAMA5D4_ID_SPI0 37 +#define SAMA5D4_ID_SPI1 38 +#define SAMA5D4_ID_SPI2 39 +#define SAMA5D4_ID_TC0 40 +#define SAMA5D4_ID_TC1 41 +#define SAMA5D4_ID_TC2 42 +#define SAMA5D4_ID_PWM 43 +#define SAMA5D4_ID_ADC 44 +#define SAMA5D4_ID_DBGU 45 +#define SAMA5D4_ID_UHPHS 46 +#define SAMA5D4_ID_UDPHS 47 +#define SAMA5D4_ID_SSC0 48 +#define SAMA5D4_ID_SSC1 49 +#define SAMA5D4_ID_DMA1 50 +#define SAMA5D4_ID_LCDC 51 +#define SAMA5D4_ID_ISI 52 +#define SAMA5D4_ID_TRNG 53 +#define SAMA5D4_ID_GMAC0 54 +#define SAMA5D4_ID_IRQ 56 +#define SAMA5D4_ID_IRQ 56 +#define SAMA5D4_ID_SFC 57 +#define SAMA5D4_ID_SECURAM 59 +#define SAMA5D4_ID_CTB 60 +#define SAMA5D4_ID_SMD 61 +#define SAMA5D4_ID_TWI3 62 +#define SAMA5D4_ID_CATB 63 +#define SAMA5D4_ID_SFR 64 +#define SAMA5D4_ID_AIC 65 +#define SAMA5D4_ID_SAIC 66 +#define SAMA5D4_ID_L2CC 67 + +/* +* User Peripheral physical base addresses. +*/ + +#define SAMA5D4_BASE_LCDC 0xf0000000/* (HLCDC5) Base Address */ +#define SAMA5D4_BASE_MPDDRC 0xf0010000/* (MPDDRC) Base Address */ +#define SAMA5D4_BASE_PMC 0xf0018000/* (PMC) Base Address */ +#define SAMA5D4_BASE_HSMCI0 0xf8000000/* (MMCI0) Base Address */ +#define SAMA5D4_BASE_UART0 0xf8004000/* (UART0) Base Address */ +#define SAMA5D4_BASE_SPI0 0xf8010000/* (SPI0) Base Address */ +#define SAMA5D4_BASE_TC0 0xf801c000/* (TC0) Base Address */ +#define SAMA5D4_BASE_GMAC0 0xf8020000/* (GMAC0) Base Address */ +#define SAMA5D4_BASE_USART0 0xf802c000/* (USART0) Base Address */ +#define SAMA5D4_BASE_USART1 0xf8030000/* (USART1) Base Address */ +#define SAMA5D4_BASE_HSMCI1 0xfc000000/* (HSMCI1) Base Address */ +#define SAMA5D4_BASE_UART1 0xfc004000/* (UART1) Base Address */ +#define SAMA5D4_BASE_USART2 0xfc008000/* (USART2) Base Address */ +#define SAMA5D4_BASE_USART3 0xfc00c000/* (USART3) Base Address */ +#define SAMA5D4_BASE_USART4 0xfc010000/* (USART4) Base Address */ +#define SAMA5D4_BASE_SPI1 0xfc018000/* (SPI1) Base Address */ +#define SAMA5D4_BASE_GMAC1 0xfc028000/* (GMAC1) Base Address */ +#define SAMA5D4_BASE_HSMC 0xfc05c000/* (HSMC) Base Address */ +#define SAMA5D4_BASE_PMECC 0xfc05c070/* (PMECC) Base Address */ +#define SAMA5D4_BASE_PMERRLOC 0xfc05c500/* (PMERRLOC) Base Address */ +#define SAMA5D4_BASE_PIOD 0xfc068000/* (PIOD) Base Address */ +#define SAMA5D4_BASE_PIT 0xfc068630/* (PIT) Base Address */ +#define SAMA5D4_BASE_DBGU 0xfc069000/* (DBGU) Base Address */ +#define SAMA5D4_BASE_PIOA 0xfc06a000/* (PIOA) Base Address */ +#define SAMA5D4_BASE_PIOB 0xfc06b000/* (PIOB) Base Address */ +#define SAMA5D4_BASE_PIOC 0xfc06c000/* (PIOC) Base Address */ +#define SAMA5D4_BASE_PIOE 0xfc06d000/* (PIOE) Base Address */ +#define SAMA5D4_BASE_AIC 0xfc06e000/* (AIC) Base Address */ + +#define SAMA5D4_CHIPSELECT_3 0x80000000 + +/* +* Internal Memory. +*/ +#define SAMA5D4_SRAM_BASE 0x00200000/* Internal SRAM base address */ +#define SAMA5D4_SRAM_SIZE (128 * SZ_1K)/* Internal SRAM size */ + +#define AT91_NB_USART 7 +#define AT91_BASE_SYS 0xf0000000 +#define AT91_PMC SAMA5D4_BASE_PMC +#define AT91_DDRSDRC0 (0xf0010000 - AT91_BASE_SYS) +#define AT91_RSTC (0xfc068600 - AT91_BASE_SYS) +#define SAMA5D3_BASE_MPDDRC SAMA5D4_BASE_MPDDRC +#define SAMA5D3_SRAM_BASE SAMA5D4_SRAM_BASE +#define SAMA5D3_SRAM_SIZE SAMA5D4_SRAM_SIZE + +#endif
arch/arm/mach-at91/sama5d4.c new file +304 -0
304 lines not on this page · raw message
arch/arm/mach-at91/sama5d4_devices.c new file +495 -0
495 lines not on this page · raw message
Signature · 7 lines
2.1.0.24.g4109c28 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v2 4/4 ARM: at91: add sama5d4ek board support
In reply to Bo ShenAdd Atmel sama5d4ek board support, which include following features:
- NAND flash support
- SPI flash support
- MMC card support (MCI1)
- LCD display support (with QT1070)
- Ethernet support
---
Changes in v2:
- Add new LED D9.
arch/arm/boards/Makefile | 1 + arch/arm/boards/sama5d4ek/Makefile | 1 + arch/arm/boards/sama5d4ek/env/bin/init_board | 15 ++ arch/arm/boards/sama5d4ek/env/config | 42 ++++ arch/arm/boards/sama5d4ek/sama5d4ek.c | 317 +++++++++++++++++++++++++++ arch/arm/configs/sama5d4ek_defconfig | 85 +++++++ arch/arm/mach-at91/Kconfig | 26 +++ arch/arm/mach-at91/Makefile | 2 + 8 files changed, 489 insertions(+) create mode 100644 arch/arm/boards/sama5d4ek/Makefile create mode 100644 arch/arm/boards/sama5d4ek/env/bin/init_board create mode 100644 arch/arm/boards/sama5d4ek/env/config create mode 100644 arch/arm/boards/sama5d4ek/sama5d4ek.c create mode 100644 arch/arm/configs/sama5d4ek_defconfig
arch/arm/boards/Makefile +1 -0
@@ -92,6 +92,7 @@ obj-$(CONFIG_MACH_SABRELITE) += freescale-mx6-sabrelite/ obj-$(CONFIG_MACH_SABRESD) += freescale-mx6-sabresd/ obj-$(CONFIG_MACH_SAMA5D3XEK) += sama5d3xek/ obj-$(CONFIG_MACH_SAMA5D3_XPLAINED) += sama5d3_xplained/ +obj-$(CONFIG_MACH_SAMA5D4EK) += sama5d4ek/ obj-$(CONFIG_MACH_SCB9328) += scb9328/ obj-$(CONFIG_MACH_SOCFPGA_EBV_SOCRATES) += ebv-socrates/ obj-$(CONFIG_MACH_SOCFPGA_TERASIC_SOCKIT) += terasic-sockit/
arch/arm/boards/sama5d4ek/Makefile new file +1 -0
@@ -0,0 +1 @@ +obj-y += sama5d4ek.o
arch/arm/boards/sama5d4ek/env/bin/init_board new file +15 -0
@@ -0,0 +1,15 @@ +#!/bin/sh + +PATH=/env/bin +export PATH + +. /env/config + +splash=/env/splash.png + +if [ -f ${splash} -a -e /dev/fb0 ]; then + splash -o ${splash} + fb0.enable=1 +fi + +exit 1
arch/arm/boards/sama5d4ek/env/config new file +42 -0
42 lines not on this page · raw message
arch/arm/boards/sama5d4ek/sama5d4ek.c new file +317 -0
317 lines not on this page · raw message
arch/arm/configs/sama5d4ek_defconfig new file +85 -0
85 lines not on this page · raw message
arch/arm/mach-at91/Kconfig +26 -0
@@ -6,6 +6,9 @@ config HAVE_AT91_DBGU0 config HAVE_AT91_DBGU1 bool +config HAVE_AT91_DBGU2 + bool + config HAVE_AT91_LOWLEVEL_INIT bool
@@ -168,6 +171,13 @@ config ARCH_SAMA5D3 select HAS_MACB select AT91SAM9G45_RESET +config ARCH_SAMA5D4 + bool "SAMA5D4" + select SOC_SAMA5 + select HAVE_AT91_DBGU2 + select HAS_MACB + select AT91SAM9G45_RESET + endchoice config ARCH_BAREBOX_MAX_BARE_INIT_SIZE
@@ -472,6 +482,22 @@ endif # ---------------------------------------------------------- +if ARCH_SAMA5D4 + +choice + prompt "SAMA5D4 Board Type" + +config MACH_SAMA5D4EK + bool "Atmel SAMA5D4 Evaluation Kit" + help + Select this if you are using Atmel's SAMA5D4-EK Evaluation Kit. + +endchoice + +endif + +# ---------------------------------------------------------- + comment "AT91 Board Options" config MTD_AT91_DATAFLASH_CARD
arch/arm/mach-at91/Makefile +2 -0
@@ -12,6 +12,7 @@ lowlevel_init-$(CONFIG_SOC_AT91SAM9X5) += at91sam9x5_lowlevel_init.o lowlevel_init-$(CONFIG_SOC_AT91SAM9N12) += at91sam9n12_lowlevel_init.o lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.o lowlevel_init-$(CONFIG_ARCH_SAMA5D3) += sama5d3_lowlevel_init.o +lowlevel_init-$(CONFIG_ARCH_SAMA5D4) += sama5d3_lowlevel_init.o lwl-y += $(lowlevel_init-y) obj-$(CONFIG_AT91SAM9_RESET) += at91sam9_reset.o
@@ -31,3 +32,4 @@ obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam9g45_devices.o obj-$(CONFIG_ARCH_AT91SAM9X5) += at91sam9x5.o at91sam9x5_devices.o obj-$(CONFIG_ARCH_AT91SAM9N12) += at91sam9n12.o at91sam9n12_devices.o obj-$(CONFIG_ARCH_SAMA5D3) += sama5d3.o sama5d3_devices.o +obj-$(CONFIG_ARCH_SAMA5D4) += sama5d4.o sama5d4_devices.o
Signature · 7 lines
2.1.0.24.g4109c28 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Sascha Hauer
AppliedQuoted 9 lines · Bo Shen
This patch series add Atmel new SoC SAMA5D4 support, which embedded the Cortex-A5 core.
This patch series also add the EK board base on SAMA5D4 SoC support.Changes in v2:
- Usingclkdev_add_physbasefor GPIO clock.
- Using multi line for #define which make it readable.
- Correct the configuration for GEM with only FE feature enable.
Quoted 5 lines
Bo Shen (4):
net: macb: enable GEM with only FE feature
ARM: at91: add sama5d4 soc support #1
ARM: at91: add sama5d4 soc support #2
ARM: at91: add sama5d4ek board support
Applied, thanks
Sascha
Quoted 35 lines
arch/arm/boards/Makefile | 1 + arch/arm/boards/sama5d4ek/Makefile | 1 + arch/arm/boards/sama5d4ek/env/bin/init_board | 15 + arch/arm/boards/sama5d4ek/env/config | 42 +++ arch/arm/boards/sama5d4ek/sama5d4ek.c | 317 +++++++++++++++++ arch/arm/configs/sama5d4ek_defconfig | 85 +++++ arch/arm/mach-at91/Kconfig | 26 ++ arch/arm/mach-at91/Makefile | 2 + arch/arm/mach-at91/clock.c | 58 +++- arch/arm/mach-at91/clock.h | 2 +- arch/arm/mach-at91/include/mach/at91_pmc.h | 1 + arch/arm/mach-at91/include/mach/cpu.h | 28 ++ arch/arm/mach-at91/include/mach/hardware.h | 4 + arch/arm/mach-at91/include/mach/sama5d4.h | 134 ++++++++ arch/arm/mach-at91/sam9_smc.c | 24 +- arch/arm/mach-at91/sama5d4.c | 304 ++++++++++++++++ arch/arm/mach-at91/sama5d4_devices.c | 495 +++++++++++++++++++++++++++ arch/arm/mach-at91/setup.c | 41 ++- arch/arm/mach-at91/soc.h | 5 + drivers/net/macb.c | 6 +- 20 files changed, 1568 insertions(+), 23 deletions(-) create mode 100644 arch/arm/boards/sama5d4ek/Makefile create mode 100644 arch/arm/boards/sama5d4ek/env/bin/init_board create mode 100644 arch/arm/boards/sama5d4ek/env/config create mode 100644 arch/arm/boards/sama5d4ek/sama5d4ek.c create mode 100644 arch/arm/configs/sama5d4ek_defconfig create mode 100644 arch/arm/mach-at91/include/mach/sama5d4.h create mode 100644 arch/arm/mach-at91/sama5d4.c create mode 100644 arch/arm/mach-at91/sama5d4_devices.cSignature · 1 line
2.1.0.24.g4109c28
Signature · 9 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox