[U-Boot] [PATCH v2 01/10] ram: Add driver for MPC83xx
Simon Glass
sjg at chromium.org
Thu May 3 19:01:24 UTC 2018
Hi Mario,
On 27 April 2018 at 06:52, Mario Six <mario.six at gdsys.cc> wrote:
> Add a RAM driver for the MPC83xx architecture.
>
> Signed-off-by: Mario Six <mario.six at gdsys.cc>
>
> ---
>
> v1 -> v2:
> No changes
>
> ---
> arch/powerpc/cpu/mpc83xx/spd_sdram.c | 4 +
> drivers/ram/Kconfig | 8 +
> drivers/ram/Makefile | 1 +
> drivers/ram/mpc83xx_sdram.c | 948 +++++++++++++++++++++++++++++
> include/dt-bindings/memory/mpc83xx-sdram.h | 143 +++++
> include/mpc83xx.h | 6 +
> 6 files changed, 1110 insertions(+)
> create mode 100644 drivers/ram/mpc83xx_sdram.c
> create mode 100644 include/dt-bindings/memory/mpc83xx-sdram.h
>
Reviewed-by: Simon Glass <sjg at chromium.org>
Question below
[..]
> new file mode 100644
> index 0000000000..1a73f7b3da
> --- /dev/null
> +++ b/drivers/ram/mpc83xx_sdram.c
> @@ -0,0 +1,948 @@
> +#define DEBUG
> +
> +#include <common.h>
> +#include <dm.h>
> +#include <ram.h>
> +#include <asm/io.h>
> +#include <dt-bindings/memory/mpc83xx-sdram.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +#define CSCONFIG_ENABLE 0x80000000
> +
> +#define BANK_BITS_2 0x00000000
> +#define BANK_BITS_3 0x00004000
> +
> +#define ROW_BITS_12 0x00000000
> +#define ROW_BITS_13 0x00000100
> +#define ROW_BITS_14 0x00000200
> +
> +#define COL_BITS_8 0x00000000
> +#define COL_BITS_9 0x00000001
> +#define COL_BITS_10 0x00000002
> +#define COL_BITS_11 0x00000003
> +
> +#define TIMING_CFG3_EXT_REFREC_SHIFT 16
> +
> +#define TIMING_CFG0_RWT_SHIFT 30
> +#define TIMING_CFG0_WRT_SHIFT 28
> +#define TIMING_CFG0_RRT_SHIFT 26
> +#define TIMING_CFG0_WWT_SHIFT 24
> +#define TIMING_CFG0_ACT_PD_EXIT_SHIFT 20
> +#define TIMING_CFG0_PRE_PD_EXIT_SHIFT 16
> +#define TIMING_CFG0_ODT_PD_EXIT_SHIFT 8
> +#define TIMING_CFG0_MRS_CYC_SHIFT 0
> +
> +#define TIMING_CFG1_PRETOACT_SHIFT 28
> +#define TIMING_CFG1_ACTTOPRE_SHIFT 24
> +#define TIMING_CFG1_ACTTORW_SHIFT 20
> +#define TIMING_CFG1_CASLAT_SHIFT 16
> +#define TIMING_CFG1_REFREC_SHIFT 12
> +#define TIMING_CFG1_WRREC_SHIFT 8
> +#define TIMING_CFG1_ACTTOACT_SHIFT 4
> +#define TIMING_CFG1_WRTORD_SHIFT 0
> +
> +#define TIMING_CFG2_CPO_SHIFT 23
> +#define TIMING_CFG2_WR_DATA_DELAY_SHIFT 10
> +#define TIMING_CFG2_ADD_LAT_SHIFT 28
> +#define TIMING_CFG2_WR_LAT_DELAY_SHIFT 19
> +#define TIMING_CFG2_RD_TO_PRE_SHIFT 13
> +#define TIMING_CFG2_CKE_PLS_SHIFT 6
> +#define TIMING_CFG2_FOUR_ACT_SHIFT 0
> +
> +#define SDRAM_CFG_SREN_SHIFT (31 - 1)
> +#define SDRAM_CFG_ECC_EN_SHIFT (31 - 2)
> +#define SDRAM_CFG_RD_EN_SHIFT (31 - 3)
> +#define SDRAM_CFG_SDRAM_TYPE_SHIFT (31 - 7)
> +#define SDRAM_CFG_DYN_PWR_SHIFT (31 - 10)
> +#define SDRAM_CFG_DBW_SHIFT (31 - 12)
> +#define SDRAM_CFG_NCAP_SHIFT (31 - 14)
> +#define SDRAM_CFG_2T_EN_SHIFT (31 - 16)
> +#define SDRAM_CFG_BA_INTLV_CTL_SHIFT (31 - 23)
> +#define SDRAM_CFG_PCHB8_SHIFT (31 - 27)
> +#define SDRAM_CFG_HSE_SHIFT (31 - 28)
> +#define SDRAM_CFG_BI_SHIFT (31 - 31)
> +
> +#define SDRAM_CFG2_FRC_SR_SHIFT (31 - 0)
> +#define SDRAM_CFG2_DLL_RST_DIS (31 - 2)
> +#define SDRAM_CFG2_DQS_CFG (31 - 5)
> +#define SDRAM_CFG2_ODT_CFG (31 - 10)
> +#define SDRAM_CFG2_NUM_PR (31 - 19)
> +
> +#define SDRAM_MODE_ESD_SHIFT 16
> +#define SDRAM_MODE_SD_SHIFT 0
> +
> +#define SDRAM_MODE2_ESD2_SHIFT (31 - 15)
> +#define SDRAM_MODE2_ESD3_SHIFT (31 - 31)
> +
> +#define SDRAM_INTERVAL_REFINT_SHIFT 16
> +#define SDRAM_INTERVAL_BSTOPRE_SHIFT 0
> +
> +#define SDRAM_CFG_MEM_EN 0x80000000
> +
> +int dram_init(void)
> +{
> + struct udevice *ram_ctrl;
> + int ret;
> +
> + /* Current assumption: There is only one RAM controller */
> + ret = uclass_first_device_err(UCLASS_RAM, &ram_ctrl);
> +
> + if (ret) {
> + debug("uclass_first_device_err failed: %d\n", ret);
> + return ret;
> + }
> +
> + /* Set gd->ram_size? */
> +
> + return 0;
> +}
> +
> +phys_size_t get_effective_memsize(void)
> +{
> +#ifndef CONFIG_VERY_BIG_RAM
Can this (and the #ifdefs below in this file) be converted to
if (IS_ENABLED(CONFIG_...))
instead, to increase build coverage?
Regards,
Simon
More information about the U-Boot
mailing list