lkml.org 
[lkml]   [2022]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH v3 1/7] firmware: raspberrypi: Introduce rpi_firmware_find_node()
    A significant number of RaspberryPi drivers using the firmware don't
    have a phandle to it, so end up scanning the device tree to find a node
    with the firmware compatible.

    That code is duplicated everywhere, so let's introduce a helper instead.

    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    ---
    drivers/firmware/raspberrypi.c | 7 +++++++
    include/soc/bcm2835/raspberrypi-firmware.h | 7 +++++++
    2 files changed, 14 insertions(+)

    diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c
    index 4b8978b254f9..b916e1e171f8 100644
    --- a/drivers/firmware/raspberrypi.c
    +++ b/drivers/firmware/raspberrypi.c
    @@ -311,6 +311,13 @@ static int rpi_firmware_remove(struct platform_device *pdev)
    return 0;
    }

    +static const struct of_device_id rpi_firmware_of_match[];
    +struct device_node *rpi_firmware_find_node(void)
    +{
    + return of_find_matching_node(NULL, rpi_firmware_of_match);
    +}
    +EXPORT_SYMBOL_GPL(rpi_firmware_find_node);
    +
    /**
    * rpi_firmware_get - Get pointer to rpi_firmware structure.
    * @firmware_node: Pointer to the firmware Device Tree node.
    diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h
    index 811ea668c4a1..63426082bcb9 100644
    --- a/include/soc/bcm2835/raspberrypi-firmware.h
    +++ b/include/soc/bcm2835/raspberrypi-firmware.h
    @@ -142,6 +142,7 @@ int rpi_firmware_property(struct rpi_firmware *fw,
    int rpi_firmware_property_list(struct rpi_firmware *fw,
    void *data, size_t tag_size);
    void rpi_firmware_put(struct rpi_firmware *fw);
    +struct device_node *rpi_firmware_find_node(void);
    struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node);
    struct rpi_firmware *devm_rpi_firmware_get(struct device *dev,
    struct device_node *firmware_node);
    @@ -159,6 +160,12 @@ static inline int rpi_firmware_property_list(struct rpi_firmware *fw,
    }

    static inline void rpi_firmware_put(struct rpi_firmware *fw) { }
    +
    +static inline struct device_node *rpi_firmware_find_node(void)
    +{
    + return NULL;
    +}
    +
    static inline struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node)
    {
    return NULL;
    --
    b4 0.11.0-dev-7da52

    \
     
     \ /
      Last update: 2022-10-13 11:13    [W:3.608 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site