| rjw | 1f88458 | 2022-01-06 17:20:42 +0800 | [diff] [blame] | 1 | TI EMIF SDRAM Controller Driver: | 
 | 2 |  | 
 | 3 | Author | 
 | 4 | ======== | 
 | 5 | Aneesh V <aneesh@ti.com> | 
 | 6 |  | 
 | 7 | Location | 
 | 8 | ============ | 
 | 9 | driver/memory/emif.c | 
 | 10 |  | 
 | 11 | Supported SoCs: | 
 | 12 | =================== | 
 | 13 | TI OMAP44xx | 
 | 14 | TI OMAP54xx | 
 | 15 |  | 
 | 16 | Menuconfig option: | 
 | 17 | ========================== | 
 | 18 | Device Drivers | 
 | 19 | 	Memory devices | 
 | 20 | 		Texas Instruments EMIF driver | 
 | 21 |  | 
 | 22 | Description | 
 | 23 | =========== | 
 | 24 | This driver is for the EMIF module available in Texas Instruments | 
 | 25 | SoCs. EMIF is an SDRAM controller that, based on its revision, | 
 | 26 | supports one or more of DDR2, DDR3, and LPDDR2 SDRAM protocols. | 
 | 27 | This driver takes care of only LPDDR2 memories presently. The | 
 | 28 | functions of the driver includes re-configuring AC timing | 
 | 29 | parameters and other settings during frequency, voltage and | 
 | 30 | temperature changes | 
 | 31 |  | 
 | 32 | Platform Data (see include/linux/platform_data/emif_plat.h): | 
 | 33 | ===================================================================== | 
 | 34 | DDR device details and other board dependent and SoC dependent | 
 | 35 | information can be passed through platform data (struct emif_platform_data) | 
 | 36 | - DDR device details: 'struct ddr_device_info' | 
 | 37 | - Device AC timings: 'struct lpddr2_timings' and 'struct lpddr2_min_tck' | 
 | 38 | - Custom configurations: customizable policy options through | 
 | 39 |   'struct emif_custom_configs' | 
 | 40 | - IP revision | 
 | 41 | - PHY type | 
 | 42 |  | 
 | 43 | Interface to the external world: | 
 | 44 | ================================ | 
 | 45 | EMIF driver registers notifiers for voltage and frequency changes | 
 | 46 | affecting EMIF and takes appropriate actions when these are invoked. | 
 | 47 | - freq_pre_notify_handling() | 
 | 48 | - freq_post_notify_handling() | 
 | 49 | - volt_notify_handling() | 
 | 50 |  | 
 | 51 | Debugfs | 
 | 52 | ======== | 
 | 53 | The driver creates two debugfs entries per device. | 
 | 54 | - regcache_dump : dump of register values calculated and saved for all | 
 | 55 |   frequencies used so far. | 
 | 56 | - mr4 : last polled value of MR4 register in the LPDDR2 device. MR4 | 
 | 57 |   indicates the current temperature level of the device. |