From patchwork Thu Jan 18 12:31:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcin Wojtas X-Patchwork-Id: 862847 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=semihalf-com.20150623.gappssmtp.com header.i=@semihalf-com.20150623.gappssmtp.com header.b="Eg4aBfDC"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zMk171Dvyz9sDB for ; Thu, 18 Jan 2018 23:34:35 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755728AbeARMeV (ORCPT ); Thu, 18 Jan 2018 07:34:21 -0500 Received: from mail-lf0-f67.google.com ([209.85.215.67]:39339 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755725AbeARMcC (ORCPT ); Thu, 18 Jan 2018 07:32:02 -0500 Received: by mail-lf0-f67.google.com with SMTP id m8so26446101lfc.6 for ; Thu, 18 Jan 2018 04:32:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jKprDKMODG9MbDYI6DimVorOrRWyWIOEnGpxRAChLjU=; b=Eg4aBfDCVy1mhse19VX+M5K0gyNqgnO7i2NYCVTi/Ar0xpypKZeplTCp6POvyJ25Ye UNrvzNqB+2zI1CfizCIj0zV3hDRNoF86jnain9fyaQpzibWe3v0Hp73/si7vZ84flX6v DaKVIEUY7C0upo5Vx9yuhCuJCUr7PLKcqRoGDDafXWAFcQYCXRnx8maQykbpRzpxTtTw YlgBZXXOBIj50vYs93uDRJLUnhdPAXh1f6igp50PwPYG6OFOXUY2Fb/lLceLuBGR4ZGM dre2WNcV3hIY8EgWMb048wURpHjXZFk4HvDb3veSAeCxf6WYcQypS9yefM7a7JMW2Ji3 9luQ== 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; bh=jKprDKMODG9MbDYI6DimVorOrRWyWIOEnGpxRAChLjU=; b=PIbAXgXWxIIuJXC9w2EnWjA0RCeiw2SysGMJcaaHW9+/x6yuXezLAY02xEr1/dYj74 8GSCetPUJJfSW0bNpBzrHBXe1JYwWBFA3mSOjmPl0+gZyB90vhlqjgAb5PaZGrI1evtP +zmm+yHOFUHpUam8rwGAneVWwHc1RpyZMypqjATi90LYiSwfBxFaxhz5PMZG6SGIHF2X NnquACZqbbE9JFmZAS2Nq6Uh3fzhxzga3CNGnXCa67O+OY906KcYQFuoCoyWNbfc8+9q bxBphhHZHzJWn4fVz9DCrLohW8eSkCzakkQD5CFs3Xib4F7uPELc7XSEK/SY1xsCjRpL Misg== X-Gm-Message-State: AKwxytdvG+Xi+lq+7eww1jYSAWOivNhUqQvxOFbAzy26zc+tFJf80Y9d XOVMNYp7YJ4cR87lnIVcmhjuuA== X-Google-Smtp-Source: ACJfBotw+tagXtC6HngKH4daiFUEZ8Q1QujbMCUIymiTB/2V8KCUWWnPYPnD4ifvq377LhY6aoEgXA== X-Received: by 10.46.115.22 with SMTP id o22mr6367113ljc.89.1516278720643; Thu, 18 Jan 2018 04:32:00 -0800 (PST) Received: from gilgamesh.semihalf.com (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id s23sm1303906ljs.1.2018.01.18.04.31.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 18 Jan 2018 04:31:59 -0800 (PST) From: Marcin Wojtas To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-acpi@vger.kernel.org Cc: graeme.gregory@linaro.org, davem@davemloft.net, linux@armlinux.org.uk, rafael.j.wysocki@intel.com, andrew@lunn.ch, f.fainelli@gmail.com, antoine.tenart@free-electrons.com, thomas.petazzoni@free-electrons.com, gregory.clement@free-electrons.com, stefanc@marvell.com, nadavh@marvell.com, neta@marvell.com, ard.biesheuvel@linaro.org, mw@semihalf.com, jaz@semihalf.com, tn@semihalf.com Subject: [net-next: PATCH v4 2/7] device property: Introduce fwnode_get_phy_mode() Date: Thu, 18 Jan 2018 13:31:39 +0100 Message-Id: <1516278704-17141-3-git-send-email-mw@semihalf.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516278704-17141-1-git-send-email-mw@semihalf.com> References: <1516278704-17141-1-git-send-email-mw@semihalf.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Until now there were two almost identical functions for obtaining network PHY mode - of_get_phy_mode() and, more generic, device_get_phy_mode(). However it is not uncommon, that the network interface is represented as a child of the actual controller, hence it is not associated directly to any struct device, required by the latter routine. This commit allows for getting the PHY mode for children nodes in the ACPI world by introducing a new function - fwnode_get_phy_mode(). This commit also changes device_get_phy_mode() routine to be its wrapper, in order to prevent unnecessary duplication. Signed-off-by: Marcin Wojtas Acked-by: Rafael J. Wysocki --- drivers/base/property.c | 24 ++++++++++++++++---- include/linux/property.h | 1 + 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/drivers/base/property.c b/drivers/base/property.c index f261d1a..7c4a53d 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -1126,21 +1126,21 @@ enum dev_dma_attr device_get_dma_attr(struct device *dev) EXPORT_SYMBOL_GPL(device_get_dma_attr); /** - * device_get_phy_mode - Get phy mode for given device - * @dev: Pointer to the given device + * fwnode_get_phy_mode - Get phy mode for given firmware node + * @fwnode: Pointer to the given node * * The function gets phy interface string from property 'phy-mode' or * 'phy-connection-type', and return its index in phy_modes table, or errno in * error case. */ -int device_get_phy_mode(struct device *dev) +int fwnode_get_phy_mode(struct fwnode_handle *fwnode) { const char *pm; int err, i; - err = device_property_read_string(dev, "phy-mode", &pm); + err = fwnode_property_read_string(fwnode, "phy-mode", &pm); if (err < 0) - err = device_property_read_string(dev, + err = fwnode_property_read_string(fwnode, "phy-connection-type", &pm); if (err < 0) return err; @@ -1151,6 +1151,20 @@ int device_get_phy_mode(struct device *dev) return -ENODEV; } +EXPORT_SYMBOL_GPL(fwnode_get_phy_mode); + +/** + * device_get_phy_mode - Get phy mode for given device + * @dev: Pointer to the given device + * + * The function gets phy interface string from property 'phy-mode' or + * 'phy-connection-type', and return its index in phy_modes table, or errno in + * error case. + */ +int device_get_phy_mode(struct device *dev) +{ + return fwnode_get_phy_mode(dev_fwnode(dev)); +} EXPORT_SYMBOL_GPL(device_get_phy_mode); static void *fwnode_get_mac_addr(struct fwnode_handle *fwnode, diff --git a/include/linux/property.h b/include/linux/property.h index 35620e0..9b13332 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -279,6 +279,7 @@ int device_get_phy_mode(struct device *dev); void *device_get_mac_address(struct device *dev, char *addr, int alen); +int fwnode_get_phy_mode(struct fwnode_handle *fwnode); void *fwnode_get_mac_address(struct fwnode_handle *fwnode, char *addr, int alen); struct fwnode_handle *fwnode_graph_get_next_endpoint(