From patchwork Mon Feb 8 17:35:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helmut Buchsbaum X-Patchwork-Id: 580439 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 2E937140317 for ; Tue, 9 Feb 2016 04:36:21 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=RJkkd2j6; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754495AbcBHRgL (ORCPT ); Mon, 8 Feb 2016 12:36:11 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:35727 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753951AbcBHRf5 (ORCPT ); Mon, 8 Feb 2016 12:35:57 -0500 Received: by mail-wm0-f67.google.com with SMTP id g62so16493625wme.2 for ; Mon, 08 Feb 2016 09:35:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0WwN5FvMLebwZDNAlviRgoerUXETb+/AtXoivnOAH0c=; b=RJkkd2j6E2DkjdIAMo8+FLzI2bM3HpEQmu9b4cBveHBOReEm1rI3yXixTYHoYsvxWX JDR0K588lFI03HX/mvsY8ig7Zn8kkTM3+gjTrYpB7kvJCu/RtB+8GRVkL7Zi3Ntctm7C D0ek+TBEIthiE9mHAAQepeqlKtqb4addXwY/FWiT8PyH0Adz/IuLFdXdpz40BjcYcADP JRpFKPIO3IDPvDz7NSDpVppkYdSqbc5qu0m7jvJfp3R7pARyWt1VeD2QARnG3jG3t5+7 CSlOaxcI261BhfPo/1rqL0HaqIhd9qH1DstmaVik9vEHp3RwCv6ELv0AlGBmUMBNlv8I 75CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=0WwN5FvMLebwZDNAlviRgoerUXETb+/AtXoivnOAH0c=; b=a+7/RkAeoc5YqVY7ZA8VFVfSo22fYxdlwBMW0tQtVBcNJKtH642aFqP/kzT31qUT+j OvfgO1ZT+j51w4x17eKPkHgPWYp8lRB4XhkZnbkZBdiKmNXTOOvKvhP33KMCX1uLA85f xohs/t8FtpFiNIU1IqBPs/MSqntvE5ckd26Er4DSDHfWYOCzy/IZGNBSWZKdaACT2Yac hEgBX8IhQSpp6BT/GtT7WFL5cMmkCTb5ZYtKuMUkly1v8zRkQ8DImnUgtvI4s6BTE9R4 JaU1+WoHVAQ3Q/VT6madzQVdjvuO+AMLT7j1t2vAcqXnlPZAnOqdpYoV5Q1l67BBpC/Z IJoA== X-Gm-Message-State: AG10YOS+oX0j4pq2Lq9j6erQjDHAjUaX5adya2oPriTDrcUUdM1FXafCVt/Vn5/BhI/oOA== X-Received: by 10.194.21.163 with SMTP id w3mr28772653wje.58.1454952955949; Mon, 08 Feb 2016 09:35:55 -0800 (PST) Received: from jessie64.at.festo.net ([213.208.155.113]) by smtp.gmail.com with ESMTPSA id gl10sm30767189wjb.30.2016.02.08.09.35.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 08 Feb 2016 09:35:55 -0800 (PST) From: Helmut Buchsbaum To: "David S. Miller" , Florian Fainelli , Andrew Lunn Cc: netdev@vger.kernel.org, Helmut Buchsbaum Subject: [PATCH v2 5/6] net: phy: spi_ks8995: add support for MICREL KSZ8795CLX Date: Mon, 8 Feb 2016 18:35:36 +0100 Message-Id: <1454952937-19428-6-git-send-email-helmut.buchsbaum@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1454952937-19428-1-git-send-email-helmut.buchsbaum@gmail.com> References: <1454952937-19428-1-git-send-email-helmut.buchsbaum@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add support for MICREL KSZ8795CLX Integrated 5-Port, 10-/100-Managed Ethernet Switch with Gigabit GMII/RGMII and MII/RMII interfaces. Signed-off-by: Helmut Buchsbaum --- drivers/net/phy/spi_ks8995.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/net/phy/spi_ks8995.c b/drivers/net/phy/spi_ks8995.c index f866786..c2d6c23 100644 --- a/drivers/net/phy/spi_ks8995.c +++ b/drivers/net/phy/spi_ks8995.c @@ -77,6 +77,7 @@ #define KS8995_REGS_SIZE 0x80 #define KSZ8864_REGS_SIZE 0x100 +#define KSZ8795_REGS_SIZE 0x100 #define ID1_CHIPID_M 0xf #define ID1_CHIPID_S 4 @@ -85,9 +86,11 @@ #define ID1_START_SW 1 /* start the switch */ #define FAMILY_KS8995 0x95 +#define FAMILY_KSZ8795 0x87 #define CHIPID_M 0 #define KS8995_CHIP_ID 0x00 #define KSZ8864_CHIP_ID 0x01 +#define KSZ8795_CHIP_ID 0x09 #define KS8995_CMD_WRITE 0x02U #define KS8995_CMD_READ 0x03U @@ -97,6 +100,7 @@ enum ks8995_chip_variant { ks8995, ksz8864, + ksz8795, max_variant }; @@ -126,6 +130,14 @@ static const struct ks8995_chip_params ks8995_chip[] = { .addr_width = 8, .addr_shift = 0, }, + [ksz8795] = { + .name = "KSZ8795CLX", + .family_id = FAMILY_KSZ8795, + .chip_id = KSZ8795_CHIP_ID, + .regs_size = KSZ8795_REGS_SIZE, + .addr_width = 12, + .addr_shift = 1, + }, }; struct ks8995_pdata { @@ -145,6 +157,7 @@ struct ks8995_switch { static const struct spi_device_id ks8995_id[] = { {"ks8995", ks8995}, {"ksz8864", ksz8864}, + {"ksz8795", ksz8795}, { } }; MODULE_DEVICE_TABLE(spi, ks8995_id); @@ -358,6 +371,22 @@ static int ks8995_get_revision(struct ks8995_switch *ks) err = -ENODEV; } break; + case FAMILY_KSZ8795: + /* try reading chip id at CHIP ID1 */ + err = ks8995_read_reg(ks, KS8995_REG_ID1, &id1); + if (err) { + err = -EIO; + goto err_out; + } + + if (get_chip_id(id1) == ks->chip->chip_id) { + ks->revision_id = get_chip_rev(id1); + } else { + dev_err(&ks->spi->dev, "unsupported chip id for KSZ8795 family: 0x%02x\n", + id1); + err = -ENODEV; + } + break; default: dev_err(&ks->spi->dev, "unsupported family id: 0x%02x\n", id0); err = -ENODEV;