136 lines
		
	
	
	
		
			3 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			136 lines
		
	
	
	
		
			3 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * DDR addressing details and AC timing parameters from JEDEC specs | ||
|  |  * | ||
|  |  * Copyright (C) 2012 Texas Instruments, Inc. | ||
|  |  * | ||
|  |  * Aneesh V <aneesh@ti.com> | ||
|  |  * | ||
|  |  * 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. | ||
|  |  */ | ||
|  | 
 | ||
|  | #include <memory/jedec_ddr.h>
 | ||
|  | #include <linux/module.h>
 | ||
|  | 
 | ||
|  | /* LPDDR2 addressing details from JESD209-2 section 2.4 */ | ||
|  | const struct lpddr2_addressing | ||
|  | 	lpddr2_jedec_addressing_table[NUM_DDR_ADDR_TABLE_ENTRIES] = { | ||
|  | 	{B4, T_REFI_15_6, T_RFC_90}, /* 64M */ | ||
|  | 	{B4, T_REFI_15_6, T_RFC_90}, /* 128M */ | ||
|  | 	{B4, T_REFI_7_8,  T_RFC_90}, /* 256M */ | ||
|  | 	{B4, T_REFI_7_8,  T_RFC_90}, /* 512M */ | ||
|  | 	{B8, T_REFI_7_8, T_RFC_130}, /* 1GS4 */ | ||
|  | 	{B8, T_REFI_3_9, T_RFC_130}, /* 2GS4 */ | ||
|  | 	{B8, T_REFI_3_9, T_RFC_130}, /* 4G */ | ||
|  | 	{B8, T_REFI_3_9, T_RFC_210}, /* 8G */ | ||
|  | 	{B4, T_REFI_7_8, T_RFC_130}, /* 1GS2 */ | ||
|  | 	{B4, T_REFI_3_9, T_RFC_130}, /* 2GS2 */ | ||
|  | }; | ||
|  | EXPORT_SYMBOL_GPL(lpddr2_jedec_addressing_table); | ||
|  | 
 | ||
|  | /* LPDDR2 AC timing parameters from JESD209-2 section 12 */ | ||
|  | const struct lpddr2_timings | ||
|  | 	lpddr2_jedec_timings[NUM_DDR_TIMING_TABLE_ENTRIES] = { | ||
|  | 	/* Speed bin 400(200 MHz) */ | ||
|  | 	[0] = { | ||
|  | 		.max_freq	= 200000000, | ||
|  | 		.min_freq	= 10000000, | ||
|  | 		.tRPab		= 21000, | ||
|  | 		.tRCD		= 18000, | ||
|  | 		.tWR		= 15000, | ||
|  | 		.tRAS_min	= 42000, | ||
|  | 		.tRRD		= 10000, | ||
|  | 		.tWTR		= 10000, | ||
|  | 		.tXP		= 7500, | ||
|  | 		.tRTP		= 7500, | ||
|  | 		.tCKESR		= 15000, | ||
|  | 		.tDQSCK_max	= 5500, | ||
|  | 		.tFAW		= 50000, | ||
|  | 		.tZQCS		= 90000, | ||
|  | 		.tZQCL		= 360000, | ||
|  | 		.tZQinit	= 1000000, | ||
|  | 		.tRAS_max_ns	= 70000, | ||
|  | 		.tDQSCK_max_derated = 6000, | ||
|  | 	}, | ||
|  | 	/* Speed bin 533(266 MHz) */ | ||
|  | 	[1] = { | ||
|  | 		.max_freq	= 266666666, | ||
|  | 		.min_freq	= 10000000, | ||
|  | 		.tRPab		= 21000, | ||
|  | 		.tRCD		= 18000, | ||
|  | 		.tWR		= 15000, | ||
|  | 		.tRAS_min	= 42000, | ||
|  | 		.tRRD		= 10000, | ||
|  | 		.tWTR		= 7500, | ||
|  | 		.tXP		= 7500, | ||
|  | 		.tRTP		= 7500, | ||
|  | 		.tCKESR		= 15000, | ||
|  | 		.tDQSCK_max	= 5500, | ||
|  | 		.tFAW		= 50000, | ||
|  | 		.tZQCS		= 90000, | ||
|  | 		.tZQCL		= 360000, | ||
|  | 		.tZQinit	= 1000000, | ||
|  | 		.tRAS_max_ns	= 70000, | ||
|  | 		.tDQSCK_max_derated = 6000, | ||
|  | 	}, | ||
|  | 	/* Speed bin 800(400 MHz) */ | ||
|  | 	[2] = { | ||
|  | 		.max_freq	= 400000000, | ||
|  | 		.min_freq	= 10000000, | ||
|  | 		.tRPab		= 21000, | ||
|  | 		.tRCD		= 18000, | ||
|  | 		.tWR		= 15000, | ||
|  | 		.tRAS_min	= 42000, | ||
|  | 		.tRRD		= 10000, | ||
|  | 		.tWTR		= 7500, | ||
|  | 		.tXP		= 7500, | ||
|  | 		.tRTP		= 7500, | ||
|  | 		.tCKESR		= 15000, | ||
|  | 		.tDQSCK_max	= 5500, | ||
|  | 		.tFAW		= 50000, | ||
|  | 		.tZQCS		= 90000, | ||
|  | 		.tZQCL		= 360000, | ||
|  | 		.tZQinit	= 1000000, | ||
|  | 		.tRAS_max_ns	= 70000, | ||
|  | 		.tDQSCK_max_derated = 6000, | ||
|  | 	}, | ||
|  | 	/* Speed bin 1066(533 MHz) */ | ||
|  | 	[3] = { | ||
|  | 		.max_freq	= 533333333, | ||
|  | 		.min_freq	= 10000000, | ||
|  | 		.tRPab		= 21000, | ||
|  | 		.tRCD		= 18000, | ||
|  | 		.tWR		= 15000, | ||
|  | 		.tRAS_min	= 42000, | ||
|  | 		.tRRD		= 10000, | ||
|  | 		.tWTR		= 7500, | ||
|  | 		.tXP		= 7500, | ||
|  | 		.tRTP		= 7500, | ||
|  | 		.tCKESR		= 15000, | ||
|  | 		.tDQSCK_max	= 5500, | ||
|  | 		.tFAW		= 50000, | ||
|  | 		.tZQCS		= 90000, | ||
|  | 		.tZQCL		= 360000, | ||
|  | 		.tZQinit	= 1000000, | ||
|  | 		.tRAS_max_ns	= 70000, | ||
|  | 		.tDQSCK_max_derated = 5620, | ||
|  | 	}, | ||
|  | }; | ||
|  | EXPORT_SYMBOL_GPL(lpddr2_jedec_timings); | ||
|  | 
 | ||
|  | const struct lpddr2_min_tck lpddr2_jedec_min_tck = { | ||
|  | 	.tRPab		= 3, | ||
|  | 	.tRCD		= 3, | ||
|  | 	.tWR		= 3, | ||
|  | 	.tRASmin	= 3, | ||
|  | 	.tRRD		= 2, | ||
|  | 	.tWTR		= 2, | ||
|  | 	.tXP		= 2, | ||
|  | 	.tRTP		= 2, | ||
|  | 	.tCKE		= 3, | ||
|  | 	.tCKESR		= 3, | ||
|  | 	.tFAW		= 8 | ||
|  | }; | ||
|  | EXPORT_SYMBOL_GPL(lpddr2_jedec_min_tck); |