| Message ID | 20260802-submit-acx00-of-dynamic-v1-v1-8-0a53cd9e21cc@gmail.com (mailing list archive) |
|---|---|
| State | New |
| Headers |
Return-Path: <linux-sunxi+bounces-24918-sunxi=pue.re@lists.linux.dev>
X-Original-To: noreply@patchwork.local
Delivered-To: noreply@patchwork.local
Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])
by mxe881.netcup.net (Postfix) with ESMTPS id F0A291C057E
for <noreply@patchwork.local>; Mon, 3 Aug 2026 07:21:12 +0200 (CEST)
Authentication-Results: mxe881;
dkim=pass header.d=gmail.com;
spf=pass (sender IP is 172.234.253.10)
smtp.mailfrom=linux-sunxi+bounces-24918-noreply=patchwork.local@lists.linux.dev
smtp.helo=sea.lore.kernel.org
Received-SPF: pass (mxe881: domain of lists.linux.dev designates
172.234.253.10 as permitted sender) client-ip=172.234.253.10;
envelope-from=linux-sunxi+bounces-24918-noreply=patchwork.local@lists.linux.dev;
helo=sea.lore.kernel.org;
Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org
[100.90.174.1])
by sea.lore.kernel.org (Postfix) with ESMTP id D6DE6309DAC1
for <noreply@patchwork.local>; Mon, 3 Aug 2026 05:15:49 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0D09E39185A;
Mon, 3 Aug 2026 05:15:39 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com
header.b="WuZslsfX"
X-Original-To: linux-sunxi@lists.linux.dev
Received: from mail-ot1-f50.google.com (mail-ot1-f50.google.com
[209.85.210.50])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3C6A638E5ED
for <linux-sunxi@lists.linux.dev>; Mon, 3 Aug 2026 05:15:33 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
arc=none smtp.client-ip=209.85.210.50
ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1785734138; cv=none;
b=NSGJDOxn+JmvQ/40JnY/FxDnEG3d0+ICkjHmuPrHBcRQsyPUe1G9m00u+VJynUfRNxt+cIDVoAIEON5Tbyk5pOEdnci9r8m+4s+mKBBHIlNickqDw6/grPqoP91Uf3hPTPboelKwuhBzE/Ou78B1CpTZSUI0EX11xVJ7yAxmPZA=
ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1785734138; c=relaxed/simple;
bh=6OQnGRpMnyrb+bp+bGTn43xoUYsbGDK19SjrvuCzOUU=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
In-Reply-To:To:Cc;
b=W+bH64u0aIbHHVS2wohnnk3v9JappABhRSRAMzIJvwJ6B9yvg9CZNSK1vTR0ISa5/t+ZWRe3qhLPYUXUzCIrNhs5T6eYjLbdsjKv2G+X2k/cUFq52SGzfykn9rTJ0xP76LaaE6RwtsT5MKRvKPn+UHGMMMmRLN7eFrc8Obywmxo=
ARC-Authentication-Results: i=1; smtp.subspace.kernel.org;
dmarc=pass (p=none dis=none) header.from=gmail.com;
spf=pass smtp.mailfrom=gmail.com;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com
header.b=WuZslsfX; arc=none smtp.client-ip=209.85.210.50
Authentication-Results: smtp.subspace.kernel.org;
dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org;
spf=pass smtp.mailfrom=gmail.com
Received: by mail-ot1-f50.google.com with SMTP id
46e09a7af769-7e9ecb1e13cso3366344a34.3
for <linux-sunxi@lists.linux.dev>;
Sun, 02 Aug 2026 22:15:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1785734132; x=1786338932;
darn=lists.linux.dev;
h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
:content-type:mime-version:subject:date:from:from:to:cc:subject:date
:message-id:reply-to:content-type;
bh=ws0LFhZuUjZTnhwPoD3ztO16rIL3gtosandi83LBFNY=;
b=WuZslsfXI4IkD1It7KD8ELwzrH7eC320X2pb+4Gt4DWrpWarSaXAXR+m2wXTmACOi5
lmiWSDJu/9mJj7Jq50qhOBdR6WuXScfXBqoEiF9+XhtAbth0zC0MIOrYQBJuR7fmV6rG
ObyXoaCT7c8oFEOFWuBdZvGZjPRTrKVe/RjLacYazWTHdqWcNePMd+JcD6gYY2p4iQUJ
Wdq6v1g0700yQiiZzE0i2Vb4mnc/y3skPXfhYKmvMpsb4i+tluGRQqBzDMWhxhJmgZ5G
W0YPWqHNkA2soe3mTHN8bxfpw+7aAkzcVH5YEJfY8tptFWFJNthkUiWAajK8Z8VVsP0x
qMdw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1785734132; x=1786338932;
h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
:content-type:mime-version:subject:date:from:x-gm-gg
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
:content-type;
bh=ws0LFhZuUjZTnhwPoD3ztO16rIL3gtosandi83LBFNY=;
b=QvkQo7n6OvljNc6CgCPXWoc7bsoqcx1bmG/72W0Y7Xu7c8FLAVmHjdUIse9SQmcYDa
czZ3cLotDSP9IjNwfu76e2WU43sgl48aU78dUkHGVAEAzfBZ7D4fQtR6tmHuOMXyFag6
+o+qyxPC0G1GBeglfcSNo5LRUYvJrsaAv9DmMV8sahFjKILa4KH6V5iPYgyEpiWOf6BU
51A6VD0IdVBj2D64nea1Wwx82KaaCnKEbzW/ljCx7wDZtdxUulQJnY6EChHQSe/i2k/J
19uTPPTHqJBN6wxgZcq0E3Q2r752Ti53iYkFUUZAB0//xCIy1Tk8tBrJI7EoVlluPcKU
CrQw==
X-Forwarded-Encrypted: i=1;
AHgh+Rp8tOd4d+hFeQqINP0B4p0DCKBRXzZYO6s+CaUybOWBt5p4BgCVIkQ0Bc49U9cpHd8dM1VVcV64fmf+uQ==@lists.linux.dev
X-Gm-Message-State: AOJu0YwHMGcOTLQ67kkCWAJGorqZvYWpezkffXWWQpq4x3qY1dClL9NT
IsKN9kDXx+lPDISIrm9SSw3GEUXKhC6cUJSz7oPc9RTRF/kBbnJ+GXvu
X-Gm-Gg: AR+sD11mGWV8dhfQkjtrf0okDb7L9Y49CitUObOx0B5JY+gB3garj0eoEp4+m5oUg5Y
uEzcpH8FsXqr5l0HL0loDgx1xaPNqFqPeCiXyBPw6EwMdXtOhVWodC8Ev0jKbssaQzA8V4tmz8g
oG55LCCrdFrm2L/pqCz7EIvjLr4p0NnATmMwJ2p+55ITezFWnvWoAVsrHEt/i7hcHJyq/Fftt2D
pd/sFDF5IouIXDUXb3Br+Otct+IaGANWfoKsm/Rs8TGIDUDb7XG6RHL9j7WtXVJzN4RKRdugGva
KSRCY9EvWjMJ7J2fCowU4StmoK37UcUKqgfaQR9vlBmuFuDf9C3N1RQaubqFI2JGwbFXT4GNllY
rMCyDd72eggkGsOHGZOhfHPVliz3k6oCFkVN28IdhFUPuA+KGIqJFjs0PCegLVwUVIXJtbscpPj
oBOboAmlrGwgUZRfCfw8GGsjnwp7YvO78Yjb9FNaEa/TJKXtshPc9A9VFx0czdhiCTx5+dfDZWP
Qh2RIOvQqBKawfubHaSQb7I+q8LT2Ui1M+2IEN3fSGsnu0ks05mLtegpmlGhkAAOQ5VTyZyQieH
8yI2mRz32C/dmzR9fy7ZJaiEag7slP4+Dg/E+mfY6Pv72LBedtBZMcnLvzILoT0YKyg72+gRyLW
GyfFBxJD1hXlyrZWP
X-Received: by 2002:a05:6830:6737:b0:7dc:df37:844b with SMTP id
46e09a7af769-7f196baee6fmr14985696a34.4.1785734132204;
Sun, 02 Aug 2026 22:15:32 -0700 (PDT)
Received: from [127.0.1.1] (184-96-154-59.hlrn.qwest.net. [184.96.154.59])
by smtp.gmail.com with ESMTPSA id
46e09a7af769-7f18f07a5e3sm6787108a34.15.2026.08.02.22.15.30
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 02 Aug 2026 22:15:31 -0700 (PDT)
From: James Hilliard <james.hilliard1@gmail.com>
Date: Sun, 02 Aug 2026 23:14:18 -0600
Subject: [PATCH 08/21] dt-bindings: mfd: x-powers: add AC200
Precedence: bulk
X-Mailing-List: linux-sunxi@lists.linux.dev
List-Id: <linux-sunxi.lists.linux.dev>
List-Subscribe: <mailto:linux-sunxi+subscribe@lists.linux.dev>
List-Unsubscribe: <mailto:linux-sunxi+unsubscribe@lists.linux.dev>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260802-submit-acx00-of-dynamic-v1-v1-8-0a53cd9e21cc@gmail.com>
References: <20260802-submit-acx00-of-dynamic-v1-v1-0-0a53cd9e21cc@gmail.com>
In-Reply-To: <20260802-submit-acx00-of-dynamic-v1-v1-0-0a53cd9e21cc@gmail.com>
To: Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Chen-Yu Tsai <wens@kernel.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
Andre Przywara <andre.przywara@arm.com>,
Richard Genoud <richard.genoud@bootlin.com>,
Maxime Ripard <mripard@kernel.org>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Giuseppe Cavallaro <peppe.cavallaro@st.com>,
Jose Abreu <joabreu@synopsys.com>,
Maxime Chevallier <maxime.chevallier@bootlin.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>, Andrew Lunn <andrew@lunn.ch>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
Saravana Kannan <saravanak@kernel.org>, Lee Jones <lee@kernel.org>,
Heiko Stuebner <heiko@sntech.de>
Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev,
linux-kernel@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
mfd@lists.linux.dev, linux-rockchip@lists.infradead.org,
James Hilliard <james.hilliard1@gmail.com>
X-Mailer: b4 0.15.2
X-MORS-Enabled: yes
X-MORS-DOMAIN: patchwork.local
X-MORS-HOSTING: hosting172546
X-MORS-USER: hosting172546
X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?=
|
| Series |
net: phy: add X-Powers AC200/AC300 EPHY support
|
|
Commit Message
James Hilliard
Aug. 3, 2026, 5:14 a.m. UTC
The AC200 is an I2C-controlled mixed-signal companion IC containing
audio, video, RTC and Fast Ethernet PHY functions.
Describe the parent device, its input clock, required function supplies,
the optional SID bandgap calibration cell used by the vendor initialization
sequence, and its optional Ethernet PHY control child. Document the 24 and
27 MHz rates encoded by the public EPHY clock selector.
Also describe the optional open-drain, level-triggered INTB output and the
nested interrupt controller which exposes the TV encoder, Ethernet PHY and
RTC sources. Define the interrupt source numbers for child consumers.
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
.../devicetree/bindings/mfd/x-powers,ac200.yaml | 118 +++++++++++++++++++++
include/dt-bindings/mfd/x-powers,ac200.h | 13 +++
2 files changed, 131 insertions(+)
Comments
On 03/08/2026 07:14, James Hilliard wrote: > The AC200 is an I2C-controlled mixed-signal companion IC containing > audio, video, RTC and Fast Ethernet PHY functions. This fails when applied, because you did not explain the dependencies/merging of this patchset. This is THE MOST important information of cover letter. The first thing to explain. > > Describe the parent device, its input clock, required function supplies, > the optional SID bandgap calibration cell used by the vendor initialization > sequence, and its optional Ethernet PHY control child. Document the 24 and > 27 MHz rates encoded by the public EPHY clock selector. > ... > +required: > + - compatible > + - reg > + - clocks > + - ac-ldoin-supply > + - ephy-vcc-supply > + - rtc-vcc-supply > + - tv-vcc-supply > + > +dependencies: > + interrupts: [ interrupt-controller ] > + interrupt-controller: [ '#interrupt-cells', interrupts ] > + '#interrupt-cells': [ interrupt-controller ] > + nvmem-cells: [ nvmem-cell-names ] > + nvmem-cell-names: [ nvmem-cells ] Why do you need all these dependencies? What are you trying to express? > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/irq.h> > + > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + mixed-signal@10 { ... > +... > diff --git a/include/dt-bindings/mfd/x-powers,ac200.h b/include/dt-bindings/mfd/x-powers,ac200.h > new file mode 100644 > index 000000000000..cc59e2ab4912 > --- /dev/null > +++ b/include/dt-bindings/mfd/x-powers,ac200.h > @@ -0,0 +1,13 @@ > +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ > +/* > + * Interrupt numbers of the X-Powers AC200 interrupt controller. > + */ > + > +#ifndef _DT_BINDINGS_MFD_X_POWERS_AC200_H > +#define _DT_BINDINGS_MFD_X_POWERS_AC200_H > + > +#define AC200_IRQ_TVE 0 > +#define AC200_IRQ_EPHY 1 > +#define AC200_IRQ_RTC 2 Hardware constants are not really bindings, even though you use them in the driver. > + > +#endif /* _DT_BINDINGS_MFD_X_POWERS_AC200_H */ > Best regards, Krzysztof
On Mon, Aug 3, 2026 at 1:07 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > On 03/08/2026 07:14, James Hilliard wrote: > > The AC200 is an I2C-controlled mixed-signal companion IC containing > > audio, video, RTC and Fast Ethernet PHY functions. > > This fails when applied, because you did not explain the > dependencies/merging of this patchset. > > This is THE MOST important information of cover letter. The first thing > to explain. I did mention in the cover letter that the pwm series is a dependency: https://lore.kernel.org/all/20260703152215.192859-1-richard.genoud@bootlin.com/ With the pwm series first this should apply on top of master. Should I just mention that it applies on master or should I reference a specific commit hash or something? > > > > Describe the parent device, its input clock, required function supplies, > > the optional SID bandgap calibration cell used by the vendor initialization > > sequence, and its optional Ethernet PHY control child. Document the 24 and > > 27 MHz rates encoded by the public EPHY clock selector. > > > > ... > > > +required: > > + - compatible > > + - reg > > + - clocks > > + - ac-ldoin-supply > > + - ephy-vcc-supply > > + - rtc-vcc-supply > > + - tv-vcc-supply > > + > > +dependencies: > > + interrupts: [ interrupt-controller ] > > + interrupt-controller: [ '#interrupt-cells', interrupts ] > > + '#interrupt-cells': [ interrupt-controller ] > > + nvmem-cells: [ nvmem-cell-names ] > > + nvmem-cell-names: [ nvmem-cells ] > > Why do you need all these dependencies? What are you trying to express? Looks like we probably can get rid of all except these: interrupt-controller: [ interrupts ] nvmem-cells: [ nvmem-cell-names ] I was just trying to express the MFD controller dependencies. > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + #include <dt-bindings/interrupt-controller/irq.h> > > + > > + i2c { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + mixed-signal@10 { > > ... > > > +... > > diff --git a/include/dt-bindings/mfd/x-powers,ac200.h b/include/dt-bindings/mfd/x-powers,ac200.h > > new file mode 100644 > > index 000000000000..cc59e2ab4912 > > --- /dev/null > > +++ b/include/dt-bindings/mfd/x-powers,ac200.h > > @@ -0,0 +1,13 @@ > > +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ > > +/* > > + * Interrupt numbers of the X-Powers AC200 interrupt controller. > > + */ > > + > > +#ifndef _DT_BINDINGS_MFD_X_POWERS_AC200_H > > +#define _DT_BINDINGS_MFD_X_POWERS_AC200_H > > + > > +#define AC200_IRQ_TVE 0 > > +#define AC200_IRQ_EPHY 1 > > +#define AC200_IRQ_RTC 2 > > Hardware constants are not really bindings, even though you use them in > the driver. Should I do something different for this? > > > + > > +#endif /* _DT_BINDINGS_MFD_X_POWERS_AC200_H */ > > > > > Best regards, > Krzysztof
On 03/08/2026 09:54, James Hilliard wrote: > On Mon, Aug 3, 2026 at 1:07 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: >> >> On 03/08/2026 07:14, James Hilliard wrote: >>> The AC200 is an I2C-controlled mixed-signal companion IC containing >>> audio, video, RTC and Fast Ethernet PHY functions. >> >> This fails when applied, because you did not explain the >> dependencies/merging of this patchset. >> >> This is THE MOST important information of cover letter. The first thing >> to explain. > > I did mention in the cover letter that the pwm series is a dependency: > https://lore.kernel.org/all/20260703152215.192859-1-richard.genoud@bootlin.com/ Apply this patch and test. > > With the pwm series first this should apply on top of master. Should > I just mention that it applies on master or should I reference a specific > commit hash or something? > >>> >>> Describe the parent device, its input clock, required function supplies, >>> the optional SID bandgap calibration cell used by the vendor initialization >>> sequence, and its optional Ethernet PHY control child. Document the 24 and >>> 27 MHz rates encoded by the public EPHY clock selector. >>> >> >> ... >> >>> +required: >>> + - compatible >>> + - reg >>> + - clocks >>> + - ac-ldoin-supply >>> + - ephy-vcc-supply >>> + - rtc-vcc-supply >>> + - tv-vcc-supply >>> + >>> +dependencies: >>> + interrupts: [ interrupt-controller ] >>> + interrupt-controller: [ '#interrupt-cells', interrupts ] >>> + '#interrupt-cells': [ interrupt-controller ] >>> + nvmem-cells: [ nvmem-cell-names ] >>> + nvmem-cell-names: [ nvmem-cells ] >> >> Why do you need all these dependencies? What are you trying to express? > > Looks like we probably can get rid of all except these: > interrupt-controller: [ interrupts ] > nvmem-cells: [ nvmem-cell-names ] > > I was just trying to express the MFD controller dependencies. > >>> + >>> +additionalProperties: false >>> + >>> +examples: >>> + - | >>> + #include <dt-bindings/interrupt-controller/irq.h> >>> + >>> + i2c { >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + >>> + mixed-signal@10 { >> >> ... >> >>> +... >>> diff --git a/include/dt-bindings/mfd/x-powers,ac200.h b/include/dt-bindings/mfd/x-powers,ac200.h >>> new file mode 100644 >>> index 000000000000..cc59e2ab4912 >>> --- /dev/null >>> +++ b/include/dt-bindings/mfd/x-powers,ac200.h >>> @@ -0,0 +1,13 @@ >>> +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ >>> +/* >>> + * Interrupt numbers of the X-Powers AC200 interrupt controller. >>> + */ >>> + >>> +#ifndef _DT_BINDINGS_MFD_X_POWERS_AC200_H >>> +#define _DT_BINDINGS_MFD_X_POWERS_AC200_H >>> + >>> +#define AC200_IRQ_TVE 0 >>> +#define AC200_IRQ_EPHY 1 >>> +#define AC200_IRQ_RTC 2 >> >> Hardware constants are not really bindings, even though you use them in >> the driver. > > Should I do something different for this? I would just drop the defines and the header, because these are fixed hardware numbers. Best regards, Krzysztof
On 03/08/2026 10:20, Krzysztof Kozlowski wrote: >>>> --- /dev/null >>>> +++ b/include/dt-bindings/mfd/x-powers,ac200.h >>>> @@ -0,0 +1,13 @@ >>>> +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ >>>> +/* >>>> + * Interrupt numbers of the X-Powers AC200 interrupt controller. >>>> + */ >>>> + >>>> +#ifndef _DT_BINDINGS_MFD_X_POWERS_AC200_H >>>> +#define _DT_BINDINGS_MFD_X_POWERS_AC200_H >>>> + >>>> +#define AC200_IRQ_TVE 0 >>>> +#define AC200_IRQ_EPHY 1 >>>> +#define AC200_IRQ_RTC 2 >>> >>> Hardware constants are not really bindings, even though you use them in >>> the driver. >> >> Should I do something different for this? > > I would just drop the defines and the header, because these are fixed > hardware numbers. > Hm, unless they are not and you added abstract ID numbers for both DTS and drivers? Then this would be fine. Best regards, Krzysztof
> + ethernet-phy-control { > + compatible = "x-powers,ac200-ephy-ctl"; > + nvmem-cells = <&ephy_calibration>; > + nvmem-cell-names = "calibration"; > + phy-mode = "rmii"; > + }; What do you mean by an ethernet PHY control? I assume this is not an actual Ethernet PHY, but some control logic around it? Where is the ethernet PHY itself? Andrew
On Mon, Aug 3, 2026 at 2:21 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > On 03/08/2026 10:20, Krzysztof Kozlowski wrote: > >>>> --- /dev/null > >>>> +++ b/include/dt-bindings/mfd/x-powers,ac200.h > >>>> @@ -0,0 +1,13 @@ > >>>> +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ > >>>> +/* > >>>> + * Interrupt numbers of the X-Powers AC200 interrupt controller. > >>>> + */ > >>>> + > >>>> +#ifndef _DT_BINDINGS_MFD_X_POWERS_AC200_H > >>>> +#define _DT_BINDINGS_MFD_X_POWERS_AC200_H > >>>> + > >>>> +#define AC200_IRQ_TVE 0 > >>>> +#define AC200_IRQ_EPHY 1 > >>>> +#define AC200_IRQ_RTC 2 > >>> > >>> Hardware constants are not really bindings, even though you use them in > >>> the driver. > >> > >> Should I do something different for this? > > > > I would just drop the defines and the header, because these are fixed > > hardware numbers. > > > > Hm, unless they are not and you added abstract ID numbers for both DTS > and drivers? Then this would be fine. Yeah, these are more abstract ID numbers, they aren't really hardware constants as the driver translates them. > > Best regards, > Krzysztof
On Mon, Aug 3, 2026 at 7:18 AM Andrew Lunn <andrew@lunn.ch> wrote: > > > + ethernet-phy-control { > > + compatible = "x-powers,ac200-ephy-ctl"; > > + nvmem-cells = <&ephy_calibration>; > > + nvmem-cell-names = "calibration"; > > + phy-mode = "rmii"; > > + }; > > What do you mean by an ethernet PHY control? > > I assume this is not an actual Ethernet PHY, but some control logic > around it? Where is the ethernet PHY itself? Correct, this is not the Ethernet PHY itself. It is the package-specific sideband control block that must be configured before the normal Clause 22 PHY registers become usable. For AC200, this control block is accessed through the parent AC200 I2C regmap. For AC300, the equivalent control block is accessed through a separate non-PHY Clause 22 address. The actual Ethernet PHY is a separate device on the MAC's MDIO bus. The shared PHY driver for that device is added in patch 16: https://lore.kernel.org/linux-sunxi/20260802-submit-acx00-of-dynamic-v1-v1-16-0a53cd9e21cc@gmail.com/ The later board DTS patches instantiate it as an ethernet-phy node beneath the MAC's MDIO bus and reference the appropriate sideband control provider. > > Andrew
On Tue, Aug 4, 2026 at 12:45 AM James Hilliard <james.hilliard1@gmail.com> wrote: > > On Mon, Aug 3, 2026 at 7:18 AM Andrew Lunn <andrew@lunn.ch> wrote: > > > > > + ethernet-phy-control { > > > + compatible = "x-powers,ac200-ephy-ctl"; > > > + nvmem-cells = <&ephy_calibration>; > > > + nvmem-cell-names = "calibration"; > > > + phy-mode = "rmii"; > > > + }; > > > > What do you mean by an ethernet PHY control? > > > > I assume this is not an actual Ethernet PHY, but some control logic > > around it? Where is the ethernet PHY itself? > > Correct, this is not the Ethernet PHY itself. It is the package-specific > sideband control block that must be configured before the normal Clause 22 > PHY registers become usable. For AC200, this control block is accessed > through the parent AC200 I2C regmap. For AC300, the equivalent control block > is accessed through a separate non-PHY Clause 22 address. Basically, all the PHY behavior that is normally configured using strapping pins on a discrete PHY is done over this I2C channel. > The actual Ethernet PHY is a separate device on the MAC's MDIO bus. The > shared PHY driver for that device is added in patch 16: > > https://lore.kernel.org/linux-sunxi/20260802-submit-acx00-of-dynamic-v1-v1-16-0a53cd9e21cc@gmail.com/ > > The later board DTS patches instantiate it as an ethernet-phy node beneath > the MAC's MDIO bus and reference the appropriate sideband control provider. > > > > > Andrew
On Mon, Aug 3, 2026 at 2:20 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > On 03/08/2026 09:54, James Hilliard wrote: > > On Mon, Aug 3, 2026 at 1:07 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > >> > >> On 03/08/2026 07:14, James Hilliard wrote: > >>> The AC200 is an I2C-controlled mixed-signal companion IC containing > >>> audio, video, RTC and Fast Ethernet PHY functions. > >> > >> This fails when applied, because you did not explain the > >> dependencies/merging of this patchset. > >> > >> This is THE MOST important information of cover letter. The first thing > >> to explain. > > > > I did mention in the cover letter that the pwm series is a dependency: > > https://lore.kernel.org/all/20260703152215.192859-1-richard.genoud@bootlin.com/ > > Apply this patch and test. > How were you applying the series? I noticed sashiko was also failing to apply the series: https://sashiko.dev/#/patchset/20260802-submit-acx00-of-dynamic-v1-v1-0-0a53cd9e21cc%40gmail.com But that appeared to be due to sashiko missing dependency resolution, I went ahead and created a PR that should hopefully fix that: https://github.com/sashiko-dev/sashiko/pull/389
> How were you applying the series?
All the networking patches will be applied to net-next.
https://www.kernel.org/doc/html/latest/process/maintainer-netdev.html
You are going to need to split them out.
Andrew
On Tue, Aug 04, 2026 at 12:51:57AM +0800, Chen-Yu Tsai wrote: > On Tue, Aug 4, 2026 at 12:45 AM James Hilliard > <james.hilliard1@gmail.com> wrote: > > > > On Mon, Aug 3, 2026 at 7:18 AM Andrew Lunn <andrew@lunn.ch> wrote: > > > > > > > + ethernet-phy-control { > > > > + compatible = "x-powers,ac200-ephy-ctl"; > > > > + nvmem-cells = <&ephy_calibration>; > > > > + nvmem-cell-names = "calibration"; > > > > + phy-mode = "rmii"; > > > > + }; > > > > > > What do you mean by an ethernet PHY control? > > > > > > I assume this is not an actual Ethernet PHY, but some control logic > > > around it? Where is the ethernet PHY itself? > > > > Correct, this is not the Ethernet PHY itself. It is the package-specific > > sideband control block that must be configured before the normal Clause 22 > > PHY registers become usable. For AC200, this control block is accessed > > through the parent AC200 I2C regmap. For AC300, the equivalent control block > > is accessed through a separate non-PHY Clause 22 address. > > Basically, all the PHY behavior that is normally configured using strapping > pins on a discrete PHY is done over this I2C channel. To me this should still be part of the PHY driver, not a separate driver. The driver drives the hardware, it should drive all of it, all in one place. Andrew
On 03/08/2026 23:34, James Hilliard wrote: > On Mon, Aug 3, 2026 at 2:20 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: >> >> On 03/08/2026 09:54, James Hilliard wrote: >>> On Mon, Aug 3, 2026 at 1:07 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: >>>> >>>> On 03/08/2026 07:14, James Hilliard wrote: >>>>> The AC200 is an I2C-controlled mixed-signal companion IC containing >>>>> audio, video, RTC and Fast Ethernet PHY functions. >>>> >>>> This fails when applied, because you did not explain the >>>> dependencies/merging of this patchset. >>>> >>>> This is THE MOST important information of cover letter. The first thing >>>> to explain. >>> >>> I did mention in the cover letter that the pwm series is a dependency: >>> https://lore.kernel.org/all/20260703152215.192859-1-richard.genoud@bootlin.com/ >> >> Apply this patch and test. >> > > How were you applying the series? b4. But it does not matter, your patchset simply fails for maintainer. AGAIN: apply this one and test. Best regards, Krzysztof
diff --git a/Documentation/devicetree/bindings/mfd/x-powers,ac200.yaml b/Documentation/devicetree/bindings/mfd/x-powers,ac200.yaml new file mode 100644 index 000000000000..017629cca73c --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/x-powers,ac200.yaml @@ -0,0 +1,118 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/x-powers,ac200.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: X-Powers AC200 mixed-signal IC + +maintainers: + - James Hilliard <james.hilliard1@gmail.com> + +description: + The AC200 is a mixed-signal companion IC containing audio, video, RTC and + Fast Ethernet PHY functions. Its control registers are accessed over I2C. + +properties: + compatible: + const: x-powers,ac200 + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + description: + AC200 input clock. When using the Ethernet PHY, its configured rate must + be 24 or 27 MHz, matching the rates encoded by the documented EPHY clock + selector. + + interrupts: + maxItems: 1 + description: + The INTB pin, which is a shared open-drain, level-triggered output for + the TV encoder, Ethernet PHY and RTC interrupt sources. + + interrupt-controller: true + + '#interrupt-cells': + const: 1 + description: + The interrupt number, as defined in + include/dt-bindings/mfd/x-powers,ac200.h. + + ac-ldoin-supply: + description: 3.3 V supply for the audio-codec LDO input + + ephy-vcc-supply: + description: 3.3 V supply for the Ethernet PHY analog front end + + rtc-vcc-supply: + description: 3.3 V supply for the RTC + + tv-vcc-supply: + description: 3.3 V supply for the TV encoder DAC + + nvmem-cells: + maxItems: 1 + description: + Optional SoC SID cell containing the AC200 bandgap calibration value. + The trim is used by the TV encoder; the public AC200 datasheet does not + document the corresponding register fields. + + nvmem-cell-names: + const: bandgap + + ethernet-phy-control: + $ref: /schemas/net/x-powers,ac200-ephy-ctl.yaml# + +required: + - compatible + - reg + - clocks + - ac-ldoin-supply + - ephy-vcc-supply + - rtc-vcc-supply + - tv-vcc-supply + +dependencies: + interrupts: [ interrupt-controller ] + interrupt-controller: [ '#interrupt-cells', interrupts ] + '#interrupt-cells': [ interrupt-controller ] + nvmem-cells: [ nvmem-cell-names ] + nvmem-cell-names: [ nvmem-cells ] + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/irq.h> + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + mixed-signal@10 { + compatible = "x-powers,ac200"; + reg = <0x10>; + clocks = <&pwm 5>; + ac-ldoin-supply = <®_3v3>; + ephy-vcc-supply = <®_3v3>; + rtc-vcc-supply = <®_3v3>; + tv-vcc-supply = <®_3v3>; + interrupt-parent = <&pio>; + interrupts = <1 20 IRQ_TYPE_LEVEL_LOW>; + interrupt-controller; + #interrupt-cells = <1>; + nvmem-cells = <&ac200_bandgap>; + nvmem-cell-names = "bandgap"; + + ethernet-phy-control { + compatible = "x-powers,ac200-ephy-ctl"; + nvmem-cells = <&ephy_calibration>; + nvmem-cell-names = "calibration"; + phy-mode = "rmii"; + }; + }; + }; +... diff --git a/include/dt-bindings/mfd/x-powers,ac200.h b/include/dt-bindings/mfd/x-powers,ac200.h new file mode 100644 index 000000000000..cc59e2ab4912 --- /dev/null +++ b/include/dt-bindings/mfd/x-powers,ac200.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ +/* + * Interrupt numbers of the X-Powers AC200 interrupt controller. + */ + +#ifndef _DT_BINDINGS_MFD_X_POWERS_AC200_H +#define _DT_BINDINGS_MFD_X_POWERS_AC200_H + +#define AC200_IRQ_TVE 0 +#define AC200_IRQ_EPHY 1 +#define AC200_IRQ_RTC 2 + +#endif /* _DT_BINDINGS_MFD_X_POWERS_AC200_H */