diff options
| author | Peter Tyser <ptyser@xes-inc.com> | 2010-04-12 22:28:09 -0500 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-04-13 09:13:16 +0200 | 
| commit | 8d1f268204b07e172f3cb5cee0a3974d605b0b98 (patch) | |
| tree | c3359e920cc886e7060fb099bf933496aca37153 /arch/ppc/cpu/mpc8xxx/ddr/ddr.h | |
| parent | 819833af39a91fa1c1e8252862bbda6f5a602f7b (diff) | |
| download | olio-uboot-2014.01-8d1f268204b07e172f3cb5cee0a3974d605b0b98.tar.xz olio-uboot-2014.01-8d1f268204b07e172f3cb5cee0a3974d605b0b98.zip | |
ppc: Move cpu/$CPU to arch/ppc/cpu/$CPU
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
Diffstat (limited to 'arch/ppc/cpu/mpc8xxx/ddr/ddr.h')
| -rw-r--r-- | arch/ppc/cpu/mpc8xxx/ddr/ddr.h | 81 | 
1 files changed, 81 insertions, 0 deletions
| diff --git a/arch/ppc/cpu/mpc8xxx/ddr/ddr.h b/arch/ppc/cpu/mpc8xxx/ddr/ddr.h new file mode 100644 index 000000000..f1220750d --- /dev/null +++ b/arch/ppc/cpu/mpc8xxx/ddr/ddr.h @@ -0,0 +1,81 @@ +/* + * Copyright 2008 Freescale Semiconductor, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * Version 2 as published by the Free Software Foundation. + */ + +#ifndef FSL_DDR_MAIN_H +#define FSL_DDR_MAIN_H + +#include <asm/fsl_ddr_sdram.h> +#include <asm/fsl_ddr_dimm_params.h> + +#include "common_timing_params.h" + +/* + * Bind the main DDR setup driver's generic names + * to this specific DDR technology. + */ +static __inline__ int +compute_dimm_parameters(const generic_spd_eeprom_t *spd, +			dimm_params_t *pdimm, +			unsigned int dimm_number) +{ +	return ddr_compute_dimm_parameters(spd, pdimm, dimm_number); +} + +/* + * Data Structures + * + * All data structures have to be on the stack + */ +#define CONFIG_SYS_NUM_DDR_CTLRS CONFIG_NUM_DDR_CONTROLLERS +#define CONFIG_SYS_DIMM_SLOTS_PER_CTLR CONFIG_DIMM_SLOTS_PER_CTLR + +typedef struct { +	generic_spd_eeprom_t +	   spd_installed_dimms[CONFIG_SYS_NUM_DDR_CTLRS][CONFIG_SYS_DIMM_SLOTS_PER_CTLR]; +	struct dimm_params_s +	   dimm_params[CONFIG_SYS_NUM_DDR_CTLRS][CONFIG_SYS_DIMM_SLOTS_PER_CTLR]; +	memctl_options_t memctl_opts[CONFIG_SYS_NUM_DDR_CTLRS]; +	common_timing_params_t common_timing_params[CONFIG_SYS_NUM_DDR_CTLRS]; +	fsl_ddr_cfg_regs_t fsl_ddr_config_reg[CONFIG_SYS_NUM_DDR_CTLRS]; +} fsl_ddr_info_t; + +/* Compute steps */ +#define STEP_GET_SPD                 (1 << 0) +#define STEP_COMPUTE_DIMM_PARMS      (1 << 1) +#define STEP_COMPUTE_COMMON_PARMS    (1 << 2) +#define STEP_GATHER_OPTS             (1 << 3) +#define STEP_ASSIGN_ADDRESSES        (1 << 4) +#define STEP_COMPUTE_REGS            (1 << 5) +#define STEP_PROGRAM_REGS            (1 << 6) +#define STEP_ALL                     0xFFF + +extern unsigned long long +fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step); + +extern const char * step_to_string(unsigned int step); + +extern unsigned int +compute_fsl_memctl_config_regs(const memctl_options_t *popts, +			       fsl_ddr_cfg_regs_t *ddr, +			       const common_timing_params_t *common_dimm, +			       const dimm_params_t *dimm_parameters, +			       unsigned int dbw_capacity_adjust); +extern unsigned int +compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params, +				      common_timing_params_t *outpdimm, +				      unsigned int number_of_dimms); +extern unsigned int populate_memctl_options(int all_DIMMs_registered, +				memctl_options_t *popts, +				dimm_params_t *pdimm, +				unsigned int ctrl_num); + +extern unsigned int mclk_to_picos(unsigned int mclk); +extern unsigned int get_memory_clk_period_ps(void); +extern unsigned int picos_to_mclk(unsigned int picos); + +#endif |