mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzk@kernel.org>
To: BG9OXA <bg9oxa@163.com>, Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Heiko Stuebner <heiko@sntech.de>
Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org,
	Andrew Lunn <andrew@lunn.ch>
Subject: Re: [PATCH v6 0/2] arm64: dts: rockchip: add ALIENTEK QuarkPi-CA2
Date: Fri, 2 Oct 2026 11:13:00 +0200	[thread overview]
Message-ID: <f41a6261-ae04-44cb-b01f-b1da02d9cb80@kernel.org> (raw)
In-Reply-To: <20261002-b4-quarkpi-ca2-v6-0-9fc33f27ebb9@163.com>

On 02/10/2026 05:52, BG9OXA wrote:
> Hi all,
> 
> This short series adds support for the ALIENTEK QuarkPi-CA2, an RK3588S
> based single board computer.
> 
> Board summary:
>  - Rockchip RK3588S (4x Cortex-A76 + 4x Cortex-A55), LPDDR4x
>  - eMMC, microSD slot, M.2 socket (PCIe 2.0 x1)
>  - Gigabit Ethernet, USB 3.0 Type-A, USB 2.0 Type-A ports and a USB-C
>    port (USB 2.0/3.0 plus DisplayPort altmode, two DP lanes)
>  - HDMI output, three MIPI CSI and two MIPI DSI connectors
>  - ES8388 analog codec with 3.5 mm jack, HUSB311 USB-C PD controller
>  - 40-pin header, RK806 PMIC, IR receiver
>  - No SPI-NOR; the vendor bootloader reads extlinux.conf from the SD/eMMC
>    boot partition
> 
> Patch 1 documents the board in the Rockchip platform bindings, patch 2
> adds the device tree itself (plus its Makefile entry).  The "alientek"
> vendor prefix is already present in vendor-prefixes.yaml, so no vendor
> prefix change is needed.
> 
> Tested on hardware: boot from SD and eMMC, gigabit Ethernet, the USB 2.0
> ports, the USB 3.0 Type-A port (UAS storage device, 5000 Mbps link,
> 309 MB/s), USB-C DisplayPort altmode, HDMI video and audio, ES8388 analog
> playback over the 3.5 mm jack (checked with music), the ADC keys, the IR
> receiver, the PWM fan and ramoops.  The M.2 socket is described following
> the vendor design; no suitable device was available here to exercise that
> link.  dtbs_check is clean for both patches.
> 
> Notes worth the reviewer's attention:
> 
>  * The codec is clocked through I2S0_8CH_MCLKOUT_TO_IO rather than the
>    internal I2S0_8CH_MCLKOUT mux that the other boards reference.  On
>    RK3588 the MCLK-to-IO routing is a gate in SYS_GRF SOC_CON6 which the
>    bootloader leaves closed, so nothing drives MCLK out to the codec;
>    pointing "clocks" at the _TO_IO clock makes the codec driver open that
>    gate at probe, while "assigned-clocks" stays on the internal mux to
>    keep the 12.288 MHz rate.  Verified on hardware: i2s0_8ch_mclkout_to_io
>    is enabled with the codec (1-0011) as its consumer, and playback works.
> 
>  * The codec compatible list is "everest,es8388", "everest,es8328", as
>    documented in everest,es8328.yaml and as used by the other boards with
>    this part.  The standalone ES8323 driver cannot instantiate a card on
>    this board at all, which is how the fitted part was confirmed.
> 
>  * Analog capture from the 3.5 mm TRRS jack (headset microphone) does not
>    work yet: the capture stream returns a constant idle pattern (0xFFFF)
>    although the analog bypass path works, and the DAPM routes and the ALSA
>    controls look correct.  This looks like the same ES8328 capture problem
>    that has been reported for other boards, so I kept it out of this
>    series.
> 
>  * The USB 3.0 Type-A port is wired to usb_host2_xhci through combphy2_psu;
>    both are enabled here, as in the vendor BSP.  combphy2_psu is free on
>    this board because the M.2 socket uses pcie2x1l2 (combphy0_ps).
> 
>  * The 3.5 mm jack is fed from the codec outputs (LOUT1/ROUT1) and from the
>    headphone amplifier outputs, as in the vendor tree.  Describing only the
>    amplifier path was tried as well, and on this board that gives no output
>    at the jack at all (verified on hardware with a test tone and with music
>    playback), so both routes are kept.
> 
>  * The board has three MIPI CSI and two MIPI DSI connectors, but no camera
>    or panel is described here: those are plug-in modules.  Enabling the
>    CSI-2 receiver without a sensor attached makes the driver fail to find
>    its endpoint at probe (verified on hardware), so, as in the vendor
>    tree, camera and panel descriptions belong in overlays.
> 
>  * GbE: phy-mode is "rgmii-id".  As you explained, phy-mode describes the
>    PCB, and this PCB does not add RX/TX delays, so the delays have to come
>    from the PHY.  I went through where each delay is actually applied:
> 
>      - MAC side: none.  dwmac-rk takes the delay values from the DT only
>        for the plain "rgmii", "rgmii-rxid" and "rgmii-txid" modes; for
>        PHY_INTERFACE_MODE_RGMII_ID it calls set_to_rgmii(priv, 0, 0), so
>        the RGMII delay registers are written with zero.  (The driver still
>        logs "set tx_delay to 0x30"/"set rx_delay to 0x10" when the
>        properties are absent, but those values are only the parse-time
>        defaults and do not reach the GRF in this mode.)
> 
>      - PHY side: the delays.  The Motorcomm driver programs its internal
>        RGMII delay for RGMII_ID, using 1950 ps for both directions when
>        rx-internal-delay-ps / tx-internal-delay-ps are not specified,
>        which is its documented default for both directions.
> 
>     So with "rgmii-id" nothing is added twice.  Measured on hardware with
>     iperf3 at gigabit line rate: in one 900 second run, 96.8 GB transferred
>     at 924 Mbit/s with zero retransmissions; in a second run on the final
>     revision of the series, 300 seconds in each direction, 925 Mbit/s
>     transmit and 937 Mbit/s receive, with 114 and 23 retransmits out of
>     roughly 24 million segments each way (a few ppm).  rx_crc_errors and
>     the other error counters stay at zero in both runs.
> 
> This is my first patch to the Rockchip platform.  I am a Chinese amateur
> electronics hobbyist (amateur radio callsign BG9OXA) working on this board
> in my spare time, so please point out anything that does not follow the
> expected style.
> 
> Changes in v6:
> - My oversight, sorry for the noise: when I switched phy-mode to "rgmii-id"
>   in v5 I forgot to update the commit message of patch 2/2 at the same time,
>   so the message still described the v3/v4 approach (delays applied on the
>   MAC side) while the code had moved to the PHY-side delays.  The message now
>   describes what the code does: the PHY adds the delays internally and the
>   MAC adds none, so nothing is applied twice.  The device tree is not touched
>   by this change; the compiled .dtb is byte-for-byte identical to the one in
>   v5 (verified).
> - Keep the headphone routing as in v5.  On this board the 3.5 mm jack needs
>   the direct codec output routes: describing only the amplifier path gives
>   no output at the jack, which I verified on hardware with a test tone and
>   with music playback.  So the parallel routes are intentional here and
>   were not changed.
> - Link to v5: https://lists.infradead.org/pipermail/linux-rockchip/2026-October/077620.html
> 
> Changes in v5:
> - Use phy-mode = "rgmii-id" and let the PHY add the RGMII delays, instead of
>   "rgmii" with the delay applied on the MAC side, as pointed out by Andrew
>   Lunn.  The MAC adds no delay in this mode, so nothing is applied twice;
>   see the GbE note above for the details and the measurements.
> - Move the Makefile entry so that the list stays in alphabetical order.
> - Rename the headphone amplifier node to the generic name "audio-amplifier";
>   the labels are unchanged, so no reference is affected.  The audio routing
>   itself is unchanged, see the note above.
> - Set the Type-C connector data-role to "host".  The XHCI controller is
>   host-only on this board (dr_mode = "host" and no usb-role-switch), and
>   the vendor DT lists "dual" only because the vendor configures that
>   controller as OTG.  The power role stays "dual", as the board can be
>   powered over Type-C.
> - Link to v4: https://lists.infradead.org/pipermail/linux-rockchip/2026-October/077616.html
> 
> Changes in v4:
> - Add the missing blank line between the include block and the root node.
> - Fix the node indentation in a few places.  That cleanup is whitespace only;
>   the compiled .dtb is unchanged by it (verified byte-for-byte).
> - Rename the Type-C controller node to the generic name "typec-port", as the
>   other boards using this part do, and drop its redundant status property.
> - Give the fixed regulator nodes the "regulator-" name prefix, as the other
>   boards do; the labels are unchanged, so no reference is affected.
> - Route the Type-C SuperSpeed lanes through the USBDP PHY, as the other
>   RK3588 boards do, so that the PHY does the orientation muxing.
> - Feed the headphone amplifier from one codec output pair only; that is what
>   the other ES8388 boards do.
> - Cc the people and lists reported by scripts/get_maintainer.pl.
> - Link to v3: https://lists.infradead.org/pipermail/linux-rockchip/2026-October/077611.html
> 


This looks a lot like LLM generated stuff. Don't. The easiest way to
annoy maintainers. We are not going to read long LLM-generated
paragraphs for trivial stuff, because trivial stuff should be explained
with one sentence.

Best regards,
Krzysztof

      parent reply	other threads:[~2026-10-02  9:13 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-02  3:52 BG9OXA
2026-10-02  3:52 ` [PATCH v6 1/2] dt-bindings: arm: " BG9OXA
2026-10-02  9:10   ` Krzysztof Kozlowski
2026-10-02  3:52 ` [PATCH v6 2/2] arm64: dts: " BG9OXA
2026-10-02  9:13 ` Krzysztof Kozlowski [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f41a6261-ae04-44cb-b01f-b1da02d9cb80@kernel.org \
    --to=krzk@kernel.org \
    --cc=andrew@lunn.ch \
    --cc=bg9oxa@163.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=heiko@sntech.de \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®