From nobody Mon Feb 9 12:24:59 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (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 2CFDB2FC006 for ; Thu, 15 Jan 2026 19:18:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768504710; cv=none; b=ntnxpYr/AxTDF2tpWP4qeGTzDm9sqPRl+lQODnpXOsw1IX8tIkQcWUTnFAKmC+o/FVeji5SZV3G/Bdn1s3Cp9Agx/ru+kizJMT+/itNoDOgiPXs+yezPHyD0WST5WOc7K2fLDPv4zpiBR5LFICw0APia0UVJAtexMBYjvCW6gMU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768504710; c=relaxed/simple; bh=9hhnvku6/o7SnlNe4s7OxE/c/yY1MeLPXn9ZiuwHDts=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JrY5lnsHnN/X1ycsBCw6LhOFPqkR1yBu2jzr0WowmR1/G0Z3lvngAKReMEMmV0aZz0uZn/whM4Sz4SF9tLsglsSkFxLqUGr5PQO/QeE3j0WdRuEAkZc+8dKiJ8Ael0BK9vGAirtTka+YmhD3YdRlyTn5Q4Ks8ypsGXy+bWeH57I= 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=D/vJjUJf; arc=none smtp.client-ip=209.85.221.43 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D/vJjUJf" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-4327555464cso728417f8f.1 for ; Thu, 15 Jan 2026 11:18:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768504706; x=1769109506; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=u4OBbtgA8tqfAE3cwS/lYCrnVUiM8rMD+darqSO7wyo=; b=D/vJjUJfz8n1ndJ9FhhzeB/0Nf/qhk6TuIV6uvN+qiv31HQ8CiZp2g2jJFYbbSQo2N PBgk8q3lNIfaml8JLF5Tm+4O+jORkFahAxAC78O9kpNX0SJlwLbyz9f+UDeoFA1CCcpt FaNinXLnInENznRLixzqXOcjiK6KnrbV0CzuvHYyBxWKzVpzqs7b1OrfvZs1YoAerKmE tLKeuIi/MePBsDnesybxEWwmIUqYNO1SpWQD8L1Xy5WQsGgvoH8jdaZ4lXj2r9FXd+1F s+aXtnJSch4iBfbBQFyk3VXzBJ2KovC2gnNOKxAqN8sSzozlW+1+r5h0r0pA6zhmML4O YnLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768504706; x=1769109506; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=u4OBbtgA8tqfAE3cwS/lYCrnVUiM8rMD+darqSO7wyo=; b=U1Tv4RcHsRh+WSVTZmgnnKedqRz1Xh+ke+VAohmen9yRpxSJ/jUVjgkUHCroxgt5ht 8svVnQ2ZAAWPDlCMSJbj1wwSffZiozHhFpifoF8sYEPoT1KVHzqgg2LC8ZxVw3eimKZX VOqtZRit4yp7CiuLR69Fkjea/DlfUiBw2Qy5WteKsEQ04SCL8xL1SHpAAIeLfLQmLytJ CQA3YB5PZPKr291BoyPFfvSHhJDxqC3oU6rqAEDQK6eYsvZcciDOZj0CFEMUSeblocN7 HpxJeXbE2lMMkYVseFsuKpQLaoOaNtV78CTzkK9Ys9F10yMyb6eJLD1LDlVUxVT+SV3F 2uIg== X-Forwarded-Encrypted: i=1; AJvYcCWT7KQ+8Ia/ELqBhdYZe9SAGC4Ddudc/5pZsjb4x95fiLirveAFePvVzCxFsaaSqsVB2Pfz/ktF72MC3y0=@vger.kernel.org X-Gm-Message-State: AOJu0YxPyw7JVZjLmr7to90u8CF2XacP+gXAlTiZPJvWYgspZVHujU53 pdMRToaAZcBP6rsNXKlGkRzBNJiTEjQwz9VC9aDVyUCxuwMY4e4vgXh0 X-Gm-Gg: AY/fxX7k2Fm3HCm3JKWpgae4e6keMFlGDpyw5ahBCh4/FSquPlt7R0RcD4JkEUtKgA7 mVbh4V7kYPpiCyB3A1fsB8WiCLsb0wIp14cMT0CfX2DnV3BkreGL9ppO0LbwH37oBzm1dOD0ZCv kT7zn5JHQ/KZ9rPXL+UOUi4C4oBOm1jR8HmWbaC+Oq4NY6AQge+zLaiy4Rn4X/cVhqF53IGvG4p Ea+XZWxqUFyEJA3QwQpkLKJzZiatuxGxiU2i+WB4zq6fqfVdiwsruJWbAfWmEkO0RCgZldWXeZ6 +4NnTpMWDWMx/LpJPenm4r4oeY6Aitd5iWeTFBg3cqxiV9FkV/jBuGh6LgixABbpDoRc7ZR9ehp KChiwe8AvGfUtb05VsWTyHPyCTqkL9WfX+ePfwekZ3Xf5PbEZSTgc+Mk8RcyexBCgnVN0r3IDGu eB79sW70K4W4KxO3SXtrYOM2jgtrStUrSdkI1xueZNcISF X-Received: by 2002:a5d:5848:0:b0:42c:b8fd:21b4 with SMTP id ffacd0b85a97d-43569bd3483mr527130f8f.57.1768504706222; Thu, 15 Jan 2026 11:18:26 -0800 (PST) Received: from [127.0.1.1] (bba-94-59-215-181.alshamil.net.ae. [94.59.215.181]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43569921dedsm692734f8f.9.2026.01.15.11.18.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 11:18:25 -0800 (PST) From: "Anton D. Stavinskii" Date: Thu, 15 Jan 2026 23:17:45 +0400 Subject: [PATCH 8/8] riscv: dts: sophgo: add Milk-V Duo 256M board dts Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260115-cv1800b-i2s-driver-v1-8-e8b22b8578ab@gmail.com> References: <20260115-cv1800b-i2s-driver-v1-0-e8b22b8578ab@gmail.com> In-Reply-To: <20260115-cv1800b-i2s-driver-v1-0-e8b22b8578ab@gmail.com> To: Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen Wang , Inochi Amaoto , Jaroslav Kysela , Takashi Iwai , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: linux-sound@vger.kernel.org, devicetree@vger.kernel.org, sophgo@lists.linux.dev, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, "Anton D. Stavinskii" X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768504677; l=6398; i=stavinsky@gmail.com; s=20260115; h=from:subject:message-id; bh=9hhnvku6/o7SnlNe4s7OxE/c/yY1MeLPXn9ZiuwHDts=; b=j7D/duGQ4GkjR/PUiJLYxY2ySpoiZWhKC8trthmiOSLexzpyG9Kh+TZAgY8WBeTjjKbHh/F7s iKkJ7H/r284CqabbvOv7ff/QWJ2jz2zIhswlcsz/Ux6bUvDo5XxUoDn X-Developer-Key: i=stavinsky@gmail.com; a=ed25519; pk=2WxGZ1zd1vQwSPFCSks6zrADqUDBUdtq39lElk4ZE7Q= Example of usage internal dac/adc and external I2S mic The example shows how to use the card and will actually work other boards. Fixed clocks needed to make simple card make initial .set_sysclk with proper clock rates. Same for DAC. I2S3 has to be started not only for DAC but for the ADC also because it provides mclk for both. dai-link@2 will only work if registers are set according to this issue https://github.com/sophgo/sophgo-doc/issues/174#event-21395297524 in other case i2s2 will not output clocks and data. Those changes are not connected to the driver itself, but for another subsystem which is not yet ipmlemented. The following config properly works for MilkV Duo/256Mm, Module. Basically everything with sg2000/sg2002 but on some boards i2s2 output pins are soldered to Ethernet module. In Milk 256M they are free to use as external DAC/ADC. Signed-off-by: Anton D. Stavinskii --- arch/riscv/boot/dts/sophgo/Makefile | 1 + .../boot/dts/sophgo/sg2002-milkv-duo-256m.dts | 231 +++++++++++++++++= ++++ 2 files changed, 232 insertions(+) diff --git a/arch/riscv/boot/dts/sophgo/Makefile b/arch/riscv/boot/dts/soph= go/Makefile index 6f65526d4193..c8901ff680cb 100644 --- a/arch/riscv/boot/dts/sophgo/Makefile +++ b/arch/riscv/boot/dts/sophgo/Makefile @@ -6,3 +6,4 @@ dtb-$(CONFIG_ARCH_SOPHGO) +=3D sg2042-milkv-pioneer.dtb dtb-$(CONFIG_ARCH_SOPHGO) +=3D sg2042-evb-v1.dtb dtb-$(CONFIG_ARCH_SOPHGO) +=3D sg2042-evb-v2.dtb dtb-$(CONFIG_ARCH_SOPHGO) +=3D sg2044-sophgo-srd3-10.dtb +dtb-$(CONFIG_ARCH_SOPHGO) +=3D sg2002-milkv-duo-256m.dtb diff --git a/arch/riscv/boot/dts/sophgo/sg2002-milkv-duo-256m.dts b/arch/ri= scv/boot/dts/sophgo/sg2002-milkv-duo-256m.dts new file mode 100644 index 000000000000..cc33c4355969 --- /dev/null +++ b/arch/riscv/boot/dts/sophgo/sg2002-milkv-duo-256m.dts @@ -0,0 +1,231 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2024 Thomas Bonnefille + */ + +/dts-v1/; + +#include "sg2002.dtsi" + +/ { + model =3D "Milk-V duo 256M"; + compatible =3D "milkv,duo-256m", + "sipeed,licheerv-nano", + "sophgo,sg2002"; + + aliases { + gpio0 =3D &gpio0; + gpio1 =3D &gpio1; + gpio2 =3D &gpio2; + gpio3 =3D &gpio3; + serial0 =3D &uart0; + serial1 =3D &uart1; + serial2 =3D &uart2; + serial3 =3D &uart3; + serial4 =3D &uart4; + }; + + chosen { + stdout-path =3D "serial0:115200n8"; + }; +}; + +&osc { + clock-frequency =3D <25000000>; +}; + +&pinctrl { + uart0_cfg: uart0-cfg { + uart0-pins { + pinmux =3D , + ; + bias-pull-up; + drive-strength-microamp =3D <10800>; + power-source =3D <3300>; + }; + }; + + sdhci0_cfg: sdhci0-cfg { + sdhci0-clk-pins { + pinmux =3D ; + bias-pull-up; + drive-strength-microamp =3D <16100>; + power-source =3D <3300>; + }; + + sdhci0-cmd-pins { + pinmux =3D ; + bias-pull-up; + drive-strength-microamp =3D <10800>; + power-source =3D <3300>; + }; + + sdhci0-data-pins { + pinmux =3D , + , + , + ; + bias-pull-up; + drive-strength-microamp =3D <10800>; + power-source =3D <3300>; + }; + + sdhci0-cd-pins { + pinmux =3D ; + bias-pull-up; + drive-strength-microamp =3D <10800>; + power-source =3D <3300>; + }; + }; +}; + +&sdhci0 { + pinctrl-0 =3D <&sdhci0_cfg>; + pinctrl-names =3D "default"; + status =3D "okay"; + bus-width =3D <4>; + no-1-8-v; + no-mmc; + no-sdio; + disable-wp; +}; + +&usb { + dr_mode =3D "peripheral"; + status =3D "okay"; + g-rx-fifo-size =3D <1536>; + g-tx-fifo-size =3D <128 128 64 64 64 64 32 32>; +}; + +&uart0 { + pinctrl-0 =3D <&uart0_cfg>; + pinctrl-names =3D "default"; + status =3D "okay"; +}; + +&dmac { + status =3D "okay"; +}; + +&dmamux { + status =3D "okay"; +}; + +&pinctrl { + i2s2_cfg: i2s2-cfg { + i2s2-out-pins { + pinmux =3D , + , + ; + + drive-strength-microamp =3D <15700>; + power-source =3D <1800>; + }; + + i2s2-in-pins { + pinmux =3D ; + power-source =3D <1800>; + }; + }; +}; + +&i2s0 { + #sound-dai-cells =3D <0>; + status =3D "okay"; +}; + +&i2s2 { + pinctrl-0 =3D <&i2s2_cfg>; + pinctrl-names =3D "default"; + #sound-dai-cells =3D <0>; + status =3D "okay"; +}; + +&i2s3 { + #sound-dai-cells =3D <0>; + status =3D "okay"; +}; + +/ { + int_adc: codec@300a100 { + compatible =3D "sophgo,cv1800b-sound-adc"; + #sound-dai-cells =3D <0>; + reg =3D <0x300a100 0x100>; + }; + + int_dac: codec@300a000 { + compatible =3D "sophgo,cv1800b-sound-dac"; + #sound-dai-cells =3D <0>; + reg =3D <0x300a000 0x100>; + }; + + ext_adc: my-ext-adc { + compatible =3D "invensense,ics43432"; + #sound-dai-cells =3D <0>; + }; + + sound { + compatible =3D "simple-audio-card"; + simple-audio-card,name =3D "cv1800b card"; + #address-cells =3D <1>; + #size-cells =3D <0>; + + simple-audio-card,dai-link@0 { + reg =3D <0>; + format =3D "i2s"; + bitclock-master =3D <&clock_master0>; + frame-master =3D <&clock_master0>; + + codec { + sound-dai =3D <&int_dac>; + }; + + clock_master0: cpu { + system-clock-frequency =3D <12288000>; + system-clock-fixed; + system-clock-direction-out; + mclk-fs =3D <256>; + sound-dai =3D <&i2s3>; + }; + }; + + simple-audio-card,dai-link@1 { + reg =3D <1>; + format =3D "i2s"; + bitclock-master =3D <&clock_master1>; + frame-master =3D <&clock_master1>; + + clock_master1: codec { + mclk-fs =3D <256>; + system-clock-frequency =3D <12288000>; + system-clock-fixed; + sound-dai =3D <&int_adc>; + }; + + cpu { + mclk-fs =3D <256>; + system-clock-frequency =3D <12288000>; + system-clock-fixed; + sound-dai =3D <&i2s0>; + }; + }; + + simple-audio-card,dai-link@2 { + reg =3D <2>; + format =3D "i2s"; + bitclock-master =3D <&clock_master2>; + frame-master =3D <&clock_master2>; + + codec { + sound-dai =3D <&ext_adc>; + }; + + clock_master2: cpu { + mclk-fs =3D <256>; + system-clock-frequency =3D <12288000>; + system-clock-fixed; + sound-dai =3D <&i2s2>; + }; + }; + }; +}; --=20 2.43.0