• Thierry Reding's avatar
    lib: devres: Introduce devm_ioremap_resource() · a2ba5f34
    Thierry Reding authored
    
    
    The devm_request_and_ioremap() function is very useful and helps avoid a
    whole lot of boilerplate. However, one issue that keeps popping up is
    its lack of a specific error code to determine which of the steps that
    it performs failed. Furthermore, while the function gives an example and
    suggests what error code to return on failure, a wide variety of error
    codes are used throughout the tree.
    
    In an attempt to fix these problems, this patch adds a new function that
    drivers can transition to. The devm_ioremap_resource() returns a pointer
    to the remapped I/O memory on success or an ERR_PTR() encoded error code
    on failure. Callers can check for failure using IS_ERR() and determine
    its cause by extracting the error code using PTR_ERR().
    
    devm_request_and_ioremap() is implemented as a wrapper around the new
    API and return NULL on failure as before. This ensures that backwards
    compatibility is maintained until all users have been converted to the
    new API, at which point the old devm_request_and_ioremap() function
    should be removed.
    
    A semantic patch is included which can be used to convert from the old
    devm_request_and_ioremap() API to the new devm_ioremap_resource() API.
    Some non-trivial cases may require manual intervention, though.
    
    Change-Id: I458afe18768979122c12e95bffe979a31f02f607
    Signed-off-by: default avatarThierry Reding <thierry.reding@avionic-design.de>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Git-commit: 75096579c3ac39ddc2f8b0d9a8924eba31f4d920
    Git-repo: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git
    
    Signed-off-by: default avatarDolev Raviv <draviv@codeaurora.org>
    a2ba5f34
devres.c 10.2 KB