From patchwork Tue Feb 9 19:47:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helmut Buchsbaum X-Patchwork-Id: 581055 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 BDBDC140CCC for ; Wed, 10 Feb 2016 06:47:47 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=rm4MMQ4J; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932542AbcBITrn (ORCPT ); Tue, 9 Feb 2016 14:47:43 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:34871 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932531AbcBITrk (ORCPT ); Tue, 9 Feb 2016 14:47:40 -0500 Received: by mail-wm0-f67.google.com with SMTP id g62so5407219wme.2 for ; Tue, 09 Feb 2016 11:47:40 -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=rm4MMQ4JATvySOag3JcJ+v/njH14ywsffBqERzUhCyU2x2AJdO2hV2/z0S04S/KNor 1FI+vBhMX/hPcn1uaRgmrI9scjSs0asEaV3UeYKTPcyzgjaAjI1SI9UZOosGhASl994l C0+KTK6HeaC1QEJp14BCq4XmlMKy3pRJCgbrhN2kOffNNyNVX8Q9EHf8ozT5j2EHbDwy 7EbsIxHEcS2PmYPhkQUIvRQdxafrzHKVvFEqdd45rVIG7XfWzjcDDHR/0g6isO5izEhw BSiPvuMKCg/WYhCOyW94HVVKpoLq4Omc1AdqWhUyq1Xc+NnWodIiBuwLbC/NhhEyoBsa FGEw== 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=Jd8F/CruWrT4gQ+o02zOytGoI5JcDojB0k1FBG95xTj8sNttgOl4z430e14NARElI9 azPpSrkZ9h6kk0OsdxHye+AuUMOfpNg5teugDWCb1b5m0IMo5EIaNnQcdN89agTl9ZeH ucjRW5Js/LRFJh4JBh4Zbc2Y/wrdSOtanSIYBTFZJYaHdBWlfSpjeY64oxlLlR5Hkbij gdeQXBuMqWff0cimHAagpF0gup/9Im8i14qICAQfrP9auWzak0E1AO/wK5cKKLy4Wovd Gd6ANIOdDLRwdhc12NithMdnQi6SrvtGksU8i16+j+pN8hpCvLF8M7i8r5l4a9TpDR8i 2DRQ== X-Gm-Message-State: AG10YOSLWJ7tWVUtoqXqr2etKQxPSFF+uI6jma2RAUqDL0kJrJwFR2+WKnd/eu9d1K4wig== X-Received: by 10.194.105.99 with SMTP id gl3mr34315189wjb.90.1455047259971; Tue, 09 Feb 2016 11:47:39 -0800 (PST) Received: from jessie64.at.festo.net ([213.208.155.112]) by smtp.gmail.com with ESMTPSA id r10sm35947476wjz.24.2016.02.09.11.47.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Feb 2016 11:47:39 -0800 (PST) From: Helmut Buchsbaum To: "David S. Miller" , Florian Fainelli , Andrew Lunn , Sergei Shtylyov Cc: netdev@vger.kernel.org, Helmut Buchsbaum Subject: [PATCH v3 5/6] net: phy: spi_ks8995: add support for MICREL KSZ8795CLX Date: Tue, 9 Feb 2016 20:47:17 +0100 Message-Id: <1455047238-111358-6-git-send-email-helmut.buchsbaum@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1455047238-111358-1-git-send-email-helmut.buchsbaum@gmail.com> References: <1455047238-111358-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;