Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp2253317pxb; Sun, 24 Apr 2022 09:05:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJztc+CmnxS85gCa8jn8Mo+KB7uQHw2mgmEarTkmwdPOWTzH/XNGO8HHNvZUbRxotU1u/Agh X-Received: by 2002:a17:902:ef46:b0:153:81f7:7fc2 with SMTP id e6-20020a170902ef4600b0015381f77fc2mr14165920plx.26.1650816358648; Sun, 24 Apr 2022 09:05:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650816358; cv=none; d=google.com; s=arc-20160816; b=ftr38TbH8Fo/rxEeSz+8w3elDiR/VZEq0ORu36ikAv0fA5DNtBwphMrewAO6pKNRhW HoFSd533OaHTRij+mbpmWnULq0OHihLkHxBB9GDiPuWW5DiMSTVZOBs5Z7eULbwHn3s7 A4WPLXvtTgDV2EaBPQ3V2+fnXhvfcYe+vO5Od4fAOGYbCHtcIAvJaQNP0Itd4ouTDmSq kaVEDBXeqJfaA67GM/Pay7aSHg23ft4y9nvU9Qvn0A1OyWtxLP8iKpyGNl/0QCjb2oUa pIh2WFQ4j7CajpMCGZhplfRX5POL8SJhLP4r66MFgkhNy+rEkgbWMEmO4eLUJK7tuLz4 5gHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=Xea/ooL0oXQr48b59SjzLL2di9oPZrvbBXHt0wat3jc=; b=vkHnZuWxZgljA1AXrfvJ/7WQxkSpU2Q29zhTQ2wZrm+mUwE3HXg8nJOSIeQ8NVTzKb B/Nkpb/GJieUrtZrnkwun6MnJGKvXAcQ4UF6lpifViyyHyjxX3o7b0lwNrAzxXZmUT43 DR/JPuysysDb6JRYcjQVeavB+HXcaEn+lc0QM13Uq6Gam/kRuwGxSZor0bzidz1lKfOr vwVm8MgW+AAo5CdBIrO17iUagRlhp9pk2MKfpz2jwcrd0iaUZs2hVwig0fKtaeSe59QF dQ+f29fLPtw1/kLpBhZYJBl5e1l8+vAJOqs9StnvWFc0rkA1Df/lwxMLQwn12AOobITS pLgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nathanrossi.com header.s=google header.b=VpMPIOjO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nathanrossi.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id lb18-20020a17090b4a5200b001d2abcdbe50si15828714pjb.162.2022.04.24.09.05.41; Sun, 24 Apr 2022 09:05:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@nathanrossi.com header.s=google header.b=VpMPIOjO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nathanrossi.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230344AbiDWOod (ORCPT + 99 others); Sat, 23 Apr 2022 10:44:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36358 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230108AbiDWOob (ORCPT ); Sat, 23 Apr 2022 10:44:31 -0400 Received: from mail-yb1-xb35.google.com (mail-yb1-xb35.google.com [IPv6:2607:f8b0:4864:20::b35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F90ED3718 for ; Sat, 23 Apr 2022 07:41:34 -0700 (PDT) Received: by mail-yb1-xb35.google.com with SMTP id g28so70171ybj.10 for ; Sat, 23 Apr 2022 07:41:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nathanrossi.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Xea/ooL0oXQr48b59SjzLL2di9oPZrvbBXHt0wat3jc=; b=VpMPIOjOPRfPsA5kT+RVI6LIkgrPRSEhBxxCycmmriboalFnHZKg9ebRbAeSZ0AylJ 53JinkuYkyfLJnUoDEdgy6nuNtVb1iIn68aGCQanDvreWw/BaIhREYxzEN34vN9Le6R6 CaJUvkavT/umtxEhhvs4E46Zz+2oHy1bpzTBaTBcFv9TwpXn0ek5ldst3nLNl3gEtBxb ITzc8AJ/ShTSyTr5KnRObrbq/a1+EAqWznf95hx+fqxqychkdFqUaMQc3okP6tuT+GZr TAhmQb/C5f2ulGMEU4wvDSgLK3EgBwRO0a0mJ5lldjr5TQeZ+WZXgcfVF2oHY7isz9WZ 3/hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Xea/ooL0oXQr48b59SjzLL2di9oPZrvbBXHt0wat3jc=; b=m2J1RIwMVx3DBVk8hdIWLN5IGCI/Y6g7OAuNolgQXYXUVPNWiT91TZk9WHC9qstWlm fwhhxs0aUwPZepQdHaM4ID0HZQEIssrLZmtYs0S5DqWHYsfUnjPtx9Que+Vq9FQduo5K fJFz3wqdGVjIQVyTKNnIBHwLxLKKNvP+9v9EqTe6PicINfyU/7wdcRxRDnPhozZTlSb4 yhFMM3johxfRTRpdlv2mQOUTMXMSOYrgkWtuv0DbYBabnzut1gk7tF1YZ977KA/ZVAvs ER3fylRX4eLcJBeEKlJafP7xQyHU5eZ+ykGhd9xCNyjOfpDebelGbgj2ic6eKZetux64 gcDQ== X-Gm-Message-State: AOAM531HiU5nA33RUdy6sAVrd6tWK2B21G1s9N/RDI1U4gU31hJ5naVV 9ujPEOSadMxdqjrRN1pGu5l3pmphEYqvGEnDaYfieA== X-Received: by 2002:a5b:a43:0:b0:63d:c248:13a5 with SMTP id z3-20020a5b0a43000000b0063dc24813a5mr9196772ybq.614.1650724893453; Sat, 23 Apr 2022 07:41:33 -0700 (PDT) MIME-Version: 1.0 References: <20220423131427.237160-1-nathan@nathanrossi.com> <20220423131427.237160-2-nathan@nathanrossi.com> In-Reply-To: From: Nathan Rossi Date: Sun, 24 Apr 2022 00:41:22 +1000 Message-ID: Subject: Re: [PATCH 2/2] net: dsa: mv88e6xxx: Handle single-chip-address OF property To: Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , Paolo Abeni Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, 24 Apr 2022 at 00:07, Andrew Lunn wrote: > > On Sat, Apr 23, 2022 at 01:14:27PM +0000, Nathan Rossi wrote: > > Handle the parsing and use of single chip addressing when the switch has > > the single-chip-address property defined. This allows for specifying the > > switch as using single chip addressing even when mdio address 0 is used > > by another device on the bus. This is a feature of some switches (e.g. > > the MV88E6341/MV88E6141) where the switch shares the bus only responding > > to the higher 16 addresses. > > Hi Nathan > > I think i'm missing something in this explanation: > > smi.c says: > > /* The switch ADDR[4:1] configuration pins define the chip SMI device address > * (ADDR[0] is always zero, thus only even SMI addresses can be strapped). > * > * When ADDR is all zero, the chip uses Single-chip Addressing Mode, assuming it > * is the only device connected to the SMI master. In this mode it responds to > * all 32 possible SMI addresses, and thus maps directly the internal devices. > * > * When ADDR is non-zero, the chip uses Multi-chip Addressing Mode, allowing > * multiple devices to share the SMI interface. In this mode it responds to only > * 2 registers, used to indirectly access the internal SMI devices. > * > * Some chips use a different scheme: Only the ADDR4 pin is used for > * configuration, and the device responds to 16 of the 32 SMI > * addresses, allowing two to coexist on the same SMI interface. > */ > > So if ADDR = 0, it takes up the whole bus. And in this case reg = 0. > If ADDR != 0, it is in multi chip mode, and DT reg = ADDR. > > int mv88e6xxx_smi_init(struct mv88e6xxx_chip *chip, > struct mii_bus *bus, int sw_addr) > { > if (chip->info->dual_chip) > chip->smi_ops = &mv88e6xxx_smi_dual_direct_ops; > else if (sw_addr == 0) > chip->smi_ops = &mv88e6xxx_smi_direct_ops; > else if (chip->info->multi_chip) > chip->smi_ops = &mv88e6xxx_smi_indirect_ops; > else > return -EINVAL; > > This seems to implement what is above. smi_direct_ops == whole bus, > smi_indirect_ops == multi-chip mode. > > In what situation do you see this not working? What device are you > using, what does you DT look like, and what at the ADDR value? The device I am using is the MV88E6141, it follows the second scheme such that it only responds to the upper 16 of the 32 SMI addresses in single chip addressing mode. I am able to define the switch at address 0, and everything works. However in the device I am using (Netgate SG-3100) the ethernet phys for the non switch ethernet interfaces are also on the same mdio bus as the switch. One of those phys is configured with address 0. Defining both the ethernet-phy and switch as address 0 does not work. The device tree I have looks like: &mdio { status = "okay"; pinctrl-0 = <&mdio_pins>; pinctrl-names = "default"; phy0: ethernet-phy@0 { status = "okay"; reg = <0>; }; phy1: ethernet-phy@1 { status = "okay"; reg = <1>; }; switch0: switch0@16 { compatible = "marvell,mv88e6141", "marvell,mv88e6085"; single-chip-address; reg = <16>; /* first port in single address mode */ dsa,member = <0 0>; status = "okay"; ... ports/mdio nodes ... }; }; Thanks, Nathan > > Thanks > Andrew