From: Sascha Hauer <s.hauer@pengutronix.de>
To: Ahmad Fatoum <a.fatoum@pengutronix.de>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH v2 04/16] ARM: at91: replace at91sam9_ddrsdr.h with at91bootstrap's at91_ddrsdrc.h
Date: Wed, 20 Feb 2019 10:07:04 +0100 [thread overview]
Message-ID: <20190220090704.sb5o6m6clgrop6m6@pengutronix.de> (raw)
In-Reply-To: <20190219172150.11901-5-a.fatoum@pengutronix.de>
On Tue, Feb 19, 2019 at 06:21:38PM +0100, Ahmad Fatoum wrote:
> Instead of adding missing definitions to the existing at91sam9_ddrsdr.h
> and adapting the incoming DDRAM initialization code from at91bootstrap,
> just replace the lightly used existing header with this one.
>
> For easier comprehension, the replacement is done in three steps:
> This last step copies the memory size querying functions from at91sam9_ddrsdr.h
> to at91_ddrsdrc.h, then deletes it and fixes all references.
>
> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> ---
> arch/arm/boards/at91sam9m10g45ek/lowlevel.c | 2 +-
> arch/arm/boards/at91sam9m10ihd/lowlevel.c | 2 +-
> arch/arm/boards/at91sam9n12ek/lowlevel.c | 2 +-
> arch/arm/boards/at91sam9x5ek/lowlevel.c | 2 +-
> arch/arm/boards/pm9g45/lowlevel.c | 3 +-
> arch/arm/boards/sama5d3_xplained/lowlevel.c | 2 +-
> arch/arm/boards/sama5d3xek/lowlevel.c | 2 +-
> arch/arm/boards/sama5d4_xplained/lowlevel.c | 2 +-
> arch/arm/boards/sama5d4ek/lowlevel.c | 2 +-
> arch/arm/mach-at91/at91sam9g45_devices.c | 2 +-
> arch/arm/mach-at91/at91sam9g45_reset.S | 2 +-
> arch/arm/mach-at91/at91sam9n12_devices.c | 2 +-
> arch/arm/mach-at91/at91sam9x5_devices.c | 2 +-
> .../arm/mach-at91/include/mach/at91_ddrsdrc.h | 102 ++++++++++++++++++
> arch/arm/mach-at91/sama5d3_devices.c | 2 +-
> arch/arm/mach-at91/sama5d4_devices.c | 2 +-
> 16 files changed, 118 insertions(+), 15 deletions(-)
>
> diff --git a/arch/arm/boards/at91sam9m10g45ek/lowlevel.c b/arch/arm/boards/at91sam9m10g45ek/lowlevel.c
> index 478ff11e1dfe..b0161553ed05 100644
> --- a/arch/arm/boards/at91sam9m10g45ek/lowlevel.c
> +++ b/arch/arm/boards/at91sam9m10g45ek/lowlevel.c
> @@ -11,7 +11,7 @@
> #include <asm/barebox-arm.h>
>
> #include <mach/hardware.h>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
>
> void __naked __bare_init barebox_arm_reset_vector(void)
> {
> diff --git a/arch/arm/boards/at91sam9m10ihd/lowlevel.c b/arch/arm/boards/at91sam9m10ihd/lowlevel.c
> index d5940b987afa..c660b18e8854 100644
> --- a/arch/arm/boards/at91sam9m10ihd/lowlevel.c
> +++ b/arch/arm/boards/at91sam9m10ihd/lowlevel.c
> @@ -10,7 +10,7 @@
> #include <asm/barebox-arm-head.h>
> #include <asm/barebox-arm.h>
>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/at91sam9g45.h>
> #include <mach/hardware.h>
>
> diff --git a/arch/arm/boards/at91sam9n12ek/lowlevel.c b/arch/arm/boards/at91sam9n12ek/lowlevel.c
> index 47079336e632..de8308725ac9 100644
> --- a/arch/arm/boards/at91sam9n12ek/lowlevel.c
> +++ b/arch/arm/boards/at91sam9n12ek/lowlevel.c
> @@ -10,7 +10,7 @@
> #include <asm/barebox-arm-head.h>
> #include <asm/barebox-arm.h>
>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/hardware.h>
>
> void __naked __bare_init barebox_arm_reset_vector(void)
> diff --git a/arch/arm/boards/at91sam9x5ek/lowlevel.c b/arch/arm/boards/at91sam9x5ek/lowlevel.c
> index 9aa0e8ba9b2b..aefe18d1c92e 100644
> --- a/arch/arm/boards/at91sam9x5ek/lowlevel.c
> +++ b/arch/arm/boards/at91sam9x5ek/lowlevel.c
> @@ -1,6 +1,6 @@
> #include <common.h>
> #include <linux/sizes.h>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <asm/barebox-arm-head.h>
> #include <asm/barebox-arm.h>
> #include <io.h>
> diff --git a/arch/arm/boards/pm9g45/lowlevel.c b/arch/arm/boards/pm9g45/lowlevel.c
> index 67454bde268c..d64ebef27407 100644
> --- a/arch/arm/boards/pm9g45/lowlevel.c
> +++ b/arch/arm/boards/pm9g45/lowlevel.c
> @@ -10,7 +10,8 @@
> #include <asm/barebox-arm-head.h>
> #include <asm/barebox-arm.h>
>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> +
> #include <mach/hardware.h>
>
> void __naked __bare_init barebox_arm_reset_vector(void)
> diff --git a/arch/arm/boards/sama5d3_xplained/lowlevel.c b/arch/arm/boards/sama5d3_xplained/lowlevel.c
> index 56003c6330ec..b3b2c683eefd 100644
> --- a/arch/arm/boards/sama5d3_xplained/lowlevel.c
> +++ b/arch/arm/boards/sama5d3_xplained/lowlevel.c
> @@ -10,7 +10,7 @@
> #include <asm/barebox-arm-head.h>
> #include <asm/barebox-arm.h>
>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/hardware.h>
>
> void __naked __bare_init barebox_arm_reset_vector(void)
> diff --git a/arch/arm/boards/sama5d3xek/lowlevel.c b/arch/arm/boards/sama5d3xek/lowlevel.c
> index 56003c6330ec..b3b2c683eefd 100644
> --- a/arch/arm/boards/sama5d3xek/lowlevel.c
> +++ b/arch/arm/boards/sama5d3xek/lowlevel.c
> @@ -10,7 +10,7 @@
> #include <asm/barebox-arm-head.h>
> #include <asm/barebox-arm.h>
>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/hardware.h>
>
> void __naked __bare_init barebox_arm_reset_vector(void)
> diff --git a/arch/arm/boards/sama5d4_xplained/lowlevel.c b/arch/arm/boards/sama5d4_xplained/lowlevel.c
> index 82993c83551b..fdaa57bcf618 100644
> --- a/arch/arm/boards/sama5d4_xplained/lowlevel.c
> +++ b/arch/arm/boards/sama5d4_xplained/lowlevel.c
> @@ -10,7 +10,7 @@
> #include <asm/barebox-arm-head.h>
> #include <asm/barebox-arm.h>
>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/hardware.h>
>
> void __naked __bare_init barebox_arm_reset_vector(void)
> diff --git a/arch/arm/boards/sama5d4ek/lowlevel.c b/arch/arm/boards/sama5d4ek/lowlevel.c
> index 82993c83551b..fdaa57bcf618 100644
> --- a/arch/arm/boards/sama5d4ek/lowlevel.c
> +++ b/arch/arm/boards/sama5d4ek/lowlevel.c
> @@ -10,7 +10,7 @@
> #include <asm/barebox-arm-head.h>
> #include <asm/barebox-arm.h>
>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/hardware.h>
>
> void __naked __bare_init barebox_arm_reset_vector(void)
> diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
> index 43d8d5fbd6a2..389d88c17d4f 100644
> --- a/arch/arm/mach-at91/at91sam9g45_devices.c
> +++ b/arch/arm/mach-at91/at91sam9g45_devices.c
> @@ -17,7 +17,7 @@
> #include <mach/hardware.h>
> #include <mach/at91_pmc.h>
> #include <mach/at91sam9g45_matrix.h>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/at91_rtt.h>
> #include <mach/board.h>
> #include <mach/iomux.h>
> diff --git a/arch/arm/mach-at91/at91sam9g45_reset.S b/arch/arm/mach-at91/at91sam9g45_reset.S
> index 085683c7f9d8..9077871d7203 100644
> --- a/arch/arm/mach-at91/at91sam9g45_reset.S
> +++ b/arch/arm/mach-at91/at91sam9g45_reset.S
> @@ -12,7 +12,7 @@
>
> #include <linux/linkage.h>
> #include <mach/hardware.h>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/at91_rstc.h>
>
> .arm
> diff --git a/arch/arm/mach-at91/at91sam9n12_devices.c b/arch/arm/mach-at91/at91sam9n12_devices.c
> index 43cbb79af4a5..91b3e9b2fbc5 100644
> --- a/arch/arm/mach-at91/at91sam9n12_devices.c
> +++ b/arch/arm/mach-at91/at91sam9n12_devices.c
> @@ -18,7 +18,7 @@
> #include <mach/board.h>
> #include <mach/at91_pmc.h>
> #include <mach/at91sam9n12_matrix.h>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/iomux.h>
> #include <mach/cpu.h>
> #include <i2c/i2c-gpio.h>
> diff --git a/arch/arm/mach-at91/at91sam9x5_devices.c b/arch/arm/mach-at91/at91sam9x5_devices.c
> index ab506a1f4236..022e4fb59ab9 100644
> --- a/arch/arm/mach-at91/at91sam9x5_devices.c
> +++ b/arch/arm/mach-at91/at91sam9x5_devices.c
> @@ -17,7 +17,7 @@
> #include <mach/board.h>
> #include <mach/at91_pmc.h>
> #include <mach/at91sam9x5_matrix.h>
> -#include <mach/at91sam9_ddrsdr.h>
> +#include <mach/at91_ddrsdrc.h>
> #include <mach/iomux.h>
> #include <mach/cpu.h>
> #include <i2c/i2c-gpio.h>
> diff --git a/arch/arm/mach-at91/include/mach/at91_ddrsdrc.h b/arch/arm/mach-at91/include/mach/at91_ddrsdrc.h
> index 57d0d8f489c4..b74ec3e9848c 100644
> --- a/arch/arm/mach-at91/include/mach/at91_ddrsdrc.h
> +++ b/arch/arm/mach-at91/include/mach/at91_ddrsdrc.h
> @@ -285,4 +285,106 @@
> #define AT91C_DDRC2_WPVS (0x1UL << 0)
> #define AT91C_DDRC2_WPSRC (0xFFFFUL << 8)
>
> +#ifndef __ASSEMBLY__
> +#include <common.h>
> +#include <io.h>
> +
> +static inline u32 at91_get_ddram_size(void * __iomem base, bool is_nb)
> +{
> + u32 cr;
> + u32 mdr;
> + u32 size;
> + bool is_sdram;
> +
> + cr = readl(base + AT91C_HDDRSDRC2_CR);
> + mdr = readl(base + AT91C_HDDRSDRC2_MDR);
> +
> + /* will always be false for sama5d2, sama5d3 or sama5d4 */
> + is_sdram = (mdr & AT91C_DDRC2_MD) <= AT91C_DDRC2_MD_LP_SDR_SDRAM;
> +
> + /* Formula:
> + * size = bank << (col + row + 1);
> + * if (bandwidth == 32 bits)
> + * size <<= 1;
> + */
> + size = 1;
> + /* COL */
> + size += (cr & AT91C_DDRC2_NC) + 8;
> + if (!is_sdram)
> + size ++;
> + /* ROW */
> + size += ((cr & AT91C_DDRC2_NR) >> 2) + 11;
> + /* BANK */
> + if (is_nb)
> + size = ((cr & AT91C_DDRC2_NB_BANKS) ? 8 : 4) << size;
> + else
> + size = 4 << size;
> +
> + /* bandwidth */
> + if (!(mdr & AT91C_DDRC2_DBW))
> + size <<= 1;
> +
> + return size;
> +}
> +
> +#ifdef CONFIG_SOC_AT91SAM9G45
> +#include <mach/at91sam9g45.h>
> +static inline u32 at91sam9g45_get_ddram_size(int bank)
> +{
> + switch (bank) {
> + case 0:
> + return at91_get_ddram_size(IOMEM(AT91SAM9G45_BASE_DDRSDRC0), false);
> + case 1:
> + return at91_get_ddram_size(IOMEM(AT91SAM9G45_BASE_DDRSDRC1), false);
> + default:
> + return 0;
> + }
> +}
> +#else
> +static inline u32 at91sam9g45_get_ddram_size(int bank)
> +{
> + return 0;
> +}
> +#endif
This #ifdeffery looks rather unnecessary. Can you please remove it?
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2019-02-20 9:07 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-19 17:21 [PATCH v2 00/16] ARM: at91: microchip-kz9477-evb: support first stage boot Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 01/16] LICENSES: add BSD-1-Clause license Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 02/16] ARM: at91: import at91bootstrap's at91_ddrsdrc.h Ahmad Fatoum
2019-02-22 13:33 ` Roland Hieber
2019-02-26 9:04 ` Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 03/16] ARM: at91: migrate at91sam9_ddrsdr.h to use " Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 04/16] ARM: at91: replace at91sam9_ddrsdr.h with " Ahmad Fatoum
2019-02-20 9:07 ` Sascha Hauer [this message]
2019-02-19 17:21 ` [PATCH v2 05/16] ARM: at91: watchdog: implement at91_wdt_disable Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 06/16] ARM: at91: import lowlevel clock initialization from at91bootstrap Ahmad Fatoum
2019-02-20 9:11 ` Sascha Hauer
2019-02-19 17:21 ` [PATCH v2 07/16] ARM: at91: import early_udelay " Ahmad Fatoum
2019-02-20 9:20 ` Sascha Hauer
2019-02-20 9:23 ` Sascha Hauer
2019-02-19 17:21 ` [PATCH v2 08/16] ARM: at91: import low level DDRAMC initialization code " Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 09/16] ARM: at91: import lowlevel dbgu UART init " Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 10/16] images: at91: differentiate between first and second stage images Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 11/16] ARM: at91: sama5: specify 0x10000 as first stage max size Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 12/16] ARM: at91: microchip-ksz9477-evb: use compressed DTB Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 13/16] ARM: dts: microchip-ksz9477-evb: add dummy first stage device tree Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 14/16] ARM: at91: microchip-ksz9477-evb: implement first stage Ahmad Fatoum
2019-02-22 13:45 ` Roland Hieber
2019-02-26 9:05 ` Ahmad Fatoum
2019-02-19 17:21 ` [PATCH v2 15/16] ARM: at91: microchip-ksz9477: provide board code fallback Ahmad Fatoum
2019-02-20 9:27 ` Sascha Hauer
2019-02-19 17:21 ` [PATCH v2 16/16] doc: microchip-ksz9477-evb: add documentation Ahmad Fatoum
2019-02-24 12:42 ` [PATCH v2 00/16] ARM: at91: microchip-kz9477-evb: support first stage boot Sam Ravnborg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190220090704.sb5o6m6clgrop6m6@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox