Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.4.
  1/*
  2 * DDR addressing details and AC timing parameters from JEDEC specs
  3 *
  4 * Copyright (C) 2012 Texas Instruments, Inc.
  5 *
  6 * Aneesh V <aneesh@ti.com>
  7 *
  8 * This program is free software; you can redistribute it and/or modify
  9 * it under the terms of the GNU General Public License version 2 as
 10 * published by the Free Software Foundation.
 11 */
 12
 13#include <memory/jedec_ddr.h>
 14#include <linux/module.h>
 15
 16/* LPDDR2 addressing details from JESD209-2 section 2.4 */
 17const struct lpddr2_addressing
 18	lpddr2_jedec_addressing_table[NUM_DDR_ADDR_TABLE_ENTRIES] = {
 19	{B4, T_REFI_15_6, T_RFC_90}, /* 64M */
 20	{B4, T_REFI_15_6, T_RFC_90}, /* 128M */
 21	{B4, T_REFI_7_8,  T_RFC_90}, /* 256M */
 22	{B4, T_REFI_7_8,  T_RFC_90}, /* 512M */
 23	{B8, T_REFI_7_8, T_RFC_130}, /* 1GS4 */
 24	{B8, T_REFI_3_9, T_RFC_130}, /* 2GS4 */
 25	{B8, T_REFI_3_9, T_RFC_130}, /* 4G */
 26	{B8, T_REFI_3_9, T_RFC_210}, /* 8G */
 27	{B4, T_REFI_7_8, T_RFC_130}, /* 1GS2 */
 28	{B4, T_REFI_3_9, T_RFC_130}, /* 2GS2 */
 29};
 30EXPORT_SYMBOL_GPL(lpddr2_jedec_addressing_table);
 31
 32/* LPDDR2 AC timing parameters from JESD209-2 section 12 */
 33const struct lpddr2_timings
 34	lpddr2_jedec_timings[NUM_DDR_TIMING_TABLE_ENTRIES] = {
 35	/* Speed bin 400(200 MHz) */
 36	[0] = {
 37		.max_freq	= 200000000,
 38		.min_freq	= 10000000,
 39		.tRPab		= 21000,
 40		.tRCD		= 18000,
 41		.tWR		= 15000,
 42		.tRAS_min	= 42000,
 43		.tRRD		= 10000,
 44		.tWTR		= 10000,
 45		.tXP		= 7500,
 46		.tRTP		= 7500,
 47		.tCKESR		= 15000,
 48		.tDQSCK_max	= 5500,
 49		.tFAW		= 50000,
 50		.tZQCS		= 90000,
 51		.tZQCL		= 360000,
 52		.tZQinit	= 1000000,
 53		.tRAS_max_ns	= 70000,
 54		.tDQSCK_max_derated = 6000,
 55	},
 56	/* Speed bin 533(266 MHz) */
 57	[1] = {
 58		.max_freq	= 266666666,
 59		.min_freq	= 10000000,
 60		.tRPab		= 21000,
 61		.tRCD		= 18000,
 62		.tWR		= 15000,
 63		.tRAS_min	= 42000,
 64		.tRRD		= 10000,
 65		.tWTR		= 7500,
 66		.tXP		= 7500,
 67		.tRTP		= 7500,
 68		.tCKESR		= 15000,
 69		.tDQSCK_max	= 5500,
 70		.tFAW		= 50000,
 71		.tZQCS		= 90000,
 72		.tZQCL		= 360000,
 73		.tZQinit	= 1000000,
 74		.tRAS_max_ns	= 70000,
 75		.tDQSCK_max_derated = 6000,
 76	},
 77	/* Speed bin 800(400 MHz) */
 78	[2] = {
 79		.max_freq	= 400000000,
 80		.min_freq	= 10000000,
 81		.tRPab		= 21000,
 82		.tRCD		= 18000,
 83		.tWR		= 15000,
 84		.tRAS_min	= 42000,
 85		.tRRD		= 10000,
 86		.tWTR		= 7500,
 87		.tXP		= 7500,
 88		.tRTP		= 7500,
 89		.tCKESR		= 15000,
 90		.tDQSCK_max	= 5500,
 91		.tFAW		= 50000,
 92		.tZQCS		= 90000,
 93		.tZQCL		= 360000,
 94		.tZQinit	= 1000000,
 95		.tRAS_max_ns	= 70000,
 96		.tDQSCK_max_derated = 6000,
 97	},
 98	/* Speed bin 1066(533 MHz) */
 99	[3] = {
100		.max_freq	= 533333333,
101		.min_freq	= 10000000,
102		.tRPab		= 21000,
103		.tRCD		= 18000,
104		.tWR		= 15000,
105		.tRAS_min	= 42000,
106		.tRRD		= 10000,
107		.tWTR		= 7500,
108		.tXP		= 7500,
109		.tRTP		= 7500,
110		.tCKESR		= 15000,
111		.tDQSCK_max	= 5500,
112		.tFAW		= 50000,
113		.tZQCS		= 90000,
114		.tZQCL		= 360000,
115		.tZQinit	= 1000000,
116		.tRAS_max_ns	= 70000,
117		.tDQSCK_max_derated = 5620,
118	},
119};
120EXPORT_SYMBOL_GPL(lpddr2_jedec_timings);
121
122const struct lpddr2_min_tck lpddr2_jedec_min_tck = {
123	.tRPab		= 3,
124	.tRCD		= 3,
125	.tWR		= 3,
126	.tRASmin	= 3,
127	.tRRD		= 2,
128	.tWTR		= 2,
129	.tXP		= 2,
130	.tRTP		= 2,
131	.tCKE		= 3,
132	.tCKESR		= 3,
133	.tFAW		= 8
134};
135EXPORT_SYMBOL_GPL(lpddr2_jedec_min_tck);