rockchip: rk3368: add DRAM controller driver with DRAM initialisation
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Thu, 22 Jun 2017 22:12:05 +0000 (00:12 +0200)
committerPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Sun, 13 Aug 2017 15:12:33 +0000 (17:12 +0200)
commit403e9cbcd5d2da3f5af0e67552c6ecc13a472830
tree999ad9d94cbbfdd47e68be28ad65bc02b6139228
parent832567d5aac53a95138b46fe4a0f42e8357e9934
rockchip: rk3368: add DRAM controller driver with DRAM initialisation

This adds a DRAM controller driver for the RK3368 and places it in
drivers/ram/rockchip (where the other DM-enabled DRAM controller
drivers for rockchip devices should also be moved eventually).

At this stage, only the following feature-set is supported:
 - DDR3
 - 32-bit configuration (i.e. fully populated)
 - dual-rank (i.e. no auto-detection of ranks)
 - DDR3-1600K speed-bin

This driver expects to run from a TPL stage that will later return to
the RK3368 BROM.  It communicates with later stages through the
os_reg2 in the pmugrf (i.e. using the same mechanism as Rockchip's DDR
init code).

Unlike other DMC drivers for RK32xx and RK33xx parts, the required
timings are calculated within the driver based on a target frequency
and a DDR3 speed-bin (only the DDR3-1600K speed-bin is support at this
time).

The RK3368 also has the DDRC0_CON0 (DDR ch. 0, control-register 0)
register for controlling the operation of its (single-channel) DRAM
controller in the GRF block.  This provides for selecting DDR3, mobile
DDR modes, and control low-power operation.
As part of this change, DDRC0_CON0 is also added to the GRF structure
definition (at offset 0x600).

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/arm/include/asm/arch-rockchip/ddr_rk3368.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/grf_rk3368.h
arch/arm/mach-rockchip/rk3368/Makefile
arch/arm/mach-rockchip/rk3368/sdram_rk3368.c [deleted file]
doc/device-tree-bindings/clock/rockchip,rk3368-dmc.txt [new file with mode: 0644]
drivers/ram/Makefile
drivers/ram/rockchip/Makefile [new file with mode: 0644]
drivers/ram/rockchip/dmc-rk3368.c [new file with mode: 0644]
include/dt-bindings/memory/rk3368-dmc.h [new file with mode: 0644]