Skip to content
  • Sergio Paracuellos's avatar
    staging: mt7621-pinctrl: use pinconf-generic for 'dt_node_to_map' and 'dt_free_map' · 0ca1f908
    Sergio Paracuellos authored
    Instead of reimplement afunction to do 'dt_node_to_map' task like
    'rt2880_pinctrl_dt_node_to_map' make use of 'pinconf_generic_dt_node_to_map_all'
    generic function for this task. Also use its equivalent function for free which
    is 'pinconf_generic_dt_free_map'. Remove 'rt2880_pinctrl_dt_node_to_map' function
    which is not needed anymore. This decrease a bit driver LOC and make it more
    generic. To properly compile this changes 'GENERIC_PINCONF' option is selected
    with the driver in its Kconfig file.
    
    This also fix a problem with function 'rt2880_pinctrl_dt_node_to_map' which was
    calling internally 'pinctrl_utils_reserve_map' which expects 'num_maps' to be initialized.
    It does a memory allocation based on the value, and triggers the following
    warning if is not properly set:
    
    if (unlikely(order >= MAX_ORDER)) {
            WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN));
            return NULL;
    }
    
    Generic function 'pinconf_generic_dt_node_to_map_all' initializes properly
    'num_maps' to zero fixing the problem.
    
    Fixes: e12a1a6e
    
     ("staging: mt7621-pinctrl: refactor rt2880_pinctrl_dt_node_to_map function")
    Reported-by: default avatarNeilBrown <neil@brown.name>
    Tested-by: default avatarNeilBrown <neil@brown.name>
    Signed-off-by: default avatarSergio Paracuellos <sergio.paracuellos@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    0ca1f908