From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A943CA9EB7 for ; Mon, 21 Oct 2019 07:52:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 40AAA21928 for ; Mon, 21 Oct 2019 07:52:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="f4plsD5O" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727047AbfJUHw1 (ORCPT ); Mon, 21 Oct 2019 03:52:27 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:41622 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727097AbfJUHw0 (ORCPT ); Mon, 21 Oct 2019 03:52:26 -0400 Received: by mail-ed1-f66.google.com with SMTP id f20so9262920edv.8 for ; Mon, 21 Oct 2019 00:52:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=lshseq5695iLMWS2/yTnU4q4phMFdnGbVyLcqMyDgNw=; b=f4plsD5OF7QI01+J/daaDJeoz3LkteQ6BQB7+jftsCG7vHACEuYAS0/ifg1VOZ+2bv DVnIY34EwF6RV/LyAIkxxcICf5gDAB5lJnzvHZwPiIbqUNd0/Lda6KhsIL7Vv666qS53 0dm2LtJmUWVBz3Z6INSe5m7WXyh7OwRPV6IN4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lshseq5695iLMWS2/yTnU4q4phMFdnGbVyLcqMyDgNw=; b=Nq0oC8ALvPnIBUcEorh7O+z7XTvoahnSFTPWqLoNs+VVjheqMTbRgYiAaETqmcLCtB uWiUepOKZ10yk4BfJJV9Q/7dbDJsOSjXj3FE7J+8g+3GQhQ9dE3Ho+776QpwmVqry1zD YiJ0ehI+kgymsgrN6NHDZCsBbyNJtqBkKDtdU3DiQ7tXzn1ikwmxDj/l1pXowhrgZ3Y9 qCD7yJr5iuTaxLz+R+nlAlL5sqhvLJcxBMi5yLsAnDrmFp7FIdpI9FFpN3jLUPeMMZOo nkOc6KK4fb72nEtjGG6D6SMGUOAlqRFBreq23tcxv2Mocy6J0mhPNnveIaizon/tsMPo A3ug== X-Gm-Message-State: APjAAAU+illfpx1FB4rCGfaMxivJXYIaM56N3xjmIliYJwwnv2iqoRTy pUL81YTcz2H0jKKY2c7BS58g/3hMZLVGyQC+ZiYK+A== X-Google-Smtp-Source: APXvYqzlkUpYGQn2syS3ZLVsVWF/tTk0yVfY4fQyTuFCwfaWNooQm7u2tuJVHYSsQtBTu3rWlHNporZiD288c1BLvm4= X-Received: by 2002:aa7:d8c6:: with SMTP id k6mr23548337eds.87.1571644344157; Mon, 21 Oct 2019 00:52:24 -0700 (PDT) MIME-Version: 1.0 References: <20190906100514.30803-1-roger.lu@mediatek.com> <20190906100514.30803-4-roger.lu@mediatek.com> In-Reply-To: <20190906100514.30803-4-roger.lu@mediatek.com> From: Pi-Hsun Shih Date: Mon, 21 Oct 2019 15:51:48 +0800 Message-ID: Subject: Re: [PATCH v5 3/3] PM / AVS: SVS: Introduce SVS engine To: Roger Lu Cc: Kevin Hilman , Rob Herring , Nicolas Boichat , Stephen Boyd , Fan Chen , HenryC Chen , yt.lee@mediatek.com, Angus Lin , Mark Rutland , Matthias Brugger , Nishanth Menon , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , "moderated list:ARM/Mediatek SoC support" , "moderated list:ARM/Mediatek SoC support" , open list , "open list:THERMAL" Content-Type: text/plain; charset="UTF-8" Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hi Roger, On Fri, Sep 6, 2019 at 6:06 PM Roger Lu wrote: > ... > +static int svs_resource_setup(struct mtk_svs *svs) > ... > + for (i = 0, freq = (u32)-1; i < svsb->opp_count; i++, freq--) { > + opp = dev_pm_opp_find_freq_floor(svsb->dev, &freq); > + if (IS_ERR(opp)) { > + pr_err("%s: error opp entry!!, err = %ld\n", > + svsb->name, PTR_ERR(opp)); > + return PTR_ERR(opp); > + } > + > + svsb->opp_freqs[i] = freq; > + svsb->opp_volts[i] = dev_pm_opp_get_voltage(opp); > + svsb->freqs_pct[i] = percent(svsb->opp_freqs[i], > + svsb->freq_base) & 0xff; Should have dev_pm_opp_put(opp); here. > + } > + } > + > + return 0; > +} > ... > +static int svs_status_proc_show(struct seq_file *m, void *v) > ... > + for (i = 0, freq = (u32)-1; i < svsb->opp_count; i++, freq--) { > + opp = dev_pm_opp_find_freq_floor(svsb->dev, &freq); > + if (IS_ERR(opp)) { > + seq_printf(m, "%s: error opp entry!!, err = %ld\n", > + svsb->name, PTR_ERR(opp)); > + return PTR_ERR(opp); > + } > + > + seq_printf(m, "opp_freqs[%02u]: %lu, volts[%02u]: %lu, ", > + i, freq, i, dev_pm_opp_get_voltage(opp)); > + seq_printf(m, "svsb_volts[%02u]: 0x%x, freqs_pct[%02u]: %u\n", > + i, svsb->volts[i], i, svsb->freqs_pct[i]); Same here. > + } > + > + return 0; > +} > ...