Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0+ |
| 2 | # Copyright (c) 2020 |
| 3 | # Author: Kory Maincent <kory.maincent@bootlin.com> |
| 4 | |
| 5 | # Test U-Boot's "extension" commands. |
| 6 | |
| 7 | import os |
| 8 | import pytest |
Simon Glass | fb91637 | 2025-02-09 09:07:15 -0700 | [diff] [blame] | 9 | import utils |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 10 | |
| 11 | overlay_addr = 0x1000 |
| 12 | |
| 13 | SANDBOX_DTB='arch/sandbox/dts/sandbox.dtb' |
| 14 | OVERLAY_DIR='arch/sandbox/dts/' |
| 15 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 16 | def load_dtb(ubman): |
| 17 | ubman.log.action('Loading devicetree to RAM...') |
| 18 | ubman.run_command('host load hostfs - $fdt_addr_r %s' % (os.path.join(ubman.config.build_dir, SANDBOX_DTB))) |
| 19 | ubman.run_command('fdt addr $fdt_addr_r') |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 20 | |
| 21 | @pytest.mark.buildconfigspec('cmd_fdt') |
| 22 | @pytest.mark.boardspec('sandbox') |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 23 | def test_extension(ubman): |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 24 | """Test the 'extension' command.""" |
| 25 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 26 | load_dtb(ubman) |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 27 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 28 | output = ubman.run_command('extension list') |
Heinrich Schuchardt | 8ee1fa2 | 2024-11-27 08:06:26 +0100 | [diff] [blame] | 29 | # extension_bootdev_hunt may have already run. |
| 30 | # Without reboot we cannot make any assumption here. |
| 31 | # assert('No extension' in output) |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 32 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 33 | output = ubman.run_command('extension scan') |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 34 | assert output == 'Found 2 extension board(s).' |
| 35 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 36 | output = ubman.run_command('extension list') |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 37 | assert('overlay0.dtbo' in output) |
| 38 | assert('overlay1.dtbo' in output) |
| 39 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 40 | ubman.run_command_list([ |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 41 | 'setenv extension_overlay_addr %s' % (overlay_addr), |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 42 | 'setenv extension_overlay_cmd \'host load hostfs - ${extension_overlay_addr} %s${extension_overlay_name}\'' % (os.path.join(ubman.config.build_dir, OVERLAY_DIR))]) |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 43 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 44 | output = ubman.run_command('extension apply 0') |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 45 | assert('bytes read' in output) |
| 46 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 47 | output = ubman.run_command('fdt print') |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 48 | assert('button3' in output) |
| 49 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 50 | output = ubman.run_command('extension apply all') |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 51 | assert('bytes read' in output) |
| 52 | |
Simon Glass | ddba520 | 2025-02-09 09:07:14 -0700 | [diff] [blame] | 53 | output = ubman.run_command('fdt print') |
Kory Maincent | 965a34f | 2021-05-04 19:31:23 +0200 | [diff] [blame] | 54 | assert('button4' in output) |
| 55 | |