mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	ddr: altera: sdram: Make sdram_start and sdram_end into u32
Originally, both sdram_start and sdram_end were 64b values. The sdram_start had no reason for being so, since our address space is only 32b, so switching sdram_start to u32 is simple. The sdram_end is a bit more complex, since it can actually be set to (1 << 32) if someone really wanted to use an SoCFPGA with 4 GiB of DRAM and fixed the code around a little. But, the code handling the protection rules internally decrements the sdram_end variable anyway. Thus, instead of calling the code and passing in the address of the SDRAM end, pass in the address already decremented by one. This lets the sdram_end be 32b as well. Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:
		| @@ -15,8 +15,8 @@ | ||||
| DECLARE_GLOBAL_DATA_PTR; | ||||
|  | ||||
| struct sdram_prot_rule { | ||||
| 	u64	sdram_start;	/* SDRAM start address */ | ||||
| 	u64	sdram_end;	/* SDRAM end address */ | ||||
| 	u32	sdram_start;	/* SDRAM start address */ | ||||
| 	u32	sdram_end;	/* SDRAM end address */ | ||||
| 	u32	rule;		/* SDRAM protection rule number: 0-19 */ | ||||
| 	int	valid;		/* Rule valid or not? 1 - valid, 0 not*/ | ||||
|  | ||||
| @@ -109,8 +109,8 @@ static int get_errata_rows(const struct socfpga_sdram_config *cfg) | ||||
| /* SDRAM protection rules vary from 0-19, a total of 20 rules. */ | ||||
| static void sdram_set_rule(struct sdram_prot_rule *prule) | ||||
| { | ||||
| 	uint32_t lo_addr_bits; | ||||
| 	uint32_t hi_addr_bits; | ||||
| 	u32 lo_addr_bits; | ||||
| 	u32 hi_addr_bits; | ||||
| 	int ruleno = prule->rule; | ||||
|  | ||||
| 	/* Select the rule */ | ||||
| @@ -118,11 +118,11 @@ static void sdram_set_rule(struct sdram_prot_rule *prule) | ||||
|  | ||||
| 	/* Obtain the address bits */ | ||||
| 	lo_addr_bits = prule->sdram_start >> 20ULL; | ||||
| 	hi_addr_bits = (prule->sdram_end - 1) >> 20ULL; | ||||
| 	hi_addr_bits = prule->sdram_end >> 20ULL; | ||||
|  | ||||
| 	debug("sdram set rule start %x, %lld\n", lo_addr_bits, | ||||
| 	debug("sdram set rule start %x, %d\n", lo_addr_bits, | ||||
| 	      prule->sdram_start); | ||||
| 	debug("sdram set rule end   %x, %lld\n", hi_addr_bits, | ||||
| 	debug("sdram set rule end   %x, %d\n", hi_addr_bits, | ||||
| 	      prule->sdram_end); | ||||
|  | ||||
| 	/* Set rule addresses */ | ||||
| @@ -174,7 +174,8 @@ static void sdram_get_rule(struct sdram_prot_rule *prule) | ||||
| 	prule->result = (data >> 13) & 0x1; | ||||
| } | ||||
|  | ||||
| static void sdram_set_protection_config(uint64_t sdram_start, uint64_t sdram_end) | ||||
| static void | ||||
| sdram_set_protection_config(const u32 sdram_start, const u32 sdram_end) | ||||
| { | ||||
| 	struct sdram_prot_rule rule; | ||||
| 	int rules; | ||||
| @@ -219,8 +220,8 @@ static void sdram_dump_protection_config(void) | ||||
| 	for (rules = 0; rules < 20; rules++) { | ||||
| 		sdram_get_rule(&rule); | ||||
| 		debug("Rule %d, rules ...\n", rules); | ||||
| 		debug("    sdram start %llx\n", rule.sdram_start); | ||||
| 		debug("    sdram end   %llx\n", rule.sdram_end); | ||||
| 		debug("    sdram start %x\n", rule.sdram_start); | ||||
| 		debug("    sdram end   %x\n", rule.sdram_end); | ||||
| 		debug("    low prot id %d, hi prot id %d\n", | ||||
| 		      rule.lo_prot_id, | ||||
| 		      rule.hi_prot_id); | ||||
| @@ -457,7 +458,7 @@ int sdram_mmr_init_full(unsigned int sdr_phy_reg) | ||||
| 			SDR_CTRLGRP_STATICCFG_APPLYCFG_MASK, | ||||
| 			1 << SDR_CTRLGRP_STATICCFG_APPLYCFG_LSB); | ||||
|  | ||||
| 	sdram_set_protection_config(0, sdram_calculate_size()); | ||||
| 	sdram_set_protection_config(0, sdram_calculate_size() - 1); | ||||
|  | ||||
| 	sdram_dump_protection_config(); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user