lkml.org 
[lkml]   [2019]   [Nov]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 06/17] firmware: qcom_scm-64: Add SCM results to descriptor
    On 04-11-19, 17:27, Elliot Berman wrote:
    > Remove knowledge of arm_smccc_res struct from client wrappers so that
    > client wrappers only work QCOM SCM data structures. SCM calls may have
    > up to 3 arguments, so qcom_scm_call_smccc is responsible now for filling
    > those 3 arguments accordingly.
    >
    > Signed-off-by: Elliot Berman <eberman@codeaurora.org>
    > ---
    > drivers/firmware/qcom_scm-64.c | 105 ++++++++++++++++++-----------------------
    > 1 file changed, 45 insertions(+), 60 deletions(-)
    >
    > diff --git a/drivers/firmware/qcom_scm-64.c b/drivers/firmware/qcom_scm-64.c
    > index 76412a5..f6536fa 100644
    > --- a/drivers/firmware/qcom_scm-64.c
    > +++ b/drivers/firmware/qcom_scm-64.c
    > @@ -50,6 +50,7 @@ struct qcom_scm_desc {
    > u32 cmd;
    > u32 arginfo;
    > u64 args[MAX_QCOM_SCM_ARGS];
    > + u64 res[MAX_QCOM_SCM_RETS];
    > u32 owner;
    > };
    >
    > @@ -115,8 +116,7 @@ static void qcom_scm_call_do_smccc(const struct qcom_scm_desc *desc,
    > }
    >
    > static int ___qcom_scm_call_smccc(struct device *dev,
    > - const struct qcom_scm_desc *desc,
    > - struct arm_smccc_res *res, bool atomic)
    > + struct qcom_scm_desc *desc, bool atomic)
    > {
    > int arglen = desc->arginfo & 0xf;
    > int i;
    > @@ -125,6 +125,7 @@ static int ___qcom_scm_call_smccc(struct device *dev,
    > void *args_virt = NULL;
    > size_t alloc_len;
    > gfp_t flag = atomic ? GFP_ATOMIC : GFP_KERNEL;
    > + struct arm_smccc_res res;
    >
    > if (unlikely(arglen > SMCCC_N_REG_ARGS)) {
    > alloc_len = SMCCC_N_EXT_ARGS * sizeof(u64);
    > @@ -158,15 +159,19 @@ static int ___qcom_scm_call_smccc(struct device *dev,
    > x5 = args_phys;
    > }
    >
    > - qcom_scm_call_do_smccc(desc, res, x5, atomic);
    > + qcom_scm_call_do_smccc(desc, &res, x5, atomic);
    >
    > if (args_virt) {
    > dma_unmap_single(dev, args_phys, alloc_len, DMA_TO_DEVICE);
    > kfree(args_virt);
    > }
    >
    > - if (res->a0 < 0)
    > - return qcom_scm_remap_error(res->a0);
    > + desc->res[0] = res.a1;
    > + desc->res[1] = res.a2;
    > + desc->res[2] = res.a3;

    res represents result, so can we rename this here and in qcom_scm_desc
    as result, somehow I kept on reading this as res and got confused ;/ or
    maybe it is just me!

    --
    ~Vinod

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