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=-6.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,T_DKIMWL_WL_HIGH,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham 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 D4E98C2BCA1 for ; Fri, 7 Jun 2019 16:00:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A0D0B208C3 for ; Fri, 7 Jun 2019 16:00:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559923212; bh=gKNAFyK22tYRKB11/vHXTkanklIh/BMUv2eXKW5ZH8k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=y5w68O6TH/QpBHowwD+SEZGLHuXSlC0UHbxDjTQ6c+9OHZRHSnw9BLx26f96Fie6q hzHmVfqKVd3/tMtBUcj+ppW8CwtszCa88ikNoS71NmepvLlc8RsAInvzF72UHWG65O C3pTQhRiSvQ8qxVtRPkWM+A7iUt+n9FuMbnYf1ec= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730056AbfFGQAM (ORCPT ); Fri, 7 Jun 2019 12:00:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:50080 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730062AbfFGPkm (ORCPT ); Fri, 7 Jun 2019 11:40:42 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C769A214D8; Fri, 7 Jun 2019 15:40:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559922042; bh=gKNAFyK22tYRKB11/vHXTkanklIh/BMUv2eXKW5ZH8k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n1GjCgY+MAJQUEUNsrBDNxPXn4I+3FhoKksahGjpKa2Ua4AIMbJQuXTapf/gzMxom IyEjysBhI7jriehWdznOvonsVy5SEM1BxvyCB8K+64S3WJehWcIQgL3OKjLAy8S5Ca lItpATvDz5IfKMdIN8Y2C7Qd37dv5usPIx1CbHec= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Russell King , Maxime Chevallier , Andrew Lunn , "David S. Miller" Subject: [PATCH 4.14 16/69] net: phy: marvell10g: report if the PHY fails to boot firmware Date: Fri, 7 Jun 2019 17:38:57 +0200 Message-Id: <20190607153850.300582175@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190607153848.271562617@linuxfoundation.org> References: <20190607153848.271562617@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Russell King [ Upstream commit 3d3ced2ec5d71b99d72ae6910fbdf890bc2eccf0 ] Some boards do not have the PHY firmware programmed in the 3310's flash, which leads to the PHY not working as expected. Warn the user when the PHY fails to boot the firmware and refuse to initialise. Fixes: 20b2af32ff3f ("net: phy: add Marvell Alaska X 88X3310 10Gigabit PHY support") Signed-off-by: Russell King Tested-by: Maxime Chevallier Reviewed-by: Andrew Lunn Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/phy/marvell10g.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) --- a/drivers/net/phy/marvell10g.c +++ b/drivers/net/phy/marvell10g.c @@ -19,6 +19,9 @@ #include enum { + MV_PMA_BOOT = 0xc050, + MV_PMA_BOOT_FATAL = BIT(0), + MV_PCS_BASE_T = 0x0000, MV_PCS_BASE_R = 0x1000, MV_PCS_1000BASEX = 0x2000, @@ -59,11 +62,22 @@ static int mv3310_modify(struct phy_devi static int mv3310_probe(struct phy_device *phydev) { u32 mmd_mask = MDIO_DEVS_PMAPMD | MDIO_DEVS_AN; + int ret; if (!phydev->is_c45 || (phydev->c45_ids.devices_in_package & mmd_mask) != mmd_mask) return -ENODEV; + ret = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MV_PMA_BOOT); + if (ret < 0) + return ret; + + if (ret & MV_PMA_BOOT_FATAL) { + dev_warn(&phydev->mdio.dev, + "PHY failed to boot firmware, status=%04x\n", ret); + return -ENODEV; + } + return 0; }