karo-tx-uboot.git
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 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>
5 years agoddr: altera: Clean up sdr_*_phase() part 7
Marek Vasut [Sun, 19 Jul 2015 03:40:06 +0000 (05:40 +0200)]
ddr: altera: Clean up sdr_*_phase() part 7

Wrap dtaps_per_ptap into the sdr_working_phase() function to trim
down the number of params. It's a constant too.

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

It is now clear that the max_working_cnt variable is totally unused.
Zap the variable and zap other variables which became unused due to
this change too.

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

Pull out the loop for eaching working/non-working DQS enable phase
into a separate function, as this is mostly common code between.
Clean up sdr_working_phase() and sdr_nonworking_phase() while switching
these two functions to the common sdr_find_phase().

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

Get rid of found_{begin,end} variables. Instead of breaking out
through all of the loops, just return when the begin/end of the
window is found and be done with it. Also clean up the trailing
conditional expression, which is now much easier.

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

Fix the arguments passed to these functions. The bit_chk is
overriden by rw_mgr_mem_calibrate_read_test_all_ranks() which
is invoked by all three sdr_*_phase() functions, so just make
this into local variable.

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

Fix the arguments passed to these functions. The grp argument
does not have to be passed via reference, it's never modified
within either of those functions, so make it into a value.

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

Rename find_working_phase() to sdr_working_phase() for the
sake of consistency.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up sdr_find_window_centre() part 3
Marek Vasut [Sun, 19 Jul 2015 02:14:32 +0000 (04:14 +0200)]
ddr: altera: Clean up sdr_find_window_centre() part 3

Reorder the end of the function a little by moving the conditional
debug output around a little. Rename the function from _centre() to
_center(). Document the function in kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up sdr_find_window_centre() part 2
Marek Vasut [Sun, 19 Jul 2015 02:04:33 +0000 (04:04 +0200)]
ddr: altera: Clean up sdr_find_window_centre() part 2

This function is a treasure trove of ad-hoc iterative
implementations of mathematical functions. Replace all
of those with their non-iterative counterpart.

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

Clean up the arguments of this function. Most of the pointers
passed into the function are either not needed at all, or can
be passed as value instead of reference. Also fix the broken
multiline debug strings. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase_sweep_dq_in_delay...
Marek Vasut [Sat, 18 Jul 2015 02:28:42 +0000 (04:28 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase_sweep_dq_in_delay() part 4

This function is only invoked from rw_mgr_mem_calibrate_dqs_enable_calibration()
and at this point, it is just one level of indirection, so wrap the
rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase_sweep_dq_in_delay() into
rw_mgr_mem_calibrate_dqs_enable_calibration() to get rid of the level
of indirection.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase_sweep_dq_in_delay...
Marek Vasut [Sat, 18 Jul 2015 02:24:49 +0000 (04:24 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase_sweep_dq_in_delay() part 3

Replace at least one of the loops in this function with call of a
standard function call instead of the ad-hoc implementation. The
other one cannot be replaced, since the delay is incremented for
each group.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase_sweep_dq_in_delay...
Marek Vasut [Sat, 18 Jul 2015 02:20:26 +0000 (04:20 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase_sweep_dq_in_delay() part 2

The read_group and write_group params have the same value for all (one)
invocations of this function, just merge them into a single param.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase_sweep_dq_in_delay...
Marek Vasut [Sat, 18 Jul 2015 02:16:45 +0000 (04:16 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase_sweep_dq_in_delay() part 1

Start cleaning up this function. In the first part, just fix
the incorrectly broken debug strings and fix return value to
respect the common convention.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up rw_mgr_mem_calibrate_read_test_patterns()
Marek Vasut [Sat, 18 Jul 2015 01:55:07 +0000 (03:55 +0200)]
ddr: altera: Clean up rw_mgr_mem_calibrate_read_test_patterns()

Rework this function such that the code is more readable. Zap
unused parameter "num_tries" while at it. Also wrap parameter
"bit_chk" into this function as it's value is not used outside.
Finally, fix the return value from this function to match the
common expectation, where 0 means success.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Zap rw_mgr_mem_calibrate_read_test_patterns_all_ranks()
Marek Vasut [Sat, 18 Jul 2015 01:36:09 +0000 (03:36 +0200)]
ddr: altera: Zap rw_mgr_mem_calibrate_read_test_patterns_all_ranks()

This function is called from one single place and it's sole purpose
is to call one single function with slightly modified arguments.
Zap this function to skip this useless intermediate step.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Minor rw_mgr_mem_calibrate_read_load_patterns() cleanup
Marek Vasut [Sat, 18 Jul 2015 01:34:22 +0000 (03:34 +0200)]
ddr: altera: Minor rw_mgr_mem_calibrate_read_load_patterns() cleanup

Just do an easy data type cleanup of this function, no functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Extract Centering DQ/DQS from rw_mgr_mem_calibrate_vfifo()
Marek Vasut [Sat, 18 Jul 2015 01:10:31 +0000 (03:10 +0200)]
ddr: altera: Extract Centering DQ/DQS from rw_mgr_mem_calibrate_vfifo()

Just extract this piece of functionality into separate function
to make the code better separated. This matches the division in
Altera documentation, Altera EMI_RM 2015.05.04 , section 1, the
UniPHY Calibration Stages.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Extract DQS enable calibration from rw_mgr_mem_calibrate_vfifo()
Marek Vasut [Sat, 18 Jul 2015 00:57:32 +0000 (02:57 +0200)]
ddr: altera: Extract DQS enable calibration from rw_mgr_mem_calibrate_vfifo()

Just extract this piece of functionality into separate function
to make the code better separated. This matches the division in
Altera documentation, Altera EMI_RM 2015.05.04 , section 1, the
UniPHY Calibration Stages.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Extract guaranteed write from rw_mgr_mem_calibrate_vfifo()
Marek Vasut [Sat, 18 Jul 2015 00:46:56 +0000 (02:46 +0200)]
ddr: altera: Extract guaranteed write from rw_mgr_mem_calibrate_vfifo()

Just extract this piece of functionality into separate function
to make the code better separated. This matches the division in
Altera documentation, Altera EMI_RM 2015.05.04 , section 1, the
UniPHY Calibration Stages.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 7
Marek Vasut [Sat, 18 Jul 2015 01:15:34 +0000 (03:15 +0200)]
ddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 7

Mildly reorder the function so that the reg_file_set*() calls are
in the same place. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 6
Marek Vasut [Fri, 17 Jul 2015 02:24:18 +0000 (04:24 +0200)]
ddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 6

This is kind of microseries-within-series indent cleanup.
It is clear that the read_group and write_group variables
have the same value, to just make them into one variable
called rw_group. While doing this, constify the variables
as they are constant.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 5
Marek Vasut [Fri, 17 Jul 2015 01:54:34 +0000 (03:54 +0200)]
ddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 5

This is kind of microseries-within-series indent cleanup.
This patch fixes the broken formatting strings in debug_cond()
invocations.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 4
Marek Vasut [Fri, 17 Jul 2015 01:50:17 +0000 (03:50 +0200)]
ddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 4

This is kind of microseries-within-series indent cleanup.
This patch cleans up the handling of grp_calibrated such
that the variable isn't used all over the place, but just
very localy. This allows trimming down the indent issues.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 3
Marek Vasut [Fri, 17 Jul 2015 01:44:26 +0000 (03:44 +0200)]
ddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 3

This is kind of microseries-within-series indent cleanup.
This patch just tweaks the indentation so it is visible
what to do with the grp_calibrated variable.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 2
Marek Vasut [Fri, 17 Jul 2015 01:22:31 +0000 (03:22 +0200)]
ddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 2

This is kind of microseries-within-series indent cleanup.
This patch just tweaks the indentation so it is visible
what is supposed to go where.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 1
Marek Vasut [Fri, 17 Jul 2015 01:16:45 +0000 (03:16 +0200)]
ddr: altera: Internal rw_mgr_mem_calibrate_vfifo() cleanup part 1

This patch just adds an expanded documentation header to the
aforementioned function. This is needed to make it easier to
match the purpose of this function with the documentation.

No functional change.

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

Add kerneldoc and do a minor comment cleanup. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal mem_calibrate() cleanup part 6
Marek Vasut [Mon, 20 Jul 2015 02:34:51 +0000 (04:34 +0200)]
ddr: altera: Internal mem_calibrate() cleanup part 6

Add kerneldoc to this function.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal mem_calibrate() cleanup part 5
Marek Vasut [Fri, 17 Jul 2015 00:50:56 +0000 (02:50 +0200)]
ddr: altera: Internal mem_calibrate() cleanup part 5

This is kind of microseries-within-series indent cleanup.
Rework the code for the the middle-loop of the mega-loop
this time and deal with the group_failed variable. Instead
of checking if the group failed in the previous calibration
part, just jump to the end of the loop if calibration did
fail and increment the counter. This shaves away one more
level of indent while making the code slightly more readable.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal mem_calibrate() cleanup part 4
Marek Vasut [Fri, 17 Jul 2015 00:40:21 +0000 (02:40 +0200)]
ddr: altera: Internal mem_calibrate() cleanup part 4

This is kind of microseries-within-series indent cleanup.
Rework the code for the last loop within the mega-loop
to make it actually readable and not an insane cryptic pile
of indent failure.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal mem_calibrate() cleanup part 3
Marek Vasut [Fri, 17 Jul 2015 00:38:51 +0000 (02:38 +0200)]
ddr: altera: Internal mem_calibrate() cleanup part 3

This is kind of microseries-within-series indent cleanup.
Rework the code for the third loop within the middle-loop
of the mega-loop to make it actually readable and not an
insane cryptic pile of indent failure.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal mem_calibrate() cleanup part 2
Marek Vasut [Fri, 17 Jul 2015 00:31:04 +0000 (02:31 +0200)]
ddr: altera: Internal mem_calibrate() cleanup part 2

This is kind of microseries-within-series indent cleanup.
Rework the code for the second loop within the middle-loop
of the mega-loop to make it actually readable and not an
insane cryptic pile of indent failure.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Internal mem_calibrate() cleanup part 1
Marek Vasut [Fri, 17 Jul 2015 00:21:47 +0000 (02:21 +0200)]
ddr: altera: Internal mem_calibrate() cleanup part 1

This is kind of microseries-within-series indent cleanup.
Rework the code for the first loop within the middle-loop
of the mega-loop to make it actually readable and not an
insane cryptic pile of indent failure.

It is likely that this patch has checkpatch warnings, but
for the sake of not breaking the code, these are ignored.

No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Trivial mem_calibrate() indent cleanup
Marek Vasut [Fri, 17 Jul 2015 00:07:12 +0000 (02:07 +0200)]
ddr: altera: Trivial mem_calibrate() indent cleanup

Redo the mega-condition such that if the calibration is to be skipped,
the positive branch of the condition does all the work and returns.
The negative branch, which is in fact the default behavior, is then
converted to a code which is no longer conditional. This trims down
the indent by one level.

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

Perform minor coding style cleanup of the mem_skip_calibrate() function,
clean up comments and add kerneldoc. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up set_rank_and_odt_mask() part 3
Marek Vasut [Mon, 20 Jul 2015 06:15:57 +0000 (08:15 +0200)]
ddr: altera: Clean up set_rank_and_odt_mask() part 3

Clean up comments and add kerneldoc.

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

Turn the big inner if (RW_MGR_MEM_NUMBER_OF_RANKS == ...) conditional
into a switch {} statement instead. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up set_rank_and_odt_mask() part 1
Marek Vasut [Mon, 20 Jul 2015 06:03:11 +0000 (08:03 +0200)]
ddr: altera: Clean up set_rank_and_odt_mask() part 1

First, invert the logic of the if (odt_mode == ...) conditional to make
the OFF mode harder to miss. It is a short piece of code right at the
end, so move it up.

Also, clean up data types and constify where applicable and clean up
the cs_and_odt_mask assignment. No functional change.

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

Perform minor cleanup of this function, fix datatype and add kerneldoc.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up mem_config()
Marek Vasut [Thu, 16 Jul 2015 23:57:41 +0000 (01:57 +0200)]
ddr: altera: Clean up mem_config()

Clean mem_config() function. First, reorder the math done in the
function such that WLAT and RLAT computation is together. Then,
scrap contradictory comments which do not match the result of the
math at all. Next, extract the mem_precharge_and_activate() call
from the end of the function as it is completely unrelated here.
Finally, rename the function to mem_init_latency().

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up phy_mgr_initialize()
Marek Vasut [Thu, 16 Jul 2015 23:36:32 +0000 (01:36 +0200)]
ddr: altera: Clean up phy_mgr_initialize()

Zap the cryptic casts and rework the code into a slightly more
readable form. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Clean up run_mem_calibrate()
Marek Vasut [Thu, 16 Jul 2015 23:20:21 +0000 (01:20 +0200)]
ddr: altera: Clean up run_mem_calibrate()

Clean the function up slightly by using clrsetbits_le32() to flip
bits in registers instead of cryptic bitmasks. Zap condition checking
for PHY_DEBUG_IN_DEBUG_MODE flag, which is never set. Split the
calibration report into separate debug_mem_calibrate() function.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Rename initialize() to phy_mgr_initialize()
Marek Vasut [Thu, 16 Jul 2015 23:12:07 +0000 (01:12 +0200)]
ddr: altera: Rename initialize() to phy_mgr_initialize()

Just perform the rename to make the name more descriptive,
no functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Init my_param and my_gbl
Marek Vasut [Thu, 16 Jul 2015 23:05:36 +0000 (01:05 +0200)]
ddr: altera: Init my_param and my_gbl

Init both structures with zeroes and zap all those zeroing shenanigans
further down in the sdram_calibration_full().

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Rework initialize_tracking()
Marek Vasut [Thu, 16 Jul 2015 22:45:11 +0000 (00:45 +0200)]
ddr: altera: Rework initialize_tracking()

Clean the function up by getting rid of all the insane XOR-leftshift
combos when assembling register values. While at it, remove all the
ad-hoc variables necessary for this XOR-leftshift voodoo. Finally,
get rid of the iterative division implementation of two constants
and replace it with a DIV_ROUND_UP() macro :-)

Signed-off-by: Marek Vasut <marex@denx.de>
5 years agoddr: altera: Fix ad-hoc iterative division implementation
Marek Vasut [Fri, 17 Jul 2015 01:11:06 +0000 (03:11 +0200)]
ddr: altera: Fix ad-hoc iterative division implementation

Contemporary CPUs can perform division just fine, use this
functionality and zap another implementation of iterative
division :-)

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