From patchwork Wed Jul 18 15:16:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945750 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="ULmsHKah"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W15857V6z9s3R for ; Thu, 19 Jul 2018 01:18:52 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 527F7C21F24; Wed, 18 Jul 2018 15:18:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 834CCC21EFC; Wed, 18 Jul 2018 15:17:16 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 527EBC21EDE; Wed, 18 Jul 2018 15:17:02 +0000 (UTC) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by lists.denx.de (Postfix) with ESMTPS id 54DC4C21E1E for ; Wed, 18 Jul 2018 15:16:58 +0000 (UTC) Received: by mail-wr1-f65.google.com with SMTP id s11-v6so5050480wra.13 for ; Wed, 18 Jul 2018 08:16:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=8NVr5w4IiBmBiI4ghBY+dWgv3ZVZ9PuDu3SN3uwwlLA=; b=ULmsHKah0pgUAWMk02paLHgWo8FuNsVskXnt2+ftSAc/34wvTzTAN8aSn7fI7SQk2k LVaMdlYNLE1JaoSq1Yhp+wEbPTeOwLQsKEiAh/1uvRyEhkF63u1ypo3oSQLlGDQWoRP7 +cOgfkTNs06bbZXJJjTTtN0cMtOuLrTRv2anKM2EpWKIc0h5QKMWCX9ux+HbiRP/vLfj /hbIPQCX7noKOyqtnPHclyf5+FyryADprgKhA0Qxthn7EWhckOGWXBkHEqS9IR8CqQYQ 1jywNY1N2BAXNWPLK2bvRIamyKbUxF9u0LOTBlKRvIw0cvqeaBZH545TPrOW26S2pWoY EUKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=8NVr5w4IiBmBiI4ghBY+dWgv3ZVZ9PuDu3SN3uwwlLA=; b=cKl7EwWcZiopLq6CKiXC4TJVE3fLr1pPicFxz0d7brGYXMdiFinUkf8vX4SlueUK1Z w8zhGl3MwJqJSBx+DeDuEHGbRe1Hr9b2N7Phlo8j6qrJRKSKXNezcjjcUVidyxbKddsl jsc9B8nuNIvFm0MUXyB0iOurR1E81t8RAHT4BA/Do1mPPBP5NhKsNMMxXwbJ462bmg/4 aR6Pd5b8vdD+mor68m6PKBR+fMTaHPHCMInjrdRaaiFAK6PaqtP+LLP2+Od4nsb0n7bt ObEjQkpO/wfJpx1BCay3+dr/gmE38PgVeJkcBR/AoFtWGHnLKMAqPdzHvekwDa8CLRat VTlA== X-Gm-Message-State: AOUpUlF5liDjw7ikt5xEykzoBX4gvzgDVXv0J7y+p9tAf3XY6dLK432U 2W4jhmVYSQA3UTf7VycxsCpWkfCZ X-Google-Smtp-Source: AAOMgpfYd8+ZJkeorP7+/IOyt6tC+eNFclPZRWYLGJvBBXiZkPHVZ4EDYvpeu2TjG4hyPw/joit3mw== X-Received: by 2002:adf:9a0b:: with SMTP id z11-v6mr4627090wrb.47.1531927017579; Wed, 18 Jul 2018 08:16:57 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id 65-v6sm4195187wmk.46.2018.07.18.08.16.56 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:16:57 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:39 +0200 Message-Id: <27b6f2bb9ee6bec0d031d0d31dd5179ae02cc8a6.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 01/15] test/py: Extend fpga command to test all fpga load types X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add support for info, load, loadp, loadb, loadbp, loadmk_legacy, loadmk_legacy_gz, loadmk_fit, loadfs also with variable support. There are probably missing failed tests. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- test/py/tests/test_fpga.py | 516 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 516 insertions(+) create mode 100644 test/py/tests/test_fpga.py diff --git a/test/py/tests/test_fpga.py b/test/py/tests/test_fpga.py new file mode 100644 index 000000000000..4d8811662c1e --- /dev/null +++ b/test/py/tests/test_fpga.py @@ -0,0 +1,516 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (c) 2018, Xilinx Inc. +# +# Michal Simek +# Siva Durga Prasad Paladugu + +import pytest +import re +import random +import u_boot_utils + +""" +Note: This test relies on boardenv_* containing configuration values to define +the network available and files to be used for testing. Without this, this test +will be automatically skipped. + +For example: + +# True if a DHCP server is attached to the network, and should be tested. +env__net_dhcp_server = True + +# A list of environment variables that should be set in order to configure a +# static IP. In this test case we atleast need serverip for performing tftpb +# to get required files. +env__net_static_env_vars = [ + ("ipaddr", "10.0.0.100"), + ("netmask", "255.255.255.0"), + ("serverip", "10.0.0.1"), +] + +# Details regarding the files that may be read from a TFTP server. . +env__fpga_secure_readable_file = { + "fn": "auth_bhdr_ppk1_bit.bin", + "enckupfn": "auth_bhdr_enc_kup_load_bit.bin", + "addr": 0x1000000, + "keyaddr": 0x100000, + "keyfn": "key.txt", +} + +env__fpga_under_test = { + "dev": 0, + "addr" : 0x1000000, + "bitstream_load": "compress.bin", + "bitstream_load_size": 1831960, + "bitstream_loadp": "compress_pr.bin", + "bitstream_loadp_size": 423352, + "bitstream_loadb": "compress.bit", + "bitstream_loadb_size": 1832086, + "bitstream_loadbp": "compress_pr.bit", + "bitstream_loadbp_size": 423491, + "mkimage_legacy": "download.ub", + "mkimage_legacy_size": 13321468, + "mkimage_legacy_gz": "download.gz.ub", + "mkimage_legacy_gz_size": 53632, + "mkimage_fit": "download-fit.ub", + "mkimage_fit_size": 13322784, + "loadfs": "mmc 0 compress.bin", + "loadfs_size": 1831960, + "loadfs_block_size": 0x10000, +} +""" + +import test_net + +def check_dev(u_boot_console): + f = u_boot_console.config.env.get('env__fpga_under_test', None) + if not f: + pytest.skip('No FPGA to test') + + dev = f.get('dev', -1) + if dev < 0: + pytest.fail('No dev specified via env__fpga_under_test') + + return dev, f + +def load_file_from_var(u_boot_console, name): + dev, f = check_dev(u_boot_console) + + addr = f.get('addr', -1) + if addr < 0: + pytest.fail('No address specified via env__fpga_under_test') + + test_net.test_net_dhcp(u_boot_console) + test_net.test_net_setup_static(u_boot_console) + bit = f['%s' % (name)] + bit_size = f['%s_size' % (name)] + + expected_tftp = 'Bytes transferred = %d' % bit_size + output = u_boot_console.run_command('tftpboot %x %s' % (addr, bit)) + assert expected_tftp in output + + return f, dev, addr, bit, bit_size + +###### FPGA FAIL test ###### +expected_usage = 'fpga - loadable FPGA image support' + +@pytest.mark.xfail +@pytest.mark.buildconfigspec('cmd_fpga') +def test_fpga_fail(u_boot_console): + # Test non valid fpga subcommand + expected = 'fpga: non existing command' + output = u_boot_console.run_command('fpga broken 0') + assert expected in output + assert expected_usage in output + +@pytest.mark.buildconfigspec('cmd_fpga') +def test_fpga_help(u_boot_console): + # Just show help + output = u_boot_console.run_command('fpga') + assert expected_usage in output + + +###### FPGA DUMP tests ###### + +@pytest.mark.buildconfigspec('cmd_fpga') +def test_fpga_dump(u_boot_console): + pytest.skip('Not implemented now') + +@pytest.mark.buildconfigspec('cmd_fpga') +def test_fpga_dump_variable(u_boot_console): + # Same as above but via "fpga" variable + pytest.skip('Not implemented now') + +###### FPGA INFO tests ###### + +@pytest.mark.buildconfigspec('cmd_fpga') +def test_fpga_info_fail(u_boot_console): + # Maybe this can be skipped completely + dev, f = check_dev(u_boot_console) + + # Multiple parameters to fpga info should fail + expected = 'fpga: more parameters passed' + output = u_boot_console.run_command('fpga info 0 0') + assert expected in output + assert expected_usage in output + +@pytest.mark.buildconfigspec('cmd_fpga') +def test_fpga_info_list(u_boot_console): + # Maybe this can be skipped completely + dev, f = check_dev(u_boot_console) + + # Code is design in a way that if fpga dev is not passed it should + # return list of all fpga devices in the system + u_boot_console.run_command('setenv fpga') + output = u_boot_console.run_command('fpga info') + assert expected_usage not in output + +@pytest.mark.buildconfigspec('cmd_fpga') +def test_fpga_info(u_boot_console): + dev, f = check_dev(u_boot_console) + + output = u_boot_console.run_command('fpga info %x' % (dev)) + assert expected_usage not in output + +@pytest.mark.buildconfigspec('cmd_fpga') +def test_fpga_info_variable(u_boot_console): + dev, f = check_dev(u_boot_console) + + # + # fpga variable is storing device number which doesn't need to be passed + # + u_boot_console.run_command('setenv fpga %x' % (dev)) + + output = u_boot_console.run_command('fpga info') + # Variable cleanup + u_boot_console.run_command('setenv fpga') + assert expected_usage not in output + +###### FPGA LOAD tests ###### + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_load_fail(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'bitstream_load') + + for cmd in ['dump', 'load', 'loadb']: + # missing dev parameter + #expected = 'fpga: incorrect parameters passed' + output = u_boot_console.run_command('fpga %s %x $filesize' % (cmd, addr)) + #assert expected in output + assert expected_usage in output + + # more parameters - 0 at the end + expected = 'fpga: more parameters passed' + output = u_boot_console.run_command('fpga %s %x %x $filesize 0' % (cmd, dev, addr)) + assert expected in output + assert expected_usage in output + + # 0 address + expected = 'fpga: zero fpga_data address' + output = u_boot_console.run_command('fpga %s %x 0 $filesize' % (cmd, dev)) + assert expected in output + assert expected_usage in output + + # 0 filesize + expected = 'fpga: zero size' + output = u_boot_console.run_command('fpga %s %x %x 0' % (cmd, dev, addr)) + assert expected in output + assert expected_usage in output + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_load(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'bitstream_load') + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga load %x %x $filesize && echo %s' % (dev, addr, expected_text)) + assert expected_text in output + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadp') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadp(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'bitstream_load') + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga load %x %x $filesize && echo %s' % (dev, addr, expected_text)) + assert expected_text in output + + # And load also partial bistream + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'bitstream_loadp') + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadp %x %x $filesize && echo %s' % (dev, addr, expected_text)) + assert expected_text in output + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadb(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'bitstream_loadb') + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadb %x %x $filesize && echo %s' % (dev, addr, expected_text)) + assert expected_text in output + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadbp') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadbp(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'bitstream_loadb') + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadb %x %x $filesize && echo %s' % (dev, addr, expected_text)) + assert expected_text in output + + # And load also partial bistream in bit format + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'bitstream_loadbp') + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadbp %x %x $filesize && echo %s' % (dev, addr, expected_text)) + assert expected_text in output + +###### FPGA LOADMK tests ###### + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadmk') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadmk_fail(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'mkimage_legacy') + + u_boot_console.run_command('imi %x' % (addr)) + + # load image but pass incorrect address to show error message + expected = 'Unknown image type' + output = u_boot_console.run_command('fpga loadmk %x %x' % (dev, addr + 0x10)) + assert expected in output + assert expected_usage in output + + # Pass more parameters then command expects - 0 at the end + output = u_boot_console.run_command('fpga loadmk %x %x 0' % (dev, addr)) + #assert expected in output + assert expected_usage in output + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadmk') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadmk_legacy(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'mkimage_legacy') + + u_boot_console.run_command('imi %x' % (addr)) + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadmk %x %x && echo %s' % (dev, addr, expected_text)) + assert expected_text in output + +@pytest.mark.xfail +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadmk') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadmk_legacy_variable(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'mkimage_legacy') + + u_boot_console.run_command('imi %x' % (addr)) + + u_boot_console.run_command('setenv fpga %x' % (dev)) + + # this testcase should cover case which looks like it is supported but dev pointer is broken by loading mkimage address + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadmk %x && echo %s' % (addr, expected_text)) + u_boot_console.run_command('setenv fpga') + assert expected_text in output + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadmk') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadmk_legacy_variable_fpgadata(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'mkimage_legacy') + + u_boot_console.run_command('imi %x' % (addr)) + + u_boot_console.run_command('setenv fpga %x' % (dev)) + u_boot_console.run_command('setenv fpgadata %x' % (addr)) + + # this testcase should cover case which looks like it is supported but dev pointer is broken by loading mkimage address + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadmk && echo %s' % (expected_text)) + u_boot_console.run_command('setenv fpga') + u_boot_console.run_command('setenv fpgadata') + assert expected_text in output + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadmk') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadmk_legacy_gz(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'mkimage_legacy_gz') + + u_boot_console.run_command('imi %x' % (addr)) + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadmk %x %x && echo %s' % (dev, addr, expected_text)) + assert expected_text in output + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadmk') +@pytest.mark.buildconfigspec('fit') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadmk_fit(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'mkimage_fit') + + u_boot_console.run_command('imi %x' % (addr)) + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadmk %x %x:fpga && echo %s' % (dev, addr, expected_text)) + assert expected_text in output + +@pytest.mark.xfail +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadmk') +@pytest.mark.buildconfigspec('fit') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadmk_fit_variable(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'mkimage_fit') + + u_boot_console.run_command('imi %x' % (addr)) + # FIXME this should fail - broken support in past + u_boot_console.run_command('setenv fpga %x' % (dev)) + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadmk %x:fpga && echo %s' % (addr, expected_text)) + u_boot_console.run_command('setenv fpga') + assert expected_text in output + +@pytest.mark.xfail +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_loadmk') +@pytest.mark.buildconfigspec('fit') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadmk_fit_variable_fpgadata(u_boot_console): + f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'mkimage_fit') + + u_boot_console.run_command('imi %x' % (addr)) + + u_boot_console.run_command('setenv fpga %x' % (dev)) + u_boot_console.run_command('setenv fpgadata %x:fpga' % (addr)) + + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadmk && echo %s' % (expected_text)) + u_boot_console.run_command('setenv fpga') + u_boot_console.run_command('setenv fpgadata') + assert expected_text in output + +###### FPGA LOAD tests ###### + +@pytest.mark.buildconfigspec('cmd_fpga') +def test_fpga_loadfs_fail(u_boot_console): + dev, f = check_dev(u_boot_console) + + addr = f.get('addr', -1) + if addr < 0: + pytest.fail('No address specified via env__fpga_under_test') + + bit = f['loadfs'] + bit_size = f['loadfs_size'] + block_size = f['loadfs_block_size'] + + # less params - dev number removed + #expected = 'fpga: incorrect parameters passed' + output = u_boot_console.run_command('fpga loadfs %x %x %x %s' % (addr, bit_size, block_size, bit)) + #assert expected in output + assert expected_usage in output + + # one more param - 0 at the end + # This is the longest command that's why there is no message from cmd/fpga.c + output = u_boot_console.run_command('fpga loadfs %x %x %x %x %s 0' % (dev, addr, bit_size, block_size, bit)) + assert expected_usage in output + + # zero address 0 + expected = 'fpga: zero fpga_data address' + output = u_boot_console.run_command('fpga loadfs %x %x %x %x %s' % (dev, 0, bit_size, block_size, bit)) + assert expected in output + assert expected_usage in output + + # bit_size 0 + expected = 'fpga: zero size' + output = u_boot_console.run_command('fpga loadfs %x %x %x %x %s' % (dev, addr, 0, block_size, bit)) + assert expected in output + assert expected_usage in output + + # block size 0 + # FIXME this should pass but it failing too + output = u_boot_console.run_command('fpga loadfs %x %x %x %x %s' % (dev, addr, bit_size, 0, bit)) + assert expected_usage in output + + # non existing bitstream name + expected = 'Unable to read file noname' + output = u_boot_console.run_command('fpga loadfs %x %x %x %x mmc 0 noname' % (dev, addr, bit_size, block_size)) + assert expected in output + assert expected_usage in output + + # -1 dev number + expected = 'fpga_fsload: Invalid device number -1' + output = u_boot_console.run_command('fpga loadfs %d %x %x %x mmc 0 noname' % (-1, addr, bit_size, block_size)) + assert expected in output + assert expected_usage in output + + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_echo') +def test_fpga_loadfs(u_boot_console): + dev, f = check_dev(u_boot_console) + + addr = f.get('addr', -1) + if addr < 0: + pytest.fail('No address specified via env__fpga_under_test') + + bit = f['loadfs'] + bit_size = f['loadfs_size'] + block_size = f['loadfs_block_size'] + + # This should be done better + expected_text = 'FPGA loaded successfully' + output = u_boot_console.run_command('fpga loadfs %x %x %x %x %s && echo %s' % (dev, addr, bit_size, block_size, bit, expected_text)) + assert expected_text in output + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_load_secure') +@pytest.mark.buildconfigspec('cmd_net') +@pytest.mark.buildconfigspec('cmd_dhcp') +@pytest.mark.buildconfigspec('net') +def test_fpga_secure_bit_auth(u_boot_console): + + test_net.test_net_dhcp(u_boot_console) + test_net.test_net_setup_static(u_boot_console) + + f = u_boot_console.config.env.get('env__fpga_secure_readable_file', None) + if not f: + pytest.skip('No TFTP readable file to read') + + addr = f.get('addr', None) + if not addr: + addr = u_boot_utils.find_ram_base(u_boot_console) + + expected_tftp = 'Bytes transferred = ' + fn = f['fn'] + output = u_boot_console.run_command('tftpboot %x %s' % (addr, fn)) + assert expected_tftp in output + + expected_zynqmpsecure = 'Bitstream successfully loaded' + output = u_boot_console.run_command('fpga loads 0 %x $filesize 0 2' % (addr)) + assert expected_zynqmpsecure in output + + +@pytest.mark.buildconfigspec('cmd_fpga') +@pytest.mark.buildconfigspec('cmd_fpga_load_secure') +@pytest.mark.buildconfigspec('cmd_net') +@pytest.mark.buildconfigspec('cmd_dhcp') +@pytest.mark.buildconfigspec('net') +def test_fpga_secure_bit_img_auth_kup(u_boot_console): + + test_net.test_net_dhcp(u_boot_console) + test_net.test_net_setup_static(u_boot_console) + + f = u_boot_console.config.env.get('env__fpga_secure_readable_file', None) + if not f: + pytest.skip('No TFTP readable file to read') + + keyaddr = f.get('keyaddr', None) + if not keyaddr: + addr = u_boot_utils.find_ram_base(u_boot_console) + expected_tftp = 'Bytes transferred = ' + keyfn = f['keyfn'] + output = u_boot_console.run_command('tftpboot %x %s' % (keyaddr, keyfn)) + assert expected_tftp in output + + addr = f.get('addr', None) + if not addr: + addr = u_boot_utils.find_ram_base(u_boot_console) + expected_tftp = 'Bytes transferred = ' + fn = f['enckupfn'] + output = u_boot_console.run_command('tftpboot %x %s' % (addr, fn)) + assert expected_tftp in output + + expected_zynqmpsecure = 'Bitstream successfully loaded' + output = u_boot_console.run_command('fpga loads 0 %x $filesize 0 1 %x' % (addr, keyaddr)) + assert expected_zynqmpsecure in output From patchwork Wed Jul 18 15:16:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945748 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="LfocTEAg"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W14X6ylvz9s3R for ; Thu, 19 Jul 2018 01:18:20 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 88CA3C21F18; Wed, 18 Jul 2018 15:17:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id A2770C21E0D; Wed, 18 Jul 2018 15:17:07 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 89318C21E52; Wed, 18 Jul 2018 15:17:03 +0000 (UTC) Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by lists.denx.de (Postfix) with ESMTPS id C0228C21E29 for ; Wed, 18 Jul 2018 15:16:59 +0000 (UTC) Received: by mail-wm0-f42.google.com with SMTP id o11-v6so3169217wmh.2 for ; Wed, 18 Jul 2018 08:16:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=kEA56UyRr4eyosQHCn4Lfyo73OcEzbU/k9GXSSRGiU4=; b=LfocTEAgyqa5otugrBAo32HP9hwIR9cZjuQIZnjx6KGr4RxXBOEHbos9xpfTH+m5zc WXas4mSN2w/9WSsO2nrox71q6ttcOomchAx4hHO684XqmEe8moOjTYWQqJikZg/GWD39 5Fkw4u3J9QH9lKN2sXgVJVeTQDdjQb3e3w1RhKl8zTYmFYSBrKC9ejUR1z3ukBKipfXp 64S8YAYtFkn/P7K8iUm6Zibb9+ZoJvKGna+qIEYxb1sQb2Wnz7p1vGpYOMkabYjevFsH +3bymyP9Q6h9s9WD8GydIKmN8Q12HcB+8YnLjte7df/lbqm2KNubi6nRPMNreLSMR7fY Ly+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=kEA56UyRr4eyosQHCn4Lfyo73OcEzbU/k9GXSSRGiU4=; b=ETdeGpae0HOr2JUAo8jdP1rXN+l2X7IjX2KM7ztWRldX19h6no0KV3lop1YuLauywq 7ydc3FWmoQULd4Se4gV+PQUas7SVPb1DFaRnOlW6uli8oigWk3OuER1fe7tIG0pld5LP BothH5VhshMK8xDOkjoQEJVHzdZysvKAxejqYO4oyTE+Y3Lpz2fPBmCq9itn8W+iLTYm 9lgXRW+59LaoMGsb5OWMentO/g/RiyH4sWuPbLk3A1Ne1BRPG7NP0nzhLSyV75tqCsPD 45YCV1DsV9t6WntCA2ufISj6D1dkSie+dnsUym6dQDEwKSvjjXaouZvV/wxU2DPObCYe JsLg== X-Gm-Message-State: AOUpUlEoHoIQCugMxOpFl3zAKebv7lD//wQsKkAzWJ14B7FrHzNd7Rox Q49vswISuhNGbu0DzOc6FqNbsJP6 X-Google-Smtp-Source: AAOMgpf+VmAog9TFfn0CqPNqWFmT6ETYFK64OVU9Nxdu1JhwVrYc4avQlwGzq6X+On5XeKYVj/bEpQ== X-Received: by 2002:a1c:b484:: with SMTP id d126-v6mr1895484wmf.17.1531927019153; Wed, 18 Jul 2018 08:16:59 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id w9-v6sm5561318wrr.77.2018.07.18.08.16.58 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:16:58 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:40 +0200 Message-Id: <4a585f1789ecabf5d57c5f4e9f8aaf64c7b6dbe1.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 02/15] cmd: fpga: Move error handling to do_fpga() X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Clean fpga_get_op() error handling by moving checking/print to do_fpga. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- cmd/fpga.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index 791fe5cb7718..abe683720285 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -74,6 +74,9 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) op = (int)fpga_get_op(argv[1]); switch (op) { + case FPGA_NONE: + printf("Unknown fpga operation \"%s\"\n", argv[1]); + return CMD_RET_USAGE; #if defined(CONFIG_CMD_FPGA_LOADFS) case FPGA_LOADFS: if (argc < 9) @@ -360,9 +363,6 @@ static int fpga_get_op(char *opstr) op = FPGA_LOADS; #endif - if (op == FPGA_NONE) - printf("Unknown fpga operation \"%s\"\n", opstr); - return op; } From patchwork Wed Jul 18 15:16:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945749 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="eKsDfuM2"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W14t3GDwz9s3R for ; Thu, 19 Jul 2018 01:18:38 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 2356AC21F00; Wed, 18 Jul 2018 15:17:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 8C141C21EF2; Wed, 18 Jul 2018 15:17:08 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 53516C21EF7; Wed, 18 Jul 2018 15:17:05 +0000 (UTC) Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by lists.denx.de (Postfix) with ESMTPS id 767E0C21E1B for ; Wed, 18 Jul 2018 15:17:01 +0000 (UTC) Received: by mail-wr1-f53.google.com with SMTP id t6-v6so5068550wrn.7 for ; Wed, 18 Jul 2018 08:17:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=PdI9ioW1RQ6qphNztQ+HrFrRBOwjNhEP5/fUFsUMB4k=; b=eKsDfuM2PHQkyj3lC3/SPqQDAVljDSBs7QsBpL99zd5Pj4OmtxfSfVhs8be3RWG2Qw UPTafZDHWxMggnBZfrd0QkGp3Z24lNg9An6g/6lElIqNzjcWge4+uNQKxpx+Ks5jmSxQ 2sN2EYvkW+8t4++q+tTdTDXSGQPSf/r0EH+VuBASu49DDPbQsVCU5XrzKymJc5f9/P0o rCvmshfJxa6Lje3D1KZyft+7yoOWxzSDpoPsX6ClqmYZ25x5XexUzLb65mJqIaqMzX/V NnkTDTeEe0m4HH5yyhnRuBUw1uscffRlRuk3rJ7Lw6aKlG9AOwP1WG9h48lhCnp1/2J8 qSHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=PdI9ioW1RQ6qphNztQ+HrFrRBOwjNhEP5/fUFsUMB4k=; b=CzP3wnuzcuRoV/BGi6/J3iDja6cTAipocM1BLGAbB5OyyTfCsJOlEQsUanoFCa75u1 PXc2/pFLyN6tbpdk3SJgie3zaiYzL/c50VSI5v9a6btuP6VMfJXq0Mh/CeKbrru3Uypa cm/7kdFlYG7ec43u4S6eD7GUNxMCfiKhsULQciMEc4abAyKCY2dDWobjsAqzSZfRhUq7 8SdiRtzsHgK6xo2foINfokZjLJ7vYudgGXxHNZP8wHeEf2BRzvWkOtlo5pIjlYIDQ+OR UyLFYvmdtiICezZP5xvYhkuVAFxom3pOczJTFNIh9Am5aMg0MX800EPg8fYOlLSayRkO mAHg== X-Gm-Message-State: AOUpUlFcn+ksCOS3eZCy2bcbgZnvIGKUaH55aVZYvBPcu5kyLP/9OV1s HNZCGWOu4FWdZV1Pe24wxwO99EDy X-Google-Smtp-Source: AAOMgpcM06VIDOarU+Z+mGh5Vc70ILG8ipnvN23kk9m2sDXMUfKugnxrGWF++hB/gLW9tLtd6zOE3A== X-Received: by 2002:a5d:46d1:: with SMTP id g17-v6mr4652666wrs.76.1531927020985; Wed, 18 Jul 2018 08:17:00 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id f12-v6sm3558001wrg.88.2018.07.18.08.17.00 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:00 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:41 +0200 Message-Id: <21316b64cb24813d9beab2f25f1b77522e186b0b.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 03/15] cmd: fpga: Move fpga_get_op to avoid local function declaration X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Move fpga_get_op() to top of file to remove local function declaration and also remove useless retyping. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- cmd/fpga.c | 85 ++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index abe683720285..de8505e9d4c8 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -13,9 +13,6 @@ #include #include -/* Local functions */ -static int fpga_get_op(char *opstr); - /* Local defines */ enum { FPGA_NONE = -1, @@ -30,6 +27,46 @@ enum { FPGA_LOADS, }; +/* + * Map op to supported operations. We don't use a table since we + * would just have to relocate it from flash anyway. + */ +static int fpga_get_op(char *opstr) +{ + int op = FPGA_NONE; + + if (!strcmp("info", opstr)) + op = FPGA_INFO; + else if (!strcmp("loadb", opstr)) + op = FPGA_LOADB; + else if (!strcmp("load", opstr)) + op = FPGA_LOAD; +#if defined(CONFIG_CMD_FPGA_LOADP) + else if (!strcmp("loadp", opstr)) + op = FPGA_LOADP; +#endif +#if defined(CONFIG_CMD_FPGA_LOADBP) + else if (!strcmp("loadbp", opstr)) + op = FPGA_LOADBP; +#endif +#if defined(CONFIG_CMD_FPGA_LOADFS) + else if (!strcmp("loadfs", opstr)) + op = FPGA_LOADFS; +#endif +#if defined(CONFIG_CMD_FPGA_LOADMK) + else if (!strcmp("loadmk", opstr)) + op = FPGA_LOADMK; +#endif + else if (!strcmp("dump", opstr)) + op = FPGA_DUMP; +#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) + else if (!strcmp("loads", opstr)) + op = FPGA_LOADS; +#endif + + return op; +} + /* ------------------------------------------------------------------------- */ /* command form: * fpga @@ -71,7 +108,7 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) return CMD_RET_USAGE; } - op = (int)fpga_get_op(argv[1]); + op = fpga_get_op(argv[1]); switch (op) { case FPGA_NONE: @@ -326,46 +363,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) return rc; } -/* - * Map op to supported operations. We don't use a table since we - * would just have to relocate it from flash anyway. - */ -static int fpga_get_op(char *opstr) -{ - int op = FPGA_NONE; - - if (!strcmp("info", opstr)) - op = FPGA_INFO; - else if (!strcmp("loadb", opstr)) - op = FPGA_LOADB; - else if (!strcmp("load", opstr)) - op = FPGA_LOAD; -#if defined(CONFIG_CMD_FPGA_LOADP) - else if (!strcmp("loadp", opstr)) - op = FPGA_LOADP; -#endif -#if defined(CONFIG_CMD_FPGA_LOADBP) - else if (!strcmp("loadbp", opstr)) - op = FPGA_LOADBP; -#endif -#if defined(CONFIG_CMD_FPGA_LOADFS) - else if (!strcmp("loadfs", opstr)) - op = FPGA_LOADFS; -#endif -#if defined(CONFIG_CMD_FPGA_LOADMK) - else if (!strcmp("loadmk", opstr)) - op = FPGA_LOADMK; -#endif - else if (!strcmp("dump", opstr)) - op = FPGA_DUMP; -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) - else if (!strcmp("loads", opstr)) - op = FPGA_LOADS; -#endif - - return op; -} - #if defined(CONFIG_CMD_FPGA_LOADFS) || defined(CONFIG_CMD_FPGA_LOAD_SECURE) U_BOOT_CMD(fpga, 9, 1, do_fpga, #else From patchwork Wed Jul 18 15:16:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945757 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="WSR2w2lv"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W1CV1s6kz9s3R for ; Thu, 19 Jul 2018 01:24:22 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 05FBFC21EF0; Wed, 18 Jul 2018 15:19:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 45C5DC21F01; Wed, 18 Jul 2018 15:17:21 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id AF582C21E1B; Wed, 18 Jul 2018 15:17:06 +0000 (UTC) Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by lists.denx.de (Postfix) with ESMTPS id 205DCC21E89 for ; Wed, 18 Jul 2018 15:17:03 +0000 (UTC) Received: by mail-wm0-f45.google.com with SMTP id z6-v6so15341857wma.0 for ; Wed, 18 Jul 2018 08:17:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=KeqxOHNFPZo09UYqqjhcg1a5nQFHnzjUZKZx74wce/U=; b=WSR2w2lvAIU53qUupHCF7JF9CI6z7GIntLrfOlgtZTP1QTkZ2XohDvHKp8jzBmvoNa 7LEGAc9mLrOf5bkMjNPaDdJ1Es4Ti/6/6oSy7HWPyDuyzSh8JTibYtPd7T7EVDzJOSRo oBpNiuoBqoy0H890pL1728Ak26ZDRicXDlf2sHDLQcSr+LWZBt2A959I5BD+EjIPe1RF B5SZ2Fi39aZqELJ4ABm461uS6leeQ7AD251Tp+81G6ZIt+fhQLEw/ujLZ2bQM7MsDI4m c6m4Bsib6F7zueqU/aLqDQYez3fk7+HZ/Ug0hr5mcUGLT5ogCpwTmr9t/pua8LWCESmV y3AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=KeqxOHNFPZo09UYqqjhcg1a5nQFHnzjUZKZx74wce/U=; b=jklW4e/riflgONOvNWSvz+5W6T2ptKUip5iLgb+zcN3cdu16rOZuTYdoKoxt/fBobE avkfufNdDq5zu2SQQo8c55YIeJKe7USSv2lakLVUqwZMOzfCfNEjZjs4zTi3MvkyFAs+ Bfh5d1qKxpTv2OsdyI2r+NS+Mi72UOs5a3ho22nEJeW0YMP4GW4HDEH3YKN9PuTSYm1N cBiSqbWhI3mNPxXTwyJ4o7xTJw79j+3idkFn+bwRczjafgZqQFVqYnvn64UIZGvSzAUL z6lnS+Cq8isKVSupoBxS8oeGV5HfGkbQfS4EvRMA/dpBheQClIhByTfvZ1/kDelNVnRq PB5g== X-Gm-Message-State: AOUpUlEbmrl34iT2YiVO8PhmBHjEqahZrM8YhFRn1CarSSwVJkCfhkaq Mskf63gcdzF/YOsI+SE+bBUbI5xT X-Google-Smtp-Source: AAOMgpfuUzQ3Ko+A5j3+K5VzQUNeqh0jouMJAyFBDP3Vszf8VWgyvg0ax78m67UM2EAmgDMOYw17+A== X-Received: by 2002:a1c:8406:: with SMTP id g6-v6mr1785982wmd.18.1531927022659; Wed, 18 Jul 2018 08:17:02 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id g125-v6sm1772964wmf.16.2018.07.18.08.17.01 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:02 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:42 +0200 Message-Id: X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 04/15] cmd: fpga: Cleanup error handling in connection to FPGA_NONE X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Incorrect command is already handled and FPGA_NONE should be used only one. In case of error CMD_RET_USAGE can be returned directly without any addition logic around. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- cmd/fpga.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index de8505e9d4c8..af2f514dca00 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -171,11 +171,10 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) if (dev == FPGA_INVALID_DEVICE) { puts("FPGA device not specified\n"); - op = FPGA_NONE; + return CMD_RET_USAGE; } switch (op) { - case FPGA_NONE: case FPGA_INFO: break; #if defined(CONFIG_CMD_FPGA_LOADFS) @@ -219,13 +218,10 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) if (wrong_parms) { puts("Wrong parameters for FPGA request\n"); - op = FPGA_NONE; + return CMD_RET_USAGE; } switch (op) { - case FPGA_NONE: - return CMD_RET_USAGE; - case FPGA_INFO: rc = fpga_info(dev); break; From patchwork Wed Jul 18 15:16:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945758 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="liQNv/yU"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W1DD5vqJz9s3R for ; Thu, 19 Jul 2018 01:25:00 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 6DB98C21EDE; Wed, 18 Jul 2018 15:19:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 556D1C21F06; Wed, 18 Jul 2018 15:17:27 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 656B2C21F16; Wed, 18 Jul 2018 15:17:08 +0000 (UTC) Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by lists.denx.de (Postfix) with ESMTPS id C21DFC21EEB for ; Wed, 18 Jul 2018 15:17:04 +0000 (UTC) Received: by mail-wr1-f52.google.com with SMTP id a3-v6so5086240wrt.2 for ; Wed, 18 Jul 2018 08:17:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=Zi51GB+nzgHOyoDvjgdoC6IzWbMFiMGjrYpD+aaMIKc=; b=liQNv/yU0MPENth6n3QKqH24pXL97xslUnzp8526RIgK9XLZboBleGsraBoLSgWlph koHgExZT5fIhVdVQj0VlNztqOHMNOxiyBKxHgIbtF+mbr233hhuzhI/w4WJIRhVXL6vU 49yv1Iyi8FGPP+wVxitwm31Xmpi46U8x/ug6Tf/8lc7Enur4Bxe6EefYatOcCk2XKitg OqzT3PYC40f965gN7LJ4Ma87Le+kUwLidERLDQJGWHFanEmaGLkD6wEK3hSIu5XD4yRD Ce6Ud58C917P0YYAfDf2EwxJV+QKxdze1q6qVrRAUP+xvkbzPsbtr/a6Zo1YClaW8PS7 9qwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=Zi51GB+nzgHOyoDvjgdoC6IzWbMFiMGjrYpD+aaMIKc=; b=TkBzDYeP7oW5gfjCZnichOS81aiaw5lD3n/C2vQ/0zJrLpmAkmKKNMOo7/UlFy8OgD DhvVrZEWHto0fAQlgM+cWDu/ffKodaKtQWeijgWjqJGEi68GDWkBKcqMooIqLCIDkLCU Be81RYWiUW7nhYp5c3+PQgU+26di9lLrM9o7Hy7j/HB3XJODejF51bI3vu7IpHNhdIIK 02f5vxEqAQZexKvy9kW9HEPM4foBxgg781dGVMiW/KsQwyOyyhkhgtH0obyp3SgNXcy7 IokOgVTWM4Xy+rLMZQ6+wuorh03tDlL1Yr/a2WeWQPq4B6zxUqYFEPLbmRzWnnR9CQMS aL0Q== X-Gm-Message-State: AOUpUlFtIUvYlycGjmEQU5KN8YppaT2lVqTHTWp7oOJm7jHtnLNAeGvv vck2euU0aIJQgxIMYHvADj0BLrie X-Google-Smtp-Source: AAOMgpdLIYPAseFWZlVIRDg/rOSTTGM7wxIdQovhoD3LtLvINu5waAl51U9IvTYEk1ebYBEJekiUIA== X-Received: by 2002:adf:dc8e:: with SMTP id r14-v6mr4704823wrj.166.1531927024322; Wed, 18 Jul 2018 08:17:04 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id d7-v6sm6980205wro.92.2018.07.18.08.17.03 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:03 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:43 +0200 Message-Id: <56226d1f5f36a38b480be6b00514d426e67fc9fb.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 05/15] cmd: fpga: Move parameter checking for loadfs/loads X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" There is no reason to check parameters in separate switch before main one. This patch is simplifying error path and checking parameters right after assignment. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- cmd/fpga.c | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index af2f514dca00..48902286f1d5 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -123,6 +123,14 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) fpga_fsinfo.interface = argv[6]; fpga_fsinfo.dev_part = argv[7]; fpga_fsinfo.filename = argv[8]; + + /* Blocksize can be zero */ + if (!fpga_fsinfo.interface || !fpga_fsinfo.dev_part || + !fpga_fsinfo.filename) { + puts("ERR: Wrong interface, dev_part or filename\n"); + return CMD_RET_USAGE; + } + argc = 5; break; #endif @@ -136,6 +144,19 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) NULL, 16); fpga_sec_info.encflag = (u8)simple_strtoul(argv[6], NULL, 16); fpga_sec_info.authflag = (u8)simple_strtoul(argv[5], NULL, 16); + + if (fpga_sec_info.authflag >= FPGA_NO_ENC_OR_NO_AUTH && + fpga_sec_info.encflag >= FPGA_NO_ENC_OR_NO_AUTH) { + puts("ERR: Use for NonSecure bitstream\n"); + return CMD_RET_USAGE; + } + + if (fpga_sec_info.encflag == FPGA_ENC_USR_KEY && + !fpga_sec_info.userkey_addr) { + puts("ERR: User key not provided\n"); + return CMD_RET_USAGE; + } + argc = 5; break; #endif @@ -177,29 +198,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) switch (op) { case FPGA_INFO: break; -#if defined(CONFIG_CMD_FPGA_LOADFS) - case FPGA_LOADFS: - /* Blocksize can be zero */ - if (!fpga_fsinfo.interface || !fpga_fsinfo.dev_part || - !fpga_fsinfo.filename) - wrong_parms = 1; - break; -#endif -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) - case FPGA_LOADS: - if (fpga_sec_info.authflag >= FPGA_NO_ENC_OR_NO_AUTH && - fpga_sec_info.encflag >= FPGA_NO_ENC_OR_NO_AUTH) { - puts("ERR: use for NonSecure bitstream\n"); - wrong_parms = 1; - } - - if (fpga_sec_info.encflag == FPGA_ENC_USR_KEY && - !fpga_sec_info.userkey_addr) { - wrong_parms = 1; - puts("ERR:User key not provided\n"); - } - break; -#endif case FPGA_LOAD: case FPGA_LOADP: case FPGA_LOADB: From patchwork Wed Jul 18 15:16:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945753 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="wZVx7UEJ"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W18Q4PXWz9s3R for ; Thu, 19 Jul 2018 01:21:42 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 4AB5BC21EAE; Wed, 18 Jul 2018 15:19:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 8BB61C21ED5; Wed, 18 Jul 2018 15:17:31 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id EEBF4C21EEB; Wed, 18 Jul 2018 15:17:10 +0000 (UTC) Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by lists.denx.de (Postfix) with ESMTPS id 96038C21E89 for ; Wed, 18 Jul 2018 15:17:06 +0000 (UTC) Received: by mail-wm0-f42.google.com with SMTP id z13-v6so3272849wma.5 for ; Wed, 18 Jul 2018 08:17:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=AklnQsMSctQLspPGvvEAlhrqJ7+rpf0+/iJWVIRiV3Y=; b=wZVx7UEJYHiFN6S6Mmsoo20KlvD9P3gSwvZ/r5HC9cS9MJ2E4ADmXvd+WKuXlaiHYS MzybyUpiwf0BsAhKFYRpr9hmeCF4qqr1Cm768B6kESaFT2eR7DUN4mTknPx+wEPEwnU8 HdHXWsahCWcfpZIHL278UGJZvmkhe+Ba7KwO2XesLSUt/Ctlsbth5nQqQww+5qAViLLn tU6mrgWwN3hCWKF+4M71xTzRkHmAUTz7z5r+hH2czZ9bHS0rj/Eh00gftiGXMwPFzQAM aOh561E6b/xCRUpBBHEjI0Ix/sHrSLFmTJke6ebIC63zTwTOnwqKj5WMw+bQ25oYyNZm d+Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=AklnQsMSctQLspPGvvEAlhrqJ7+rpf0+/iJWVIRiV3Y=; b=WS7eRP5HOhXkIK51j6rSMaV5oarq+aiO/vfSptAb8N4xno84Epr3kUx4UEuL8YvjRs Geir6x4T7zC2Fd5DrAYFmoCitaBxfEWFWe28bTE8aj6sfKLJPE5yfcALt2XsFRXvlMHY 1ULgBc8NB4E+8FrNhxOjNfumf0R8bQyucHkpK8zkQ9f4SlQAoGLaDHCRkvFVwk72LPoT BeuG81KE3aQ14e8khQBbaI1jzDLneQXLpuepOAQZHuu9RQCItNr1UnAz9yyiW8VzzU13 HENs8jfxeJknv3eqIgtG2/55VCkAQiYayFZpf4ugYSX9Z76tNjDsHvk4kxzOG/KyPZtZ s+yw== X-Gm-Message-State: AOUpUlFrtz02tz1OGutpAH3Vq+/PYm64/aB0FEw+1je49SfReQ9udiml kA4QgnSFBhYKcmZceafkUcDj4hcY X-Google-Smtp-Source: AAOMgpeZCM9OZs02TeARv6L4ESCC4RaIhbMlszVLgZPp0qW37LlkSn/TSFSWVmIgUgEem5ZcTaqqug== X-Received: by 2002:a1c:4e0f:: with SMTP id g15-v6mr1803058wmh.49.1531927026140; Wed, 18 Jul 2018 08:17:06 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id y13-v6sm5940097wrg.5.2018.07.18.08.17.05 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:05 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:44 +0200 Message-Id: <56f1e2278db4195a76578edbf84ea1b730b7b8ad.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 06/15] cmd: fpga: Remove parameter checking from fpga loadfs command X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Parameter checking is dead code because all the time there must be all params assigned. If they are not assigned there is no 9th parameters passed and checking before return CMD_RET_USAGE. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- cmd/fpga.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index 48902286f1d5..b03dd9dc0ace 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -124,13 +124,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) fpga_fsinfo.dev_part = argv[7]; fpga_fsinfo.filename = argv[8]; - /* Blocksize can be zero */ - if (!fpga_fsinfo.interface || !fpga_fsinfo.dev_part || - !fpga_fsinfo.filename) { - puts("ERR: Wrong interface, dev_part or filename\n"); - return CMD_RET_USAGE; - } - argc = 5; break; #endif From patchwork Wed Jul 18 15:16:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945759 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="b7spnU2Z"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W1Dy6QbQz9s3R for ; Thu, 19 Jul 2018 01:25:38 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 891A8C21F3C; Wed, 18 Jul 2018 15:19:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 85677C21F1F; Wed, 18 Jul 2018 15:17:33 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 0A400C21ECF; Wed, 18 Jul 2018 15:17:12 +0000 (UTC) Received: from mail-wm0-f44.google.com (mail-wm0-f44.google.com [74.125.82.44]) by lists.denx.de (Postfix) with ESMTPS id 64BDCC21C27 for ; Wed, 18 Jul 2018 15:17:08 +0000 (UTC) Received: by mail-wm0-f44.google.com with SMTP id y22-v6so3314155wma.0 for ; Wed, 18 Jul 2018 08:17:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=UHyRmsu2Zjc192BnxeLuWgyMFV31ZL7W6HcIu7AJTsk=; b=b7spnU2ZXuqMhstr/BsNrGXGzdGhHlAw5LRa+mbMZbG4er2W0To0o3QtriCFQWBvYT BYGDDsNJsb7tXQp2j/d+Csz6Qz5un800NaE0PhdhHxP1enSruyQYjhmaRR7aqeKAf2KU Olym+c7aGwAw5XoD87OZF9JjYOamLZjQVzRS9vqBPnOfQsAZfGNumCSFnYdVzm8ooMx6 ykU+2Gxs/xdsiq4HBrdVSXamUJb7d6K5AUb0Cp+42Wm3YrsBoUOTL/sosSzjB5NV1wCH f1ZV1qag0gU5AQlrzNoslKW1wIuzxqyVS7b3i0aO7PcfDSMMCBzPZXxwqKpTKHwX5zpJ vOkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=UHyRmsu2Zjc192BnxeLuWgyMFV31ZL7W6HcIu7AJTsk=; b=VXUtikIhu+cZNGXyCkiKSEj0rJLRcVgOe3wNKdBCfnibvEZ5YS60JvXC1gH0cnASUZ sxGl8YbYaEGgC78DvlJJLNsj/x5Xc+K+9Qx6IxwdDu63yxGuHIGeqneT5Hjb4Ju2VIMX Z3AsP7tXmBrfE5X3wB7R9Mq6OX/eGQDSmKAZlPeW5JNK/6+fPl6k3fb8ah2TAWnwuBis XvJkrMo8y970ftCQC1OTxjeWhG2c1qNpu1R5L2bCdntiS6R6OBYCEFx2m/Hb7v/Ro20z QjxA5Ya9dkNU+bF5mLRU7qZNkOMlh/zgWGZ3Sz3bXEg3MoewsKP734p6gwYkFB6kkYh9 M+Hg== X-Gm-Message-State: AOUpUlEwl8V9iXb91KjvPi4feqxbPZLxfmibqOggTVs2FOC0SWWIu7IW gvzYyak1yqsXpMjoeRGz2E9SonUc X-Google-Smtp-Source: AAOMgpcVd29nSEUXB1MnW74oG4PWVSV73b4HnrNqoN6j0OD4mhrPNBEH2Z1jt3u53UUZ4j7NObDUDw== X-Received: by 2002:a1c:570a:: with SMTP id l10-v6mr1957849wmb.56.1531927027929; Wed, 18 Jul 2018 08:17:07 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id j131-v6sm2340370wmb.25.2018.07.18.08.17.07 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:07 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:45 +0200 Message-Id: <8cf9a338e87c8d5b23ebbdb2562f7e494189bb7c.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 07/15] cmd: fpga: Clean wrong_parms handling X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" There is no reason to check parameters in separate switch. Check them directly when they are read. Also there is no reason to check loadmk case separately because fpga_data address must be non zero too. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- cmd/fpga.c | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index b03dd9dc0ace..0e5f4117c02e 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -83,7 +83,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) char *devstr = env_get("fpga"); char *datastr = env_get("fpgadata"); int rc = FPGA_FAIL; - int wrong_parms = 0; #if defined(CONFIG_FIT) const char *fit_uname = NULL; ulong fit_addr; @@ -160,7 +159,10 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) switch (argc) { case 5: /* fpga */ data_size = simple_strtoul(argv[4], NULL, 16); - + if (!data_size) { + puts("Zero data_size\n"); + return CMD_RET_USAGE; + } case 4: /* fpga */ #if defined(CONFIG_FIT) if (fit_parse_subimage(argv[3], (ulong)fpga_data, @@ -177,7 +179,10 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) (ulong)fpga_data); } debug("%s: fpga_data = 0x%lx\n", __func__, (ulong)fpga_data); - + if (!fpga_data) { + puts("Zero fpga_data address\n"); + return CMD_RET_USAGE; + } case 3: /* fpga */ dev = (int)simple_strtoul(argv[2], NULL, 16); debug("%s: device = %d\n", __func__, dev); @@ -190,30 +195,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) switch (op) { case FPGA_INFO: - break; - case FPGA_LOAD: - case FPGA_LOADP: - case FPGA_LOADB: - case FPGA_LOADBP: - case FPGA_DUMP: - if (!fpga_data || !data_size) - wrong_parms = 1; - break; -#if defined(CONFIG_CMD_FPGA_LOADMK) - case FPGA_LOADMK: - if (!fpga_data) - wrong_parms = 1; - break; -#endif - } - - if (wrong_parms) { - puts("Wrong parameters for FPGA request\n"); - return CMD_RET_USAGE; - } - - switch (op) { - case FPGA_INFO: rc = fpga_info(dev); break; From patchwork Wed Jul 18 15:16:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945751 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="ezN2fJPz"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W16s2T1jz9s3R for ; Thu, 19 Jul 2018 01:20:21 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id DE1FEC21EDC; Wed, 18 Jul 2018 15:18:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 5C393C21F05; Wed, 18 Jul 2018 15:17:20 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 4AB75C21E52; Wed, 18 Jul 2018 15:17:13 +0000 (UTC) Received: from mail-wm0-f44.google.com (mail-wm0-f44.google.com [74.125.82.44]) by lists.denx.de (Postfix) with ESMTPS id 76C62C21EF0 for ; Wed, 18 Jul 2018 15:17:10 +0000 (UTC) Received: by mail-wm0-f44.google.com with SMTP id z13-v6so3273061wma.5 for ; Wed, 18 Jul 2018 08:17:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=OQdyKaydBymQpiULlvvXluzm/bUwwtzUDr6cl7lYHVU=; b=ezN2fJPzYAN6TUgQIbpd1jMlZmYgJzBpO4v1bRyWMKNqrer9Udem/TtULN0eElrNH+ dH4OxmNiB/bGLq9ri1BULqBlRF4+XO2hUL+qzBSaob/F07BOQJcro9RHKF+mS059PNQP EK1HXX4FqbyhL/rPs9jfgEkE6gPKwTnxe2lnH7igMEQYUuo4Qx0Qh6yI72rIFJpp5+/r XTx4CrJQGbEMdYpXbug6WHSe3t/CXiaM4zx3/xfhZsDa2K+lcdHe792KQggJlum3WGHy ZwBIOcUWFMW4x9zS+ukXONO5wlNhbCr64pD43FlFot0kPAayrLtXXxKPFfhZEICfA+rD /cHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=OQdyKaydBymQpiULlvvXluzm/bUwwtzUDr6cl7lYHVU=; b=tX3iyYFcn2J+Yxyo7EXrfSC3mM+v8F5Tx61/j2E30xuP1VqgVj3DGv8Y61nVy6huPF zQv+R6wTpaeR0ZjNjxKt/+8iLy8Y2d5Oz7B1rGNyzApDgsS5PXnb44nKZJFVbhF3gKxx ihgtqkegPopwwaXd7Uigrt8AwXOfM4PSJ1E1XJ6DTlVs6Ka99Wq8hiuZQ4tZXZjjzKKd XfYc0bHhAFMBhKM61Bns8RDTRV2rtXsFWx5kaUTbFg4jfUTcYumIEhO2l18S3F6F419S vIQU9ahgTlqMGbN0i+ZEVtXFqLuSCP7LIq9nAVQv4tyRzpBz1HHPA8RYfOkMzKg/pPA8 N/8w== X-Gm-Message-State: AOUpUlH3at/tqrdNBixh57MIhkZLVgNEiiqy+TkVrZ4fnpXveSr2+BZj b/FjQF/b075A+TWZlGQQYRPDi92p X-Google-Smtp-Source: AAOMgpf+1mCBxpZusgI/1qSNpTh7jrJilUopJxXtfFQAiZ2uLxd+KMELkHpurgiMs8t/899Yt42Apw== X-Received: by 2002:a1c:6d94:: with SMTP id b20-v6mr1923524wmi.28.1531927029714; Wed, 18 Jul 2018 08:17:09 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id t2-v6sm7537006wrg.25.2018.07.18.08.17.08 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:09 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:46 +0200 Message-Id: X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 08/15] cmd: fpga: Create new do_fpga_wrapper for using u-boot subcommands X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Create command wrapper to clean fpga subcommands. The function logic is taken from cmd_dm.c Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- cmd/fpga.c | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index 0e5f4117c02e..ac12af2fa06d 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -331,10 +331,48 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) return rc; } +static cmd_tbl_t fpga_commands[] = { +}; + +static int do_fpga_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, + char *const argv[]) +{ + cmd_tbl_t *fpga_cmd; + int ret; + + if (argc < 2) + return CMD_RET_USAGE; + + fpga_cmd = find_cmd_tbl(argv[1], fpga_commands, + ARRAY_SIZE(fpga_commands)); + + /* This should be removed when all functions are converted */ + if (!fpga_cmd) + return do_fpga(cmdtp, flag, argc, argv); + + /* FIXME This can't be reached till all functions are converted */ + if (!fpga_cmd) { + debug("fpga: non existing command\n"); + return CMD_RET_USAGE; + } + + argc -= 2; + argv += 2; + + if (argc > fpga_cmd->maxargs) { + debug("fpga: more parameters passed\n"); + return CMD_RET_USAGE; + } + + ret = fpga_cmd->cmd(fpga_cmd, flag, argc, argv); + + return cmd_process_error(fpga_cmd, ret); +} + #if defined(CONFIG_CMD_FPGA_LOADFS) || defined(CONFIG_CMD_FPGA_LOAD_SECURE) -U_BOOT_CMD(fpga, 9, 1, do_fpga, +U_BOOT_CMD(fpga, 9, 1, do_fpga_wrapper, #else -U_BOOT_CMD(fpga, 6, 1, do_fpga, +U_BOOT_CMD(fpga, 6, 1, do_fpga_wrapper, #endif "loadable FPGA image support", "[operation type] [device number] [image address] [image size]\n" From patchwork Wed Jul 18 15:16:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945754 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="oD7xh5Te"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W19Y5t2yz9s3R for ; Thu, 19 Jul 2018 01:22:41 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 827DEC21F06; Wed, 18 Jul 2018 15:21:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 37277C21E56; Wed, 18 Jul 2018 15:18:21 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id BB12FC21F04; Wed, 18 Jul 2018 15:17:15 +0000 (UTC) Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by lists.denx.de (Postfix) with ESMTPS id 007A9C21F07 for ; Wed, 18 Jul 2018 15:17:12 +0000 (UTC) Received: by mail-wr1-f50.google.com with SMTP id r16-v6so5063562wrt.11 for ; Wed, 18 Jul 2018 08:17:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=B/e09A23vV3NDVZbABT7ZkKn/Hlnd1hCWx5iJjFV1Yw=; b=oD7xh5TeJoPZdqFLo/szK2b1VXuS4QdqiYOD1BcF09RdhAn7Fh5PnP6fIOC5bSL6B/ A+KqLFU8AZoxQMRqvDFGRtab8iUryiehO5h1iSggyop17mjrln+EmjpgUp9d9mYa4kLN RHmMaDQDoGX9aEJdQLF141ApYc5HPjyzbb+ggov47OuUowqTmtZqefyjMV4jHtXAKmKa hV03OAPwD6JnuzaQb3fu2dXIsRzubn0tvM3u1EdRJpQ4bE5C6QQInemVKSm9yjM5q1mh Zz/x+MG4wGYe5AnHkOVeiv5wiGIw32raHAQf5esSBTGwHgRN6VKae8s2RL9orkX5MkYy oLWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=B/e09A23vV3NDVZbABT7ZkKn/Hlnd1hCWx5iJjFV1Yw=; b=nhbPvgan21wEAXg3f2hLWk6k+z/Is+2Ku8fl6hEvtfozGo5F5mLuBtetaOWPuVPOzU EhKQTc9pqwnE02kVxkoW9JH5XsGt98io5Bx96dC8qbCq65cYFxqYuf0rv8PV8pxaWMov CZPqvk+BMF9+xOz+/I3cluHSihfoT0Hqnem5f7K6FFitcI3uOuMYIJmFNUsptAQO0ynD HwC4vyd7r+gknBADRxdsgUBAiXCj2xsIAYttZNeGWp+7P+f5CNOPBwPzJ72UJ5OYTgmt aR/1BUhNu8cRI/6NHwCrxmIi1QqesZzKotIpnhnatuoeHkDIcpYuobZfDY+B/tHPzXPZ Oq8Q== X-Gm-Message-State: AOUpUlEwSatu7KgyHwDKFs7HwLrAfZxcGXLIGHwTitNa3SiCsHdgsivE PgYIpCPgJ3+f0uJtWN1AX6HYZluz X-Google-Smtp-Source: AAOMgpcP7kySgT05ui81M4oJVc8EIJS5/rio4CEWcZkCVY4+T2D+sB/2NIDvxf0Is0acS4E8wMJxaQ== X-Received: by 2002:adf:bb08:: with SMTP id r8-v6mr4611970wrg.244.1531927031517; Wed, 18 Jul 2018 08:17:11 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id y11-v6sm6403117wrr.84.2018.07.18.08.17.10 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:10 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:47 +0200 Message-Id: <89f61bf0af53c11472448ad83393e42c3098bf1c.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 09/15] cmd: fpga: Extract fpga info command to separate function X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Move fpga info to U_BOOT_CMD_MKENT subcommand. Also use strtol instead of simple_strtoul. The reason is that if -1 is passed (or fpga info without "fpga" variable) the list of all fpgas is shown. This functionality is in the fpga core but it couldn't be performed. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- cmd/fpga.c | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index ac12af2fa06d..039803870b02 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -13,10 +13,26 @@ #include #include +static long do_fpga_get_device(char *arg) +{ + long dev = FPGA_INVALID_DEVICE; + char *devstr = env_get("fpga"); + + if (devstr) + /* Should be strtol to handle -1 cases */ + dev = simple_strtol(devstr, NULL, 16); + + if (arg) + dev = simple_strtol(arg, NULL, 16); + + debug("%s: device = %ld\n", __func__, dev); + + return dev; +} + /* Local defines */ enum { FPGA_NONE = -1, - FPGA_INFO, FPGA_LOAD, FPGA_LOADB, FPGA_DUMP, @@ -35,9 +51,7 @@ static int fpga_get_op(char *opstr) { int op = FPGA_NONE; - if (!strcmp("info", opstr)) - op = FPGA_INFO; - else if (!strcmp("loadb", opstr)) + if (!strcmp("loadb", opstr)) op = FPGA_LOADB; else if (!strcmp("load", opstr)) op = FPGA_LOAD; @@ -194,10 +208,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) } switch (op) { - case FPGA_INFO: - rc = fpga_info(dev); - break; - case FPGA_LOAD: rc = fpga_load(dev, fpga_data, data_size, BIT_FULL); break; @@ -331,7 +341,16 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) return rc; } +static int do_fpga_info(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + long dev = do_fpga_get_device(argv[0]); + + return fpga_info(dev); +} + static cmd_tbl_t fpga_commands[] = { + U_BOOT_CMD_MKENT(info, 1, 1, do_fpga_info, "", ""), }; static int do_fpga_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, From patchwork Wed Jul 18 15:16:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945760 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="qGxDqEZJ"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W1FN4KRpz9s3R for ; Thu, 19 Jul 2018 01:26:00 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 4A23BC21E52; Wed, 18 Jul 2018 15:20:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 5D42DC21EE3; Wed, 18 Jul 2018 15:17:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 2C605C21E70; Wed, 18 Jul 2018 15:17:17 +0000 (UTC) Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by lists.denx.de (Postfix) with ESMTPS id A3EC3C21E57 for ; Wed, 18 Jul 2018 15:17:13 +0000 (UTC) Received: by mail-wm0-f45.google.com with SMTP id h20-v6so3261994wmb.4 for ; Wed, 18 Jul 2018 08:17:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=OqP8dGMPj6/gjOf6Xcij9/35pjKSBJ81lNxBoyk8Zrg=; b=qGxDqEZJuhxU8lgPcmd80QoyTW/HMIOSHP3Dv5KWIGtR2L5IqRZbX5bMGC7AimQXxl Sein/Y/L8PmeFsrHNPFUNE0KdbKaNHdVkAV5mQ1HY7ywD0K3kzIrOLxocvF3hTg7MkVB Y227hcOwDdAvZuYQr3hq5xw6/w+uI9OMssZJAAy3MkOfE6g+i31nb3fluX8fE1QJaPIY D9Yo0+vDe0wzUBq2qFlEZZgS5MJTseLjOJSwOJR+HsJY+8MCBwH/z1BLXyIPFjy4vznJ s3GkDUzXbYbs90c315OvkO2xiB21PTSuk/+JeSSgKC6HAO473hQqQBy973Ugdls8Zj65 A/ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=OqP8dGMPj6/gjOf6Xcij9/35pjKSBJ81lNxBoyk8Zrg=; b=D/lC9VUIwxoHO0VCBC5GdSj8a8HliD5XHLHyF+GWarROoROMtSMs6Q+2PjfA5TPIB9 zGjj8sZzVIfOWrVs5SozZ8qFvVl015yhjFw0S/vuJGPj9GIfe9wV6vZShG7craHdJZvG 4yHsmC3/cUojgSwS5E4RAkn0w6NQjazIg9ZSTJlNTPNVPn32faTpqucm6xmqxLGpj+cZ G6dEY3C0YGBZizjMkuNvQlJvlBC4hTBEmlzInA8uzoyZi/XYFrIoyi8wNlIh2QphZxON quc/yv1HoDnAhZ7u9Og+dEYSpPvIycK/tYAhokIOkCGQ2oFQfgMVIymh/4/REX4n90se 4Cyw== X-Gm-Message-State: AOUpUlEiBAuNgQmaV8bNdf9jzjpq3FlBAv4jPHgd7JyOeaN04veEDH0j KgBLGc3mk4p7UkCtj3ZhkLIMf4GH X-Google-Smtp-Source: AAOMgpcslcz1qpM+kElwmVbJxiRwlxzE2uGACZ94BLT1qqXkiQps0BI/dZDzOgDRGZSSZ1Ucnl9C/A== X-Received: by 2002:a1c:9e4d:: with SMTP id h74-v6mr1984695wme.70.1531927033124; Wed, 18 Jul 2018 08:17:13 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id 67-v6sm2595309wmg.34.2018.07.18.08.17.12 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:12 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:48 +0200 Message-Id: <2b74dd803758bd6ad11800acdefa328669a5f107.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 10/15] cmd: fpga: Fix dump and all direct fpga load commands X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Separate dump, load, loadb, loadp and loadbp commands to separate functions to make it clear how they are called and what parameters they need. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- Maybe they can be still groupped together with one switch/case but it can be done later. --- cmd/fpga.c | 166 +++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 122 insertions(+), 44 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index 039803870b02..9c715db80512 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -30,15 +30,42 @@ static long do_fpga_get_device(char *arg) return dev; } +static int do_fpga_check_params(long *dev, long *fpga_data, size_t *data_size, + cmd_tbl_t *cmdtp, int argc, char *const argv[]) +{ + size_t local_data_size; + long local_fpga_data; + + debug("%s %d, %d\n", __func__, argc, cmdtp->maxargs); + + if (argc != cmdtp->maxargs) { + debug("fpga: incorrect parameters passed\n"); + return CMD_RET_USAGE; + } + + *dev = do_fpga_get_device(argv[0]); + + local_fpga_data = simple_strtol(argv[1], NULL, 16); + if (!local_fpga_data) { + debug("fpga: zero fpga_data address\n"); + return CMD_RET_USAGE; + } + *fpga_data = local_fpga_data; + + local_data_size = simple_strtoul(argv[2], NULL, 16); + if (!local_data_size) { + debug("fpga: zero size\n"); + return CMD_RET_USAGE; + } + *data_size = local_data_size; + + return 0; +} + /* Local defines */ enum { FPGA_NONE = -1, - FPGA_LOAD, - FPGA_LOADB, - FPGA_DUMP, FPGA_LOADMK, - FPGA_LOADP, - FPGA_LOADBP, FPGA_LOADFS, FPGA_LOADS, }; @@ -51,28 +78,14 @@ static int fpga_get_op(char *opstr) { int op = FPGA_NONE; - if (!strcmp("loadb", opstr)) - op = FPGA_LOADB; - else if (!strcmp("load", opstr)) - op = FPGA_LOAD; -#if defined(CONFIG_CMD_FPGA_LOADP) - else if (!strcmp("loadp", opstr)) - op = FPGA_LOADP; -#endif -#if defined(CONFIG_CMD_FPGA_LOADBP) - else if (!strcmp("loadbp", opstr)) - op = FPGA_LOADBP; -#endif #if defined(CONFIG_CMD_FPGA_LOADFS) - else if (!strcmp("loadfs", opstr)) + if (!strcmp("loadfs", opstr)) op = FPGA_LOADFS; #endif #if defined(CONFIG_CMD_FPGA_LOADMK) else if (!strcmp("loadmk", opstr)) op = FPGA_LOADMK; #endif - else if (!strcmp("dump", opstr)) - op = FPGA_DUMP; #if defined(CONFIG_CMD_FPGA_LOAD_SECURE) else if (!strcmp("loads", opstr)) op = FPGA_LOADS; @@ -208,26 +221,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) } switch (op) { - case FPGA_LOAD: - rc = fpga_load(dev, fpga_data, data_size, BIT_FULL); - break; - -#if defined(CONFIG_CMD_FPGA_LOADP) - case FPGA_LOADP: - rc = fpga_load(dev, fpga_data, data_size, BIT_PARTIAL); - break; -#endif - - case FPGA_LOADB: - rc = fpga_loadbitstream(dev, fpga_data, data_size, BIT_FULL); - break; - -#if defined(CONFIG_CMD_FPGA_LOADBP) - case FPGA_LOADBP: - rc = fpga_loadbitstream(dev, fpga_data, data_size, BIT_PARTIAL); - break; -#endif - #if defined(CONFIG_CMD_FPGA_LOADFS) case FPGA_LOADFS: rc = fpga_fsload(dev, fpga_data, data_size, &fpga_fsinfo); @@ -330,10 +323,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) break; #endif - case FPGA_DUMP: - rc = fpga_dump(dev, fpga_data, data_size); - break; - default: printf("Unknown operation\n"); return CMD_RET_USAGE; @@ -349,8 +338,97 @@ static int do_fpga_info(cmd_tbl_t *cmdtp, int flag, int argc, return fpga_info(dev); } +static int do_fpga_dump(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + size_t data_size = 0; + long fpga_data, dev; + int ret; + + ret = do_fpga_check_params(&dev, &fpga_data, &data_size, + cmdtp, argc, argv); + if (ret) + return ret; + + return fpga_dump(dev, (void *)fpga_data, data_size); +} + +static int do_fpga_load(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + size_t data_size = 0; + long fpga_data, dev; + int ret; + + ret = do_fpga_check_params(&dev, &fpga_data, &data_size, + cmdtp, argc, argv); + if (ret) + return ret; + + return fpga_load(dev, (void *)fpga_data, data_size, BIT_FULL); +} + +static int do_fpga_loadb(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + size_t data_size = 0; + long fpga_data, dev; + int ret; + + ret = do_fpga_check_params(&dev, &fpga_data, &data_size, + cmdtp, argc, argv); + if (ret) + return ret; + + return fpga_loadbitstream(dev, (void *)fpga_data, data_size, BIT_FULL); +} + +#if defined(CONFIG_CMD_FPGA_LOADP) +static int do_fpga_loadp(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + size_t data_size = 0; + long fpga_data, dev; + int ret; + + ret = do_fpga_check_params(&dev, &fpga_data, &data_size, + cmdtp, argc, argv); + if (ret) + return ret; + + return fpga_load(dev, (void *)fpga_data, data_size, BIT_PARTIAL); +} +#endif + +#if defined(CONFIG_CMD_FPGA_LOADBP) +static int do_fpga_loadbp(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + size_t data_size = 0; + long fpga_data, dev; + int ret; + + ret = do_fpga_check_params(&dev, &fpga_data, &data_size, + cmdtp, argc, argv); + if (ret) + return ret; + + return fpga_loadbitstream(dev, (void *)fpga_data, data_size, + BIT_PARTIAL); +} +#endif + static cmd_tbl_t fpga_commands[] = { U_BOOT_CMD_MKENT(info, 1, 1, do_fpga_info, "", ""), + U_BOOT_CMD_MKENT(dump, 3, 1, do_fpga_dump, "", ""), + U_BOOT_CMD_MKENT(load, 3, 1, do_fpga_load, "", ""), + U_BOOT_CMD_MKENT(loadb, 3, 1, do_fpga_loadb, "", ""), +#if defined(CONFIG_CMD_FPGA_LOADP) + U_BOOT_CMD_MKENT(loadp, 3, 1, do_fpga_loadp, "", ""), +#endif +#if defined(CONFIG_CMD_FPGA_LOADBP) + U_BOOT_CMD_MKENT(loadbp, 3, 1, do_fpga_loadbp, "", ""), +#endif }; static int do_fpga_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, From patchwork Wed Jul 18 15:16:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945752 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="GGGXHFz0"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W18L3vjdz9s3R for ; Thu, 19 Jul 2018 01:21:38 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 2E373C21E1B; Wed, 18 Jul 2018 15:20:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 7B802C21DD7; Wed, 18 Jul 2018 15:17:53 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 301C9C21E0D; Wed, 18 Jul 2018 15:17:18 +0000 (UTC) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by lists.denx.de (Postfix) with ESMTPS id 3F857C21EE3 for ; Wed, 18 Jul 2018 15:17:15 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id s11-v6so5051374wra.13 for ; Wed, 18 Jul 2018 08:17:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=g8SPhPZB4amuYpCF20iIZ3UzxeLs45KAa5LaJYO7U+A=; b=GGGXHFz0PH2VgL2bj7NNAnxivpj6gh1EMjP4UNMMUMf3YFCYydMkFY2ZcP+Y+FjEIT R45kBRLlmvbdfLO4TzU4qdYWzOEI06KkyOtHIDyzyVlohIjT2AdZzAOKu0an4wHOs0jO fD9G2PMc+sYobNeIkAe487qLerr7+HbjrWTHkzLB48ea323mL9Wn35prRvko/ePt2Yy/ Ur92T7WNM9SvXxUMSlDfkp67y9RutQ6X+OL/PkQBd3Ki9gEzYb8zCEDEiwmcXAFsodSn L/3XJ2C/uht2apEkHVYs48nI+tYn1boPLOkIa+72H7MAhZ3Cc0wU97s6VrCMNvmlpwsQ un+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=g8SPhPZB4amuYpCF20iIZ3UzxeLs45KAa5LaJYO7U+A=; b=iAArk4OguPRkLJVQjfYDNsk4JlFVHx7LMTrAkGFa3ZHZYGBABr9B2xoGz68a1qsAqe fU7DrI0a74X41heYjs46osBa2jMYustS+HBUBaWK6w7TdZpzHHxtzI+zqIzhya2eyYgn B5h4kqvNngqjsnu3wALjFmvVppq8rIixdikbaj4eYyOvgVzZyc26ub5r10pdE7Jy5vNe BSSW0w3iM77bNhr/0R3OkjYPxy1+U4qS2Fl7fqWcq9PbfsqOLX+JbcCqajpSOPxm2D9g nORMdXJEMsmck1uyy0flOkX9H2XtKW6Ond6qDnnDkr7TTUJRGPBl3/4k1eI5bJ4BKzup Wvcg== X-Gm-Message-State: AOUpUlEKm/R9xjBvvlvi1R77yDwE0lL5UoIzszv7AGVLsWtFfFkTZxA5 1UZ2TcybgYL7wGqQHL/Dezr5V0KA X-Google-Smtp-Source: AAOMgpc1MNtM1xva9K146X3aZVDRHZD7qNMT5sOXtvwoojw2BOHKggcBaijIwSN33eMjr/ITedeFaA== X-Received: by 2002:adf:a64d:: with SMTP id k71-v6mr4720460wrc.78.1531927034761; Wed, 18 Jul 2018 08:17:14 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id x184-v6sm2678784wmg.24.2018.07.18.08.17.13 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:14 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:49 +0200 Message-Id: X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 11/15] cmd: fpga: Fix loadfs command X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" loadfs Revert "loafs" This reverts commit 4ec8e7247396458dca5d0185b5df308df7b0ef2b. Add loadfs This reverts commit d6b0e830b8c7a31d4cc87cfd44e70c41417114bb. Signed-off-by: Michal Simek fslo` --- cmd/fpga.c | 58 ++++++++++++++++++++++++++++------------------------------ 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index 9c715db80512..826f63371a66 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -66,7 +66,6 @@ static int do_fpga_check_params(long *dev, long *fpga_data, size_t *data_size, enum { FPGA_NONE = -1, FPGA_LOADMK, - FPGA_LOADFS, FPGA_LOADS, }; @@ -78,12 +77,8 @@ static int fpga_get_op(char *opstr) { int op = FPGA_NONE; -#if defined(CONFIG_CMD_FPGA_LOADFS) - if (!strcmp("loadfs", opstr)) - op = FPGA_LOADFS; -#endif #if defined(CONFIG_CMD_FPGA_LOADMK) - else if (!strcmp("loadmk", opstr)) + if (!strcmp("loadmk", opstr)) op = FPGA_LOADMK; #endif #if defined(CONFIG_CMD_FPGA_LOAD_SECURE) @@ -114,10 +109,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) const char *fit_uname = NULL; ulong fit_addr; #endif -#if defined(CONFIG_CMD_FPGA_LOADFS) - fpga_fs_info fpga_fsinfo; - fpga_fsinfo.fstype = FS_TYPE_ANY; -#endif #if defined(CONFIG_CMD_FPGA_LOAD_SECURE) struct fpga_secure_info fpga_sec_info; @@ -140,19 +131,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) case FPGA_NONE: printf("Unknown fpga operation \"%s\"\n", argv[1]); return CMD_RET_USAGE; -#if defined(CONFIG_CMD_FPGA_LOADFS) - case FPGA_LOADFS: - if (argc < 9) - return CMD_RET_USAGE; - fpga_fsinfo.blocksize = (unsigned int) - simple_strtoul(argv[5], NULL, 16); - fpga_fsinfo.interface = argv[6]; - fpga_fsinfo.dev_part = argv[7]; - fpga_fsinfo.filename = argv[8]; - - argc = 5; - break; -#endif #if defined(CONFIG_CMD_FPGA_LOAD_SECURE) case FPGA_LOADS: if (argc < 7) @@ -221,18 +199,11 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) } switch (op) { -#if defined(CONFIG_CMD_FPGA_LOADFS) - case FPGA_LOADFS: - rc = fpga_fsload(dev, fpga_data, data_size, &fpga_fsinfo); - break; -#endif - #if defined(CONFIG_CMD_FPGA_LOAD_SECURE) case FPGA_LOADS: rc = fpga_loads(dev, fpga_data, data_size, &fpga_sec_info); break; #endif - #if defined(CONFIG_CMD_FPGA_LOADMK) case FPGA_LOADMK: switch (genimg_get_format(fpga_data)) { @@ -330,6 +301,30 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) return rc; } +#if defined(CONFIG_CMD_FPGA_LOADFS) +static int do_fpga_loadfs(cmd_tbl_t *cmdtp, int flag, int argc, + char *const argv[]) +{ + size_t data_size = 0; + long fpga_data, dev; + int ret; + fpga_fs_info fpga_fsinfo; + + ret = do_fpga_check_params(&dev, &fpga_data, &data_size, + cmdtp, argc, argv); + if (ret) + return ret; + + fpga_fsinfo.fstype = FS_TYPE_ANY; + fpga_fsinfo.blocksize = (unsigned int)simple_strtoul(argv[3], NULL, 16); + fpga_fsinfo.interface = argv[4]; + fpga_fsinfo.dev_part = argv[5]; + fpga_fsinfo.filename = argv[6]; + + return fpga_fsload(dev, (void *)fpga_data, data_size, &fpga_fsinfo); +} +#endif + static int do_fpga_info(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { @@ -429,6 +424,9 @@ static cmd_tbl_t fpga_commands[] = { #if defined(CONFIG_CMD_FPGA_LOADBP) U_BOOT_CMD_MKENT(loadbp, 3, 1, do_fpga_loadbp, "", ""), #endif +#if defined(CONFIG_CMD_FPGA_LOADFS) + U_BOOT_CMD_MKENT(loadfs, 7, 1, do_fpga_loadfs, "", ""), +#endif }; static int do_fpga_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, From patchwork Wed Jul 18 15:16:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945756 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="qw+/uZkl"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W1BJ2ysSz9s3R for ; Thu, 19 Jul 2018 01:23:20 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 1DB2FC21EFD; Wed, 18 Jul 2018 15:21:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 48B54C21F42; Wed, 18 Jul 2018 15:18:07 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id CFA59C21F3C; Wed, 18 Jul 2018 15:17:21 +0000 (UTC) Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) by lists.denx.de (Postfix) with ESMTPS id 203D6C21E3A for ; Wed, 18 Jul 2018 15:17:17 +0000 (UTC) Received: by mail-wr1-f46.google.com with SMTP id e7-v6so5072636wrs.9 for ; Wed, 18 Jul 2018 08:17:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=ef4gXcixpNVY5UO06izMWZIjE4ESzvAvt+oAnV+YJ9s=; b=qw+/uZklr1QmA6uBZknMumIQiRR0Y/VQguEJrX1rX2u0ansudG1lvlHzfc5FUO0n+o zb6eNmqfMiiCxdfob2u/G81QYComl55nsJ55yFktfhW9OrPBBiR14w57Oj00dWJTh1qA kBsNCo+El0KgRHX6/8DhSgE90oEIu1s0pIOC+BM3qL5dz3628+VkzsON2IGMaXbkMhy+ ZWxMv7IT/NlaTysNGLciZ1BeLtEQvBrsNDmKC+wLRtO+qLSD9iVnZleT8OvMyU5vCvsP jqBmdubUmKHScHCJBekPEwjpdlw3gzlmdWlMuWkkHiU93PzarWejYKlteAdoFeMeLYH8 SxSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=ef4gXcixpNVY5UO06izMWZIjE4ESzvAvt+oAnV+YJ9s=; b=jG7RjagWMFZJyO179JC3J0C1ZHx/MzNN7LtsCA9j2iOKJj4fE/ldl0DqljYJuTfg5D Qaz6531s6usmK3YoNqDFkwXHSLa4MujA0Z3e9OQYA0YC9n2xTJnxeLgDTKwWk/cKuvt6 8myovH3BxDIU1EOrUM96VKl//yNzyxTyPlqapUkKq7p08ThHF1/qQcNs20dKkqZaT9I0 otBPO20+Ef+qvIdKcDS6Lv4bmJkbWS441YTlBe15S2B6SXNL0+z4XwcNIU2D5cZph6yN yopVhWePuwP664RwQqMz3val7yzIhqIPhZ+TJ6iLM7hFXsLS/Un1LA2a/qezW5vV7PdX 1/jg== X-Gm-Message-State: AOUpUlGtpQdb274EKKHjkWCZBowVue7mevrHcKzrOIx910UI1pUDi3ex zhZbdXKpJ54XR1O2dsuvkA+DbfF+ X-Google-Smtp-Source: AAOMgpeIe50zfL8IDMttRICYDVVfJK6/vR1uiplUdGESgqM4oBmSTBpMGYICTDaDI8YqfIrcpZbA6w== X-Received: by 2002:a5d:428a:: with SMTP id k10-v6mr4764055wrq.225.1531927036533; Wed, 18 Jul 2018 08:17:16 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id v10-v6sm6779828wrm.18.2018.07.18.08.17.15 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:16 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:50 +0200 Message-Id: <1eb7dd9e27117c11280cbc40dec72b3c572dab86.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 12/15] cmd: fpga: Fix loadmk command X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Michal Simek --- cmd/fpga.c | 240 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 125 insertions(+), 115 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index 826f63371a66..8237bbc219b4 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -65,7 +65,6 @@ static int do_fpga_check_params(long *dev, long *fpga_data, size_t *data_size, /* Local defines */ enum { FPGA_NONE = -1, - FPGA_LOADMK, FPGA_LOADS, }; @@ -77,12 +76,8 @@ static int fpga_get_op(char *opstr) { int op = FPGA_NONE; -#if defined(CONFIG_CMD_FPGA_LOADMK) - if (!strcmp("loadmk", opstr)) - op = FPGA_LOADMK; -#endif #if defined(CONFIG_CMD_FPGA_LOAD_SECURE) - else if (!strcmp("loads", opstr)) + if (!strcmp("loads", opstr)) op = FPGA_LOADS; #endif @@ -102,24 +97,13 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) int op, dev = FPGA_INVALID_DEVICE; size_t data_size = 0; void *fpga_data = NULL; - char *devstr = env_get("fpga"); - char *datastr = env_get("fpgadata"); int rc = FPGA_FAIL; -#if defined(CONFIG_FIT) - const char *fit_uname = NULL; - ulong fit_addr; -#endif #if defined(CONFIG_CMD_FPGA_LOAD_SECURE) struct fpga_secure_info fpga_sec_info; memset(&fpga_sec_info, 0, sizeof(fpga_sec_info)); #endif - if (devstr) - dev = (int) simple_strtoul(devstr, NULL, 16); - if (datastr) - fpga_data = (void *)simple_strtoul(datastr, NULL, 16); - if (argc > 9 || argc < 2) { debug("%s: Too many or too few args (%d)\n", __func__, argc); return CMD_RET_USAGE; @@ -169,15 +153,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) return CMD_RET_USAGE; } case 4: /* fpga */ -#if defined(CONFIG_FIT) - if (fit_parse_subimage(argv[3], (ulong)fpga_data, - &fit_addr, &fit_uname)) { - fpga_data = (void *)fit_addr; - debug("* fpga: subimage '%s' from FIT image ", - fit_uname); - debug("at 0x%08lx\n", fit_addr); - } else -#endif { fpga_data = (void *)simple_strtoul(argv[3], NULL, 16); debug("* fpga: cmdline image address = 0x%08lx\n", @@ -204,95 +179,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) rc = fpga_loads(dev, fpga_data, data_size, &fpga_sec_info); break; #endif -#if defined(CONFIG_CMD_FPGA_LOADMK) - case FPGA_LOADMK: - switch (genimg_get_format(fpga_data)) { -#if defined(CONFIG_IMAGE_FORMAT_LEGACY) - case IMAGE_FORMAT_LEGACY: - { - image_header_t *hdr = - (image_header_t *)fpga_data; - ulong data; - uint8_t comp; - - comp = image_get_comp(hdr); - if (comp == IH_COMP_GZIP) { -#if defined(CONFIG_GZIP) - ulong image_buf = image_get_data(hdr); - data = image_get_load(hdr); - ulong image_size = ~0UL; - - if (gunzip((void *)data, ~0UL, - (void *)image_buf, - &image_size) != 0) { - puts("GUNZIP: error\n"); - return 1; - } - data_size = image_size; -#else - puts("Gunzip image is not supported\n"); - return 1; -#endif - } else { - data = (ulong)image_get_data(hdr); - data_size = image_get_data_size(hdr); - } - rc = fpga_load(dev, (void *)data, data_size, - BIT_FULL); - } - break; -#endif -#if defined(CONFIG_FIT) - case IMAGE_FORMAT_FIT: - { - const void *fit_hdr = (const void *)fpga_data; - int noffset; - const void *fit_data; - - if (fit_uname == NULL) { - puts("No FIT subimage unit name\n"); - return 1; - } - - if (!fit_check_format(fit_hdr)) { - puts("Bad FIT image format\n"); - return 1; - } - - /* get fpga component image node offset */ - noffset = fit_image_get_node(fit_hdr, - fit_uname); - if (noffset < 0) { - printf("Can't find '%s' FIT subimage\n", - fit_uname); - return 1; - } - - /* verify integrity */ - if (!fit_image_verify(fit_hdr, noffset)) { - puts ("Bad Data Hash\n"); - return 1; - } - - /* get fpga subimage data address and length */ - if (fit_image_get_data(fit_hdr, noffset, - &fit_data, &data_size)) { - puts("Fpga subimage data not found\n"); - return 1; - } - - rc = fpga_load(dev, fit_data, data_size, - BIT_FULL); - } - break; -#endif - default: - puts("** Unknown image type\n"); - rc = FPGA_FAIL; - break; - } - break; -#endif default: printf("Unknown operation\n"); @@ -413,6 +299,127 @@ static int do_fpga_loadbp(cmd_tbl_t *cmdtp, int flag, int argc, } #endif +#if defined(CONFIG_CMD_FPGA_LOADMK) +static int do_fpga_loadmk(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + size_t data_size = 0; + void *fpga_data = NULL; +#if defined(CONFIG_FIT) + const char *fit_uname = NULL; + ulong fit_addr; +#endif + ulong dev = do_fpga_get_device(argv[0]); + char *datastr = env_get("fpgadata"); + + if (datastr) + fpga_data = (void *)simple_strtoul(datastr, NULL, 16); + + if (argc == 2) { +#if defined(CONFIG_FIT) + if (fit_parse_subimage(argv[1], (ulong)fpga_data, + &fit_addr, &fit_uname)) { + fpga_data = (void *)fit_addr; + debug("* fpga: subimage '%s' from FIT image ", + fit_uname); + debug("at 0x%08lx\n", fit_addr); + } else +#endif + { + fpga_data = (void *)simple_strtoul(argv[1], NULL, 16); + debug("* fpga: cmdline image address = 0x%08lx\n", + (ulong)fpga_data); + } + debug("%s: fpga_data = 0x%lx\n", __func__, (ulong)fpga_data); + if (!fpga_data) { + puts("Zero fpga_data address\n"); + return CMD_RET_USAGE; + } + } + + switch (genimg_get_format(fpga_data)) { +#if defined(CONFIG_IMAGE_FORMAT_LEGACY) + case IMAGE_FORMAT_LEGACY: + { + image_header_t *hdr = (image_header_t *)fpga_data; + ulong data; + u8 comp; + + comp = image_get_comp(hdr); + if (comp == IH_COMP_GZIP) { +#if defined(CONFIG_GZIP) + ulong image_buf = image_get_data(hdr); + ulong image_size = ~0UL; + + data = image_get_load(hdr); + + if (gunzip((void *)data, ~0UL, + (void *)image_buf, + &image_size) != 0) { + puts("GUNZIP: error\n"); + return 1; + } + data_size = image_size; +#else + puts("Gunzip image is not supported\n"); + return 1; +#endif + } else { + data = (ulong)image_get_data(hdr); + data_size = image_get_data_size(hdr); + } + return fpga_load(dev, (void *)data, data_size, + BIT_FULL); + } +#endif +#if defined(CONFIG_FIT) + case IMAGE_FORMAT_FIT: + { + const void *fit_hdr = (const void *)fpga_data; + int noffset; + const void *fit_data; + + if (!fit_uname) { + puts("No FIT subimage unit name\n"); + return 1; + } + + if (!fit_check_format(fit_hdr)) { + puts("Bad FIT image format\n"); + return 1; + } + + /* get fpga component image node offset */ + noffset = fit_image_get_node(fit_hdr, fit_uname); + if (noffset < 0) { + printf("Can't find '%s' FIT subimage\n", + fit_uname); + return 1; + } + + /* verify integrity */ + if (!fit_image_verify(fit_hdr, noffset)) { + puts("Bad Data Hash\n"); + return 1; + } + + /* get fpga subimage data address and length */ + if (fit_image_get_data(fit_hdr, noffset, &fit_data, + &data_size)) { + puts("Fpga subimage data not found\n"); + return 1; + } + + return fpga_load(dev, fit_data, data_size, BIT_FULL); + } +#endif + default: + puts("** Unknown image type\n"); + return FPGA_FAIL; + } +} +#endif + static cmd_tbl_t fpga_commands[] = { U_BOOT_CMD_MKENT(info, 1, 1, do_fpga_info, "", ""), U_BOOT_CMD_MKENT(dump, 3, 1, do_fpga_dump, "", ""), @@ -427,6 +434,9 @@ static cmd_tbl_t fpga_commands[] = { #if defined(CONFIG_CMD_FPGA_LOADFS) U_BOOT_CMD_MKENT(loadfs, 7, 1, do_fpga_loadfs, "", ""), #endif +#if defined(CONFIG_CMD_FPGA_LOADMK) + U_BOOT_CMD_MKENT(loadmk, 2, 1, do_fpga_loadmk, "", ""), +#endif }; static int do_fpga_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, From patchwork Wed Jul 18 15:16:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945763 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="NTBajpTN"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W1Gb2pMNz9s4s for ; Thu, 19 Jul 2018 01:27:03 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 040E9C21DA2; Wed, 18 Jul 2018 15:20:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 46321C21E89; Wed, 18 Jul 2018 15:18:04 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id B47A7C21F3D; Wed, 18 Jul 2018 15:17:22 +0000 (UTC) Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) by lists.denx.de (Postfix) with ESMTPS id C6EACC21EB1 for ; Wed, 18 Jul 2018 15:17:18 +0000 (UTC) Received: by mail-wr1-f46.google.com with SMTP id v14-v6so5078598wro.5 for ; Wed, 18 Jul 2018 08:17:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=lJynZeo9J9HrjX3TK/egS17JS5SzXTLC4+n02KLSrHE=; b=NTBajpTNAj5yOSdwdSU0/nKIQhSnBEgY4EF3tscKWw7rbRbx7MGA6eSiXFWRfTTdIs /whyBs0Wo4Nm0QkYgKctKpg6+5/u+V5HjJnmIsDio0OlOYAyZNCtkZw8W6727wCCLwFN g/jm6GdwLqwG22rUbNyPpyQBLxT+0qw3paxSmUORcD8qxSUB6mpn9k+7EkDQU/epxMi6 NLE/lYejEP1cpGfMW3IvC25/atLSoBxUU1qEW5D1Efle2WQ9/QwfkfaM7RDjQnFBO+1/ 4yD8JRkCFCqxNF3ASwXj0i8eKJc3lCHraO/xv+DMFZ1l9jJHPsS0xcHTa7hz473O5usb tZag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=lJynZeo9J9HrjX3TK/egS17JS5SzXTLC4+n02KLSrHE=; b=t4BpksSScLnD3A3YMAuhx7voJcp4ZRR6+NUB1Rbx+aaHBSqpxEPamwAwVj9oN95jtN 9FkRDZKBJaQHbm9WBTazucWs89Rsp1I7B0ZyAwUs73BOkwBtN6QeIU8Yw6m5d46fmBuz lQKArUOVrEg+x1F401yfqX+Bpb+Pj5z53bD3iWXAn9aaHhHN70w4rsvbDHhZriJMwwTI ahqkjuaBzdB74zV5OyDxacsYJy8ynKkiN/80L+H9fkN4o5ol22+BrmH0IKxmhOBMC/6D eCrezXzFjxUixXZ/63DnBY1PMLJdF9L7S0tc+jY5DrWJVmA+3hjjvQrP5bbqrvG1zsi+ Gdjw== X-Gm-Message-State: AOUpUlEjOcRcRoKC5fo/msB5ZrOjYiSYjdugNW+I9B8E8ijMl65lFRzG ZX+tw/wKywBaGaPKp3RczpxEx+ZS X-Google-Smtp-Source: AAOMgpf4av8Vo/XkeE+/ci/ZXDeV70EUX5g4CuBKI0OYYgJetErZoCoK6phqmh7FSOj6mswfyIRh1w== X-Received: by 2002:adf:ec04:: with SMTP id x4-v6mr4490911wrn.245.1531927038347; Wed, 18 Jul 2018 08:17:18 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id c5-v6sm5109684wrh.36.2018.07.18.08.17.17 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:17 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:51 +0200 Message-Id: <7abb58e8faf382285c4c7b017872f6affb49150c.1531926958.git.michal.simek@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 13/15] cmd: fpga: Use CMD_RET_FAILURE instead of simple 1 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Use standard return command failure macro. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- cmd/fpga.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index 8237bbc219b4..5fabfca39a2b 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -357,12 +357,12 @@ static int do_fpga_loadmk(cmd_tbl_t *cmdtp, int flag, int argc, (void *)image_buf, &image_size) != 0) { puts("GUNZIP: error\n"); - return 1; + return CMD_RET_FAILURE; } data_size = image_size; #else puts("Gunzip image is not supported\n"); - return 1; + return CMD_RET_FAILURE; #endif } else { data = (ulong)image_get_data(hdr); @@ -381,12 +381,12 @@ static int do_fpga_loadmk(cmd_tbl_t *cmdtp, int flag, int argc, if (!fit_uname) { puts("No FIT subimage unit name\n"); - return 1; + return CMD_RET_FAILURE; } if (!fit_check_format(fit_hdr)) { puts("Bad FIT image format\n"); - return 1; + return CMD_RET_FAILURE; } /* get fpga component image node offset */ @@ -394,20 +394,20 @@ static int do_fpga_loadmk(cmd_tbl_t *cmdtp, int flag, int argc, if (noffset < 0) { printf("Can't find '%s' FIT subimage\n", fit_uname); - return 1; + return CMD_RET_FAILURE; } /* verify integrity */ if (!fit_image_verify(fit_hdr, noffset)) { puts("Bad Data Hash\n"); - return 1; + return CMD_RET_FAILURE; } /* get fpga subimage data address and length */ if (fit_image_get_data(fit_hdr, noffset, &fit_data, &data_size)) { puts("Fpga subimage data not found\n"); - return 1; + return CMD_RET_FAILURE; } return fpga_load(dev, fit_data, data_size, BIT_FULL); @@ -415,7 +415,7 @@ static int do_fpga_loadmk(cmd_tbl_t *cmdtp, int flag, int argc, #endif default: puts("** Unknown image type\n"); - return FPGA_FAIL; + return CMD_RET_FAILURE; } } #endif From patchwork Wed Jul 18 15:16:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945761 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="MV+HvJIm"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W1Fs2M46z9s3R for ; Thu, 19 Jul 2018 01:26:25 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 140B2C21F3F; Wed, 18 Jul 2018 15:21:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 67FB3C21F3B; Wed, 18 Jul 2018 15:18:32 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 419D4C21E53; Wed, 18 Jul 2018 15:17:24 +0000 (UTC) Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by lists.denx.de (Postfix) with ESMTPS id 9DA2EC21F0B for ; Wed, 18 Jul 2018 15:17:20 +0000 (UTC) Received: by mail-wr1-f67.google.com with SMTP id h10-v6so5064114wre.6 for ; Wed, 18 Jul 2018 08:17:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=ul+tps7D2JMSjatFHEogLsIft4/LtLLIi7Hqy2zoPrI=; b=MV+HvJImKWvCwdRqu6LukYRWrVc4qfwyB7Kl5RjebnZa6C6SfwfFnhwfb7IDfSkpL0 0oGF6ZGxL5HG2kPE2HmbbxdaJ+VjXnPgZXO6xT5KVOaAANL4NJnLzfL8jaEgtaN9vWYB HjM7Eicef5eeIwoHYl2STMY7M/0G1ui0QT/BxkIvDR1E0M4M3gwktw8D0C1yB5umwlFD NNTkBiGQMv5kqg4zV29jjXA/4pYqe7REnAvKhlUrHdwSjlnxAdKmaCKI1CsNo+/a20FX xSgYi5zrQ3voszZ2KsJ0H1pUJSER5etfGgbD/KYFIyfNSrDOUzNf+TknTWiQ8Ichlz34 u45g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=ul+tps7D2JMSjatFHEogLsIft4/LtLLIi7Hqy2zoPrI=; b=Pef66FsvHVME/MoGkJAKdWeBPPHMcgjDjsDW2E7OkwZIezfdNWJS5P/rBTSd+ZB88S b9Pofcsdk4KxNxbNI2ptql991LKkRNd9fBP36LdG6CV1z0KDYKvKpMO6k+ug8g8kiXZO vtDO5WUmTJVm+vK7NgDBJK/Aj5ljZnR84pUpQgYtxnGt5AsqwgHwbRbnfmjy2EgVEUO9 uomraVg3TLqt3CitipsxYV7l4nSf1ItO7Y3GGHjp4HZqL3tncsNAmXbPteJfaXydvT/b VegqO3bVT7F4ot6OfyahP9CuzKQvGYmEYqzRWCeCymMYtrchOL9zNeMpwojjbEUzCP19 2D4g== X-Gm-Message-State: AOUpUlHSFF6NVerZuE7g7GSaFTFLXUvoCphBWh/ZY8wo9/y0CDw2U76L 1Hh+vkdqR9Ra07aSrWxI00ndlP4h X-Google-Smtp-Source: AAOMgpdSfF9iN7VPjQ8pp+cpDr3Boeg+bgms0pW0OwIL7sd5FoaRE2WKi0ncqwwrV+X4uxWqwDuE+w== X-Received: by 2002:adf:b2a7:: with SMTP id g36-v6mr4678785wrd.218.1531927040129; Wed, 18 Jul 2018 08:17:20 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id w21-v6sm2563096wmc.45.2018.07.18.08.17.19 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:19 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:52 +0200 Message-Id: X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Subject: [U-Boot] [RFC PATCH 14/15] cmd: fpga: Fix loads command X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" loads fpga loads loads use debug instead of puts Signed-off-by: Michal Simek --- cmd/fpga.c | 148 +++++++++++++++---------------------------------------------- 1 file changed, 36 insertions(+), 112 deletions(-) diff --git a/cmd/fpga.c b/cmd/fpga.c index 5fabfca39a2b..b82f1175b01f 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -62,130 +62,57 @@ static int do_fpga_check_params(long *dev, long *fpga_data, size_t *data_size, return 0; } -/* Local defines */ -enum { - FPGA_NONE = -1, - FPGA_LOADS, -}; - -/* - * Map op to supported operations. We don't use a table since we - * would just have to relocate it from flash anyway. - */ -static int fpga_get_op(char *opstr) -{ - int op = FPGA_NONE; - #if defined(CONFIG_CMD_FPGA_LOAD_SECURE) - if (!strcmp("loads", opstr)) - op = FPGA_LOADS; -#endif - - return op; -} - -/* ------------------------------------------------------------------------- */ -/* command form: - * fpga - * where op is 'load', 'dump', or 'info' - * If there is no device number field, the fpga environment variable is used. - * If there is no data addr field, the fpgadata environment variable is used. - * The info command requires no data address field. - */ -int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) +int do_fpga_loads(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) { - int op, dev = FPGA_INVALID_DEVICE; size_t data_size = 0; - void *fpga_data = NULL; - int rc = FPGA_FAIL; -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) + long fpga_data, dev; + int ret; struct fpga_secure_info fpga_sec_info; memset(&fpga_sec_info, 0, sizeof(fpga_sec_info)); -#endif - if (argc > 9 || argc < 2) { - debug("%s: Too many or too few args (%d)\n", __func__, argc); + if (argc < 5) { + debug("fpga: incorrect parameters passed\n"); return CMD_RET_USAGE; } - op = fpga_get_op(argv[1]); - - switch (op) { - case FPGA_NONE: - printf("Unknown fpga operation \"%s\"\n", argv[1]); + if (argc == 6) + fpga_sec_info.userkey_addr = (u8 *)(uintptr_t) + simple_strtoull(argv[5], + NULL, 16); + else + /* + * If 6th parameter is not passed then do_fpga_check_params + * will get 5 instead of expected 6 which means that function + * return CMD_RET_USAGE. Increase number of params +1 to pass + * this. + */ + argc++; + + fpga_sec_info.encflag = (u8)simple_strtoul(argv[4], NULL, 16); + fpga_sec_info.authflag = (u8)simple_strtoul(argv[3], NULL, 16); + + if (fpga_sec_info.authflag >= FPGA_NO_ENC_OR_NO_AUTH && + fpga_sec_info.encflag >= FPGA_NO_ENC_OR_NO_AUTH) { + debug("fpga: Use for NonSecure bitstream\n"); return CMD_RET_USAGE; -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) - case FPGA_LOADS: - if (argc < 7) - return CMD_RET_USAGE; - if (argc == 8) - fpga_sec_info.userkey_addr = (u8 *)(uintptr_t) - simple_strtoull(argv[7], - NULL, 16); - fpga_sec_info.encflag = (u8)simple_strtoul(argv[6], NULL, 16); - fpga_sec_info.authflag = (u8)simple_strtoul(argv[5], NULL, 16); - - if (fpga_sec_info.authflag >= FPGA_NO_ENC_OR_NO_AUTH && - fpga_sec_info.encflag >= FPGA_NO_ENC_OR_NO_AUTH) { - puts("ERR: Use for NonSecure bitstream\n"); - return CMD_RET_USAGE; - } - - if (fpga_sec_info.encflag == FPGA_ENC_USR_KEY && - !fpga_sec_info.userkey_addr) { - puts("ERR: User key not provided\n"); - return CMD_RET_USAGE; - } - - argc = 5; - break; -#endif - default: - break; } - switch (argc) { - case 5: /* fpga */ - data_size = simple_strtoul(argv[4], NULL, 16); - if (!data_size) { - puts("Zero data_size\n"); - return CMD_RET_USAGE; - } - case 4: /* fpga */ - { - fpga_data = (void *)simple_strtoul(argv[3], NULL, 16); - debug("* fpga: cmdline image address = 0x%08lx\n", - (ulong)fpga_data); - } - debug("%s: fpga_data = 0x%lx\n", __func__, (ulong)fpga_data); - if (!fpga_data) { - puts("Zero fpga_data address\n"); - return CMD_RET_USAGE; - } - case 3: /* fpga */ - dev = (int)simple_strtoul(argv[2], NULL, 16); - debug("%s: device = %d\n", __func__, dev); - } - - if (dev == FPGA_INVALID_DEVICE) { - puts("FPGA device not specified\n"); + if (fpga_sec_info.encflag == FPGA_ENC_USR_KEY && + !fpga_sec_info.userkey_addr) { + debug("fpga: User key not provided\n"); return CMD_RET_USAGE; } - switch (op) { -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) - case FPGA_LOADS: - rc = fpga_loads(dev, fpga_data, data_size, &fpga_sec_info); - break; -#endif + ret = do_fpga_check_params(&dev, &fpga_data, &data_size, + cmdtp, argc, argv); + if (ret) + return ret; - default: - printf("Unknown operation\n"); - return CMD_RET_USAGE; - } - return rc; + return fpga_loads(dev, (void *)fpga_data, data_size, &fpga_sec_info); } +#endif #if defined(CONFIG_CMD_FPGA_LOADFS) static int do_fpga_loadfs(cmd_tbl_t *cmdtp, int flag, int argc, @@ -437,6 +364,9 @@ static cmd_tbl_t fpga_commands[] = { #if defined(CONFIG_CMD_FPGA_LOADMK) U_BOOT_CMD_MKENT(loadmk, 2, 1, do_fpga_loadmk, "", ""), #endif +#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) + U_BOOT_CMD_MKENT(loads, 6, 1, do_fpga_loads, "", ""), +#endif }; static int do_fpga_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, @@ -450,12 +380,6 @@ static int do_fpga_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, fpga_cmd = find_cmd_tbl(argv[1], fpga_commands, ARRAY_SIZE(fpga_commands)); - - /* This should be removed when all functions are converted */ - if (!fpga_cmd) - return do_fpga(cmdtp, flag, argc, argv); - - /* FIXME This can't be reached till all functions are converted */ if (!fpga_cmd) { debug("fpga: non existing command\n"); return CMD_RET_USAGE; From patchwork Wed Jul 18 15:16:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 945755 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="o7uA0VJd"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41W1B93YWjz9s3R for ; Thu, 19 Jul 2018 01:23:13 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 2E2EFC21EFC; Wed, 18 Jul 2018 15:22:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id C6AB7C21F32; Wed, 18 Jul 2018 15:18:40 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id ADED5C21F3C; Wed, 18 Jul 2018 15:17:26 +0000 (UTC) Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by lists.denx.de (Postfix) with ESMTPS id 559CDC21EEB for ; Wed, 18 Jul 2018 15:17:22 +0000 (UTC) Received: by mail-wr1-f48.google.com with SMTP id e7-v6so5072966wrs.9 for ; Wed, 18 Jul 2018 08:17:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=aaMBVPDLukBJ5kx6UdvoGPbv53GGevhM5P9Q00xZXQE=; b=o7uA0VJdv0w/x7Qtn6/8LXvSkYNVz0l7ruRghDpPiWO9miXc1/Ag4TaIatSniVqbUT L8DOm50KrmdqO3JgPUyYgRMErPF1x35fL+KoSxpEFv5PInffZGwp+FJMtXT/GEB+NYRA SDldJxMD9lTGKBeuxopzlKiE7qcBe1zggkk/USA7KjIedrx4fpvDDphG2YLzugUmzTES Vk6o8VvuQmznVn7131/ErQSYyDyoqtWvgxjvzlxyyZoBD3PLLytIvAF1q05BCy+1KnzJ tu3777VvRsSrEjS/gGz0D898oIrJKLByL6adEqZ2mu5p2nP70mubCIH6GdnLprSWjWQs lNXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=aaMBVPDLukBJ5kx6UdvoGPbv53GGevhM5P9Q00xZXQE=; b=WilncVjYTcipL1j5kyk/WlAnYLKn8rYuDLRuKSBPaUA7x2J8ZusOdPQ0HeZVwsQFoz WE+EqYYt9k5AgEPNQq3DHXlVZBjy5/H+xI4mpR4rWD71vr7n0hnFBHkKWWyD4460NhfA XoI1weAMoQEaYHKmSkqm877sp+NXwSsFv0latiFJdRlzaIkfKOftUiKM//rtahO1fStg 8e+yT5QK0BG/kq95EfRE62e2ATZWBPMu7CCM/oNe5DWsnD+lzR6pEHYrZ3/K00h4MW35 tQDkRhm0zizyJIS5bdJmq9TvHSE5VqQYq3Zhb//0mIBiXE2PzDzfwSVgzTq2nVE5asDe VtQw== X-Gm-Message-State: AOUpUlGgLJfFKw3ZqCCt3I1l9byIhbSBAoE9Ck/V9ZwgHvkOOhpAHshX FWLuIgBGx+LwgJ3NJYl3ahSyY0S3 X-Google-Smtp-Source: AAOMgpccJ9Dw/nS/0v5W5gu3lOVPEdpZe3YHTRGCwjyxhq8wg7+D9LdCh1j2krdzVnRrO/g22RDqoQ== X-Received: by 2002:adf:a599:: with SMTP id g25-v6mr4971098wrc.88.1531927041859; Wed, 18 Jul 2018 08:17:21 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id q140-v6sm3416648wmb.35.2018.07.18.08.17.21 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 18 Jul 2018 08:17:21 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, Marek Vasut , Simon Glass , Tom Rini Date: Wed, 18 Jul 2018 17:16:53 +0200 Message-Id: X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Cc: Stefan Roese , Heinrich Schuchardt , Alexander Graf , Eugeniy Paltsev Subject: [U-Boot] [RFC PATCH 15/15] MAINTAINERS: Add myself as the FPGA maintainer X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" FPGA subsystem requires special care that's why it should be maintained via one tree. Signed-off-by: Michal Simek Reviewed-by: Simon Glass --- MAINTAINERS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 570bc6d1a525..3bded710b15c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -372,6 +372,14 @@ F: test/py/tests/test_efi* F: cmd/bootefi.c F: tools/file2include.c +FPGA +M: Michal Simek +S: Maintained +T: git git://git.denx.de/u-boot-microblaze.git +F: drivers/fpga/ +F: cmd/fpga.c +F: include/fpga.h + FLATTENED DEVICE TREE M: Simon Glass S: Maintained