From patchwork Wed Jan 17 16:55:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcin Wojtas X-Patchwork-Id: 862396 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="KblEsJYa"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zMD0z3CCdz9s7v for ; Thu, 18 Jan 2018 04:02:43 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754315AbeAQRCb (ORCPT ); Wed, 17 Jan 2018 12:02:31 -0500 Received: from mail-lf0-f67.google.com ([209.85.215.67]:33531 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754196AbeAQQ4D (ORCPT ); Wed, 17 Jan 2018 11:56:03 -0500 Received: by mail-lf0-f67.google.com with SMTP id t139so8079419lff.0 for ; Wed, 17 Jan 2018 08:56:02 -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=KblEsJYah5DGvaiyG9Rw8yK8dZ33tCs7P/GNdylmVbwXhCmicSqn49ikYIfMC9+Gg4 szGXYvd0ogIkp7xWOJu564+jHBxVYEngWmlLFQQ849PK2GJO4xf8UMPIWz8VLCSllbQL +8lBvVnKADv09qWbyUUc0iwgYvCktI9MiAfIx0z5b8KTB7y73UyASFdQDTVq6Uu7dKPf 7A3Pp2dlHr+rf39GkX4FDEYyMEWmwYdQ3bX3i9qoRB8qVyuISYFpR5uoEt9Dj8iXUyFJ c6bTm6nJ16SW1d9IZAd/bdp9rvq7uadRT8af9tdth0nHsp1tKM4TYKGfMcbFCOVocq2/ i82w== 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=IuWndVJB3KOlkFfu6KhCZT/uck5/6y2WdyQQBBkSgV1DIxUaRQ5CZ2zBkDfd6vIqTH oZWIbNvUBxUJjdphNrt0WwXhQWm58vejQ07an5FWpfPLMUzdEfYlhJ2E4x+iJiu2IydC ItcCqpHvW8njRM3Y1ZllQhXMbKItAdwC+eVsEmaBJOOcT7v4L1jcglLtohhqQu7Yi0ID C3ng47zyI0dqei52LiZpRqEq9ZLGz7ovMkQB7+QqYqwTUumNrrATwqyy2ES4bigyu9xY Uld4Knx0hiQw7BNT8Cim8+8cuAEp/Qc9NCNSGcnhb6zdLfGdi7KNOhwBK4jOjO3M9lkE l/1w== X-Gm-Message-State: AKwxytf+ognJgBnkwgxTQfrATvUcQ8yJwZ6l6k3w+OHTXWqW+cHW1va+ KX1Jq5OX8G37V2eV/0lRG3K4Vw== X-Google-Smtp-Source: ACJfBovXMZNNdMAmn5DZBfid6IY7s4EliNlIEmVJ2+oqzq8coOV5HHkdsKCwLKBQTk3AL4COIHHc6g== X-Received: by 10.46.60.7 with SMTP id j7mr1146574lja.6.1516208161249; Wed, 17 Jan 2018 08:56:01 -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 t81sm868347lff.47.2018.01.17.08.55.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 17 Jan 2018 08:56:00 -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 v3 2/7] device property: Introduce fwnode_get_phy_mode() Date: Wed, 17 Jan 2018 17:55:41 +0100 Message-Id: <1516208146-4144-3-git-send-email-mw@semihalf.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516208146-4144-1-git-send-email-mw@semihalf.com> References: <1516208146-4144-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(