Discussion:
[PATCH v2 0/23] at91: move reset vector to board code
Sam Ravnborg
2017-07-07 12:10:00 UTC
Permalink
The following patchset moves the reset vector
for at91 boards from mach-at91 to board code.
This is similar to what other boards do and is done to
prepare for multi-image and DT support.

The patchset convert all boards and thus clean up the
old code that resided in mach-at91/

The first patch have minimal impact, but prepares for a
board-by-board conversion.
All temporary CONFIG symbols are gone at the end of this series.

I kept Jean-Christophe PLAGNIOL-VILLARD and others
copyright in all the created files and did not add
copyright myself. The patchset does IMO not add any
copyrightable material from my side as this is
in reality just moving around code.

The patchset was successfully booted on a AT91SAM9263EK,
and all defconfigs was built (expect the ones that failed
to build before this patchset was applied).

Changes v1 => v2
- converted all boards over
- fixed author info

Sam


Sam Ravnborg (23):
at91: refactor lowlevel_init selection
at91: drop unused at91sam9x5_lowlevel_init.c
at91sam9263ek: move reset vector to board code
at91sam9261ek, at91sam9g10ek: move reset vector to board code
pm9261: move reset vector to board code
at91: drop unused at91sam9261_lowlevel_init
mmccpu: move reset vector to board code
pm9263: move reset vector to board code
usb-a926x: move reset vector to board code
at91: delete at91sam926x_lowlevel_init
tny-a926x: move reset vector to board code
qil-a926x: move reset vector to board code
haba-knx: move reset vector to board code
at91: delete unused at91sam9263_lowlevel_init.c
sama5d{3,4}{xek,xplained}: move reset vector to board code
at91sam{9260,9G20,9m10g45,9n12}ek: move reset vector to board code
at91rm9200ek: move reset vector to board code
at91sam9m10ihd: move reset vector to board code
pm9g45: move reset vector to board code
animeo: move reset vector to board code
dss11: move reset vector to board code
telit-evk-pro3: move reset vector to board code
at91: remove leftovers from reset code in mach-at91

arch/arm/boards/animeo_ip/Makefile | 1 +
arch/arm/boards/animeo_ip/lowlevel.c | 26 ++++
arch/arm/boards/at91rm9200ek/Makefile | 1 +
.../at91rm9200ek/lowlevel.c} | 16 +--
arch/arm/boards/at91sam9260ek/Makefile | 1 +
arch/arm/boards/at91sam9260ek/lowlevel.c | 26 ++++
arch/arm/boards/at91sam9261ek/Makefile | 2 +-
arch/arm/boards/at91sam9261ek/lowlevel_init.c | 41 +++++--
arch/arm/boards/at91sam9263ek/Makefile | 2 +-
arch/arm/boards/at91sam9263ek/lowlevel_init.c | 43 +++++--
arch/arm/boards/at91sam9m10g45ek/Makefile | 1 +
.../at91sam9m10g45ek/lowlevel.c} | 11 +-
arch/arm/boards/at91sam9m10ihd/Makefile | 2 +
.../at91sam9m10ihd/lowlevel.c} | 19 ++-
arch/arm/boards/at91sam9n12ek/Makefile | 1 +
.../at91sam9n12ek/lowlevel.c} | 13 +-
arch/arm/boards/dss11/Makefile | 1 +
arch/arm/boards/dss11/lowlevel.c | 26 ++++
arch/arm/boards/haba-knx/Makefile | 3 +
arch/arm/boards/haba-knx/lowlevel.c | 26 ++++
arch/arm/boards/mmccpu/Makefile | 2 +-
arch/arm/boards/mmccpu/lowlevel.c | 26 ++++
arch/arm/boards/mmccpu/lowlevel_init.c | 135 ---------------------
arch/arm/boards/pm9261/Makefile | 2 +-
arch/arm/boards/pm9261/lowlevel_init.c | 39 ++++--
arch/arm/boards/pm9263/Makefile | 2 +-
arch/arm/boards/pm9263/lowlevel_init.c | 43 +++++--
arch/arm/boards/pm9g45/Makefile | 1 +
arch/arm/boards/pm9g45/lowlevel.c | 24 ++++
arch/arm/boards/qil-a926x/Makefile | 3 +
arch/arm/boards/qil-a926x/lowlevel.c | 26 ++++
arch/arm/boards/sama5d3_xplained/Makefile | 1 +
.../sama5d3_xplained/lowlevel.c} | 10 +-
arch/arm/boards/sama5d3xek/Makefile | 1 +
arch/arm/boards/sama5d3xek/lowlevel.c | 23 ++++
arch/arm/boards/sama5d4_xplained/Makefile | 1 +
arch/arm/boards/sama5d4_xplained/lowlevel.c | 23 ++++
arch/arm/boards/sama5d4ek/Makefile | 1 +
arch/arm/boards/sama5d4ek/lowlevel.c | 23 ++++
arch/arm/boards/telit-evk-pro3/Makefile | 1 +
arch/arm/boards/telit-evk-pro3/lowlevel.c | 26 ++++
arch/arm/boards/tny-a926x/Makefile | 9 +-
arch/arm/boards/tny-a926x/tny_a9260_lowlevel.c | 26 ++++
arch/arm/boards/tny-a926x/tny_a9263_lowlevel.c | 26 ++++
.../arm/boards/tny-a926x/tny_a9263_lowlevel_init.c | 107 ----------------
arch/arm/boards/usb-a926x/Makefile | 8 +-
arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c | 26 ++++
..._a9263_lowlevel_init.c => usb_a9263_lowlevel.c} | 43 +++++--
arch/arm/mach-at91/Kconfig | 22 ++--
arch/arm/mach-at91/Makefile | 12 --
arch/arm/mach-at91/at91sam9260_lowlevel_init.c | 48 --------
arch/arm/mach-at91/at91sam9261_lowlevel_init.c | 48 --------
arch/arm/mach-at91/at91sam9263_lowlevel_init.c | 48 --------
.../mach-at91/include/mach/at91_lowlevel_init.h | 46 -------
.../mach/at91sam926x_board_init.h} | 63 ++++++----
55 files changed, 622 insertions(+), 585 deletions(-)
Sam Ravnborg
2017-07-07 12:12:21 UTC
Permalink
After the refactoring of how we select lowlevel_init
it was easy to see that at91sam9x5_lowlevel_init.c was no
longer used.
Delete the file and the now unused CONFIG symbol and it uses

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/mach-at91/Kconfig | 2 --
arch/arm/mach-at91/Makefile | 1 -
arch/arm/mach-at91/at91sam9x5_lowlevel_init.c | 26 --------------------------
3 files changed, 29 deletions(-)
delete mode 100644 arch/arm/mach-at91/at91sam9x5_lowlevel_init.c

diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 37907b217..970ee07b1 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -47,8 +47,6 @@ config AT91SAM9263_LWL
bool
config AT91SAM9G45_LWL
bool
-config AT91SAM9X5_LWL
- bool
config AT91SAM9N12_LWL
bool
config AT91RM9200_LWL
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 5516b5f4f..f683d0f65 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -14,7 +14,6 @@ lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9261_LWL) += at91sam9261_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9263_LWL) += at91sam9263_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9G45_LWL) += at91sam9g45_lowlevel_init.o
-lwl-$(CONFIG_AT91SAM9X5_LWL) += at91sam9x5_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9N12_LWL) += at91sam9n12_lowlevel_init.o
lwl-$(CONFIG_AT91RM9200_LWL) += at91rm9200_lowlevel_init.o
lwl-$(CONFIG_SAMA5D3_LWL) += sama5d3_lowlevel_init.o
diff --git a/arch/arm/mach-at91/at91sam9x5_lowlevel_init.c b/arch/arm/mach-at91/at91sam9x5_lowlevel_init.c
deleted file mode 100644
index 48e69f947..000000000
--- a/arch/arm/mach-at91/at91sam9x5_lowlevel_init.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
- *
- * Under GPLv2
- */
-
-#define __LOWLEVEL_INIT__
-
-#include <common.h>
-#include <asm/system.h>
-#include <asm/barebox-arm.h>
-#include <asm/barebox-arm-head.h>
-#include <mach/hardware.h>
-#include <mach/io.h>
-#include <mach/at91sam9_ddrsdr.h>
-#include <init.h>
-#include <linux/sizes.h>
-
-void __naked __bare_init barebox_arm_reset_vector(void)
-{
- arm_cpu_lowlevel_init();
-
- arm_setup_stack(AT91SAM9X5_SRAM_BASE + AT91SAM9X5_SRAM_SIZE - 16);
-
- barebox_arm_entry(AT91_CHIPSELECT_1, at91sam9x5_get_ddram_size(), NULL);
-}
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:24 UTC
Permalink
Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/pm9261/lowlevel_init.c | 39 +++++++++++++++++++++++++---------
arch/arm/mach-at91/Kconfig | 2 --
2 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/arch/arm/boards/pm9261/lowlevel_init.c b/arch/arm/boards/pm9261/lowlevel_init.c
index 91a64b415..a4cb8af69 100644
--- a/arch/arm/boards/pm9261/lowlevel_init.c
+++ b/arch/arm/boards/pm9261/lowlevel_init.c
@@ -4,22 +4,16 @@
* Under GPLv2
*/

-#include <common.h>
-#include <init.h>
-#include <mach/hardware.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91sam9_sdramc.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam926x_board_init.h>
#include <mach/at91sam9_matrix.h>
-#include <mach/at91_lowlevel_init.h>

#define MASTER_PLL_DIV 15
#define MASTER_PLL_MUL 162
#define MAIN_PLL_DIV 2

-void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg)
+static void __bare_init pm9261_board_config(struct at91sam926x_board_cfg *cfg)
{
/* Disable Watchdog */
cfg->wdt_mr =
@@ -100,3 +94,28 @@ void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_c
AT91_RSTC_RSTTYP_WAKEUP |
AT91_RSTC_RSTTYP_WATCHDOG;
}
+
+static void __bare_init pm9261_init(void)
+{
+ struct at91sam926x_board_cfg cfg;
+
+ cfg.pio = IOMEM(AT91SAM9261_BASE_PIOC);
+ cfg.sdramc = IOMEM(AT91SAM9261_BASE_SDRAMC);
+ cfg.ebi_pio_is_peripha = false;
+ cfg.matrix_csa = AT91_MATRIX_EBICSA;
+
+ pm9261_board_config(&cfg);
+ at91sam926x_board_init(&cfg);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc),
+ NULL);
+}
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9261_SRAM_BASE + AT91SAM9261_SRAM_SIZE - 16);
+
+ pm9261_init();
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 6ae794f06..3e41fe70d 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -339,8 +339,6 @@ config MACH_PM9261
bool "Ronetix PM9261"
select HAS_DM9000
select HAVE_AT91_BOOTSTRAP
- select AT91SAM9261_LWL
- select AT91SAM926X_LWL
help
Say y here if you are using the Ronetix PM9261 Board
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:23 UTC
Permalink
The two evaluation boards share the same board code.

Drop obsolete select of CONFIG symbols
Simplify Makefile

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/at91sam9261ek/Makefile | 2 +-
arch/arm/boards/at91sam9261ek/lowlevel_init.c | 41 ++++++++++++++++++++-------
arch/arm/mach-at91/Kconfig | 3 --
3 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/arch/arm/boards/at91sam9261ek/Makefile b/arch/arm/boards/at91sam9261ek/Makefile
index 667095ae4..e7a9cde41 100644
--- a/arch/arm/boards/at91sam9261ek/Makefile
+++ b/arch/arm/boards/at91sam9261ek/Makefile
@@ -1,4 +1,4 @@
obj-y += init.o

-lwl-$(CONFIG_AT91SAM926X_LWL) += lowlevel_init.o
+lwl-y += lowlevel_init.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9261ek
diff --git a/arch/arm/boards/at91sam9261ek/lowlevel_init.c b/arch/arm/boards/at91sam9261ek/lowlevel_init.c
index 056584166..c4e4957ca 100644
--- a/arch/arm/boards/at91sam9261ek/lowlevel_init.c
+++ b/arch/arm/boards/at91sam9261ek/lowlevel_init.c
@@ -4,16 +4,10 @@
* Under GPLv2
*/

-#include <common.h>
-#include <init.h>
-#include <mach/hardware.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91_lowlevel_init.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam926x_board_init.h>
+#include <mach/at91sam9261_matrix.h>

#define MASTER_CLOCK 200

@@ -25,7 +19,7 @@
#define MASTER_PLL_DIV 1
#endif

-void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg)
+static void __bare_init at91sam9261ek_board_config(struct at91sam926x_board_cfg *cfg)
{
/* Disable Watchdog */
cfg->wdt_mr =
@@ -106,3 +100,28 @@ void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_c
AT91_RSTC_RSTTYP_WAKEUP |
AT91_RSTC_RSTTYP_WATCHDOG;
}
+
+static void __bare_init at91sam9261ek_init(void)
+{
+ struct at91sam926x_board_cfg cfg;
+
+ cfg.pio = IOMEM(AT91SAM9261_BASE_PIOC);
+ cfg.sdramc = IOMEM(AT91SAM9261_BASE_SDRAMC);
+ cfg.ebi_pio_is_peripha = false;
+ cfg.matrix_csa = AT91_MATRIX_EBICSA;
+
+ at91sam9261ek_board_config(&cfg);
+ at91sam926x_board_init(&cfg);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc),
+ NULL);
+}
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9261_SRAM_BASE + AT91SAM9261_SRAM_SIZE - 16);
+
+ at91sam9261ek_init();
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 99a8fdeb2..6ae794f06 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -331,8 +331,6 @@ config MACH_AT91SAM9261EK
select HAVE_AT91_DATAFLASH_CARD
select HAVE_NAND_ATMEL_BUSWIDTH_16
select HAVE_AT91_BOOTSTRAP
- select AT91SAM9261_LWL
- select AT91SAM926X_LWL
help
Select this if you are using Atmel's AT91SAM9261-EK Evaluation Kit.
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3820>
@@ -361,7 +359,6 @@ config MACH_AT91SAM9G10EK
bool "Atmel AT91SAM9G10-EK Evaluation Kit"
select HAVE_NAND_ATMEL_BUSWIDTH_16
select HAS_DM9000
- select AT91SAM9261_LWL
help
Select this if you are using Atmel's AT91SAM9G10-EK Evaluation Kit.
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4588>
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:22 UTC
Permalink
Create a new file at91sam926x_board_init.h which
is a copy of at91sam926x_lowlevel_init.c with a few minor
adjustments:
- We no longer call board code from this function
- The struct is renamed to avoid name clashes
- the function is rename to better match the prurpose

This file will be used in subsequent transformations

Otherwise just added the reset vector to the board code
and drop the now obsolete CONFIG selectst

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/at91sam9263ek/lowlevel_init.c | 43 ++--
arch/arm/mach-at91/Kconfig | 2 -
.../include/mach/at91sam926x_board_init.h | 220 +++++++++++++++++++++
3 files changed, 252 insertions(+), 13 deletions(-)
create mode 100644 arch/arm/mach-at91/include/mach/at91sam926x_board_init.h

diff --git a/arch/arm/boards/at91sam9263ek/lowlevel_init.c b/arch/arm/boards/at91sam9263ek/lowlevel_init.c
index 2f8b312d3..70e0da3b1 100644
--- a/arch/arm/boards/at91sam9263ek/lowlevel_init.c
+++ b/arch/arm/boards/at91sam9263ek/lowlevel_init.c
@@ -4,21 +4,17 @@
* Under GPLv2
*/

-#include <common.h>
-#include <init.h>
-#include <mach/hardware.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91_lowlevel_init.h>
+#include <linux/sizes.h>
+
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam926x_board_init.h>
+#include <mach/at91sam9263_matrix.h>

#define MASTER_PLL_MUL 171
#define MASTER_PLL_DIV 14

-void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg)
+static void __bare_init at91sam9263ek_board_config(struct at91sam926x_board_cfg *cfg)
{
/* Disable Watchdog */
cfg->wdt_mr =
@@ -102,3 +98,28 @@ void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_c
AT91_RSTC_RSTTYP_WAKEUP |
AT91_RSTC_RSTTYP_WATCHDOG;
}
+
+static void __bare_init at91sam9263ek_init(void)
+{
+ struct at91sam926x_board_cfg cfg;
+
+ cfg.pio = IOMEM(AT91SAM9263_BASE_PIOD);
+ cfg.sdramc = IOMEM(AT91SAM9263_BASE_SDRAMC0);
+ cfg.ebi_pio_is_peripha = true;
+ cfg.matrix_csa = AT91_MATRIX_EBI0CSA;
+
+ at91sam9263ek_board_config(&cfg);
+ at91sam926x_board_init(&cfg);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc),
+ NULL);
+}
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9263_SRAM0_BASE + AT91SAM9263_SRAM0_SIZE - 16);
+
+ at91sam9263ek_init();
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 970ee07b1..99a8fdeb2 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -437,8 +437,6 @@ config MACH_AT91SAM9263EK
bool "Atmel AT91SAM9263-EK"
select HAVE_NAND_ATMEL_BUSWIDTH_16
select HAVE_AT91_BOOTSTRAP
- select AT91SAM9263_LWL
- select AT91SAM926X_LWL
help
Say y here if you are using Atmel's AT91SAM9263-EK Evaluation board

diff --git a/arch/arm/mach-at91/include/mach/at91sam926x_board_init.h b/arch/arm/mach-at91/include/mach/at91sam926x_board_init.h
new file mode 100644
index 000000000..11959ae07
--- /dev/null
+++ b/arch/arm/mach-at91/include/mach/at91sam926x_board_init.h
@@ -0,0 +1,220 @@
+#ifndef __AT91SAM926X_BOARD_INIT_H__
+#define __AT91SAM926X_BOARD_INIT_H__
+/*
+ * Copyright (C) 2008 Ronetix Ilko Iliev (www.ronetix.at)
+ * Copyright (C) 2009-2011 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9_smc.h>
+#include <mach/at91_rstc.h>
+#include <mach/at91_pio.h>
+#include <mach/at91_pmc.h>
+#include <mach/at91_wdt.h>
+#include <mach/hardware.h>
+#include <mach/gpio.h>
+
+struct at91sam926x_board_cfg {
+ /* SoC specific */
+ void __iomem *pio;
+ void __iomem *sdramc;
+ u32 ebi_pio_is_peripha;
+ u32 matrix_csa;
+
+ /* board specific */
+ u32 wdt_mr;
+ u32 ebi_pio_pdr;
+ u32 ebi_pio_ppudr;
+ u32 ebi_csa;
+ u32 smc_cs;
+ u32 smc_mode;
+ u32 smc_cycle;
+ u32 smc_pulse;
+ u32 smc_setup;
+ u32 pmc_mor;
+ u32 pmc_pllar;
+ u32 pmc_mckr1;
+ u32 pmc_mckr2;
+ u32 sdrc_cr;
+ u32 sdrc_tr1;
+ u32 sdrc_mdr;
+ u32 sdrc_tr2;
+ u32 rstc_rmr;
+};
+
+
+static void inline access_sdram(void)
+{
+ writel(0x00000000, AT91_SDRAM_BASE);
+}
+
+static void inline pmc_check_mckrdy(void)
+{
+ u32 r;
+
+ do {
+ r = at91_pmc_read(AT91_PMC_SR);
+ } while (!(r & AT91_PMC_MCKRDY));
+}
+
+static int inline running_in_sram(void)
+{
+ u32 addr = get_pc();
+
+ addr >>= 28;
+ return addr == 0;
+}
+
+#define at91_sdramc_read(field) \
+ __raw_readl(cfg->sdramc + field)
+
+#define at91_sdramc_write(field, value) \
+ __raw_writel(value, cfg->sdramc + field)
+
+static void inline __bare_init at91sam926x_sdramc_init(struct at91sam926x_board_cfg *cfg)
+{
+ u32 r;
+ int i;
+ int in_sram = running_in_sram();
+
+ /*
+ * SDRAMC Check if Refresh Timer Counter is already initialized
+ */
+ r = at91_sdramc_read(AT91_SDRAMC_TR);
+ if (r && !in_sram)
+ return;
+
+ /* SDRAMC_MR : Normal Mode */
+ at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_NORMAL);
+
+ /* SDRAMC_TR - Refresh Timer register */
+ at91_sdramc_write(AT91_SDRAMC_TR, cfg->sdrc_tr1);
+
+ /* SDRAMC_CR - Configuration register*/
+ at91_sdramc_write(AT91_SDRAMC_CR, cfg->sdrc_cr);
+
+ /* Memory Device Type */
+ at91_sdramc_write(AT91_SDRAMC_MDR, cfg->sdrc_mdr);
+
+ /* SDRAMC_MR : Precharge All */
+ at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_PRECHARGE);
+
+ /* access SDRAM */
+ access_sdram();
+
+ /* SDRAMC_MR : refresh */
+ at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_REFRESH);
+
+ /* access SDRAM 8 times */
+ for (i = 0; i < 8; i++)
+ access_sdram();
+
+ /* SDRAMC_MR : Load Mode Register */
+ at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_LMR);
+
+ /* access SDRAM */
+ access_sdram();
+
+ /* SDRAMC_MR : Normal Mode */
+ at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_NORMAL);
+
+ /* access SDRAM */
+ access_sdram();
+
+ /* SDRAMC_TR : Refresh Timer Counter */
+ at91_sdramc_write(AT91_SDRAMC_TR, cfg->sdrc_tr2);
+
+ /* access SDRAM */
+ access_sdram();
+}
+
+static void inline __bare_init at91sam926x_board_init(struct at91sam926x_board_cfg *cfg)
+{
+ u32 r;
+ int in_sram = running_in_sram();
+
+ __raw_writel(cfg->wdt_mr, AT91_BASE_WDT + AT91_WDT_MR);
+
+ /* configure PIOx as EBI0 D[16-31] */
+ at91_mux_gpio_disable(cfg->pio, cfg->ebi_pio_pdr);
+ at91_mux_set_pullup(cfg->pio, cfg->ebi_pio_ppudr, true);
+ if (cfg->ebi_pio_is_peripha)
+ at91_mux_set_A_periph(cfg->pio, cfg->ebi_pio_ppudr);
+
+ at91_sys_write(cfg->matrix_csa, cfg->ebi_csa);
+
+ /* flash */
+ at91_smc_write(cfg->smc_cs, AT91_SAM9_SMC_MODE, cfg->smc_mode);
+
+ at91_smc_write(cfg->smc_cs, AT91_SMC_CYCLE, cfg->smc_cycle);
+
+ at91_smc_write(cfg->smc_cs, AT91_SMC_PULSE, cfg->smc_pulse);
+
+ at91_smc_write(cfg->smc_cs, AT91_SMC_SETUP, cfg->smc_setup);
+
+ /*
+ * PMC Check if the PLL is already initialized
+ */
+ r = at91_pmc_read(AT91_PMC_MCKR);
+ if (r & AT91_PMC_CSS && !in_sram)
+ return;
+
+ /*
+ * Enable the Main Oscillator
+ */
+ at91_pmc_write(AT91_CKGR_MOR, cfg->pmc_mor);
+
+ do {
+ r = at91_pmc_read(AT91_PMC_SR);
+ } while (!(r & AT91_PMC_MOSCS));
+
+ /*
+ * PLLAR: x MHz for PCK
+ */
+ at91_pmc_write(AT91_CKGR_PLLAR, cfg->pmc_pllar);
+
+ do {
+ r = at91_pmc_read(AT91_PMC_SR);
+ } while (!(r & AT91_PMC_LOCKA));
+
+ /*
+ * PCK/x = MCK Master Clock from SLOW
+ */
+ at91_pmc_write(AT91_PMC_MCKR, cfg->pmc_mckr1);
+
+ pmc_check_mckrdy();
+
+ /*
+ * PCK/x = MCK Master Clock from PLLA
+ */
+ at91_pmc_write(AT91_PMC_MCKR, cfg->pmc_mckr2);
+
+ pmc_check_mckrdy();
+
+ /*
+ * Init SDRAM
+ */
+ at91sam926x_sdramc_init(cfg);
+
+ /* User reset enable*/
+ at91_sys_write(AT91_RSTC_MR, cfg->rstc_rmr);
+
+#ifdef CONFIG_SYS_MATRIX_MCFG_REMAP
+ /* MATRIX_MCFG - REMAP all masters */
+ at91_sys_write(AT91_MATRIX_MCFG0, 0x1FF);
+#endif
+ /*
+ * When boot from external boot
+ * we need to enable mck and ohter clock
+ * so enable all of them
+ * We will shutdown what we don't need later
+ */
+ at91_pmc_write(AT91_PMC_PCER, 0xffffffff);
+}
+
+#endif /* __AT91SAM926X_BOARD_INIT_H__ */
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:20 UTC
Permalink
Push selection of lowlevel_init functions out to the individual
boards.
Pushing it to the individual boards allows us on a per board basis
to migrate to a design where the mach-at91 code no longer
calls the board specific code.

When the dependency mach-at91 => boards is dropped for
a board the migration to a multi-image setup is one step closer.

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/at91sam9261ek/Makefile | 2 +-
arch/arm/boards/at91sam9263ek/Makefile | 2 +-
arch/arm/boards/mmccpu/Makefile | 2 +-
arch/arm/boards/pm9261/Makefile | 2 +-
arch/arm/boards/pm9263/Makefile | 2 +-
arch/arm/boards/tny-a926x/Makefile | 8 +--
arch/arm/boards/usb-a926x/Makefile | 6 +-
arch/arm/mach-at91/Kconfig | 81 ++++++++++++++++++----
arch/arm/mach-at91/Makefile | 24 +++----
.../mach-at91/include/mach/at91_lowlevel_init.h | 2 +-
10 files changed, 91 insertions(+), 40 deletions(-)

diff --git a/arch/arm/boards/at91sam9261ek/Makefile b/arch/arm/boards/at91sam9261ek/Makefile
index 1764da93f..667095ae4 100644
--- a/arch/arm/boards/at91sam9261ek/Makefile
+++ b/arch/arm/boards/at91sam9261ek/Makefile
@@ -1,4 +1,4 @@
obj-y += init.o

-lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += lowlevel_init.o
+lwl-$(CONFIG_AT91SAM926X_LWL) += lowlevel_init.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9261ek
diff --git a/arch/arm/boards/at91sam9263ek/Makefile b/arch/arm/boards/at91sam9263ek/Makefile
index 2072cd416..de4d75690 100644
--- a/arch/arm/boards/at91sam9263ek/Makefile
+++ b/arch/arm/boards/at91sam9263ek/Makefile
@@ -1,4 +1,4 @@
obj-y += init.o

-lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += lowlevel_init.o
+lwl-y += lowlevel_init.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9263ek
diff --git a/arch/arm/boards/mmccpu/Makefile b/arch/arm/boards/mmccpu/Makefile
index 1398c26a0..a34efd541 100644
--- a/arch/arm/boards/mmccpu/Makefile
+++ b/arch/arm/boards/mmccpu/Makefile
@@ -1,3 +1,3 @@
obj-y += init.o

-lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += lowlevel_init.o
+lwl-n += lowlevel_init.o
diff --git a/arch/arm/boards/pm9261/Makefile b/arch/arm/boards/pm9261/Makefile
index bff467b1d..e9bf1212f 100644
--- a/arch/arm/boards/pm9261/Makefile
+++ b/arch/arm/boards/pm9261/Makefile
@@ -1,4 +1,4 @@
obj-y += init.o

-lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += lowlevel_init.o
+lwl-y += lowlevel_init.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-pm9261
diff --git a/arch/arm/boards/pm9263/Makefile b/arch/arm/boards/pm9263/Makefile
index 1398c26a0..68bfbfa92 100644
--- a/arch/arm/boards/pm9263/Makefile
+++ b/arch/arm/boards/pm9263/Makefile
@@ -1,3 +1,3 @@
obj-y += init.o

-lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += lowlevel_init.o
+lwl-y += lowlevel_init.o
diff --git a/arch/arm/boards/tny-a926x/Makefile b/arch/arm/boards/tny-a926x/Makefile
index dba2f8cfc..5dee09a11 100644
--- a/arch/arm/boards/tny-a926x/Makefile
+++ b/arch/arm/boards/tny-a926x/Makefile
@@ -1,9 +1,7 @@
obj-y += init.o

-bootstrap-$(CONFIG_MACH_TNY_A9263) = tny_a9263_bootstrap.o
-obj-$(CONFIG_AT91_BOOTSTRAP) += $(bootstrap-y)
+obj-$(CONFIG_AT91_BOOTSTRAP) += tny_a9263_bootstrap.o

-lowlevel_init-$(CONFIG_MACH_TNY_A9263) = tny_a9263_lowlevel_init.o
-
-lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += $(lowlevel_init-y)
+# Not used, documented by an -n assignment
+lwl-n += tny_a9263_lowlevel_init.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-tny-a926x
diff --git a/arch/arm/boards/usb-a926x/Makefile b/arch/arm/boards/usb-a926x/Makefile
index 4f09581e3..a4eae1844 100644
--- a/arch/arm/boards/usb-a926x/Makefile
+++ b/arch/arm/boards/usb-a926x/Makefile
@@ -1,9 +1,7 @@
obj-y += init.o

-bootstrap-$(CONFIG_MACH_USB_A9263) = usb_a9263_bootstrap.o
-obj-$(CONFIG_AT91_BOOTSTRAP) += $(bootstrap-y)
+obj-$(CONFIG_AT91_BOOTSTRAP) += usb_a9263_bootstrap.o

-lowlevel_init-$(CONFIG_MACH_USB_A9263) = usb_a9263_lowlevel_init.o
+lwl-$(CONFIG_AT91SAM926X_LWL) += usb_a9263_lowlevel_init.o

-lwl-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) += $(lowlevel_init-y)
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-usb-a926x
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 9db53b226..37907b217 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -29,7 +29,33 @@ config HAVE_AT91_H32MX
config HAVE_AT91_GENERATED_CLK
bool

-config HAVE_AT91_LOWLEVEL_INIT
+# Select if board support bootstrap
+config HAVE_AT91_BOOTSTRAP
+ bool
+
+# Select is board uses the common at91sam926x_lowlevel_init
+config AT91SAM926X_LWL
+ bool
+
+# Select if board uses barebox reset vector from mach-at91
+# as implemented in the *lowlevel_init.c files
+config AT91SAM9260_LWL
+ bool
+config AT91SAM9261_LWL
+ bool
+config AT91SAM9263_LWL
+ bool
+config AT91SAM9G45_LWL
+ bool
+config AT91SAM9X5_LWL
+ bool
+config AT91SAM9N12_LWL
+ bool
+config AT91RM9200_LWL
+ bool
+config SAMA5D3_LWL
+ bool
+config SAMA5D4_LWL
bool

config AT91SAM9_SMC
@@ -71,9 +97,6 @@ config AT91SAM9G45_RESET
config HAVE_AT91_LOAD_BAREBOX_SRAM
bool

-config AT91SAM9_LOWLEVEL_INIT
- bool
-
comment "Atmel AT91 System-on-Chip"

config SOC_AT91RM9200
@@ -88,7 +111,6 @@ config SOC_AT91SAM9260
select HAVE_AT91_DBGU0
select HAS_MACB
select AT91SAM9_RESET
- select AT91SAM9_LOWLEVEL_INIT
help
Select this if you are using one of Atmel's AT91SAM9260, AT91SAM9XE
or AT91SAM9G20 SoC.
@@ -98,7 +120,6 @@ config SOC_AT91SAM9261
select SOC_AT91SAM9
select HAVE_AT91_DBGU0
select AT91SAM9_RESET
- select AT91SAM9_LOWLEVEL_INIT
help
Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC.

@@ -108,7 +129,6 @@ config SOC_AT91SAM9263
select HAVE_AT91_DBGU1
select HAS_MACB
select AT91SAM9_RESET
- select AT91SAM9_LOWLEVEL_INIT
select HAVE_AT91_LOAD_BAREBOX_SRAM

config SOC_AT91SAM9G45
@@ -239,6 +259,7 @@ choice
config MACH_AT91RM9200EK
bool "Atmel AT91RM9200-EK Evaluation Kit"
select HAVE_AT91_DATAFLASH_CARD
+ select AT91RM9200_LWL
help
Select this if you are using Atmel's AT91RM9200-EK Evaluation Kit.
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3507>
@@ -256,15 +277,18 @@ choice

config MACH_ANIMEO_IP
bool "Somfy Animeo IP"
+ select AT91SAM9260_LWL

config MACH_AT91SAM9260EK
bool "Atmel AT91SAM9260-EK"
select HAVE_NAND_ATMEL_BUSWIDTH_16
+ select AT91SAM9260_LWL
help
Say y here if you are using Atmel's AT91SAM9260-EK Evaluation board

config MACH_QIL_A9260
bool "CALAO QIL-A9260 board"
+ select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems QIL-A9260 Board.
<http://www.calao-systems.com>
@@ -272,6 +296,7 @@ config MACH_QIL_A9260
config MACH_TNY_A9260
bool "CALAO TNY-A9260"
select SUPPORT_CALAO_MOB_TNY_MD2
+ select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems TNY-A9260.
<http://www.calao-systems.com>
@@ -279,12 +304,14 @@ config MACH_TNY_A9260
config MACH_USB_A9260
bool "CALAO USB-A9260"
select SUPPORT_CALAO_DAB_MMX
+ select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems USB-A9260.
<http://www.calao-systems.com>

config MACH_GE863
bool "Telit EVK-PRO3"
+ select AT91SAM9260_LWL
help
Say y here if you are using Telit EVK-PRO3 with GE863-PRO3
<http://www.telit.com>
@@ -305,7 +332,9 @@ config MACH_AT91SAM9261EK
select HAS_DM9000
select HAVE_AT91_DATAFLASH_CARD
select HAVE_NAND_ATMEL_BUSWIDTH_16
- select HAVE_AT91_LOWLEVEL_INIT
+ select HAVE_AT91_BOOTSTRAP
+ select AT91SAM9261_LWL
+ select AT91SAM926X_LWL
help
Select this if you are using Atmel's AT91SAM9261-EK Evaluation Kit.
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3820>
@@ -313,7 +342,9 @@ config MACH_AT91SAM9261EK
config MACH_PM9261
bool "Ronetix PM9261"
select HAS_DM9000
- select HAVE_AT91_LOWLEVEL_INIT
+ select HAVE_AT91_BOOTSTRAP
+ select AT91SAM9261_LWL
+ select AT91SAM926X_LWL
help
Say y here if you are using the Ronetix PM9261 Board

@@ -332,6 +363,7 @@ config MACH_AT91SAM9G10EK
bool "Atmel AT91SAM9G10-EK Evaluation Kit"
select HAVE_NAND_ATMEL_BUSWIDTH_16
select HAS_DM9000
+ select AT91SAM9261_LWL
help
Select this if you are using Atmel's AT91SAM9G10-EK Evaluation Kit.
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4588>
@@ -350,6 +382,7 @@ choice
config MACH_AT91SAM9G20EK
bool "Atmel AT91SAM9G20-EK Evaluation Kit"
select HAVE_NAND_ATMEL_BUSWIDTH_16
+ select AT91SAM9260_LWL
help
Select this if you are using Atmel's AT91SAM9G20-EK Evaluation Kit
that embeds only one SD/MMC slot.
@@ -357,6 +390,7 @@ config MACH_AT91SAM9G20EK
config MACH_TNY_A9G20
select SUPPORT_CALAO_MOB_TNY_MD2
bool "CALAO TNY-A9G20"
+ select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems TNY-A9G20.
<http://www.calao-systems.com>
@@ -364,6 +398,7 @@ config MACH_TNY_A9G20
config MACH_USB_A9G20
bool "CALAO USB-A9G20"
select SUPPORT_CALAO_DAB_MMX
+ select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems USB-A9G20.
<http://www.calao-systems.com>
@@ -371,18 +406,21 @@ config MACH_USB_A9G20
config MACH_DSS11
bool "aizo dSS11"
select HAVE_NAND_ATMEL_BUSWIDTH_16
+ select AT91SAM9260_LWL
help
Select this if you are using aizo dSS11
that embeds only one SD/MMC slot.

config MACH_QIL_A9G20
bool "CALAO QIL-A9G20 board"
+ select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems QIL-A9G20 Board.
<http://www.calao-systems.com>

config MACH_HABA_KNX_LITE
bool "CALAO HABA-KNX-LITE"
+ select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems HABA-KNX-LITE.
<http://www.calao-systems.com>
@@ -399,32 +437,41 @@ choice

config MACH_AT91SAM9263EK
bool "Atmel AT91SAM9263-EK"
- select HAVE_AT91_LOWLEVEL_INIT
select HAVE_NAND_ATMEL_BUSWIDTH_16
+ select HAVE_AT91_BOOTSTRAP
+ select AT91SAM9263_LWL
+ select AT91SAM926X_LWL
help
Say y here if you are using Atmel's AT91SAM9263-EK Evaluation board

config MACH_MMCCPU
bool "Bucyrus MMC-CPU"
+ select AT91SAM9263_LWL
help
Say y here if you are using the Bucyrus MMC-CPU

config MACH_PM9263
bool "Ronetix PM9263"
- select HAVE_AT91_LOWLEVEL_INIT
+ select HAVE_AT91_BOOTSTRAP
+ select AT91SAM9263_LWL
+ select AT91SAM926X_LWL
help
Say y here if you are using the Ronetix PM9263 Board

config MACH_TNY_A9263
bool "CALAO TNY-A9263"
select SUPPORT_CALAO_MOB_TNY_MD2
+ select HAVE_AT91_BOOTSTRAP
+ select AT91SAM9263_LWL
help
Select this if you are using a Calao Systems TNY-A9263.
<http://www.calao-systems.com>

config MACH_USB_A9263
bool "CALAO USB-A9263"
- select HAVE_AT91_LOWLEVEL_INIT
+ select HAVE_AT91_BOOTSTRAP
+ select AT91SAM9263_LWL
+ select AT91SAM926X_LWL
help
Select this if you are using a Calao Systems USB-A9263.
<http://www.calao-systems.com>
@@ -440,12 +487,14 @@ choice

config MACH_AT91SAM9M10IHD
bool "Atmel AT91SAM9M10IDH Tablet"
+ select AT91SAM9G45_LWL
help
Select this if you are using Atmel's AT91SAM9M10IHD Tablet

config MACH_AT91SAM9M10G45EK
bool "Atmel AT91SAM9M10G45-EK Evaluation Kit"
select HAVE_NAND_ATMEL_BUSWIDTH_16
+ select AT91SAM9G45_LWL
help
Select this if you are using Atmel's AT91SAM9M10G45-EK Evaluation Kit
or AT91SAM9G45-EKES or AT91SAM9M10-EKES (for those 2 select the LG LCD)
@@ -453,6 +502,7 @@ config MACH_AT91SAM9M10G45EK

config MACH_PM9G45
bool "Ronetix PM9G45"
+ select AT91SAM9G45_LWL
help
Say y here if you are using the Ronetix PM9G45 Board

@@ -469,6 +519,7 @@ choice

config MACH_AT91SAM9N12EK
bool "Atmel AT91SAM9N12 Evaluation Kit"
+ select AT91SAM9N12_LWL
help
Select this if you are using Atmel's AT91SAM9N12-EK Evaluation Kit.

@@ -485,11 +536,13 @@ choice

config MACH_SAMA5D3XEK
bool "Atmel SAMA5D3X Evaluation Kit"
+ select SAMA5D3_LWL
help
Select this if you are using Atmel's SAMA5D3X-EK Evaluation Kit.

config MACH_SAMA5D3_XPLAINED
bool "Atmel SAMA5D3_XPLAINED Evaluation Kit"
+ select SAMA5D3_LWL
help
Select this if you are using Atmel's SAMA5D3_XPLAINED Evaluation Kit.

@@ -506,11 +559,13 @@ choice

config MACH_SAMA5D4EK
bool "Atmel SAMA5D4 Evaluation Kit"
+ select SAMA5D4_LWL
help
Select this if you are using Atmel's SAMA5D4-EK Evaluation Kit.

config MACH_SAMA5D4_XPLAINED
bool "Atmel SAMA5D4 XPLAINED ULTRA Evaluation Kit"
+ select SAMA5D4_LWL
help
Select this if you are using Atmel's SAMA5D4_XPLAINED ULTRA Evaluation Kit.

@@ -595,7 +650,7 @@ config CALAO_MB_QIL_A9260

config AT91_BOOTSTRAP
bool "at91 bootstrap"
- depends on HAVE_AT91_LOWLEVEL_INIT
+ depends on HAVE_AT91_BOOTSTRAP
select BOOTSTRAP

config AT91_LOAD_BAREBOX_SRAM
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 0892fb4b5..5516b5f4f 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -7,18 +7,18 @@ endif
obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o

obj-$(CONFIG_AT91_BOOTSTRAP) += bootstrap.o
-sam926x_lowlevel_init-$(CONFIG_AT91SAM9_LOWLEVEL_INIT) = at91sam926x_lowlevel_init.o
-lowlevel_init-$(CONFIG_HAVE_AT91_LOWLEVEL_INIT) = $(sam926x_lowlevel_init-y)
-lowlevel_init-$(CONFIG_SOC_AT91SAM9260) += at91sam9260_lowlevel_init.o
-lowlevel_init-$(CONFIG_SOC_AT91SAM9261) += at91sam9261_lowlevel_init.o
-lowlevel_init-$(CONFIG_SOC_AT91SAM9263) += at91sam9263_lowlevel_init.o
-lowlevel_init-$(CONFIG_SOC_AT91SAM9G45) += at91sam9g45_lowlevel_init.o
-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)
+
+lwl-$(CONFIG_AT91SAM926X_LWL) += at91sam926x_lowlevel_init.o
+
+lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
+lwl-$(CONFIG_AT91SAM9261_LWL) += at91sam9261_lowlevel_init.o
+lwl-$(CONFIG_AT91SAM9263_LWL) += at91sam9263_lowlevel_init.o
+lwl-$(CONFIG_AT91SAM9G45_LWL) += at91sam9g45_lowlevel_init.o
+lwl-$(CONFIG_AT91SAM9X5_LWL) += at91sam9x5_lowlevel_init.o
+lwl-$(CONFIG_AT91SAM9N12_LWL) += at91sam9n12_lowlevel_init.o
+lwl-$(CONFIG_AT91RM9200_LWL) += at91rm9200_lowlevel_init.o
+lwl-$(CONFIG_SAMA5D3_LWL) += sama5d3_lowlevel_init.o
+lwl-$(CONFIG_SAMA5D4_LWL) += sama5d3_lowlevel_init.o

obj-$(CONFIG_AT91SAM9_RESET) += at91sam9_reset.o
obj-$(CONFIG_AT91SAM9G45_RESET) += at91sam9g45_reset.o
diff --git a/arch/arm/mach-at91/include/mach/at91_lowlevel_init.h b/arch/arm/mach-at91/include/mach/at91_lowlevel_init.h
index 6b37e49e9..d72dfff38 100644
--- a/arch/arm/mach-at91/include/mach/at91_lowlevel_init.h
+++ b/arch/arm/mach-at91/include/mach/at91_lowlevel_init.h
@@ -35,7 +35,7 @@ struct at91sam926x_lowlevel_cfg {
u32 rstc_rmr;
};

-#ifdef CONFIG_HAVE_AT91_LOWLEVEL_INIT
+#ifdef CONFIG_AT91SAM926X_LWL
void at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg);
void at91sam926x_lowlevel_init(struct at91sam926x_lowlevel_cfg *cfg);
#else
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:25 UTC
Permalink
All at91sam9261 based boards uses board specific
reset vectors so the mach-at91 provided version is
no longer in use.
Delete unused CONFIG symbols too.

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/mach-at91/Kconfig | 2 --
arch/arm/mach-at91/Makefile | 1 -
arch/arm/mach-at91/at91sam9261_lowlevel_init.c | 48 --------------------------
3 files changed, 51 deletions(-)
delete mode 100644 arch/arm/mach-at91/at91sam9261_lowlevel_init.c

diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 3e41fe70d..704abcead 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -41,8 +41,6 @@ config AT91SAM926X_LWL
# as implemented in the *lowlevel_init.c files
config AT91SAM9260_LWL
bool
-config AT91SAM9261_LWL
- bool
config AT91SAM9263_LWL
bool
config AT91SAM9G45_LWL
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index f683d0f65..587402903 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -11,7 +11,6 @@ obj-$(CONFIG_AT91_BOOTSTRAP) += bootstrap.o
lwl-$(CONFIG_AT91SAM926X_LWL) += at91sam926x_lowlevel_init.o

lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
-lwl-$(CONFIG_AT91SAM9261_LWL) += at91sam9261_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9263_LWL) += at91sam9263_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9G45_LWL) += at91sam9g45_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9N12_LWL) += at91sam9n12_lowlevel_init.o
diff --git a/arch/arm/mach-at91/at91sam9261_lowlevel_init.c b/arch/arm/mach-at91/at91sam9261_lowlevel_init.c
deleted file mode 100644
index 0ad7f0a0c..000000000
--- a/arch/arm/mach-at91/at91sam9261_lowlevel_init.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
- *
- * Under GPLv2
- */
-
-#define __LOWLEVEL_INIT__
-
-#include <common.h>
-#include <asm/system.h>
-#include <asm/barebox-arm.h>
-#include <asm/barebox-arm-head.h>
-#include <mach/hardware.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91_pio.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91_lowlevel_init.h>
-#include <mach/io.h>
-#include <init.h>
-#include <linux/sizes.h>
-
-void __bare_init at91sam9261_lowlevel_init(void)
-{
- struct at91sam926x_lowlevel_cfg cfg;
-
- cfg.pio = IOMEM(AT91SAM9261_BASE_PIOC);
- cfg.sdramc = IOMEM(AT91SAM9261_BASE_SDRAMC);
- cfg.ebi_pio_is_peripha = false;
- cfg.matrix_csa = AT91_MATRIX_EBICSA;
-
- at91sam926x_lowlevel_init(&cfg);
-
- barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc),
- NULL);
-}
-
-void __naked __bare_init barebox_arm_reset_vector(void)
-{
- arm_cpu_lowlevel_init();
-
- arm_setup_stack(AT91SAM9261_SRAM_BASE + AT91SAM9261_SRAM_SIZE - 16);
-
- at91sam9261_lowlevel_init();
-}
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:28 UTC
Permalink
For all Calao USB boards move reset vector to board code.
Introduce two different lowlevel.c files, on
for each processor.
Include a rename to make filenames similar.

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/usb-a926x/Makefile | 4 +-
arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c | 26 +++++++++++++
..._a9263_lowlevel_init.c => usb_a9263_lowlevel.c} | 43 ++++++++++++++++------
arch/arm/mach-at91/Kconfig | 4 --
4 files changed, 61 insertions(+), 16 deletions(-)
create mode 100644 arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c
rename arch/arm/boards/usb-a926x/{usb_a9263_lowlevel_init.c => usb_a9263_lowlevel.c} (76%)

diff --git a/arch/arm/boards/usb-a926x/Makefile b/arch/arm/boards/usb-a926x/Makefile
index a4eae1844..65cc4082f 100644
--- a/arch/arm/boards/usb-a926x/Makefile
+++ b/arch/arm/boards/usb-a926x/Makefile
@@ -2,6 +2,8 @@ obj-y += init.o

obj-$(CONFIG_AT91_BOOTSTRAP) += usb_a9263_bootstrap.o

-lwl-$(CONFIG_AT91SAM926X_LWL) += usb_a9263_lowlevel_init.o
+lwl-$(CONFIG_MACH_USB_A9260) += usb_a9260_lowlevel.o
+lwl-$(CONFIG_MACH_USB_A9G20) += usb_a9260_lowlevel.o
+lwl-$(CONFIG_MACH_USB_A9263) += usb_a9263_lowlevel.o

bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-usb-a926x
diff --git a/arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c b/arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c
new file mode 100644
index 000000000..02896856d
--- /dev/null
+++ b/arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9260.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9260_SRAM_BASE + AT91SAM9260_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
+ NULL);
+}
diff --git a/arch/arm/boards/usb-a926x/usb_a9263_lowlevel_init.c b/arch/arm/boards/usb-a926x/usb_a9263_lowlevel.c
similarity index 76%
rename from arch/arm/boards/usb-a926x/usb_a9263_lowlevel_init.c
rename to arch/arm/boards/usb-a926x/usb_a9263_lowlevel.c
index f6dc58e3f..066452b95 100644
--- a/arch/arm/boards/usb-a926x/usb_a9263_lowlevel_init.c
+++ b/arch/arm/boards/usb-a926x/usb_a9263_lowlevel.c
@@ -4,16 +4,12 @@
* Under GPLv2
*/

-#include <common.h>
-#include <init.h>
-#include <mach/hardware.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91_lowlevel_init.h>
+#include <linux/sizes.h>
+
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam926x_board_init.h>
+#include <mach/at91sam9263_matrix.h>

#define MASTER_CLOCK 180

@@ -24,7 +20,7 @@
#endif
#define MASTER_PLL_DIV 6

-void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg)
+static void __bare_init usb_a9263_board_config(struct at91sam926x_board_cfg *cfg)
{
/* Disable Watchdog */
cfg->wdt_mr =
@@ -109,3 +105,28 @@ void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_c
AT91_RSTC_RSTTYP_WAKEUP |
AT91_RSTC_RSTTYP_WATCHDOG;
}
+
+static void __bare_init usb_a9263_init(void)
+{
+ struct at91sam926x_board_cfg cfg;
+
+ cfg.pio = IOMEM(AT91SAM9263_BASE_PIOD);
+ cfg.sdramc = IOMEM(AT91SAM9263_BASE_SDRAMC0);
+ cfg.ebi_pio_is_peripha = true;
+ cfg.matrix_csa = AT91_MATRIX_EBI0CSA;
+
+ usb_a9263_board_config(&cfg);
+ at91sam926x_board_init(&cfg);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc),
+ NULL);
+}
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9263_SRAM0_BASE + AT91SAM9263_SRAM0_SIZE - 16);
+
+ usb_a9263_init();
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index b7d08b1e6..1c9dbd578 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -300,7 +300,6 @@ config MACH_TNY_A9260
config MACH_USB_A9260
bool "CALAO USB-A9260"
select SUPPORT_CALAO_DAB_MMX
- select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems USB-A9260.
<http://www.calao-systems.com>
@@ -389,7 +388,6 @@ config MACH_TNY_A9G20
config MACH_USB_A9G20
bool "CALAO USB-A9G20"
select SUPPORT_CALAO_DAB_MMX
- select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems USB-A9G20.
<http://www.calao-systems.com>
@@ -456,8 +454,6 @@ config MACH_TNY_A9263
config MACH_USB_A9263
bool "CALAO USB-A9263"
select HAVE_AT91_BOOTSTRAP
- select AT91SAM9263_LWL
- select AT91SAM926X_LWL
help
Select this if you are using a Calao Systems USB-A9263.
<http://www.calao-systems.com>
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:32 UTC
Permalink
Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/haba-knx/Makefile | 3 +++
arch/arm/boards/haba-knx/lowlevel.c | 26 ++++++++++++++++++++++++++
arch/arm/mach-at91/Kconfig | 1 -
3 files changed, 29 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boards/haba-knx/lowlevel.c

diff --git a/arch/arm/boards/haba-knx/Makefile b/arch/arm/boards/haba-knx/Makefile
index d9db6aba6..b1c469dcf 100644
--- a/arch/arm/boards/haba-knx/Makefile
+++ b/arch/arm/boards/haba-knx/Makefile
@@ -1,2 +1,5 @@
obj-y += init.o
+
+lwl-y += lowlevel.o
+
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-haba-knx
diff --git a/arch/arm/boards/haba-knx/lowlevel.c b/arch/arm/boards/haba-knx/lowlevel.c
new file mode 100644
index 000000000..02896856d
--- /dev/null
+++ b/arch/arm/boards/haba-knx/lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9260.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9260_SRAM_BASE + AT91SAM9260_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
+ NULL);
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index ed961593b..89ef5bfa7 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -401,7 +401,6 @@ config MACH_QIL_A9G20

config MACH_HABA_KNX_LITE
bool "CALAO HABA-KNX-LITE"
- select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems HABA-KNX-LITE.
<http://www.calao-systems.com>
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:26 UTC
Permalink
As the mmccpu board do not have support for bootstrap
the previous lowlevel_init.c was replaced with a simple
lowlevel.c with contains only the reset vector.

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/mmccpu/Makefile | 2 +-
arch/arm/boards/mmccpu/lowlevel.c | 26 +++++++
arch/arm/boards/mmccpu/lowlevel_init.c | 135 ---------------------------------
arch/arm/mach-at91/Kconfig | 1 -
4 files changed, 27 insertions(+), 137 deletions(-)
create mode 100644 arch/arm/boards/mmccpu/lowlevel.c
delete mode 100644 arch/arm/boards/mmccpu/lowlevel_init.c

diff --git a/arch/arm/boards/mmccpu/Makefile b/arch/arm/boards/mmccpu/Makefile
index a34efd541..e11fd5b69 100644
--- a/arch/arm/boards/mmccpu/Makefile
+++ b/arch/arm/boards/mmccpu/Makefile
@@ -1,3 +1,3 @@
obj-y += init.o

-lwl-n += lowlevel_init.o
+lwl-y += lowlevel.o
diff --git a/arch/arm/boards/mmccpu/lowlevel.c b/arch/arm/boards/mmccpu/lowlevel.c
new file mode 100644
index 000000000..3ba24ce4c
--- /dev/null
+++ b/arch/arm/boards/mmccpu/lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9263.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9263_SRAM0_BASE + AT91SAM9263_SRAM0_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9263_BASE_SDRAMC0)),
+ NULL);
+}
diff --git a/arch/arm/boards/mmccpu/lowlevel_init.c b/arch/arm/boards/mmccpu/lowlevel_init.c
deleted file mode 100644
index c193eae58..000000000
--- a/arch/arm/boards/mmccpu/lowlevel_init.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2009-2011 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
- *
- * Under GPLv2
- */
-
-#include <common.h>
-#include <init.h>
-#include <mach/hardware.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91_lowlevel_init.h>
-
-#define MASTER_PLL_MUL 54
-#define MASTER_PLL_DIV 4
-
-void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg)
-{
- /* Disable Watchdog */
- cfg->wdt_mr =
- AT91_WDT_WDIDLEHLT | AT91_WDT_WDDBGHLT |
- AT91_WDT_WDV |
- AT91_WDT_WDDIS |
- AT91_WDT_WDD;
-
- /* define PDC[31:16] as DATA[31:16] */
- cfg->ebi_pio_pdr = 0xFFFF0000;
- /* no pull-up for D[31:16] */
- cfg->ebi_pio_ppudr = 0xFFFF0000;
- /* EBI0_CSA, CS1 SDRAM, CS3 NAND Flash, 3.3V memories */
- cfg->ebi_csa =
- AT91_MATRIX_EBI0_DBPUC | AT91_MATRIX_EBI0_VDDIOMSEL_1_8V |
- AT91_MATRIX_EBI0_CS1A_SDRAMC |
- AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA;
-
- cfg->smc_cs = 0;
-#if 1
- cfg->smc_mode =
- AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
- AT91_SMC_DBW_16 |
- AT91_SMC_TDFMODE |
- AT91_SMC_TDF_(6);
- cfg->smc_cycle =
- AT91_SMC_NWECYCLE_(16) | AT91_SMC_NRDCYCLE_(16);
- cfg->smc_pulse =
- AT91_SMC_NWEPULSE_(5) | AT91_SMC_NCS_WRPULSE_(7) |
- AT91_SMC_NRDPULSE_(5) | AT91_SMC_NCS_RDPULSE_(13);
- cfg->smc_setup =
- AT91_SMC_NWESETUP_(3) | AT91_SMC_NCS_WRSETUP_(2) |
- AT91_SMC_NRDSETUP_(8) | AT91_SMC_NCS_RDSETUP_(0);
-#elif 0 /* slow setup */
- cfg->smc_mode =
- AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
- AT91_SMC_DBW_16 |
- AT91_SMC_TDFMODE |
- AT91_SMC_TDF_(1);
- cfg->smc_cycle =
- AT91_SMC_NWECYCLE_(0xd00) | AT91_SMC_NRDCYCLE_(0xd00);
- cfg->smc_pulse =
- AT91_SMC_NWEPULSE_(5) | AT91_SMC_NCS_WRPULSE_(7) |
- AT91_SMC_NRDPULSE_(5) | AT91_SMC_NCS_RDPULSE_(13);
- cfg->smc_setup =
- AT91_SMC_NWESETUP_(3) | AT91_SMC_NCS_WRSETUP_(2) |
- AT91_SMC_NRDSETUP_(8) | AT91_SMC_NCS_RDSETUP_(0);
-#else /* RONETIX' original values */
- cfg->smc_mode =
- AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
- AT91_SMC_DBW_16 |
- AT91_SMC_TDFMODE |
- AT91_SMC_TDF_(6);
- cfg->smc_cycle =
- AT91_SMC_NWECYCLE_(22) | AT91_SMC_NRDCYCLE_(22);
- cfg->smc_pulse =
- AT91_SMC_NWEPULSE_(11) | AT91_SMC_NCS_WRPULSE_(11) |
- AT91_SMC_NRDPULSE_(11) | AT91_SMC_NCS_RDPULSE_(11);
- cfg->smc_setup =
- AT91_SMC_NWESETUP_(10) | AT91_SMC_NCS_WRSETUP_(10) |
- AT91_SMC_NRDSETUP_(10) | AT91_SMC_NCS_RDSETUP_(10);
-#endif
-
- cfg->pmc_mor =
- AT91_PMC_MOSCEN |
- (255 << 8); /* Main Oscillator Start-up Time */
- cfg->pmc_pllar =
- AT91_PMC_PLLA_WR_ERRATA | /* Bit 29 must be 1 when prog */
- AT91_PMC_OUT |
- AT91_PMC_PLLCOUNT | /* PLL Counter */
- (2 << 28) | /* PLL Clock Frequency Range */
- ((MASTER_PLL_MUL - 1) << 16) | (MASTER_PLL_DIV);
- /* PCK/2 = MCK Master Clock from PLLA */
- cfg->pmc_mckr1 =
- AT91_PMC_CSS_SLOW |
- AT91_PMC_PRES_1 |
- AT91SAM9_PMC_MDIV_2 |
- AT91_PMC_PDIV_1;
- /* PCK/2 = MCK Master Clock from PLLA */
- cfg->pmc_mckr2 =
- AT91_PMC_CSS_PLLA |
- AT91_PMC_PRES_1 |
- AT91SAM9_PMC_MDIV_2 |
- AT91_PMC_PDIV_1;
-
- /* SDRAM */
- /* SDRAMC_TR - Refresh Timer register */
- cfg->sdrc_tr1 = 0x13C;
- /* SDRAMC_CR - Configuration register*/
- cfg->sdrc_cr =
- AT91_SDRAMC_NC_9 |
- AT91_SDRAMC_NR_13 |
- AT91_SDRAMC_NB_4 |
- AT91_SDRAMC_CAS_3 |
- AT91_SDRAMC_DBW_32 |
- (2 << 8) | /* tWR - Write Recovery Delay */
- (8 << 12) | /* tRC - Row Cycle Delay */
- (2 << 16) | /* tRP - Row Precharge Delay */
- (2 << 20) | /* tRCD - Row to Column Delay */
- (5 << 24) | /* tRAS - Active to Precharge Delay */
- (12 << 28); /* tXSR - Exit Self Refresh to Active Delay */
-
- /* Memory Device Register -> SDRAM */
- cfg->sdrc_mdr = AT91_SDRAMC_MD_SDRAM;
- /* SDRAM_TR */
- cfg->sdrc_tr2 = 780;
-
- /* user reset enable */
- cfg->rstc_rmr =
- AT91_RSTC_KEY |
- AT91_RSTC_PROCRST |
- AT91_RSTC_RSTTYP_WAKEUP |
- AT91_RSTC_RSTTYP_WATCHDOG;
-}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 704abcead..6363f1a15 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -435,7 +435,6 @@ config MACH_AT91SAM9263EK

config MACH_MMCCPU
bool "Bucyrus MMC-CPU"
- select AT91SAM9263_LWL
help
Say y here if you are using the Bucyrus MMC-CPU
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:29 UTC
Permalink
The last user of at91sam926x_lowlevel_init is gone, so delete it

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/mach-at91/Kconfig | 4 -
arch/arm/mach-at91/Makefile | 2 -
arch/arm/mach-at91/at91sam926x_lowlevel_init.c | 199 -------------------------
3 files changed, 205 deletions(-)
delete mode 100644 arch/arm/mach-at91/at91sam926x_lowlevel_init.c

diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 1c9dbd578..e38589127 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -33,10 +33,6 @@ config HAVE_AT91_GENERATED_CLK
config HAVE_AT91_BOOTSTRAP
bool

-# Select is board uses the common at91sam926x_lowlevel_init
-config AT91SAM926X_LWL
- bool
-
# Select if board uses barebox reset vector from mach-at91
# as implemented in the *lowlevel_init.c files
config AT91SAM9260_LWL
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 587402903..8293f279a 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -8,8 +8,6 @@ obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o

obj-$(CONFIG_AT91_BOOTSTRAP) += bootstrap.o

-lwl-$(CONFIG_AT91SAM926X_LWL) += at91sam926x_lowlevel_init.o
-
lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9263_LWL) += at91sam9263_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9G45_LWL) += at91sam9g45_lowlevel_init.o
diff --git a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c
deleted file mode 100644
index 5dd8bc4e6..000000000
--- a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2008 Ronetix Ilko Iliev (www.ronetix.at)
- * Copyright (C) 2009-2011 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
- *
- * Under GPLv2
- */
-
-#define __LOWLEVEL_INIT__
-
-#include <common.h>
-#include <asm/system.h>
-#include <asm/barebox-arm.h>
-#include <asm/barebox-arm-head.h>
-#include <mach/hardware.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91_pio.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91_lowlevel_init.h>
-#include <mach/gpio.h>
-#include <mach/io.h>
-#include <init.h>
-#include <linux/sizes.h>
-
-#include "gpio.h"
-
-static void inline access_sdram(void)
-{
- writel(0x00000000, AT91_SDRAM_BASE);
-}
-
-static void inline pmc_check_mckrdy(void)
-{
- u32 r;
-
- do {
- r = at91_pmc_read(AT91_PMC_SR);
- } while (!(r & AT91_PMC_MCKRDY));
-}
-
-static int inline running_in_sram(void)
-{
- u32 addr = get_pc();
-
- addr >>= 28;
- return addr == 0;
-}
-
-#define at91_sdramc_read(field) \
- __raw_readl(cfg->sdramc + field)
-
-#define at91_sdramc_write(field, value) \
- __raw_writel(value, cfg->sdramc + field)
-
-void __bare_init at91sam926x_sdramc_init(struct at91sam926x_lowlevel_cfg *cfg)
-{
- u32 r;
- int i;
- int in_sram = running_in_sram();
-
- /*
- * SDRAMC Check if Refresh Timer Counter is already initialized
- */
- r = at91_sdramc_read(AT91_SDRAMC_TR);
- if (r && !in_sram)
- return;
-
- /* SDRAMC_MR : Normal Mode */
- at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_NORMAL);
-
- /* SDRAMC_TR - Refresh Timer register */
- at91_sdramc_write(AT91_SDRAMC_TR, cfg->sdrc_tr1);
-
- /* SDRAMC_CR - Configuration register*/
- at91_sdramc_write(AT91_SDRAMC_CR, cfg->sdrc_cr);
-
- /* Memory Device Type */
- at91_sdramc_write(AT91_SDRAMC_MDR, cfg->sdrc_mdr);
-
- /* SDRAMC_MR : Precharge All */
- at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_PRECHARGE);
-
- /* access SDRAM */
- access_sdram();
-
- /* SDRAMC_MR : refresh */
- at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_REFRESH);
-
- /* access SDRAM 8 times */
- for (i = 0; i < 8; i++)
- access_sdram();
-
- /* SDRAMC_MR : Load Mode Register */
- at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_LMR);
-
- /* access SDRAM */
- access_sdram();
-
- /* SDRAMC_MR : Normal Mode */
- at91_sdramc_write(AT91_SDRAMC_MR, AT91_SDRAMC_MODE_NORMAL);
-
- /* access SDRAM */
- access_sdram();
-
- /* SDRAMC_TR : Refresh Timer Counter */
- at91_sdramc_write(AT91_SDRAMC_TR, cfg->sdrc_tr2);
-
- /* access SDRAM */
- access_sdram();
-}
-
-void __bare_init at91sam926x_lowlevel_init(struct at91sam926x_lowlevel_cfg *cfg)
-{
- u32 r;
- int in_sram = running_in_sram();
-
- at91sam926x_lowlevel_board_config(cfg);
-
- __raw_writel(cfg->wdt_mr, AT91_BASE_WDT + AT91_WDT_MR);
-
- /* configure PIOx as EBI0 D[16-31] */
- at91_mux_gpio_disable(cfg->pio, cfg->ebi_pio_pdr);
- at91_mux_set_pullup(cfg->pio, cfg->ebi_pio_ppudr, true);
- if (cfg->ebi_pio_is_peripha)
- at91_mux_set_A_periph(cfg->pio, cfg->ebi_pio_ppudr);
-
- at91_sys_write(cfg->matrix_csa, cfg->ebi_csa);
-
- /* flash */
- at91_smc_write(cfg->smc_cs, AT91_SAM9_SMC_MODE, cfg->smc_mode);
-
- at91_smc_write(cfg->smc_cs, AT91_SMC_CYCLE, cfg->smc_cycle);
-
- at91_smc_write(cfg->smc_cs, AT91_SMC_PULSE, cfg->smc_pulse);
-
- at91_smc_write(cfg->smc_cs, AT91_SMC_SETUP, cfg->smc_setup);
-
- /*
- * PMC Check if the PLL is already initialized
- */
- r = at91_pmc_read(AT91_PMC_MCKR);
- if (r & AT91_PMC_CSS && !in_sram)
- return;
-
- /*
- * Enable the Main Oscillator
- */
- at91_pmc_write(AT91_CKGR_MOR, cfg->pmc_mor);
-
- do {
- r = at91_pmc_read(AT91_PMC_SR);
- } while (!(r & AT91_PMC_MOSCS));
-
- /*
- * PLLAR: x MHz for PCK
- */
- at91_pmc_write(AT91_CKGR_PLLAR, cfg->pmc_pllar);
-
- do {
- r = at91_pmc_read(AT91_PMC_SR);
- } while (!(r & AT91_PMC_LOCKA));
-
- /*
- * PCK/x = MCK Master Clock from SLOW
- */
- at91_pmc_write(AT91_PMC_MCKR, cfg->pmc_mckr1);
-
- pmc_check_mckrdy();
-
- /*
- * PCK/x = MCK Master Clock from PLLA
- */
- at91_pmc_write(AT91_PMC_MCKR, cfg->pmc_mckr2);
-
- pmc_check_mckrdy();
-
- /*
- * Init SDRAM
- */
- at91sam926x_sdramc_init(cfg);
-
- /* User reset enable*/
- at91_sys_write(AT91_RSTC_MR, cfg->rstc_rmr);
-
-#ifdef CONFIG_SYS_MATRIX_MCFG_REMAP
- /* MATRIX_MCFG - REMAP all masters */
- at91_sys_write(AT91_MATRIX_MCFG0, 0x1FF);
-#endif
- /*
- * When boot from external boot
- * we need to enable mck and ohter clock
- * so enable all of them
- * We will shutdown what we don't need later
- */
- at91_pmc_write(AT91_PMC_PCER, 0xffffffff);
-}
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:34 UTC
Permalink
Include deletion of now unused sama5d3_lowlevel_init.c
and related CONFIG symbols

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/sama5d3_xplained/Makefile | 1 +
.../sama5d3_xplained/lowlevel.c} | 10 ++++------
arch/arm/boards/sama5d3xek/Makefile | 1 +
arch/arm/boards/sama5d3xek/lowlevel.c | 23 ++++++++++++++++++++++
arch/arm/boards/sama5d4_xplained/Makefile | 1 +
arch/arm/boards/sama5d4_xplained/lowlevel.c | 23 ++++++++++++++++++++++
arch/arm/boards/sama5d4ek/Makefile | 1 +
arch/arm/boards/sama5d4ek/lowlevel.c | 23 ++++++++++++++++++++++
arch/arm/mach-at91/Kconfig | 8 --------
arch/arm/mach-at91/Makefile | 2 --
10 files changed, 77 insertions(+), 16 deletions(-)
rename arch/arm/{mach-at91/sama5d3_lowlevel_init.c => boards/sama5d3_xplained/lowlevel.c} (86%)
create mode 100644 arch/arm/boards/sama5d3xek/lowlevel.c
create mode 100644 arch/arm/boards/sama5d4_xplained/lowlevel.c
create mode 100644 arch/arm/boards/sama5d4ek/lowlevel.c

diff --git a/arch/arm/boards/sama5d3_xplained/Makefile b/arch/arm/boards/sama5d3_xplained/Makefile
index 3c301cb0c..fc6d83be8 100644
--- a/arch/arm/boards/sama5d3_xplained/Makefile
+++ b/arch/arm/boards/sama5d3_xplained/Makefile
@@ -1,2 +1,3 @@
obj-y += init.o
+lwl-y += lowlevel.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-sama5d3_xplained
diff --git a/arch/arm/mach-at91/sama5d3_lowlevel_init.c b/arch/arm/boards/sama5d3_xplained/lowlevel.c
similarity index 86%
rename from arch/arm/mach-at91/sama5d3_lowlevel_init.c
rename to arch/arm/boards/sama5d3_xplained/lowlevel.c
index 01d28514d..161b473a7 100644
--- a/arch/arm/mach-at91/sama5d3_lowlevel_init.c
+++ b/arch/arm/boards/sama5d3_xplained/lowlevel.c
@@ -4,16 +4,14 @@
* Under GPLv2
*/

-#define __LOWLEVEL_INIT__
-
#include <common.h>
-#include <linux/sizes.h>
#include <init.h>
-#include <asm/system.h>
-#include <asm/barebox-arm.h>
+
#include <asm/barebox-arm-head.h>
-#include <mach/hardware.h>
+#include <asm/barebox-arm.h>
+
#include <mach/at91sam9_ddrsdr.h>
+#include <mach/hardware.h>

void __naked __bare_init barebox_arm_reset_vector(void)
{
diff --git a/arch/arm/boards/sama5d3xek/Makefile b/arch/arm/boards/sama5d3xek/Makefile
index 32dcb4283..6ed914fc0 100644
--- a/arch/arm/boards/sama5d3xek/Makefile
+++ b/arch/arm/boards/sama5d3xek/Makefile
@@ -1,3 +1,4 @@
obj-y += init.o
obj-$(CONFIG_W1) += hw_version.o
+lwl-y += lowlevel.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-sama5d3xek
diff --git a/arch/arm/boards/sama5d3xek/lowlevel.c b/arch/arm/boards/sama5d3xek/lowlevel.c
new file mode 100644
index 000000000..161b473a7
--- /dev/null
+++ b/arch/arm/boards/sama5d3xek/lowlevel.c
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_ddrsdr.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(SAMA5D3_SRAM_BASE + SAMA5D3_SRAM_SIZE - 16);
+
+ barebox_arm_entry(SAMA5_DDRCS, at91sama5_get_ddram_size(), NULL);
+}
diff --git a/arch/arm/boards/sama5d4_xplained/Makefile b/arch/arm/boards/sama5d4_xplained/Makefile
index 44550f528..8873dfc22 100644
--- a/arch/arm/boards/sama5d4_xplained/Makefile
+++ b/arch/arm/boards/sama5d4_xplained/Makefile
@@ -1 +1,2 @@
obj-y += sama5d4_xplained.o
+lwl-y += lowlevel.o
diff --git a/arch/arm/boards/sama5d4_xplained/lowlevel.c b/arch/arm/boards/sama5d4_xplained/lowlevel.c
new file mode 100644
index 000000000..161b473a7
--- /dev/null
+++ b/arch/arm/boards/sama5d4_xplained/lowlevel.c
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_ddrsdr.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(SAMA5D3_SRAM_BASE + SAMA5D3_SRAM_SIZE - 16);
+
+ barebox_arm_entry(SAMA5_DDRCS, at91sama5_get_ddram_size(), NULL);
+}
diff --git a/arch/arm/boards/sama5d4ek/Makefile b/arch/arm/boards/sama5d4ek/Makefile
index 4363b3924..152750bbe 100644
--- a/arch/arm/boards/sama5d4ek/Makefile
+++ b/arch/arm/boards/sama5d4ek/Makefile
@@ -1 +1,2 @@
obj-y += sama5d4ek.o
+lwl-y += lowlevel.o
diff --git a/arch/arm/boards/sama5d4ek/lowlevel.c b/arch/arm/boards/sama5d4ek/lowlevel.c
new file mode 100644
index 000000000..161b473a7
--- /dev/null
+++ b/arch/arm/boards/sama5d4ek/lowlevel.c
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_ddrsdr.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(SAMA5D3_SRAM_BASE + SAMA5D3_SRAM_SIZE - 16);
+
+ barebox_arm_entry(SAMA5_DDRCS, at91sama5_get_ddram_size(), NULL);
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 225b4735b..8122cf367 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -43,10 +43,6 @@ config AT91SAM9N12_LWL
bool
config AT91RM9200_LWL
bool
-config SAMA5D3_LWL
- bool
-config SAMA5D4_LWL
- bool

config AT91SAM9_SMC
bool
@@ -506,13 +502,11 @@ choice

config MACH_SAMA5D3XEK
bool "Atmel SAMA5D3X Evaluation Kit"
- select SAMA5D3_LWL
help
Select this if you are using Atmel's SAMA5D3X-EK Evaluation Kit.

config MACH_SAMA5D3_XPLAINED
bool "Atmel SAMA5D3_XPLAINED Evaluation Kit"
- select SAMA5D3_LWL
help
Select this if you are using Atmel's SAMA5D3_XPLAINED Evaluation Kit.

@@ -529,13 +523,11 @@ choice

config MACH_SAMA5D4EK
bool "Atmel SAMA5D4 Evaluation Kit"
- select SAMA5D4_LWL
help
Select this if you are using Atmel's SAMA5D4-EK Evaluation Kit.

config MACH_SAMA5D4_XPLAINED
bool "Atmel SAMA5D4 XPLAINED ULTRA Evaluation Kit"
- select SAMA5D4_LWL
help
Select this if you are using Atmel's SAMA5D4_XPLAINED ULTRA Evaluation Kit.

diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index c044bfe26..bde9e898f 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -12,8 +12,6 @@ lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9G45_LWL) += at91sam9g45_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9N12_LWL) += at91sam9n12_lowlevel_init.o
lwl-$(CONFIG_AT91RM9200_LWL) += at91rm9200_lowlevel_init.o
-lwl-$(CONFIG_SAMA5D3_LWL) += sama5d3_lowlevel_init.o
-lwl-$(CONFIG_SAMA5D4_LWL) += sama5d3_lowlevel_init.o

obj-$(CONFIG_AT91SAM9_RESET) += at91sam9_reset.o
obj-$(CONFIG_AT91SAM9G45_RESET) += at91sam9g45_reset.o
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:30 UTC
Permalink
This commit deletes the unused tny_a9263_lowlevel_init.c and
creates two files (one for each CPU) that contains the reset vector.

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/tny-a926x/Makefile | 5 +-
arch/arm/boards/tny-a926x/tny_a9260_lowlevel.c | 26 +++++
arch/arm/boards/tny-a926x/tny_a9263_lowlevel.c | 26 +++++
.../arm/boards/tny-a926x/tny_a9263_lowlevel_init.c | 107 ---------------------
arch/arm/mach-at91/Kconfig | 3 -
5 files changed, 55 insertions(+), 112 deletions(-)
create mode 100644 arch/arm/boards/tny-a926x/tny_a9260_lowlevel.c
create mode 100644 arch/arm/boards/tny-a926x/tny_a9263_lowlevel.c
delete mode 100644 arch/arm/boards/tny-a926x/tny_a9263_lowlevel_init.c

diff --git a/arch/arm/boards/tny-a926x/Makefile b/arch/arm/boards/tny-a926x/Makefile
index 5dee09a11..1884cb3cd 100644
--- a/arch/arm/boards/tny-a926x/Makefile
+++ b/arch/arm/boards/tny-a926x/Makefile
@@ -2,6 +2,7 @@ obj-y += init.o

obj-$(CONFIG_AT91_BOOTSTRAP) += tny_a9263_bootstrap.o

-# Not used, documented by an -n assignment
-lwl-n += tny_a9263_lowlevel_init.o
+lwl-$(CONFIG_MACH_TNY_A9260) += tny_a9260_lowlevel.o
+lwl-$(CONFIG_MACH_TNY_A9G20) += tny_a9260_lowlevel.o
+lwl-$(CONFIG_MACH_TNY_A9263) += tny_a9263_lowlevel.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-tny-a926x
diff --git a/arch/arm/boards/tny-a926x/tny_a9260_lowlevel.c b/arch/arm/boards/tny-a926x/tny_a9260_lowlevel.c
new file mode 100644
index 000000000..02896856d
--- /dev/null
+++ b/arch/arm/boards/tny-a926x/tny_a9260_lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9260.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9260_SRAM_BASE + AT91SAM9260_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
+ NULL);
+}
diff --git a/arch/arm/boards/tny-a926x/tny_a9263_lowlevel.c b/arch/arm/boards/tny-a926x/tny_a9263_lowlevel.c
new file mode 100644
index 000000000..3ba24ce4c
--- /dev/null
+++ b/arch/arm/boards/tny-a926x/tny_a9263_lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9263.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9263_SRAM0_BASE + AT91SAM9263_SRAM0_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9263_BASE_SDRAMC0)),
+ NULL);
+}
diff --git a/arch/arm/boards/tny-a926x/tny_a9263_lowlevel_init.c b/arch/arm/boards/tny-a926x/tny_a9263_lowlevel_init.c
deleted file mode 100644
index 1b146da62..000000000
--- a/arch/arm/boards/tny-a926x/tny_a9263_lowlevel_init.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2009-2011 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
- *
- * Under GPLv2
- */
-
-#include <common.h>
-#include <init.h>
-#include <mach/hardware.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91_lowlevel_init.h>
-
-#define MASTER_CLOCK 180
-
-#if MASTER_CLOCK == 200
-#define MASTER_PLL_MUL 100
-#else
-#define MASTER_PLL_MUL 90
-#endif
-#define MASTER_PLL_DIV 6
-
-void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg)
-{
- /* Disable Watchdog */
- cfg->wdt_mr =
- AT91_WDT_WDIDLEHLT | AT91_WDT_WDDBGHLT |
- AT91_WDT_WDV |
- AT91_WDT_WDDIS |
- AT91_WDT_WDD;
-
- /* define PDC[31:16] as DATA[31:16] */
- cfg->ebi_pio_pdr = 0xFFFF0000;
- /* no pull-up for D[31:16] */
- cfg->ebi_pio_ppudr = 0xFFFF0000;
- /* EBI0_CSA, CS1 SDRAM, CS3 NAND Flash, 3.3V memories */
- cfg->ebi_csa =
- AT91_MATRIX_EBI0_DBPUC | AT91_MATRIX_EBI0_VDDIOMSEL_3_3V |
- AT91_MATRIX_EBI0_CS1A_SDRAMC;
-
- cfg->smc_cs = 3;
- cfg->smc_mode =
- AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
- AT91_SMC_DBW_8 |
- AT91_SMC_EXNWMODE_DISABLE |
- AT91_SMC_TDF_(2);
- cfg->smc_cycle =
- AT91_SMC_NWECYCLE_(5) | AT91_SMC_NRDCYCLE_(5);
- cfg->smc_pulse =
- AT91_SMC_NWEPULSE_(3) | AT91_SMC_NCS_WRPULSE_(3) |
- AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(3);
- cfg->smc_setup =
- AT91_SMC_NWESETUP_(1) | AT91_SMC_NCS_WRSETUP_(0) |
- AT91_SMC_NRDSETUP_(1) | AT91_SMC_NCS_RDSETUP_(0);
-
- cfg->pmc_mor = AT91_PMC_OSCBYPASS;
- cfg->pmc_pllar =
- AT91_PMC_PLLA_WR_ERRATA | /* Bit 29 must be 1 when prog */
- AT91_PMC_PLLCOUNT | /* PLL Counter */
- (0 << 28) | /* PLL Clock Frequency Range */
- ((MASTER_PLL_MUL - 1) << 16) | (MASTER_PLL_DIV);
- /* PCK/2 = MCK Master Clock from PLLA */
- cfg->pmc_mckr1 =
- AT91_PMC_CSS_SLOW |
- AT91_PMC_PRES_1 |
- AT91SAM9_PMC_MDIV_2 |
- AT91_PMC_PDIV_1;
- /* PCK/2 = MCK Master Clock from PLLA */
- cfg->pmc_mckr2 =
- AT91_PMC_CSS_PLLA |
- AT91_PMC_PRES_1 |
- AT91SAM9_PMC_MDIV_2 |
- AT91_PMC_PDIV_1;
-
- /* SDRAM */
- /* SDRAMC_TR - Refresh Timer register */
- cfg->sdrc_tr1 = 0x13C;
- /* SDRAMC_CR - Configuration register*/
- cfg->sdrc_cr =
- AT91_SDRAMC_NR_13 |
- AT91_SDRAMC_NC_9 |
- AT91_SDRAMC_NB_4 |
- AT91_SDRAMC_CAS_2 |
- AT91_SDRAMC_DBW_32 |
- (2 << 8) | /* Write Recovery Delay */
- (7 << 12) | /* Row Cycle Delay */
- (2 << 16) | /* Row Precharge Delay */
- (2 << 20) | /* Row to Column Delay */
- (5 << 24) | /* Active to Precharge Delay */
- (8 << 28); /* Exit Self Refresh to Active Delay */
-
- /* Memory Device Register -> SDRAM */
- cfg->sdrc_mdr = AT91_SDRAMC_MD_SDRAM;
- /* SDRAM_TR */
- cfg->sdrc_tr2 = (MASTER_CLOCK * 7);
-
- /* user reset enable */
- cfg->rstc_rmr =
- AT91_RSTC_KEY |
- AT91_RSTC_PROCRST |
- AT91_RSTC_RSTTYP_WAKEUP |
- AT91_RSTC_RSTTYP_WATCHDOG;
-}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index e38589127..c48923ba6 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -288,7 +288,6 @@ config MACH_QIL_A9260
config MACH_TNY_A9260
bool "CALAO TNY-A9260"
select SUPPORT_CALAO_MOB_TNY_MD2
- select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems TNY-A9260.
<http://www.calao-systems.com>
@@ -376,7 +375,6 @@ config MACH_AT91SAM9G20EK
config MACH_TNY_A9G20
select SUPPORT_CALAO_MOB_TNY_MD2
bool "CALAO TNY-A9G20"
- select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems TNY-A9G20.
<http://www.calao-systems.com>
@@ -442,7 +440,6 @@ config MACH_TNY_A9263
bool "CALAO TNY-A9263"
select SUPPORT_CALAO_MOB_TNY_MD2
select HAVE_AT91_BOOTSTRAP
- select AT91SAM9263_LWL
help
Select this if you are using a Calao Systems TNY-A9263.
<http://www.calao-systems.com>
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:36 UTC
Permalink
Include deletion of now unused at91rm9200_lowlevel_init.c
and related CONFIG symbols

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/at91rm9200ek/Makefile | 1 +
.../at91rm9200ek/lowlevel.c} | 16 ++++++++--------
arch/arm/mach-at91/Kconfig | 3 ---
arch/arm/mach-at91/Makefile | 1 -
4 files changed, 9 insertions(+), 12 deletions(-)
rename arch/arm/{mach-at91/at91rm9200_lowlevel_init.c => boards/at91rm9200ek/lowlevel.c} (97%)

diff --git a/arch/arm/boards/at91rm9200ek/Makefile b/arch/arm/boards/at91rm9200ek/Makefile
index dec1c5045..b2d865e5d 100644
--- a/arch/arm/boards/at91rm9200ek/Makefile
+++ b/arch/arm/boards/at91rm9200ek/Makefile
@@ -1,2 +1,3 @@
obj-y += init.o
+lwl-y += lowlevel.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91rm9200ek
diff --git a/arch/arm/mach-at91/at91rm9200_lowlevel_init.c b/arch/arm/boards/at91rm9200ek/lowlevel.c
similarity index 97%
rename from arch/arm/mach-at91/at91rm9200_lowlevel_init.c
rename to arch/arm/boards/at91rm9200ek/lowlevel.c
index f78e36808..d96ef5a6d 100644
--- a/arch/arm/mach-at91/at91rm9200_lowlevel_init.c
+++ b/arch/arm/boards/at91rm9200ek/lowlevel.c
@@ -4,19 +4,19 @@
* Under GPLv2
*/

-#define __LOWLEVEL_INIT__
-
#include <common.h>
-#include <asm/system.h>
-#include <asm/barebox-arm.h>
+#include <init.h>
+
#include <asm/barebox-arm-head.h>
-#include <mach/hardware.h>
-#include <mach/at91rm9200.h>
+#include <asm/barebox-arm.h>
+
#include <mach/at91rm9200_mc.h>
+#include <mach/at91rm9200.h>
#include <mach/at91_pio.h>
#include <mach/at91_pmc.h>
-#include <mach/io.h>
-#include <init.h>
+#include <mach/hardware.h>
+//#include <mach/io.h>
+//#include <init.h>

void static inline access_sdram(void)
{
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index cf59f0ce4..14cfa4759 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -39,8 +39,6 @@ config AT91SAM9260_LWL
bool
config AT91SAM9G45_LWL
bool
-config AT91RM9200_LWL
- bool

config AT91SAM9_SMC
bool
@@ -243,7 +241,6 @@ choice
config MACH_AT91RM9200EK
bool "Atmel AT91RM9200-EK Evaluation Kit"
select HAVE_AT91_DATAFLASH_CARD
- select AT91RM9200_LWL
help
Select this if you are using Atmel's AT91RM9200-EK Evaluation Kit.
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3507>
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 89a88bf03..b853d9f02 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -10,7 +10,6 @@ obj-$(CONFIG_AT91_BOOTSTRAP) += bootstrap.o

lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9G45_LWL) += at91sam9g45_lowlevel_init.o
-lwl-$(CONFIG_AT91RM9200_LWL) += at91rm9200_lowlevel_init.o

obj-$(CONFIG_AT91SAM9_RESET) += at91sam9_reset.o
obj-$(CONFIG_AT91SAM9G45_RESET) += at91sam9g45_reset.o
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:35 UTC
Permalink
Include deletion of now unused at91sam9n12_lowlevel_init.c
and related CONFIG symbols

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/at91sam9260ek/Makefile | 1 +
arch/arm/boards/at91sam9260ek/lowlevel.c | 26 ++++++++++++++++++++++
arch/arm/boards/at91sam9m10g45ek/Makefile | 1 +
arch/arm/boards/at91sam9m10g45ek/lowlevel.c | 24 ++++++++++++++++++++
arch/arm/boards/at91sam9n12ek/Makefile | 1 +
.../at91sam9n12ek/lowlevel.c} | 13 +++++------
arch/arm/mach-at91/Kconfig | 6 -----
arch/arm/mach-at91/Makefile | 1 -
8 files changed, 58 insertions(+), 15 deletions(-)
create mode 100644 arch/arm/boards/at91sam9260ek/lowlevel.c
create mode 100644 arch/arm/boards/at91sam9m10g45ek/lowlevel.c
rename arch/arm/{mach-at91/at91sam9n12_lowlevel_init.c => boards/at91sam9n12ek/lowlevel.c} (84%)

diff --git a/arch/arm/boards/at91sam9260ek/Makefile b/arch/arm/boards/at91sam9260ek/Makefile
index 6e07f189f..9225ba08b 100644
--- a/arch/arm/boards/at91sam9260ek/Makefile
+++ b/arch/arm/boards/at91sam9260ek/Makefile
@@ -1,2 +1,3 @@
obj-y += init.o
+lwl-y += lowlevel.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9260ek
diff --git a/arch/arm/boards/at91sam9260ek/lowlevel.c b/arch/arm/boards/at91sam9260ek/lowlevel.c
new file mode 100644
index 000000000..02896856d
--- /dev/null
+++ b/arch/arm/boards/at91sam9260ek/lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9260.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9260_SRAM_BASE + AT91SAM9260_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
+ NULL);
+}
diff --git a/arch/arm/boards/at91sam9m10g45ek/Makefile b/arch/arm/boards/at91sam9m10g45ek/Makefile
index dd8052157..8a7f2fdbb 100644
--- a/arch/arm/boards/at91sam9m10g45ek/Makefile
+++ b/arch/arm/boards/at91sam9m10g45ek/Makefile
@@ -1,2 +1,3 @@
obj-y += init.o
+lwl-y += lowlevel.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9m10g45ek
diff --git a/arch/arm/boards/at91sam9m10g45ek/lowlevel.c b/arch/arm/boards/at91sam9m10g45ek/lowlevel.c
new file mode 100644
index 000000000..9be195837
--- /dev/null
+++ b/arch/arm/boards/at91sam9m10g45ek/lowlevel.c
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/hardware.h>
+#include <mach/at91sam9_ddrsdr.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9G45_SRAM_BASE + AT91SAM9G45_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_6, at91sam9g45_get_ddram_size(1),
+ NULL);
+}
diff --git a/arch/arm/boards/at91sam9n12ek/Makefile b/arch/arm/boards/at91sam9n12ek/Makefile
index f5d125a0e..f42fbb979 100644
--- a/arch/arm/boards/at91sam9n12ek/Makefile
+++ b/arch/arm/boards/at91sam9n12ek/Makefile
@@ -1,2 +1,3 @@
obj-y += init.o
+lwl-y += lowlevel.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-at91sam9n12ek
diff --git a/arch/arm/mach-at91/at91sam9n12_lowlevel_init.c b/arch/arm/boards/at91sam9n12ek/lowlevel.c
similarity index 84%
rename from arch/arm/mach-at91/at91sam9n12_lowlevel_init.c
rename to arch/arm/boards/at91sam9n12ek/lowlevel.c
index 2b5cb158b..3c5234eb5 100644
--- a/arch/arm/mach-at91/at91sam9n12_lowlevel_init.c
+++ b/arch/arm/boards/at91sam9n12ek/lowlevel.c
@@ -4,17 +4,14 @@
* Under GPLv2
*/

-#define __LOWLEVEL_INIT__
-
#include <common.h>
-#include <asm/system.h>
-#include <asm/barebox-arm.h>
+#include <init.h>
+
#include <asm/barebox-arm-head.h>
-#include <mach/hardware.h>
-#include <mach/io.h>
+#include <asm/barebox-arm.h>
+
#include <mach/at91sam9_ddrsdr.h>
-#include <init.h>
-#include <linux/sizes.h>
+#include <mach/hardware.h>

void __naked __bare_init barebox_arm_reset_vector(void)
{
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 8122cf367..cf59f0ce4 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -39,8 +39,6 @@ config AT91SAM9260_LWL
bool
config AT91SAM9G45_LWL
bool
-config AT91SAM9N12_LWL
- bool
config AT91RM9200_LWL
bool

@@ -268,7 +266,6 @@ config MACH_ANIMEO_IP
config MACH_AT91SAM9260EK
bool "Atmel AT91SAM9260-EK"
select HAVE_NAND_ATMEL_BUSWIDTH_16
- select AT91SAM9260_LWL
help
Say y here if you are using Atmel's AT91SAM9260-EK Evaluation board

@@ -360,7 +357,6 @@ choice
config MACH_AT91SAM9G20EK
bool "Atmel AT91SAM9G20-EK Evaluation Kit"
select HAVE_NAND_ATMEL_BUSWIDTH_16
- select AT91SAM9260_LWL
help
Select this if you are using Atmel's AT91SAM9G20-EK Evaluation Kit
that embeds only one SD/MMC slot.
@@ -460,7 +456,6 @@ config MACH_AT91SAM9M10IHD
config MACH_AT91SAM9M10G45EK
bool "Atmel AT91SAM9M10G45-EK Evaluation Kit"
select HAVE_NAND_ATMEL_BUSWIDTH_16
- select AT91SAM9G45_LWL
help
Select this if you are using Atmel's AT91SAM9M10G45-EK Evaluation Kit
or AT91SAM9G45-EKES or AT91SAM9M10-EKES (for those 2 select the LG LCD)
@@ -485,7 +480,6 @@ choice

config MACH_AT91SAM9N12EK
bool "Atmel AT91SAM9N12 Evaluation Kit"
- select AT91SAM9N12_LWL
help
Select this if you are using Atmel's AT91SAM9N12-EK Evaluation Kit.

diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index bde9e898f..89a88bf03 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -10,7 +10,6 @@ obj-$(CONFIG_AT91_BOOTSTRAP) += bootstrap.o

lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9G45_LWL) += at91sam9g45_lowlevel_init.o
-lwl-$(CONFIG_AT91SAM9N12_LWL) += at91sam9n12_lowlevel_init.o
lwl-$(CONFIG_AT91RM9200_LWL) += at91rm9200_lowlevel_init.o

obj-$(CONFIG_AT91SAM9_RESET) += at91sam9_reset.o
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:39 UTC
Permalink
Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/animeo_ip/Makefile | 1 +
arch/arm/boards/animeo_ip/lowlevel.c | 26 ++++++++++++++++++++++++++
arch/arm/mach-at91/Kconfig | 1 -
3 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boards/animeo_ip/lowlevel.c

diff --git a/arch/arm/boards/animeo_ip/Makefile b/arch/arm/boards/animeo_ip/Makefile
index 510b142ff..eef5879cb 100644
--- a/arch/arm/boards/animeo_ip/Makefile
+++ b/arch/arm/boards/animeo_ip/Makefile
@@ -1,2 +1,3 @@
obj-y += init.o
+lwl-y += lowlevel.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-animeo_ip
diff --git a/arch/arm/boards/animeo_ip/lowlevel.c b/arch/arm/boards/animeo_ip/lowlevel.c
new file mode 100644
index 000000000..02896856d
--- /dev/null
+++ b/arch/arm/boards/animeo_ip/lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9260.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9260_SRAM_BASE + AT91SAM9260_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
+ NULL);
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index bae049726..abbf9d4a1 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -256,7 +256,6 @@ choice

config MACH_ANIMEO_IP
bool "Somfy Animeo IP"
- select AT91SAM9260_LWL

config MACH_AT91SAM9260EK
bool "Atmel AT91SAM9260-EK"
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:40 UTC
Permalink
Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/dss11/Makefile | 1 +
arch/arm/boards/dss11/lowlevel.c | 26 ++++++++++++++++++++++++++
arch/arm/mach-at91/Kconfig | 1 -
3 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boards/dss11/lowlevel.c

diff --git a/arch/arm/boards/dss11/Makefile b/arch/arm/boards/dss11/Makefile
index eb072c016..2da0494d4 100644
--- a/arch/arm/boards/dss11/Makefile
+++ b/arch/arm/boards/dss11/Makefile
@@ -1 +1,2 @@
obj-y += init.o
+lwl-y += lowlevel.o
diff --git a/arch/arm/boards/dss11/lowlevel.c b/arch/arm/boards/dss11/lowlevel.c
new file mode 100644
index 000000000..02896856d
--- /dev/null
+++ b/arch/arm/boards/dss11/lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9260.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9260_SRAM_BASE + AT91SAM9260_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
+ NULL);
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index abbf9d4a1..73be26749 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -372,7 +372,6 @@ config MACH_USB_A9G20
config MACH_DSS11
bool "aizo dSS11"
select HAVE_NAND_ATMEL_BUSWIDTH_16
- select AT91SAM9260_LWL
help
Select this if you are using aizo dSS11
that embeds only one SD/MMC slot.
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:37 UTC
Permalink
Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/at91sam9m10ihd/Makefile | 2 ++
arch/arm/boards/at91sam9m10ihd/lowlevel.c | 25 +++++++++++++++++++++++++
arch/arm/mach-at91/Kconfig | 1 -
3 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boards/at91sam9m10ihd/lowlevel.c

diff --git a/arch/arm/boards/at91sam9m10ihd/Makefile b/arch/arm/boards/at91sam9m10ihd/Makefile
index f2acf201b..741fd861b 100644
--- a/arch/arm/boards/at91sam9m10ihd/Makefile
+++ b/arch/arm/boards/at91sam9m10ihd/Makefile
@@ -1,2 +1,4 @@
obj-y += init.o
obj-y += hw_version.o
+lwl-y += lowlevel.o
+
diff --git a/arch/arm/boards/at91sam9m10ihd/lowlevel.c b/arch/arm/boards/at91sam9m10ihd/lowlevel.c
new file mode 100644
index 000000000..624f7e800
--- /dev/null
+++ b/arch/arm/boards/at91sam9m10ihd/lowlevel.c
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_ddrsdr.h>
+#include <mach/at91sam9g45.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9G45_SRAM_BASE + AT91SAM9G45_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_6, at91sam9g45_get_ddram_size(1),
+ NULL);
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 14cfa4759..4ce4e6078 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -446,7 +446,6 @@ choice

config MACH_AT91SAM9M10IHD
bool "Atmel AT91SAM9M10IDH Tablet"
- select AT91SAM9G45_LWL
help
Select this if you are using Atmel's AT91SAM9M10IHD Tablet
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:38 UTC
Permalink
Include deletion of now unused at91sam9g45_lowlevel_init.c
and related CONFIG symbols

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/pm9g45/Makefile | 1 +
.../pm9g45/lowlevel.c} | 13 +++++--------
arch/arm/mach-at91/Kconfig | 3 ---
arch/arm/mach-at91/Makefile | 1 -
4 files changed, 6 insertions(+), 12 deletions(-)
rename arch/arm/{mach-at91/at91sam9g45_lowlevel_init.c => boards/pm9g45/lowlevel.c} (84%)

diff --git a/arch/arm/boards/pm9g45/Makefile b/arch/arm/boards/pm9g45/Makefile
index d81b1881b..bd47d837b 100644
--- a/arch/arm/boards/pm9g45/Makefile
+++ b/arch/arm/boards/pm9g45/Makefile
@@ -1,2 +1,3 @@
obj-y += init.o
+lwl-y += lowlevel.o
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-pm9g45
diff --git a/arch/arm/mach-at91/at91sam9g45_lowlevel_init.c b/arch/arm/boards/pm9g45/lowlevel.c
similarity index 84%
rename from arch/arm/mach-at91/at91sam9g45_lowlevel_init.c
rename to arch/arm/boards/pm9g45/lowlevel.c
index 2cdb7a6a5..182b9ea7d 100644
--- a/arch/arm/mach-at91/at91sam9g45_lowlevel_init.c
+++ b/arch/arm/boards/pm9g45/lowlevel.c
@@ -4,17 +4,14 @@
* Under GPLv2
*/

-#define __LOWLEVEL_INIT__
-
#include <common.h>
-#include <asm/system.h>
-#include <asm/barebox-arm.h>
+#include <init.h>
+
#include <asm/barebox-arm-head.h>
-#include <mach/hardware.h>
-#include <mach/io.h>
+#include <asm/barebox-arm.h>
+
#include <mach/at91sam9_ddrsdr.h>
-#include <init.h>
-#include <linux/sizes.h>
+#include <mach/hardware.h>

void __naked __bare_init barebox_arm_reset_vector(void)
{
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 4ce4e6078..bae049726 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -37,8 +37,6 @@ config HAVE_AT91_BOOTSTRAP
# as implemented in the *lowlevel_init.c files
config AT91SAM9260_LWL
bool
-config AT91SAM9G45_LWL
- bool

config AT91SAM9_SMC
bool
@@ -459,7 +457,6 @@ config MACH_AT91SAM9M10G45EK

config MACH_PM9G45
bool "Ronetix PM9G45"
- select AT91SAM9G45_LWL
help
Say y here if you are using the Ronetix PM9G45 Board

diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index b853d9f02..af41802cf 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -9,7 +9,6 @@ obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o
obj-$(CONFIG_AT91_BOOTSTRAP) += bootstrap.o

lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
-lwl-$(CONFIG_AT91SAM9G45_LWL) += at91sam9g45_lowlevel_init.o

obj-$(CONFIG_AT91SAM9_RESET) += at91sam9_reset.o
obj-$(CONFIG_AT91SAM9G45_RESET) += at91sam9g45_reset.o
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:42 UTC
Permalink
Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/mach-at91/Kconfig | 5 ---
arch/arm/mach-at91/Makefile | 2 -
arch/arm/mach-at91/at91sam9260_lowlevel_init.c | 48 ----------------------
.../mach-at91/include/mach/at91_lowlevel_init.h | 46 ---------------------
4 files changed, 101 deletions(-)
delete mode 100644 arch/arm/mach-at91/at91sam9260_lowlevel_init.c
delete mode 100644 arch/arm/mach-at91/include/mach/at91_lowlevel_init.h

diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 323287e6f..17e432fea 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -33,11 +33,6 @@ config HAVE_AT91_GENERATED_CLK
config HAVE_AT91_BOOTSTRAP
bool

-# Select if board uses barebox reset vector from mach-at91
-# as implemented in the *lowlevel_init.c files
-config AT91SAM9260_LWL
- bool
-
config AT91SAM9_SMC
bool

diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index af41802cf..a5e839248 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -8,8 +8,6 @@ obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o

obj-$(CONFIG_AT91_BOOTSTRAP) += bootstrap.o

-lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
-
obj-$(CONFIG_AT91SAM9_RESET) += at91sam9_reset.o
obj-$(CONFIG_AT91SAM9G45_RESET) += at91sam9g45_reset.o

diff --git a/arch/arm/mach-at91/at91sam9260_lowlevel_init.c b/arch/arm/mach-at91/at91sam9260_lowlevel_init.c
deleted file mode 100644
index 7f84185ef..000000000
--- a/arch/arm/mach-at91/at91sam9260_lowlevel_init.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
- *
- * Under GPLv2
- */
-
-#define __LOWLEVEL_INIT__
-
-#include <common.h>
-#include <asm/system.h>
-#include <asm/barebox-arm.h>
-#include <asm/barebox-arm-head.h>
-#include <mach/hardware.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91_pio.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91_lowlevel_init.h>
-#include <mach/io.h>
-#include <init.h>
-#include <linux/sizes.h>
-
-void __bare_init at91sam9260_lowlevel_init(void)
-{
- struct at91sam926x_lowlevel_cfg cfg;
-
- cfg.pio = IOMEM(AT91SAM9260_BASE_PIOC);
- cfg.sdramc = IOMEM(AT91SAM9260_BASE_SDRAMC);
- cfg.ebi_pio_is_peripha = false;
- cfg.matrix_csa = AT91_MATRIX_EBICSA;
-
- at91sam926x_lowlevel_init(&cfg);
-
- barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc),
- NULL);
-}
-
-void __naked __bare_init barebox_arm_reset_vector(void)
-{
- arm_cpu_lowlevel_init();
-
- arm_setup_stack(AT91SAM9260_SRAM_BASE + AT91SAM9260_SRAM_SIZE - 16);
-
- at91sam9260_lowlevel_init();
-}
diff --git a/arch/arm/mach-at91/include/mach/at91_lowlevel_init.h b/arch/arm/mach-at91/include/mach/at91_lowlevel_init.h
deleted file mode 100644
index d72dfff38..000000000
--- a/arch/arm/mach-at91/include/mach/at91_lowlevel_init.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2009-2011 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
- *
- * Under GPLv2
- */
-
-#ifndef __AT91_LOWLEVEL_INIT_H__
-#define __AT91_LOWLEVEL_INIT_H__
-
-struct at91sam926x_lowlevel_cfg {
- /* SoC specific */
- void __iomem *pio;
- void __iomem *sdramc;
- u32 ebi_pio_is_peripha;
- u32 matrix_csa;
-
- /* board specific */
- u32 wdt_mr;
- u32 ebi_pio_pdr;
- u32 ebi_pio_ppudr;
- u32 ebi_csa;
- u32 smc_cs;
- u32 smc_mode;
- u32 smc_cycle;
- u32 smc_pulse;
- u32 smc_setup;
- u32 pmc_mor;
- u32 pmc_pllar;
- u32 pmc_mckr1;
- u32 pmc_mckr2;
- u32 sdrc_cr;
- u32 sdrc_tr1;
- u32 sdrc_mdr;
- u32 sdrc_tr2;
- u32 rstc_rmr;
-};
-
-#ifdef CONFIG_AT91SAM926X_LWL
-void at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg);
-void at91sam926x_lowlevel_init(struct at91sam926x_lowlevel_cfg *cfg);
-#else
-static inline void at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg) {}
-static inline void at91sam926x_lowlevel_init(struct at91sam926x_lowlevel_cfg *cfg) {}
-#endif
-
-#endif /* __AT91_LOWLEVEL_INIT_H__ */
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:41 UTC
Permalink
Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/telit-evk-pro3/Makefile | 1 +
arch/arm/boards/telit-evk-pro3/lowlevel.c | 26 ++++++++++++++++++++++++++
arch/arm/mach-at91/Kconfig | 1 -
3 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boards/telit-evk-pro3/lowlevel.c

diff --git a/arch/arm/boards/telit-evk-pro3/Makefile b/arch/arm/boards/telit-evk-pro3/Makefile
index eb072c016..2da0494d4 100644
--- a/arch/arm/boards/telit-evk-pro3/Makefile
+++ b/arch/arm/boards/telit-evk-pro3/Makefile
@@ -1 +1,2 @@
obj-y += init.o
+lwl-y += lowlevel.o
diff --git a/arch/arm/boards/telit-evk-pro3/lowlevel.c b/arch/arm/boards/telit-evk-pro3/lowlevel.c
new file mode 100644
index 000000000..02896856d
--- /dev/null
+++ b/arch/arm/boards/telit-evk-pro3/lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9260.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9260_SRAM_BASE + AT91SAM9260_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
+ NULL);
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 73be26749..323287e6f 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -285,7 +285,6 @@ config MACH_USB_A9260

config MACH_GE863
bool "Telit EVK-PRO3"
- select AT91SAM9260_LWL
help
Say y here if you are using Telit EVK-PRO3 with GE863-PRO3
<http://www.telit.com>
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:31 UTC
Permalink
Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/qil-a926x/Makefile | 3 +++
arch/arm/boards/qil-a926x/lowlevel.c | 26 ++++++++++++++++++++++++++
arch/arm/mach-at91/Kconfig | 2 --
3 files changed, 29 insertions(+), 2 deletions(-)
create mode 100644 arch/arm/boards/qil-a926x/lowlevel.c

diff --git a/arch/arm/boards/qil-a926x/Makefile b/arch/arm/boards/qil-a926x/Makefile
index 0c7bc3f04..82e46b369 100644
--- a/arch/arm/boards/qil-a926x/Makefile
+++ b/arch/arm/boards/qil-a926x/Makefile
@@ -1,2 +1,5 @@
obj-y += init.o
+
+lwl-y += lowlevel.o
+
bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-qil-a926x
diff --git a/arch/arm/boards/qil-a926x/lowlevel.c b/arch/arm/boards/qil-a926x/lowlevel.c
new file mode 100644
index 000000000..02896856d
--- /dev/null
+++ b/arch/arm/boards/qil-a926x/lowlevel.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
+ *
+ * Under GPLv2
+ */
+
+#include <common.h>
+#include <init.h>
+
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam9_sdramc.h>
+#include <mach/at91sam9260.h>
+#include <mach/hardware.h>
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9260_SRAM_BASE + AT91SAM9260_SRAM_SIZE - 16);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1,
+ at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
+ NULL);
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index c48923ba6..ed961593b 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -280,7 +280,6 @@ config MACH_AT91SAM9260EK

config MACH_QIL_A9260
bool "CALAO QIL-A9260 board"
- select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems QIL-A9260 Board.
<http://www.calao-systems.com>
@@ -396,7 +395,6 @@ config MACH_DSS11

config MACH_QIL_A9G20
bool "CALAO QIL-A9G20 board"
- select AT91SAM9260_LWL
help
Select this if you are using a Calao Systems QIL-A9G20 Board.
<http://www.calao-systems.com>
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:33 UTC
Permalink
With the last users gone delete it

Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/mach-at91/Kconfig | 2 --
arch/arm/mach-at91/Makefile | 1 -
arch/arm/mach-at91/at91sam9263_lowlevel_init.c | 48 --------------------------
3 files changed, 51 deletions(-)
delete mode 100644 arch/arm/mach-at91/at91sam9263_lowlevel_init.c

diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 89ef5bfa7..225b4735b 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -37,8 +37,6 @@ config HAVE_AT91_BOOTSTRAP
# as implemented in the *lowlevel_init.c files
config AT91SAM9260_LWL
bool
-config AT91SAM9263_LWL
- bool
config AT91SAM9G45_LWL
bool
config AT91SAM9N12_LWL
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 8293f279a..c044bfe26 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -9,7 +9,6 @@ obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o
obj-$(CONFIG_AT91_BOOTSTRAP) += bootstrap.o

lwl-$(CONFIG_AT91SAM9260_LWL) += at91sam9260_lowlevel_init.o
-lwl-$(CONFIG_AT91SAM9263_LWL) += at91sam9263_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9G45_LWL) += at91sam9g45_lowlevel_init.o
lwl-$(CONFIG_AT91SAM9N12_LWL) += at91sam9n12_lowlevel_init.o
lwl-$(CONFIG_AT91RM9200_LWL) += at91rm9200_lowlevel_init.o
diff --git a/arch/arm/mach-at91/at91sam9263_lowlevel_init.c b/arch/arm/mach-at91/at91sam9263_lowlevel_init.c
deleted file mode 100644
index 0be84551f..000000000
--- a/arch/arm/mach-at91/at91sam9263_lowlevel_init.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2009-2013 Jean-Christophe PLAGNIOL-VILLARD <***@jcrosoft.com>
- *
- * Under GPLv2
- */
-
-#define __LOWLEVEL_INIT__
-
-#include <common.h>
-#include <asm/system.h>
-#include <asm/barebox-arm.h>
-#include <asm/barebox-arm-head.h>
-#include <mach/hardware.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91_pio.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91_lowlevel_init.h>
-#include <mach/io.h>
-#include <init.h>
-#include <linux/sizes.h>
-
-void __bare_init at91sam9263_lowlevel_init(void)
-{
- struct at91sam926x_lowlevel_cfg cfg;
-
- cfg.pio = IOMEM(AT91SAM9263_BASE_PIOD);
- cfg.sdramc = IOMEM(AT91SAM9263_BASE_SDRAMC0);
- cfg.ebi_pio_is_peripha = true;
- cfg.matrix_csa = AT91_MATRIX_EBI0CSA;
-
- at91sam926x_lowlevel_init(&cfg);
-
- barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc),
- NULL);
-}
-
-void __naked __bare_init barebox_arm_reset_vector(void)
-{
- arm_cpu_lowlevel_init();
-
- arm_setup_stack(AT91SAM9263_SRAM0_BASE + AT91SAM9263_SRAM0_SIZE - 16);
-
- at91sam9263_lowlevel_init();
-}
--
2.12.0
Sam Ravnborg
2017-07-07 12:12:27 UTC
Permalink
Signed-off-by: Sam Ravnborg <***@ravnborg.org>
---
arch/arm/boards/pm9263/lowlevel_init.c | 43 +++++++++++++++++++++++++---------
arch/arm/mach-at91/Kconfig | 2 --
2 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/arch/arm/boards/pm9263/lowlevel_init.c b/arch/arm/boards/pm9263/lowlevel_init.c
index 6336d5106..6849f0a5b 100644
--- a/arch/arm/boards/pm9263/lowlevel_init.c
+++ b/arch/arm/boards/pm9263/lowlevel_init.c
@@ -4,22 +4,18 @@
* Under GPLv2
*/

-#include <common.h>
-#include <init.h>
-#include <mach/hardware.h>
-#include <mach/at91_rstc.h>
-#include <mach/at91_wdt.h>
-#include <mach/at91_pmc.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91sam9_sdramc.h>
-#include <mach/at91sam9_matrix.h>
-#include <mach/at91_lowlevel_init.h>
+#include <linux/sizes.h>
+
+#include <asm/barebox-arm.h>
+
+#include <mach/at91sam926x_board_init.h>
+#include <mach/at91sam9263_matrix.h>

#define MASTER_PLL_DIV 6
#define MASTER_PLL_MUL 65
#define MAIN_PLL_DIV 2 /* 2 or 4 */

-void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_cfg *cfg)
+static void __bare_init pm9263_board_config(struct at91sam926x_board_cfg *cfg)
{
/* Disable Watchdog */
cfg->wdt_mr =
@@ -119,3 +115,28 @@ void __bare_init at91sam926x_lowlevel_board_config(struct at91sam926x_lowlevel_c
AT91_RSTC_RSTTYP_WAKEUP |
AT91_RSTC_RSTTYP_WATCHDOG;
}
+
+static void __bare_init pm9263_board_init(void)
+{
+ struct at91sam926x_board_cfg cfg;
+
+ cfg.pio = IOMEM(AT91SAM9263_BASE_PIOD);
+ cfg.sdramc = IOMEM(AT91SAM9263_BASE_SDRAMC0);
+ cfg.ebi_pio_is_peripha = true;
+ cfg.matrix_csa = AT91_MATRIX_EBI0CSA;
+
+ pm9263_board_config(&cfg);
+ at91sam926x_board_init(&cfg);
+
+ barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc),
+ NULL);
+}
+
+void __naked __bare_init barebox_arm_reset_vector(void)
+{
+ arm_cpu_lowlevel_init();
+
+ arm_setup_stack(AT91SAM9263_SRAM0_BASE + AT91SAM9263_SRAM0_SIZE - 16);
+
+ pm9263_board_init();
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 6363f1a15..b7d08b1e6 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -441,8 +441,6 @@ config MACH_MMCCPU
config MACH_PM9263
bool "Ronetix PM9263"
select HAVE_AT91_BOOTSTRAP
- select AT91SAM9263_LWL
- select AT91SAM926X_LWL
help
Say y here if you are using the Ronetix PM9263 Board
--
2.12.0
Lucas Stach
2017-07-17 09:52:29 UTC
Permalink
Hi Sam,
Post by Sam Ravnborg
The following patchset moves the reset vector
for at91 boards from mach-at91 to board code.
This is similar to what other boards do and is done to
prepare for multi-image and DT support.
The patchset convert all boards and thus clean up the
old code that resided in mach-at91/
The first patch have minimal impact, but prepares for a
board-by-board conversion.
All temporary CONFIG symbols are gone at the end of this series.
I kept Jean-Christophe PLAGNIOL-VILLARD and others
copyright in all the created files and did not add
copyright myself. The patchset does IMO not add any
copyrightable material from my side as this is
in reality just moving around code.
The patchset was successfully booted on a AT91SAM9263EK,
and all defconfigs was built (expect the ones that failed
to build before this patchset was applied).
Changes v1 => v2
- converted all boards over
- fixed author info
Just to let you know the current status here: While I think you are on
the right track with this, I'm currently lacking the bandwidth to
properly review this series. I'm a bit hesitant to just throw it into
-next without any kind of review, so I'm still hoping for others to take
a look.

Regards,
Lucas
Sam Ravnborg
2017-07-17 11:41:33 UTC
Permalink
Hi Lucas.
Post by Lucas Stach
Just to let you know the current status here: While I think you are on
the right track with this, I'm currently lacking the bandwidth to
properly review this series. I'm a bit hesitant to just throw it into
-next without any kind of review, so I'm still hoping for others to take
a look.
Thanks for the heads-up.
Review is a must as I am in unknown land here.
The most important part is if the apporach is correct or not.

I have continued with the effort to DT enable
the at91sam9263ek board and have a barebox that
boots using DT now with most stuff working.

atmel_lcdfb did not support DT which I have added.
All other drivers worked more or less out-of-the-box.

In the process there have been a few cleanups and fixes
and I will post the patches after some more testing.

Not everything is working yet:
- the NAND cannot read BBT (NAND is properly identified)
- environment load /dev/env0 fails (maybe related to the above)
- no kernel booted yet
- bootstrap not tested (will provide a defconfig if I get it working)
- network is not yet tested

I expect to work on the above list and hold back patches
until everything is working. That will take a few days.

If everything goes like for the other challenges I will
run to the other side of the forest to pick up a small
splinter of wood in my effort to find a fix.
Which is OK as this is part of the fun :-)

Sam

Loading...