]> git.dujemihanovic.xyz Git - u-boot.git/log
u-boot.git
9 years agodm: serial: Add a REQUIRE_SERIAL_CONSOLE option for boards with no serial port
Hans de Goede [Sat, 8 Aug 2015 15:45:18 +0000 (17:45 +0200)]
dm: serial: Add a REQUIRE_SERIAL_CONSOLE option for boards with no serial port

Currently the serial code assumes that there is always at least one serial
port (and panics / crashes due to null pointer dereferences when there is
none).

This makes it impossible to use u-boot on boards where there is no (debug)
serial port, because e.g. all uart pins are muxed to another function.

This commit adds a CONFIG_REQUIRE_SERIAL_CONSOLE Kconfig option, which
defaults to y (preserving existing behavior), which can be set to n on
such boards to make them work.

This commit only implements this for CONFIG_DM_SERIAL=y configs, as allowing
running without a serial port for CONFIG_DM_SERIAL=n configs is non trivial,
and is not necessary at this moment.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoarm: socfpga: misc: Add support for printing FPGA type
Dinh Nguyen [Sat, 1 Aug 2015 01:42:10 +0000 (03:42 +0200)]
arm: socfpga: misc: Add support for printing FPGA type

Add code which uses the new functions for obtaining FPGA ID from
the scan manager. This new code prints the FPGA model attached to
the SoCFPGA during boot and sets environment variable "fpgatype",
which can be used to determine the FPGA model in U-Boot scripts.

Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com>
Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoarm: socfpga: scan: Add code to get FPGA ID
Dinh Nguyen [Fri, 31 Jul 2015 16:06:50 +0000 (11:06 -0500)]
arm: socfpga: scan: Add code to get FPGA ID

Add code to get the FPGA type for Altera's SoCFPGA family of FPGA. The code
uses the scan manager to send jtag pulses that will return the FPGA ID.

Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoarm: socfpga: scan: Factor out IO chain programming
Marek Vasut [Sat, 1 Aug 2015 12:28:48 +0000 (14:28 +0200)]
arm: socfpga: scan: Factor out IO chain programming

Factor out the code which sends JTAG instruction followed by data
into separate function to tidy the code up a little.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoarm: socfpga: scan: Clean up horrible macros
Marek Vasut [Sat, 1 Aug 2015 01:18:50 +0000 (03:18 +0200)]
arm: socfpga: scan: Clean up horrible macros

Clean up the horrible macros present in the scan_manager.h . Firstly,
the function scan_mgr_io_scan_chain_prg() is static, yet all the macros
are used only within it, thus there is no point in having them in the
header file. Moreover, the macros are just making the code much less
readable, so remove them instead.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoarm: socfpga: scan: Introduce generic JTAG accessor
Marek Vasut [Sat, 1 Aug 2015 01:01:25 +0000 (03:01 +0200)]
arm: socfpga: scan: Introduce generic JTAG accessor

Introduce generic function for accessing the JTAG scan chains in the
SCC manager. Make use of this function throughout the SCC manager to
replace the ad-hoc writes to registers and make the code less cryptic.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoarm: socfpga: scan: Clean up scan_chain_engine_is_idle()
Marek Vasut [Sat, 1 Aug 2015 00:48:03 +0000 (02:48 +0200)]
arm: socfpga: scan: Clean up scan_chain_engine_is_idle()

Rework this function so it's clear that it is only polling for certain
bits to be cleared. Add kerneldoc. Fix it's return value to be either
0 on success and -ETIMEDOUT on error and propagate this through the
scan manager code.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: add RW_MGR_MEM_NUMBER_OF_RANKS
Dinh Nguyen [Wed, 5 Aug 2015 03:12:32 +0000 (22:12 -0500)]
ddr: altera: sequencer: add RW_MGR_MEM_NUMBER_OF_RANKS

Fix build error for socfpga_cyclone5_defconfig:

board/altera/socfpga/wrap_sdram_config.c:245:26: error: ‘RW_MGR_MEM_NUMBER_OF_RANKS’ undeclared here (not in a function)
make[2]: *** [spl/board/altera/socfpga/wrap_sdram_config.o] Error 1

Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Clean checkpatch issues
Marek Vasut [Sun, 2 Aug 2015 17:47:01 +0000 (19:47 +0200)]
ddr: altera: sequencer: Clean checkpatch issues

Fix most of the dangling checkpatch issues, no functional change.
There are still 7 warnings, 1 checks , but those are left in place
for the sake of readability of the code.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Clean data types
Marek Vasut [Sun, 2 Aug 2015 17:42:26 +0000 (19:42 +0200)]
ddr: altera: sequencer: Clean data types

Replace uintNN_t with uNN. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Pluck out misc macros from code
Marek Vasut [Sun, 2 Aug 2015 17:26:55 +0000 (19:26 +0200)]
ddr: altera: sequencer: Pluck out misc macros from code

Actually convert the sequencer code to use socfpga_sdram_misc_config
instead of the various macros. This is just an sed exercise here, no
manual coding needed.

This patch actually removes the need to include any board-specific
files in sequencer.c , so sequencer.c namespace is now no longer
poluted by QTS-generated macros.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Zap SEQ_T(INIT|RESET)_CNTR._VAL
Marek Vasut [Sun, 2 Aug 2015 17:24:12 +0000 (19:24 +0200)]
ddr: altera: sequencer: Zap SEQ_T(INIT|RESET)_CNTR._VAL

This is another macro used to obfuscate the real code. The
T(INIT|RESET)_CNTR._VAL is always defined, so this indirection
is unnecessary. Get rid of this.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Zap VFIFO_SIZE
Marek Vasut [Sun, 2 Aug 2015 17:21:56 +0000 (19:21 +0200)]
ddr: altera: sequencer: Zap VFIFO_SIZE

Just use READ_VALID_FIFO_SIZE directly, no need for this macro obfuscation.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Wrap misc remaining macros
Marek Vasut [Sun, 2 Aug 2015 17:18:47 +0000 (19:18 +0200)]
ddr: altera: sequencer: Wrap misc remaining macros

Introduce structure socfpga_sdram_misc_config to wrap the remaining
misc configuration values in board file. Again, introduce a function,
socfpga_get_sdram_misc_config(), which returns this the structure. This
is almost the final step toward wrapping the nasty QTS generated macros
in board files and reducing the pollution of the namespace.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Pluck out IO_* macros from code
Marek Vasut [Sun, 2 Aug 2015 17:10:58 +0000 (19:10 +0200)]
ddr: altera: sequencer: Pluck out IO_* macros from code

Actually convert the sequencer code to use socfpga_sdram_io_config
instead of the IO_* macros. This is just an sed excercise here, no
manual coding needed.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Wrap IO_* macros
Marek Vasut [Sun, 2 Aug 2015 17:00:23 +0000 (19:00 +0200)]
ddr: altera: sequencer: Wrap IO_* macros

Introduce structure socfpga_sdram_io_config to wrap the IO configuration
values in board file. Introduce socfpga_get_sdram_io_config() function,
which returns this the structure. This is another step toward wrapping
the nasty QTS generated macros in board files and reducing the pollution
of the namespace.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Pluck out RW_MGR_* macros from code
Marek Vasut [Sun, 2 Aug 2015 16:44:06 +0000 (18:44 +0200)]
ddr: altera: sequencer: Pluck out RW_MGR_* macros from code

Actually convert the sequencer code to use socfpga_sdram_rw_mgr_config
instead of the RW_MGR_* macros. This is just an sed exercise here, no
manual coding needed.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Wrap RW_MGR_* macros
Marek Vasut [Sun, 2 Aug 2015 16:12:08 +0000 (18:12 +0200)]
ddr: altera: sequencer: Wrap RW_MGR_* macros

Introduce structure socfpga_sdram_rw_mgr_config to wrap the RW manager
configuration values in board file. Introduce a complementary function,
socfpga_get_sdram_rwmgr_config(), which returns this the structure.
This is another step toward wrapping the nasty QTS generated macros
in board files and reducing the pollution of the namespace.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Wrap ac_rom_init and inst_rom_init
Marek Vasut [Sun, 2 Aug 2015 15:15:19 +0000 (17:15 +0200)]
ddr: altera: sequencer: Wrap ac_rom_init and inst_rom_init

Introduce two wrapper functions, socfpga_get_seq_ac_init() and
socfpga_get_seq_inst_init() to avoid direct inclusion of the
sequencer_auto_ac_init.h and sequencer_auto_inst_init.h QTS
generated files. This reduces namespace pollution again.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Zap bogus redefinition of RW_MGR_MEM_NUMBER_OF_RANKS
Marek Vasut [Sun, 2 Aug 2015 16:40:27 +0000 (18:40 +0200)]
ddr: altera: sequencer: Zap bogus redefinition of RW_MGR_MEM_NUMBER_OF_RANKS

This is defined in the QTS-generated headers, so it must not be
re-defined in sequencer.h .

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Zap unused params and macros
Marek Vasut [Sun, 2 Aug 2015 16:27:21 +0000 (18:27 +0200)]
ddr: altera: sequencer: Zap unused params and macros

These parameters are not used in the code, zap them and the
macros which are used by them as well.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Clean up mach/sdram.h
Marek Vasut [Sun, 2 Aug 2015 15:02:11 +0000 (17:02 +0200)]
ddr: altera: sequencer: Clean up mach/sdram.h

Zap non-existent functions and place function prototypes at the
beginning of the header file.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sequencer: Move qts-generated files to board dir
Marek Vasut [Sun, 2 Aug 2015 14:55:45 +0000 (16:55 +0200)]
ddr: altera: sequencer: Move qts-generated files to board dir

Move the files generated by QTS into the board directory, they should not
be part of the driver files at all.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
9 years agoddr: altera: sdram: Make sdram_start and sdram_end into u32
Marek Vasut [Sat, 1 Aug 2015 21:12:11 +0000 (23:12 +0200)]
ddr: altera: sdram: Make sdram_start and sdram_end into u32

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>
9 years agoddr: altera: sdram: Minor cleanup in sdram_get_rule()
Marek Vasut [Sat, 1 Aug 2015 21:21:23 +0000 (23:21 +0200)]
ddr: altera: sdram: Minor cleanup in sdram_get_rule()

Fix the data types and zap unnecessary type change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: sdram: Minor cleanup in sdram_set_rule()
Marek Vasut [Sat, 1 Aug 2015 20:40:48 +0000 (22:40 +0200)]
ddr: altera: sdram: Minor cleanup in sdram_set_rule()

Zap an obscure unneeded cast and clean other minor nits in this function.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: sdram: Add missing kerneldoc
Marek Vasut [Sat, 1 Aug 2015 20:28:30 +0000 (22:28 +0200)]
ddr: altera: sdram: Add missing kerneldoc

Add kerneldoc to functions which are missing it, but are already
cleaned up.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: sdram: Clean up sdram_write_verify()
Marek Vasut [Sat, 1 Aug 2015 20:26:11 +0000 (22:26 +0200)]
ddr: altera: sdram: Clean up sdram_write_verify()

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>
9 years agoddr: altera: sdram: Clean up sdram_calculate_size() part 2
Marek Vasut [Sat, 1 Aug 2015 19:47:16 +0000 (21:47 +0200)]
ddr: altera: sdram: Clean up sdram_calculate_size() part 2

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>
9 years agoddr: altera: sdram: Clean up sdram_calculate_size() part 1
Marek Vasut [Sat, 1 Aug 2015 19:44:00 +0000 (21:44 +0200)]
ddr: altera: sdram: Clean up sdram_calculate_size() part 1

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>
9 years agoddr: altera: sdram: Introduce socfpga_sdram_get_config()
Marek Vasut [Sat, 1 Aug 2015 19:35:18 +0000 (21:35 +0200)]
ddr: altera: sdram: Introduce socfpga_sdram_get_config()

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>
9 years agoddr: altera: sdram: Clean up sdram_mmr_init_full() part 8
Marek Vasut [Sat, 1 Aug 2015 20:25:29 +0000 (22:25 +0200)]
ddr: altera: sdram: Clean up sdram_mmr_init_full() part 8

Fix the return value so that standard errno return values can be used.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: sdram: Clean up sdram_mmr_init_full() part 7
Marek Vasut [Sat, 1 Aug 2015 20:03:48 +0000 (22:03 +0200)]
ddr: altera: sdram: Clean up sdram_mmr_init_full() part 7

Add kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: sdram: Clean up sdram_mmr_init_full() part 6
Marek Vasut [Sat, 1 Aug 2015 19:26:55 +0000 (21:26 +0200)]
ddr: altera: sdram: Clean up sdram_mmr_init_full() part 6

Pull out the block of register programming into a separate function.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: sdram: Clean up sdram_mmr_init_full() part 5
Marek Vasut [Sat, 1 Aug 2015 19:24:31 +0000 (21:24 +0200)]
ddr: altera: sdram: Clean up sdram_mmr_init_full() part 5

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>
9 years agoddr: altera: sdram: Clean up sdram_mmr_init_full() part 4
Marek Vasut [Sat, 1 Aug 2015 19:21:21 +0000 (21:21 +0200)]
ddr: altera: sdram: Clean up sdram_mmr_init_full() part 4

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>
9 years agoddr: altera: sdram: Clean up sdram_mmr_init_full() part 3
Marek Vasut [Sat, 1 Aug 2015 19:16:20 +0000 (21:16 +0200)]
ddr: altera: sdram: Clean up sdram_mmr_init_full() part 3

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>
9 years agoddr: altera: sdram: Clean up sdram_mmr_init_full() part 2
Marek Vasut [Sat, 1 Aug 2015 18:58:44 +0000 (20:58 +0200)]
ddr: altera: sdram: Clean up sdram_mmr_init_full() part 2

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>
9 years agoddr: altera: sdram: Clean up sdram_mmr_init_full() part 1
Marek Vasut [Sat, 1 Aug 2015 18:39:46 +0000 (20:39 +0200)]
ddr: altera: sdram: Clean up sdram_mmr_init_full() part 1

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>
9 years agoddr: altera: sdram: Introduce socfpga_sdram_config() structure
Marek Vasut [Sat, 1 Aug 2015 18:30:10 +0000 (20:30 +0200)]
ddr: altera: sdram: Introduce socfpga_sdram_config() structure

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>
9 years agoddr: altera: sdram: Clean up set_sdr_mp_threshold()
Marek Vasut [Sat, 1 Aug 2015 18:14:11 +0000 (20:14 +0200)]
ddr: altera: sdram: Clean up set_sdr_mp_threshold()

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>
9 years agoddr: altera: sdram: Clean up set_sdr_mp_pacing()
Marek Vasut [Sat, 1 Aug 2015 18:12:31 +0000 (20:12 +0200)]
ddr: altera: sdram: Clean up set_sdr_mp_pacing()

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>
9 years agoddr: altera: sdram: Clean up set_sdr_mp_weight()
Marek Vasut [Sat, 1 Aug 2015 18:10:23 +0000 (20:10 +0200)]
ddr: altera: sdram: Clean up set_sdr_mp_weight()

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>
9 years agoddr: altera: sdram: Clean up set_sdr_fifo_cfg()
Marek Vasut [Sat, 1 Aug 2015 18:04:33 +0000 (20:04 +0200)]
ddr: altera: sdram: Clean up set_sdr_fifo_cfg()

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>
9 years agoddr: altera: sdram: Clean up set_sdr_static_cfg()
Marek Vasut [Sat, 1 Aug 2015 18:04:19 +0000 (20:04 +0200)]
ddr: altera: sdram: Clean up set_sdr_static_cfg()

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>
9 years agoddr: altera: sdram: Clean up set_sdr_addr_rw()
Marek Vasut [Sat, 1 Aug 2015 17:50:56 +0000 (19:50 +0200)]
ddr: altera: sdram: Clean up set_sdr_addr_rw()

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>
9 years agoddr: altera: sdram: Clean up set_sdr_dram_timing*()
Marek Vasut [Sat, 1 Aug 2015 17:45:24 +0000 (19:45 +0200)]
ddr: altera: sdram: Clean up set_sdr_dram_timing*()

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>
9 years agoddr: altera: sdram: Clean up set_sdr_ctrlcfg()
Marek Vasut [Sat, 1 Aug 2015 17:33:40 +0000 (19:33 +0200)]
ddr: altera: sdram: Clean up set_sdr_ctrlcfg()

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>
9 years agoddr: altera: sdram: Clean up compute_errata_rows() part 2
Marek Vasut [Sat, 1 Aug 2015 17:20:19 +0000 (19:20 +0200)]
ddr: altera: sdram: Clean up compute_errata_rows() part 2

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>
9 years agoddr: altera: sdram: Clean up compute_errata_rows() part 1
Marek Vasut [Sat, 1 Aug 2015 16:54:34 +0000 (18:54 +0200)]
ddr: altera: sdram: Clean up compute_errata_rows() part 1

Clean up weird parenthesis and odd type casts from the function.
Fix comment style.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: sdram: Switch to generic_hweight32()
Marek Vasut [Sat, 1 Aug 2015 16:46:55 +0000 (18:46 +0200)]
ddr: altera: sdram: Switch to generic_hweight32()

Use generic function instead of CPU-specific one.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoarm: socfpga: Add temporary workaround for missing SD/MMC patches
Marek Vasut [Mon, 3 Aug 2015 16:31:51 +0000 (18:31 +0200)]
arm: socfpga: Add temporary workaround for missing SD/MMC patches

Add a small workaround into the platform code which forces the SDMMC
into 8-bit mode (the default configuration for all socfpga platforms)
to work around breakage caused by missing patches in mainline which
switch the probing of SD/MMC to OF instead of static configuraiton.

The patches will hit mainline after the SPL series, so to avoid build
issues, add this small temporary workaround.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up of delay_for_n_mem_clocks() part 5
Marek Vasut [Sun, 26 Jul 2015 09:46:04 +0000 (11:46 +0200)]
ddr: altera: Clean up of delay_for_n_mem_clocks() part 5

Add kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up of delay_for_n_mem_clocks() part 4
Marek Vasut [Sun, 26 Jul 2015 09:44:54 +0000 (11:44 +0200)]
ddr: altera: Clean up of delay_for_n_mem_clocks() part 4

Simplify the loop code, optimizing compiler can deal with this.
No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up of delay_for_n_mem_clocks() part 3
Marek Vasut [Sun, 26 Jul 2015 09:42:53 +0000 (11:42 +0200)]
ddr: altera: Clean up of delay_for_n_mem_clocks() part 3

Clean up the computation of c_loop, outer and inner variables.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up of delay_for_n_mem_clocks() part 2
Marek Vasut [Sun, 26 Jul 2015 09:34:09 +0000 (11:34 +0200)]
ddr: altera: Clean up of delay_for_n_mem_clocks() part 2

Factor out (afi_clocks - 1) into a single place instead of having it
all around the function.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up of delay_for_n_mem_clocks() part 1
Marek Vasut [Sun, 26 Jul 2015 09:11:28 +0000 (11:11 +0200)]
ddr: altera: Clean up of delay_for_n_mem_clocks() part 1

Fix data types, clean up comments a bit and fix coding style a bit.
No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Minor clean up of rw_mgr_mem_handoff()
Marek Vasut [Sun, 26 Jul 2015 08:59:19 +0000 (10:59 +0200)]
ddr: altera: Minor clean up of rw_mgr_mem_handoff()

Add kerneldoc and perform a minor comment cleanup.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_lfifo()
Marek Vasut [Tue, 21 Jul 2015 04:18:57 +0000 (06:18 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_lfifo()

Minor coding style cleanup, add kerneldoc. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_end()
Marek Vasut [Sat, 18 Jul 2015 03:58:44 +0000 (05:58 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_end()

This function is implementing the DDR calibration Stage 3 as
described in Altera EMI_RM 2015.05.04 . The main body of this
function is almost identical to Stage 1.3 (DQ/DQS centering)
for all but two flags -- use_read_test and update_fom. Convert
this function to call rw_mgr_mem_calibrate_dq_dqs_centering()
with the correct flags set to trim down the code duplication.

Moreover, reorder the remnants in the function a little and
convert the function to return either 0 or -EIO in case of
success and failure respectively, to match the common return
value convention.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_write_test_issue()
Marek Vasut [Tue, 21 Jul 2015 04:00:36 +0000 (06:00 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_write_test_issue()

Brief clean, add kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_write_test() part 3
Marek Vasut [Tue, 21 Jul 2015 03:57:11 +0000 (05:57 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_write_test() part 3

Add kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_write_test() part 2
Marek Vasut [Tue, 21 Jul 2015 03:54:39 +0000 (05:54 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_write_test() part 2

Clean up coding style, mostly broken multiline formatting strings
in debug output. Also clean up data types and constify where applicable.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_write_test() part 1
Marek Vasut [Tue, 21 Jul 2015 03:43:37 +0000 (05:43 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_write_test() part 1

Move code around to get rid of the forward declaration. No change
to the actual code.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 5
Marek Vasut [Tue, 21 Jul 2015 03:33:49 +0000 (05:33 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 5

Add kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 4
Marek Vasut [Tue, 21 Jul 2015 03:32:49 +0000 (05:32 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 4

Fix return values to match the common return value convention.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 3
Marek Vasut [Tue, 21 Jul 2015 03:29:05 +0000 (05:29 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 3

Zap the useless addr variable.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 2
Marek Vasut [Tue, 21 Jul 2015 03:26:58 +0000 (05:26 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 2

Factor out common code for searching best DM/DQS window.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 1
Marek Vasut [Tue, 21 Jul 2015 03:00:42 +0000 (05:00 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_writes_center() part 1

Fix data types and constify where applicable, fix broken multiline
debug strings and fix comments. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 11
Marek Vasut [Tue, 21 Jul 2015 02:27:32 +0000 (04:27 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 11

Add kerneldoc, no functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 10
Marek Vasut [Sat, 18 Jul 2015 18:44:28 +0000 (20:44 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 10

Fix the return value of the function to match common convention
where 0 means success and negative means error. Fix the return
values in case of an error to use errno.h codes.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 9
Marek Vasut [Sat, 18 Jul 2015 18:42:27 +0000 (20:42 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 9

The read_group and write_group arguments are the same in all
cases when this function is invoked, just merge them into one
rw_group argument. Also, clean up the function argument data
types and constify them.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 8
Marek Vasut [Sat, 18 Jul 2015 18:34:00 +0000 (20:34 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 8

The search_stop_check() always resets the bit_chk to a new value,
so bit_chk will never survive between search_left_edge() and
search_right_edge() invocation. There is thus no need to pass
it into these functions, so make bit_chk local to them.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 7
Marek Vasut [Sat, 18 Jul 2015 17:57:12 +0000 (19:57 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 7

Perform minor reordering of the function to make the code more
organised, no functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 6
Marek Vasut [Sat, 18 Jul 2015 17:46:26 +0000 (19:46 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 6

Factor out center_dq_windows(), which is common code between
stage 2 and stage 3 of the calibration again and cater for
the minor differences.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 5
Marek Vasut [Sat, 18 Jul 2015 17:18:06 +0000 (19:18 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 5

Factor out the get_window_mid_index() for finding the best DQ
window centering. This is again code common to two stages, so
pull it out.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 4
Marek Vasut [Sat, 18 Jul 2015 06:01:45 +0000 (08:01 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 4

First of all, don't break strings in the debug_cond() calls across
multiple lines. Next, zap a couple of really odd casts in the code.
Finally, make i into a signed variable, so it is possible to avoid
constructs of the form:
    for (i = FOO;; i--) { <code>; if (i == 0) break; }.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 3
Marek Vasut [Mon, 13 Jul 2015 00:48:34 +0000 (02:48 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 3

Factor out common code from search_left_edge() and search_right_edge()
which checks whether searching for the window edge should stop. The
code is almost identical, so pull it into separate function and cater
for the minor differences.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 2
Marek Vasut [Mon, 13 Jul 2015 00:38:15 +0000 (02:38 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 2

Factor out common code from rw_mgr_mem_calibrate_writes_center()
and rw_mgr_mem_calibrate_vfifo_center() for searching for the
left edge of the window. The code is almost identical, so pull
it into separate function and cater for the minor differences.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 1
Marek Vasut [Mon, 13 Jul 2015 00:11:02 +0000 (02:11 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_center() part 1

Factor out common code from rw_mgr_mem_calibrate_writes_center()
and rw_mgr_mem_calibrate_vfifo_center() for searching for the
right edge of the window. The code is almost identical, so pull
it into separate function and cater for the minor differences.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_writes()
Marek Vasut [Sat, 18 Jul 2015 05:23:25 +0000 (07:23 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_writes()

Reorder the content of the function a little and fix the comments
so they at least become full sentences. Constify function args.
Fix the return value to match the common convention of 0 meaning
success.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 5
Marek Vasut [Mon, 20 Jul 2015 01:26:05 +0000 (03:26 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 5

Make the function documentation into kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 4
Marek Vasut [Sun, 19 Jul 2015 05:57:28 +0000 (07:57 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 4

Clean up the inner loop a bit. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 3
Marek Vasut [Sun, 19 Jul 2015 05:51:17 +0000 (07:51 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 3

The C language has signed types, so make use of them. Fix this
obscene loop, which tries to do away with unsigned type, but
just makes the code more cryptic.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 2
Marek Vasut [Sun, 19 Jul 2015 05:48:58 +0000 (07:48 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 2

Clean up data types and constify where applicable. No function change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 1
Marek Vasut [Sun, 19 Jul 2015 05:44:21 +0000 (07:44 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_read_test() part 1

Clean up the debug output handling at the end of the function
and factor out common function call from the condition.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_read_test_all_ranks()
Marek Vasut [Sun, 19 Jul 2015 05:35:36 +0000 (07:35 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_read_test_all_ranks()

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 7
Marek Vasut [Mon, 20 Jul 2015 07:11:09 +0000 (09:11 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 7

Add kerneldoc, no functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 6
Marek Vasut [Mon, 20 Jul 2015 07:20:42 +0000 (09:20 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 6

Fix the return value to match common conventions and propagate
this change through the code.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 5
Marek Vasut [Mon, 20 Jul 2015 07:20:20 +0000 (09:20 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 5

Fix the data types, constify where applicable.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 4
Marek Vasut [Sun, 19 Jul 2015 05:27:06 +0000 (07:27 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 4

Implement common sdr_find_phase_delay() function and convert all
places which use such code to this unified function. No functional
change to the code.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 3
Marek Vasut [Sun, 19 Jul 2015 05:03:15 +0000 (07:03 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 3

Clean up odd multiline loop, no functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 2
Marek Vasut [Sun, 19 Jul 2015 05:00:26 +0000 (07:00 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 2

If d != 0 after sdr_working_phase() finishes, the else branch
of the condition has no impact on anything at all, since work_end
was already set independently of the value of "d" . Zap this
useless code.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 1
Marek Vasut [Sun, 19 Jul 2015 00:42:21 +0000 (02:42 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase() part 1

Fix broken multiline debug strings, fix comments.
No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up find_vfifo_read()
Marek Vasut [Sun, 19 Jul 2015 04:45:43 +0000 (06:45 +0200)]
ddr: altera: Clean up find_vfifo_read()

Fix data types, constify where applicable, fix comments and debug
strings. In case enough failing reads are detected, just return
right away instead of breaking from the loop. This lets us make
the error handling at the end much simpler.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_*_vfifo() part 2
Marek Vasut [Sun, 19 Jul 2015 04:37:51 +0000 (06:37 +0200)]
ddr: altera: Clean up rw_mgr_*_vfifo() part 2

Pluck out all this VFIFO value counting, which turns out to be
completely unused. Thus, remove it to simplify the code.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up rw_mgr_*_vfifo() part 1
Marek Vasut [Sun, 19 Jul 2015 04:25:27 +0000 (06:25 +0200)]
ddr: altera: Clean up rw_mgr_*_vfifo() part 1

Perform minor cleanup, fix data types and constify where applicable.
Add kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up sdr_*_phase() part 10
Marek Vasut [Sun, 19 Jul 2015 04:04:00 +0000 (06:04 +0200)]
ddr: altera: Clean up sdr_*_phase() part 10

Clean up data types, constify where applicable and document the
functions with kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up sdr_*_phase() part 9
Marek Vasut [Sun, 19 Jul 2015 03:48:30 +0000 (05:48 +0200)]
ddr: altera: Clean up sdr_*_phase() part 9

The "d" variable is set to 0 in sdr_backup_phase() and is not used
at all in sdr_nonworking_phase(). Make it local and zap it respectively.

Signed-off-by: Marek Vasut <marex@denx.de>
9 years agoddr: altera: Clean up sdr_*_phase() part 8
Marek Vasut [Sun, 19 Jul 2015 03:42:43 +0000 (05:42 +0200)]
ddr: altera: Clean up sdr_*_phase() part 8

The work_bgn parameter of sdr_nonworking_phase() is unused, zap it.

Signed-off-by: Marek Vasut <marex@denx.de>