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