mail archive of the barebox mailing list
 help / color / mirror / Atom feed
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

  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