lkml.org 
[lkml]   [2022]   [Jul]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V7 1/2] remoteproc: introduce rproc features
    Date
    From: Peng Fan <peng.fan@nxp.com>

    remote processor may support:
    - boot recovery with help from main processor
    - self recovery without help from main processor
    - iommu
    - etc

    Introduce rproc features could simplify code to avoid adding more bool
    flags

    Acked-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    ---
    drivers/remoteproc/remoteproc_internal.h | 15 +++++++++++++++
    include/linux/remoteproc.h | 16 ++++++++++++++++
    2 files changed, 31 insertions(+)

    diff --git a/drivers/remoteproc/remoteproc_internal.h b/drivers/remoteproc/remoteproc_internal.h
    index 72d4d3d7d94d..82247cb5d0c2 100644
    --- a/drivers/remoteproc/remoteproc_internal.h
    +++ b/drivers/remoteproc/remoteproc_internal.h
    @@ -24,6 +24,21 @@ struct rproc_debug_trace {
    struct rproc_mem_entry trace_mem;
    };

    +static inline bool rproc_has_feature(struct rproc *rproc, unsigned int feature)
    +{
    + return test_bit(feature, rproc->features);
    +}
    +
    +static inline int rproc_set_feature(struct rproc *rproc, unsigned int feature)
    +{
    + if (feature >= RPROC_MAX_FEATURES)
    + return -EINVAL;
    +
    + set_bit(feature, rproc->features);
    +
    + return 0;
    +}
    +
    /* from remoteproc_core.c */
    void rproc_release(struct kref *kref);
    irqreturn_t rproc_vq_interrupt(struct rproc *rproc, int vq_id);
    diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h
    index aea79c77db0f..18869924e299 100644
    --- a/include/linux/remoteproc.h
    +++ b/include/linux/remoteproc.h
    @@ -489,6 +489,20 @@ struct rproc_dump_segment {
    loff_t offset;
    };

    +/**
    + * enum rproc_features - features supported
    + *
    + * @RPROC_FEAT_ATTACH_ON_RECOVERY: The remote processor does not need help
    + * from Linux to recover, such as firmware
    + * loading. Linux just needs to attach after
    + * recovery.
    + */
    +
    +enum rproc_features {
    + RPROC_FEAT_ATTACH_ON_RECOVERY,
    + RPROC_MAX_FEATURES,
    +};
    +
    /**
    * struct rproc - represents a physical remote processor device
    * @node: list node of this rproc object
    @@ -530,6 +544,7 @@ struct rproc_dump_segment {
    * @elf_machine: firmware ELF machine
    * @cdev: character device of the rproc
    * @cdev_put_on_release: flag to indicate if remoteproc should be shutdown on @char_dev release
    + * @features: indicate remoteproc features
    */
    struct rproc {
    struct list_head node;
    @@ -570,6 +585,7 @@ struct rproc {
    u16 elf_machine;
    struct cdev cdev;
    bool cdev_put_on_release;
    + DECLARE_BITMAP(features, RPROC_MAX_FEATURES);
    };

    /**
    --
    2.25.1
    \
     
     \ /
      Last update: 2022-07-05 03:15    [W:4.363 / U:0.532 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site