From patchwork Sun Feb 7 22:39:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helmut Buchsbaum X-Patchwork-Id: 580104 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 69077140B9C for ; Mon, 8 Feb 2016 09:41:01 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=Lo+BGmwR; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755240AbcBGWkx (ORCPT ); Sun, 7 Feb 2016 17:40:53 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:35052 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754991AbcBGWkB (ORCPT ); Sun, 7 Feb 2016 17:40:01 -0500 Received: by mail-wm0-f68.google.com with SMTP id g62so12876872wme.2 for ; Sun, 07 Feb 2016 14:40:01 -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=i2HP3OArymwoQSDiUid+9MywKSJRrFpCPxYho3U5bEU=; b=Lo+BGmwRCQMF00GIP/AaMbDLlXBCk/uyrSpaS/+ggwOsxYevZGBd6yomZLIo/gtiPn r22IovIrsrqCa/WcKxklxqZ9HWrbLMbvphYJRD+yqTPo+Pf0XBDXy4i91+fVI10RSoI/ EIarhn935hjmaJ2/8tNN2u5TvifASPvOjFMN7FhoFq72lL3FUAjDAedPLIYs9rYlx42n icsWmQ8vQcuqShSIeW+I5ayVcXFnPHfqzuyZQMeYuqotGYb+eoXfQY58IKjNrVG53d6b f6uWSrmvd3QmeuytJBar5y9bynnp9GqqULpo4/HwIeNaCr0J/Z4iFXYWcY7PwngDZ5lb aX+g== 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=i2HP3OArymwoQSDiUid+9MywKSJRrFpCPxYho3U5bEU=; b=hjweA+tKgPWGMIN55mhSOj+J7ensjOU0ZOBsw1wLwOVdAA2k/LT5P46RHGKOAMtoqP dG3E2EwzgEgKpezOoRVtHQDPy2SdxdBsTlecBu1zTuEA37BSVtJ/agQ3ynSzDRuh5BzE puUgD44ZK8Iiy/5pw2imQ8/4QbSNscWps+Goitmazm23ywnJ+NxKlSdQKpH2+ccDTcRJ YOxj4tawNmVVbyPk1GxQI2EcisiNLBaVzcgjsjtdQUwE2hRNizENijrKoJv8G7+0k5Th lLLupIKFZAHgVUCxsABpCU2i4BmIeyPnJVVHwZ7YxKl0EFnlAl6zPndj23JYJsHCBIjO rkMA== X-Gm-Message-State: AG10YORsvyetjyH7tvn1sAXAZanRfc1xO4bIa62shzYOF26IyIAWeAXriLzSJdLDwHMD+g== X-Received: by 10.194.89.229 with SMTP id br5mr24024699wjb.5.1454884800682; Sun, 07 Feb 2016 14:40:00 -0800 (PST) Received: from jessie64.at.festo.net (178-191-150-217.adsl.highway.telekom.at. [178.191.150.217]) by smtp.gmail.com with ESMTPSA id x10sm26840106wjx.8.2016.02.07.14.39.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 07 Feb 2016 14:40:00 -0800 (PST) From: Helmut Buchsbaum To: "David S. Miller" Cc: Florian Fainelli , netdev@vger.kernel.org, Helmut Buchsbaum Subject: [PATCH 6/7] net: phy: spi_ks8995: add support for MICREL KSZ8795CLX Date: Sun, 7 Feb 2016 23:39:12 +0100 Message-Id: <1454884753-4560-7-git-send-email-helmut.buchsbaum@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1454884753-4560-1-git-send-email-helmut.buchsbaum@gmail.com> References: <1454884753-4560-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 6d6f984..5a3f75d 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 { @@ -150,6 +162,7 @@ struct ks8995_switch { static const struct spi_device_id ks8995_id[] = { {"ks8995", ks8995}, {"ksz8864", ksz8864}, + {"ksz8795", ksz8795}, { } }; MODULE_DEVICE_TABLE(spi, ks8995_id); @@ -408,6 +421,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;