lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 244/639] hwrng: bcm2835 - fix probe as platform device
    Date
    From: Jonas Gorski <jonas.gorski@gmail.com>

    [ Upstream commit 984798de671a927ac73da31096a150df42e6aaf3 ]

    BCM63XX (MIPS) does not use device tree, so there cannot be any
    of_device_id, causing the driver to fail on probe:

    [ 0.904564] bcm2835-rng: probe of bcm63xx-rng failed with error -22

    Fix this by checking for match data only if we are probing from device
    tree.

    Fixes: 8705f24f7b57 ("hwrng: bcm2835 - Enable BCM2835 RNG to work on BCM63xx platforms")
    Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/char/hw_random/bcm2835-rng.c | 18 ++++++++++--------
    1 file changed, 10 insertions(+), 8 deletions(-)

    diff --git a/drivers/char/hw_random/bcm2835-rng.c b/drivers/char/hw_random/bcm2835-rng.c
    index 6767d965c36c5..19bde680aee1d 100644
    --- a/drivers/char/hw_random/bcm2835-rng.c
    +++ b/drivers/char/hw_random/bcm2835-rng.c
    @@ -171,14 +171,16 @@ static int bcm2835_rng_probe(struct platform_device *pdev)
    priv->rng.read = bcm2835_rng_read;
    priv->rng.cleanup = bcm2835_rng_cleanup;

    - rng_id = of_match_node(bcm2835_rng_of_match, np);
    - if (!rng_id)
    - return -EINVAL;
    -
    - /* Check for rng init function, execute it */
    - of_data = rng_id->data;
    - if (of_data)
    - priv->mask_interrupts = of_data->mask_interrupts;
    + if (dev_of_node(dev)) {
    + rng_id = of_match_node(bcm2835_rng_of_match, np);
    + if (!rng_id)
    + return -EINVAL;
    +
    + /* Check for rng init function, execute it */
    + of_data = rng_id->data;
    + if (of_data)
    + priv->mask_interrupts = of_data->mask_interrupts;
    + }

    /* register driver */
    err = devm_hwrng_register(dev, &priv->rng);
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 12:12    [W:4.169 / U:0.176 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site