summaryrefslogtreecommitdiff
path: root/drivers/ddr/altera/sdram.c
Commit message (Collapse)AuthorAgeLines
* ddr: altera: sdram: Make sdram_start and sdram_end into u32Marek Vasut2015-08-08-11/+12
| | | | | | | | | | | | | | | | Originally, both sdram_start and sdram_end were 64b values. The sdram_start had no reason for being so, since our address space is only 32b, so switching sdram_start to u32 is simple. The sdram_end is a bit more complex, since it can actually be set to (1 << 32) if someone really wanted to use an SoCFPGA with 4 GiB of DRAM and fixed the code around a little. But, the code handling the protection rules internally decrements the sdram_end variable anyway. Thus, instead of calling the code and passing in the address of the SDRAM end, pass in the address already decremented by one. This lets the sdram_end be 32b as well. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Minor cleanup in sdram_get_rule()Marek Vasut2015-08-08-4/+4
| | | | | | Fix the data types and zap unnecessary type change. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Minor cleanup in sdram_set_rule()Marek Vasut2015-08-08-4/+4
| | | | | | Zap an obscure unneeded cast and clean other minor nits in this function. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Add missing kerneldocMarek Vasut2015-08-08-0/+12
| | | | | | | Add kerneldoc to functions which are missing it, but are already cleaned up. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_write_verify()Marek Vasut2015-08-08-25/+26
| | | | | | | | | Clean the function up so that it's obvious what it is doing, fix the formating strings in debug outputs, add kerneldoc. Make the function return proper errno-compliant return values and propagate this change throughout sdram.c Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_calculate_size() part 2Marek Vasut2015-08-08-23/+12
| | | | | | | | Clean up coding style, mostly clean up comments, add kerneldoc. Also, zap assignment of the "cs" variable, which is outright dead code, so just remove it. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_calculate_size() part 1Marek Vasut2015-08-08-9/+10
| | | | | | | | | Pluck out all of the CONFIG_HPS_SDR_CTRLCFG_* macros. This change makes sdram.c completely clear of these macros and allows removing of the ugly include of sdram.h . The namespace is now a much nicer place! Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Introduce socfpga_sdram_get_config()Marek Vasut2015-08-08-211/+5
| | | | | | | | | | Introduce socfpga_sdram_get_config() function implement in a board file, which returns the socfpga_sdram_config structure. This is the last step in cleaning up the socfpga_mmr_init_full(), but not the last step which allows removing the inclusion of sdram.h from drivers/ddr/altera/sdram.c thus far. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_mmr_init_full() part 8Marek Vasut2015-08-08-1/+2
| | | | | | Fix the return value so that standard errno return values can be used. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_mmr_init_full() part 7Marek Vasut2015-08-08-1/+6
| | | | | | Add kerneldoc. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_mmr_init_full() part 6Marek Vasut2015-08-08-10/+21
| | | | | | Pull out the block of register programming into a separate function. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_mmr_init_full() part 5Marek Vasut2015-08-08-10/+11
| | | | | | | | Rework remaining two register setting functions such that they only return the final register value. Move the register setting into the block of register I/O in sdram_mmr_init_full(). Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_mmr_init_full() part 4Marek Vasut2015-08-08-62/+36
| | | | | | | | | Merge sdr_set_*() functions which are just setting registers among the sea of register setting in sdram_mmr_init_full(). There is no need to keep them separate this way, there is nothing special about them. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_mmr_init_full() part 3Marek Vasut2015-08-08-28/+39
| | | | | | | Pluck out the remaining CONFIG_HPS_SDR_CTRLCFG_ and put it into the socfpga_sdram_config structure. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_mmr_init_full() part 2Marek Vasut2015-08-08-67/+83
| | | | | | | | Suck out all the CONFIG_HPS_SDR_CTRLCFG_* from sdram_mmr_init_full() into the socfpga_sdram_config structure. There is still one ugly macro left behind, but this will be taken care of in subsequent patch. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up sdram_mmr_init_full() part 1Marek Vasut2015-08-08-44/+0
| | | | | | | | Zap all the ad-hoc readbacks from the registers and other useless and broken debug output. This is really not useful and is only confusing. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Introduce socfpga_sdram_config() structureMarek Vasut2015-08-08-162/+179
| | | | | | | | | | | | Introduce this seemingly massive structure, which holds required values of all the registers of the SDRAM controller. The idea here is to avoid including the sdram.h header file, which is full of ad-hoc macros that polute the global namespace. Once the cleanup of sdram.c would be complete and all registers would be loaded from this new socfpga_sdram_config, a board file will only pass this structure into the sdram.c . This will hide all the horrors generated by QTS in the board directory. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up set_sdr_mp_threshold()Marek Vasut2015-08-08-13/+11
| | | | | | | Get rid of the constant clrsetbits_le32(), instead prepare the whole content of the register once and write it at the end of the function. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up set_sdr_mp_pacing()Marek Vasut2015-08-08-21/+16
| | | | | | | Get rid of the constant clrsetbits_le32(), instead prepare the whole content of the register once and write it at the end of the function. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up set_sdr_mp_weight()Marek Vasut2015-08-08-21/+16
| | | | | | | Get rid of the constant clrsetbits_le32(), instead prepare the whole content of the register once and write it at the end of the function. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up set_sdr_fifo_cfg()Marek Vasut2015-08-08-7/+7
| | | | | | | Get rid of the constant clrsetbits_le32(), instead prepare the whole content of the register once and write it at the end of the function. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up set_sdr_static_cfg()Marek Vasut2015-08-08-8/+7
| | | | | | | Get rid of the constant clrsetbits_le32(), instead prepare the whole content of the register once and write it at the end of the function. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up set_sdr_addr_rw()Marek Vasut2015-08-08-20/+10
| | | | | | | Get rid of the constant clrsetbits_le32(), instead prepare the whole content of the register once and write it at the end of the function. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up set_sdr_dram_timing*()Marek Vasut2015-08-08-93/+53
| | | | | | | | | | Get rid of the constant clrsetbits_le32(), instead prepare the whole content of the register once and write it at the end of the function. Merge set_sdr_dram_timing{1,2,3,4,lowpwr}() into single function set_sdr_dram_timing() , since there's no point in keeping all this stuff separate anymore. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up set_sdr_ctrlcfg()Marek Vasut2015-08-08-38/+24
| | | | | | | | | | Get rid of the constant clrsetbits_le32(), instead prepare the whole content of the register once and write it at the end of the function. The big plan here is to remove all the CONFIG_HPS_SDR_ macros, hide them in QTS compatibility layer in board implementation and pass only a small structure into the driver. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up compute_errata_rows() part 2Marek Vasut2015-08-08-15/+20
| | | | | | | | Remove all parameters of this function, since they are only constants passed in from another function, so make them local. Also, rename the function to get_errata_rows() as this is closer to what it does. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Clean up compute_errata_rows() part 1Marek Vasut2015-08-08-7/+7
| | | | | | | Clean up weird parenthesis and odd type casts from the function. Fix comment style. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: sdram: Switch to generic_hweight32()Marek Vasut2015-08-08-1/+1
| | | | | | Use generic function instead of CPU-specific one. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: Wrap SOCFPGA_SDR_ADDRESS into SDR_PHYGRP.*ADDRESSMarek Vasut2015-08-08-1/+1
| | | | | | | Just trim down the constant SOCFPGA_SDR_ADDRESS + SDR_PHYGRP.*ADDRESS in the code. Signed-off-by: Marek Vasut <marex@denx.de>
* ddr: altera: Fix typo in mp_threshold1 programmingMarek Vasut2015-08-08-1/+1
| | | | | | | | | | | It is the configuration data that should go into the register, not the register mask, just like the surrounding code does it. Fix this typo. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Chin Liang See <clsee@altera.com> Cc: Dinh Nguyen <dinguyen@altera.com> Cc: Tom Rini <trini@konsulko.com>
* ddr: altera: Move struct sdram_prot_rule prototypeMarek Vasut2015-08-08-0/+13
| | | | | | | | | | | Move the structure prototype from sdram.h header file into sdram.c source file, since it is used only there and for local purpose only. There is no point in having it global. While at this move, fix the data types in the structure from uintNN_t to uNN and fix the coding style a bit. Signed-off-by: Marek Vasut <marex@denx.de>
* arm: socfpga: Move sdram_config.h to board dirMarek Vasut2015-08-08-1/+6
| | | | | | | This file is absolutelly positively board specific, so move it into the correct place. Signed-off-by: Marek Vasut <marex@denx.de>
* driver/ddr/altera: Add DDR driver for Altera's SDRAM controllerDinh Nguyen2015-08-08-0/+799
This patch enables the SDRAM controller that is used on Altera's SoCFPGA family. This patch configures the SDRAM controller based on a configuration file that is generated from the Quartus tool, sdram_config.h. Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com>