• Thomas Petazzoni's avatar
    i2c: mv64xxx: handle probe deferral for the clock · 9f4d6f16
    Thomas Petazzoni authored
    If a clock is registered by a platform driver and not by the
    OF_CLK_DECLARE() mechanism, it might show up after the first attempt
    to probe i2c-mv64xxx. In order to solve this, we need to handle
    -EPROBE_PREFER as a special return value of devm_clk_get(), and return
    the same error code from probe().
    
    This gives us three situations:
    
     - There is no reference to a clock in the DT. In this case,
       devm_clk_get() returns an error that is not -EPROBE_DEFER
       (something like -ENODEV), and we continue the probing without
       enabling the clock.
    
     - There is a reference to the clock in the DT, and the clock is
       ready. devm_clk_get() returns a valid reference to the clock, and
       we prepare/enable it.
    
     - There is a reference to the clock in the DT, but the clock is not
       ready. devm_clk_get() returns -EPROBE_DEFER, and we exit from
       probe() with the same error code so that probe() is tried again
       later.
    
    This is needed for Marvell Armada 7K/8K, where the clock driver is a
    platform driver.
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    9f4d6f16
i2c-mv64xxx.c 27.5 KB