• Matt Sealey's avatar
    regulator: mc13892: sanity check num_regulators parsed vs. registered · 2c8a5dca
    Matt Sealey authored
    Imagine a situation where a device tree has a few regulators in an
    appropriate node:
    
    regulators {
    	sw1 {
    		..
    	};
    
    	vvideo {
    		..
    	};
    
    	:
    
    	vfake {
    		..
    	};
    
    	vtypo {
    		..
    	};
    };
    
    In the above example, the node name "vfake" is an attempt to match a
    regulator name inside the driver which just so happens to not exist. The
    node name "vtypo" represents an accidental typographical error in a
    regulator name which may have been introduced to a device tree.
    
    In these cases, the number of regulators the mc13892 driver thinks it has
    does not match the number of regulators it parsed and registered. Since
    it will go over this array based on this number, it will actually
    re-register regulator "0" (which happens to be SW1) over and over
    again until it reaches the number, resulting in messages on the kernel
    log such as these:
    
    SW1: at 1100 mV
    VVIDEO: at 2775mV
    :
    SW1: at 1100 mV
    SW1: at 1100 mV
    
    .. up to that number of "mismatched" regulators. Nobody using DT can/will
    consume these regulators, so it should not be possible for it to cause any
    real regulator problems or driver breakages, but it is an easy thing to
    miss in a kernel log and is an immediate indication of a problem with the
    device tree authoring.
    
    This patch effectively sanity checks the number of counted children of
    the regulators node vs. the number that actually matched driver names,
    and sets the appropriate num_regulators value. It also gives a little
    warning for device tree authors that they MAY have screwed something up,
    such that this patch does not hide the device tree authoring problem.
    Signed-off-by: default avatarMatt Sealey <matt@genesi-usa.com>
    Tested-by: default avatarSteev Klimaszewski <steev@genesi-usa.com>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    2c8a5dca
mc13892-regulator.c 21.5 KB