From patchwork Fri Aug 10 06:07:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 955972 X-Patchwork-Delegate: jagannadh.teki@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="rn+1k4UL"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41mwFB1d2Xz9s7Q for ; Fri, 10 Aug 2018 16:29:02 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id D7133C21C8B; Fri, 10 Aug 2018 06:26:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 31725C21D74; Fri, 10 Aug 2018 06:17:09 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 1123DC21F02; Fri, 10 Aug 2018 06:10:55 +0000 (UTC) Received: from mail-pl0-f41.google.com (mail-pl0-f41.google.com [209.85.160.41]) by lists.denx.de (Postfix) with ESMTPS id 7A174C21E89 for ; Fri, 10 Aug 2018 06:10:49 +0000 (UTC) Received: by mail-pl0-f41.google.com with SMTP id ba4-v6so3589072plb.11 for ; Thu, 09 Aug 2018 23:10:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=G7pP4S91B4aFyKiasCFsgg0jV1iLg0Nno9DCuAUr2ys=; b=rn+1k4ULjKgN4NM6yUOg/BuZHBgCM7ntJshEFFus0bAQkBo3iYh5zUzVP+nTibGjOl xXWlbx2pc4hyAe7hT4sYwDaYkRsHDCfOFDkbGdwsvabNltdWJCUfu8OywkDmx4OiGc3v tPgpBMsFZXYwSNxWkgubqVSSwzF9uL1dtrv0s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=G7pP4S91B4aFyKiasCFsgg0jV1iLg0Nno9DCuAUr2ys=; b=ACvHZpQ78DWx2MqhPG0FrDZ+RvEA+HQgfqihwwN5Fx2YpmhUjyikncAv6auXVbTj22 70oJpjEGOISKDHhJsiAXIYbsZ7BeIRS/oH8shGJcUplwISgHW374GHtfEqilBC4N2zTP sOszScatI7V/V2KAFNBMo9/rnZsDtp34a0bZCmqNvVZ4oSFN4K03Q5jBB2NW4KTtCQsx 087heTi9Md+RO5IC+aIld4zdWSqijNp2oyaXlFV4uqMqwq8U3NwT7n0WtNmNeGJwBFMy IidzwX+TSDl3jOnWUTlvsxesn0bH6T9Fe+VmtVYd3/U3hvWbYp2NiXLt+l5zPLOZvv33 J7Dw== X-Gm-Message-State: AOUpUlHDhShGKm7lZ+zmy1S+FAvfUaV76hnywFwHwYlxyb9NGo0x7TY1 jJ/JOk+TZ2JTevp/GR/siigfxx0Jdu8= X-Google-Smtp-Source: AA+uWPwQe89l25eBLKtZiS0OHR0CuO8PseVr6RdCYrdTaPoGD8MwLGZHC0B3sUMTGTzv297jZQK0VQ== X-Received: by 2002:a17:902:4001:: with SMTP id b1-v6mr4905506pld.208.1533881448062; Thu, 09 Aug 2018 23:10:48 -0700 (PDT) Received: from localhost.localdomain ([183.82.228.250]) by smtp.gmail.com with ESMTPSA id r23-v6sm16880975pfj.5.2018.08.09.23.10.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Aug 2018 23:10:47 -0700 (PDT) From: Jagan Teki To: Maxime Ripard , Andre Przywara , Chen-Yu Tsai , Icenowy Zheng Date: Fri, 10 Aug 2018 11:37:07 +0530 Message-Id: <20180810060711.6547-50-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.18.0.321.gffc6fa0e3 In-Reply-To: <20180810060711.6547-1-jagan@amarulasolutions.com> References: <20180810060711.6547-1-jagan@amarulasolutions.com> MIME-Version: 1.0 Cc: Joe Hershberger , Tom Rini , u-boot@lists.denx.de Subject: [U-Boot] [PATCH v2 49/53] clk: Use clk_get_by_index_tail() X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" clk_get_by_index_tail() now handle common clk get by index code so use it in relevant places. Cc: Simon Glass Cc: Joe Hershberger Signed-off-by: Jagan Teki --- drivers/clk/clk-uclass.c | 77 +++++++++++++--------------------------- 1 file changed, 25 insertions(+), 52 deletions(-) diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c index 8bb41a4de5..d439d216f2 100644 --- a/drivers/clk/clk-uclass.c +++ b/drivers/clk/clk-uclass.c @@ -54,50 +54,6 @@ static int clk_of_xlate_default(struct clk *clk, return 0; } -static int clk_get_by_indexed_prop(struct udevice *dev, const char *prop_name, - int index, struct clk *clk) -{ - int ret; - struct ofnode_phandle_args args; - struct udevice *dev_clk; - const struct clk_ops *ops; - - debug("%s(dev=%p, index=%d, clk=%p)\n", __func__, dev, index, clk); - - assert(clk); - clk->dev = NULL; - - ret = dev_read_phandle_with_args(dev, prop_name, "#clock-cells", 0, - index, &args); - if (ret) { - debug("%s: fdtdec_parse_phandle_with_args failed: err=%d\n", - __func__, ret); - return ret; - } - - ret = uclass_get_device_by_ofnode(UCLASS_CLK, args.node, &dev_clk); - if (ret) { - debug("%s: uclass_get_device_by_of_offset failed: err=%d\n", - __func__, ret); - return ret; - } - - clk->dev = dev_clk; - - ops = clk_dev_ops(dev_clk); - - if (ops->of_xlate) - ret = ops->of_xlate(clk, &args); - else - ret = clk_of_xlate_default(clk, &args); - if (ret) { - debug("of_xlate() failed: %d\n", ret); - return ret; - } - - return clk_request(dev_clk, clk); -} - static int clk_get_by_index_tail(int ret, ofnode node, struct ofnode_phandle_args *args, const char *list_name, int index, @@ -197,10 +153,11 @@ bulk_get_err: static int clk_set_default_parents(struct udevice *dev) { + struct ofnode_phandle_args args; struct clk clk, parent_clk; int index; int num_parents; - int ret; + int ret, err; num_parents = dev_count_phandle_with_args(dev, "assigned-clock-parents", "#clock-cells"); @@ -211,8 +168,13 @@ static int clk_set_default_parents(struct udevice *dev) } for (index = 0; index < num_parents; index++) { - ret = clk_get_by_indexed_prop(dev, "assigned-clock-parents", - index, &parent_clk); + err = dev_read_phandle_with_args(dev, "assigned-clock-parents", + "#clock-cells", 0, + index, &args); + + ret = clk_get_by_index_tail(err, dev_ofnode(dev), &args, + "assigned-clock-parents", + index > 0, &parent_clk); /* If -ENOENT, this is a no-op entry */ if (ret == -ENOENT) continue; @@ -223,8 +185,13 @@ static int clk_set_default_parents(struct udevice *dev) return ret; } - ret = clk_get_by_indexed_prop(dev, "assigned-clocks", - index, &clk); + err = dev_read_phandle_with_args(dev, "assigned-clocks", + "#clock-cells", 0, + index, &args); + + ret = clk_get_by_index_tail(err, dev_ofnode(dev), &args, + "assigned-clocks", + index > 0, &clk); if (ret) { debug("%s: could not get assigned clock %d for %s\n", __func__, index, dev_read_name(dev)); @@ -252,11 +219,12 @@ static int clk_set_default_parents(struct udevice *dev) static int clk_set_default_rates(struct udevice *dev) { + struct ofnode_phandle_args args; struct clk clk; int index; int num_rates; int size; - int ret = 0; + int err, ret = 0; u32 *rates = NULL; size = dev_read_size(dev, "assigned-clock-rates"); @@ -277,8 +245,13 @@ static int clk_set_default_rates(struct udevice *dev) if (!rates[index]) continue; - ret = clk_get_by_indexed_prop(dev, "assigned-clocks", - index, &clk); + err = dev_read_phandle_with_args(dev, "assigned-clocks", + "#clock-cells", 0, + index, &args); + + ret = clk_get_by_index_tail(err, dev_ofnode(dev), &args, + "assigned-clocks", + index > 0, &clk); if (ret) { debug("%s: could not get assigned clock %d for %s\n", __func__, index, dev_read_name(dev));