• Bernhard Nortmann's avatar
    fel: Add "readl" and "writel" commands · 3269b963
    Bernhard Nortmann authored
    
    Signed-off-by: default avatarBernhard Nortmann <bernhard.nortmann@web.de>
    
    Squashed commit of the following:
    
    commit 95f3614357446c4a35ec541bb2c21503c54d3fac
    Author: Bernhard Nortmann <bernhard.nortmann@web.de>
    Date:   Fri Apr 8 09:10:17 2016 +0200
    
        fel: Add support for multiple sequential readl/writel
    
        There are cases where "long" reads/writes might be used to transfer
        multiple values from/to sequential addresses.
    
        When doing so, we can avoid having to setup and upload the entire
        scratch buffer (ARM code) every time, by making the underlying
        functions auto-increment the address on each invocation.
    
        The patch implements this functionality, and maps the existing
        aw_fel_readl() and aw_fel_writel() to special cases (count == 1).
    Signed-off-by: default avatarBernhard Nortmann <bernhard.nortmann@web.de>
    
    commit 20ececdfc7f3c4070469a7b74ba77bb74e01f876
    Author: Bernhard Nortmann <bernhard.nortmann@web.de>
    Date:   Fri Apr 8 09:00:20 2016 +0200
    
        fel: Modify handling of command line args for "readl"/"writel"
    
        Most other commands use their decoded argument values directly,
        without storing them to local vars first. Also "writel" needs
        an (argc > 3).
    Signed-off-by: default avatarBernhard Nortmann <bernhard.nortmann@web.de>
    
    commit b4216371b97e9f1dd19f7fc2ce720b9cb8e2434e
    Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
    Date:   Sat Dec 19 08:22:26 2015 +0200
    
        fel: Add "readl" and "writel" commands
    
        The read/write operations done by FEL are not suitable for accessing
        hardware registers. For example, trying to read a SID value using
        the "read" or "hexdump" commands results in the following:
    
          $ sunxi-fel hexdump 0x01c23800 4
          01c23800: 87 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __
    
        Apparently, FEL tries to read data one byte at a time and this does
        not always work correctly. Introducing new commands to explicitly
        do 32-bit reads and writes helps:
    
          $ sunxi-fel readl 0x01c23800
          0x16254187
    Signed-off-by: default avatarSiarhei Siamashka <siarhei.siamashka@gmail.com>
    Tested-by: default avatarBernhard Nortmann <bernhard.nortmann@web.de>
    3269b963
fel.c 52.4 KB