From patchwork Fri Apr 24 09:25:48 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Riabenko X-Patchwork-Id: 2029 Return-Path: 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 A45ED1C00A1 for ; Fri, 24 Apr 2026 11:27:19 +0200 (CEST) Authentication-Results: mxe881; dkim=fail header.d=riabenko.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-22933-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-22933-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 E259D3007E15 for ; Fri, 24 Apr 2026 09:26:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9E92B37C901; Fri, 24 Apr 2026 09:26:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=riabenko.com header.i=@riabenko.com header.b="iqqfigbn" X-Original-To: linux-sunxi@lists.linux.dev Received: from lab.riabenko.com (lab.riabenko.com [185.143.146.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 523D7292B4B for ; Fri, 24 Apr 2026 09:26:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.143.146.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777022769; cv=none; b=cmo3ypqfNS8V4OKTmSKO8rjPvT1RBTSRRCh19ZYk6PiN6rtJyRvQtf09c/k0DzlAR30AN8MPJfxIbY7q2ieCMxpsm2+Q8Ygf2LyrED4MH9FYHm5ZaEwG6ASq6RWzqr+3LgJeAIy4GLwONZ7lBu2cQmo2oW4d7Bm+ZLZAWrLPNyU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777022769; c=relaxed/simple; bh=ZD8xqCDmTaHPdGD24O/GyX7N720oYToZUQSfgNScQ8Y=; h=Message-ID:Subject:From:To:Date:Content-Type:MIME-Version; b=Xk0gwa11cGYCcAGLj9a9LaWbmZwqPN94NEUBD59fkgAAa61pzp0Umu3U3qel709wxMcQklbq1nmR8XnxUw9ELlRjYpYJztk5nTmuXg5XV07RlFhh8V2EqBf89yhGkhp0HDAH+vGVEmThjfrdJXBbg0aDqfRVerGj38Rxl89BLjI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=riabenko.com; spf=pass smtp.mailfrom=riabenko.com; dkim=pass (2048-bit key) header.d=riabenko.com header.i=@riabenko.com header.b=iqqfigbn; arc=none smtp.client-ip=185.143.146.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=riabenko.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riabenko.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=riabenko.com; s=selector; h=MIME-Version:Content-Type:Date:To:From:Subject: Message-ID:From:Sender:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version: Content-Type:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=fSJzjglSpIYqCfS30eInzlU+GK3VNnE1Kmsbjr3aldA=; b=iqqfigbnEbEHim6YybOefcF/uL nFYjEfP7mrzP53hNf2BD4vKjQvNDaBWEIwFbHCfbTYI8bYGLOx5ghImAGKtRrVFmqulQssZMMWUI4 Z2ZALqC0lwQ2/z322LXk6UIDG0LHRzw5iodfDdYkL/zdosx99HpmiYHy0U3JLS8ButXg/YyYAzFlL qaUaSd00czAR6q/WNN+DDcO2fh0U5/D9fPFoS22FaPOve007XhQwq3KYK1krLZdoDQAA5D6YDSqxY TunaluwRUnySn39uBTUYPH89sJony/CV2lpPoTRmuyjuWcJAjH0pF7ZaB/LlMFvcIQGG9gleBUATz RyzKkkow==; Received: from desk.lan ([2a01:d0:333::831]) by mini.riabenko.com with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wGCnN-000000001EW-3xau for linux-sunxi@lists.linux.dev; Fri, 24 Apr 2026 12:25:57 +0300 Message-ID: Subject: new A64-OLinuXino revisions From: Roman Riabenko To: linux-sunxi@lists.linux.dev Date: Fri, 24 Apr 2026 12:25:48 +0300 User-Agent: Evolution 3.60.0 Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Rspamd-Server: rspamd-worker-8404 X-Spamd-Result: default: False [2.84 / 15.00]; BAYES_HAM(-5.50)[100.00%]; SEM_URIBL(3.50)[0.0.0.0:email]; DMARC_POLICY_REJECT(3.00)[riabenko.com : SPF not aligned (strict),reject]; SIGNED_PGP(-2.00)[]; RBL_SENDERSCORE(2.00)[172.234.253.10:from]; MIME_BASE64_TEXT_BOGUS(1.00)[]; R_DKIM_REJECT(1.00)[riabenko.com:s=selector]; MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain,text/x-patch]; MAILLIST(-0.15)[generic]; BAD_REP_POLICIES(0.10)[]; MIME_BASE64_TEXT(0.10)[]; HAS_LIST_UNSUB(-0.01)[]; FROM_HAS_DN(0.00)[]; ARC_ALLOW(0.00)[subspace.kernel.org:s=arc-20240116:i=1]; PRECEDENCE_BULK(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; DBL_PROHIBIT(0.00)[0.0.0.1:email]; RCPT_COUNT_ONE(0.00)[1]; FUZZY_BLOCKED(0.00)[rspamd.com]; DBL_BLOCKED_OPENRESOLVER(0.00)[0.0.0.0:email,sea.lore.kernel.org:rdns,sea.lore.kernel.org:helo,debian.bg:email]; RCVD_COUNT_FIVE(0.00)[5]; MID_RHS_MATCH_FROM(0.00)[]; TAGGED_FROM(0.00)[bounces-22933-noreply=patchwork.local]; HAS_ATTACHMENT(0.00)[]; TO_DN_NONE(0.00)[]; R_SPF_ALLOW(0.00)[+ip4:172.234.253.10]; RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[100.90.174.1:received,2a01:d0:333::831:received,185.143.146.30:received]; FROM_NEQ_ENVFROM(0.00)[roman@riabenko.com,linux-sunxi@lists.linux.dev]; DKIM_TRACE(0.00)[riabenko.com:-]; MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~]; FORGED_SENDER_MAILLIST(0.00)[]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; ASN(0.00)[asn:63949, ipnet:172.234.224.0/19, country:SG]; RCVD_TLS_LAST(0.00)[]; RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[172.234.253.10:from] X-Rspamd-Queue-Id: A45ED1C00A1 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?= Hello. The vendor revised A64-OLinuXino and released additional devicetrees. Mainline Das U-Boot and Linux support revisions C and D. However, revision E and later require the vendor devicetree files to operate properly. For example, RX delay is required for stable download. There are also changes to voltages. Vendor's local changes to the kernel may need to be considered too. The vendor u-boot repository has old devicetrees only. The vendor also provides a single customised Debian image for all A64-OLinuXino, which does some initial board-specific setup at first boot. I would like to start a discussion about how to have these changes mainlined. For your immediate reference, I attach the patch obtained from the GitHub commit changing devicetrees. Roman From 09409831a23a11bb0360ecb56e8de12c70c973e1 Mon Sep 17 00:00:00 2001 From: Mitko Gamishev Date: Wed, 5 Feb 2020 15:03:08 +0200 Subject: [PATCH] dts: add sun50i-a64-olinuxino-* --- arch/arm64/boot/dts/allwinner/Makefile | 5 + .../dts/allwinner/sun50i-a64-olinuxino-1G.dts | 370 ++++++++++++++++++ .../sun50i-a64-olinuxino-1Ge16GW.dts | 41 ++ .../allwinner/sun50i-a64-olinuxino-1Ge4GW.dts | 97 +++++ .../allwinner/sun50i-a64-olinuxino-1Gs16M.dts | 31 ++ .../allwinner/sun50i-a64-olinuxino-2Ge8G.dts | 25 ++ arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 20 + 7 files changed, 589 insertions(+) create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1G.dts create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge4GW.dts create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Gs16M.dts create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-2Ge8G.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile index 211d1e9d47013..9a5cbc304c0f3 100644 --- a/arch/arm64/boot/dts/allwinner/Makefile +++ b/arch/arm64/boot/dts/allwinner/Makefile @@ -5,6 +5,11 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-nanopi-a64.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-oceanic-5205-5inmfd.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino-emmc.dtb +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino-1G.dtb +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino-1Ge4GW.dtb +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino-1Ge16GW.dtb +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino-1Gs16M.dtb +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino-2Ge8G.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-orangepi-win.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-lts.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-plus.dtb sun50i-a64-pine64.dtb diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1G.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1G.dts new file mode 100644 index 0000000000000..0be12d767547d --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1G.dts @@ -0,0 +1,370 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (C) 2019 OLIMEX Ltd. + * + */ + +/dts-v1/; + +#include "sun50i-a64.dtsi" +#include "sun50i-a64-cpu-opp.dtsi" + +#include + +/ { + model = "Olimex A64-Olinuxino-1G"; + compatible = "olimex,a64-olinuxino-1g", "allwinner,sun50i-a64"; + + aliases { + ethernet0 = &emac; + serial0 = &uart0; + serial2 = &uart3; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + hdmi-connector { + compatible = "hdmi-connector"; + type = "a"; + + port { + hdmi_con_in: endpoint { + remote-endpoint = <&hdmi_out_con>; + }; + }; + }; + + hdmi-sound { + compatible = "simple-audio-card"; + simple-audio-card,format = "i2s"; + simple-audio-card,name = "allwinner,hdmi"; + simple-audio-card,mclk-fs = <256>; + status = "okay"; + + simple-audio-card,codec { + sound-dai = <&hdmi>; + }; + + simple-audio-card,cpu { + sound-dai = <&i2s2>; + }; + }; + + reg_vcc_sys: vcc-sys { + compatible = "regulator-fixed"; + regulator-name = "vcc-sys"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + status = "okay"; + }; + + reg_usb1_vbus: usb1-vbus { + compatible = "regulator-fixed"; + regulator-name = "usb1-vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + enable-active-high; + gpio = <&pio 6 9 GPIO_ACTIVE_HIGH>; /* PG9 */ + status = "okay"; + }; +}; + +&codec { + status = "okay"; +}; + +&codec_analog { + hpvcc-supply = <®_eldo1>; + status = "okay"; +}; + +&dai { + status = "okay"; +}; + +&de { + status = "okay"; +}; + +&ehci0 { + status = "okay"; +}; + +&ehci1 { + status = "okay"; +}; + +&emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; + phy-mode = "rgmii"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_dcdc1>; + allwinner,tx-delay-ps = <600>; + status = "okay"; +}; + +&hdmi { + hvcc-supply = <®_dldo1>; + status = "okay"; +}; + +&hdmi_out { + hdmi_out_con: endpoint { + remote-endpoint = <&hdmi_con_in>; + }; +}; + +/* Exposed to UEXT connector */ +&i2c1 { + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + status = "disabled"; +}; + +&i2s2 { + status = "okay"; +}; + +&mdio { + ext_rgmii_phy: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <1>; + }; +}; + +&mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; + vmmc-supply = <®_dcdc1>; + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; + disable-wp; + bus-width = <4>; + status = "okay"; +}; + +&ohci0 { + status = "okay"; +}; + +&ohci1 { + status = "okay"; +}; + +&r_rsb { + status = "okay"; + + axp803: pmic@3a3 { + compatible = "x-powers,axp803"; + reg = <0x3a3>; + interrupt-parent = <&r_intc>; + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; + x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ + }; +}; + +#include "axp803.dtsi" + +&ac_power_supply { + status = "okay"; +}; + +&axp_led { + label = "axp20x:yellow:chgled"; + status = "okay"; + x-powers,charger-mode = <0>; +}; + +&battery_power_supply { + status = "okay"; +}; + +®_aldo1 { + regulator-always-on; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-name = "vcc-pe"; +}; + +®_aldo2 { + regulator-always-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-pl"; +}; + +®_aldo3 { + regulator-always-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-name = "vcc-pll-avcc"; +}; + +®_dcdc1 { + regulator-always-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-3v3"; +}; + +®_dcdc2 { + regulator-always-on; + regulator-min-microvolt = <1040000>; + regulator-max-microvolt = <1300000>; + regulator-name = "vdd-cpux"; +}; + +/* DCDC3 is polyphased with DCDC2 */ + +/* + * The board uses DDR3L DRAM chips. 1.36V is the closest to the nominal + * 1.35V that the PMIC can drive. + */ +®_dcdc5 { + regulator-always-on; + regulator-min-microvolt = <1360000>; + regulator-max-microvolt = <1360000>; + regulator-name = "vcc-ddr3"; +}; + +®_dcdc6 { + regulator-always-on; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1100000>; + regulator-name = "vdd-sys"; +}; + +®_dldo1 { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-hdmi"; +}; + +®_dldo2 { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-mipi"; +}; + +®_dldo3 { + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-name = "vcc-avdd-csi"; +}; + +®_dldo4 { + regulator-always-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-wifi-io"; +}; + +®_drivevbus { + regulator-name = "usb0-vbus"; + status = "okay"; +}; + +®_eldo1 { + regulator-always-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcc-emmc"; +}; + +®_eldo2 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcc-dvdd-csi"; +}; + +®_fldo1 { + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-name = "vcc-1v2-hsic"; +}; + +/* + * The A64 chip cannot work without this regulator off, although + * it seems to be only driving the AR100 core. + * Maybe we don't still know well about CPUs domain. + */ +®_fldo2 { + regulator-always-on; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1100000>; + regulator-name = "vdd-cpus"; +}; + +®_rtc_ldo { + regulator-name = "vcc-rtc"; +}; + +&simplefb_hdmi { + vcc-hdmi-supply = <®_dldo1>; +}; + +&sound { + simple-audio-card,aux-devs = <&codec_analog>; + simple-audio-card,widgets = "Microphone", "Microphone Jack Left", + "Microphone", "Microphone Jack Right", + "Headphone", "Headphone Jack"; + simple-audio-card,routing = "Left DAC", "DACL", + "Right DAC", "DACR", + "Headphone Jack", "HP", + "ADCL", "Left ADC", + "ADCR", "Right ADC", + "Microphone Jack Left", "MBIAS", + "MIC1", "Microphone Jack Left", + "Microphone Jack Left", "HBIAS", + "MIC2", "Microphone Jack Right"; + status = "okay"; +}; + +&spdif { + status = "disabled"; +}; + +/* Exposed on UEXT */ +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; + status = "disabled"; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pb_pins>; + status = "okay"; +}; + +/* Exposed on UEXT */ +&uart2 { + pinctrl-names = "default"; + pinctrl-0 = <&uart2_pins>; + status = "disabled"; +}; + +&uart3 { + pinctrl-names = "default"; + pinctrl-0 = <&uart3_ph_pins>; + status = "okay"; +}; + +&usb_otg { + dr_mode = "otg"; + status = "okay"; +}; + +&usbphy { + status = "okay"; + usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ + usb0_vbus_det-gpios = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */ + usb0_vbus-supply = <®_drivevbus>; + usb1_vbus-supply = <®_usb1_vbus>; +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts new file mode 100644 index 0000000000000..100a7ce499a67 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (C) 2019 OLIMEX Ltd. + * + */ + +/dts-v1/; + +#include "sun50i-a64-olinuxino-1Ge4GW.dts" + +/ { + model = "Olimex A64-Olinuxino-1Ge16GW"; + compatible = "olimex,a64-olinuxino-1ge16gw", "allwinner,sun50i-a64"; +}; + +&mmc2 { + vqmmc-supply = <®_eldo1>; + mmc-hs200-1_8v; + allwinner,drive-data-phase = <180>; +}; + +&pio { + vcc-pc-supply = <®_eldo1>; + uart1_cts_pins: uart1_cts_pins { + pins = "PG8"; + function = "uart1"; + }; +}; + +&uart1 { + pinctrl-names = "default"; + pinctrl-0 = <&uart1_pins>, <&uart1_cts_pins>; + status = "okay"; + bluetooth { + compatible = "realtek,rtl8723bs-bt"; + reset-gpios = <&r_pio 0 4 GPIO_ACTIVE_LOW>; /* PL4 */ + device-wake-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */ + host-wake-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ + firmware-postfix = "olinuxino"; + }; +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge4GW.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge4GW.dts new file mode 100644 index 0000000000000..c87ecc6e1d8fc --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge4GW.dts @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (C) 2019 OLIMEX Ltd. + * + */ + +/dts-v1/; + +#include "sun50i-a64-olinuxino-1G.dts" + +/ { + model = "Olimex A64-Olinuxino-1Ge4GW"; + compatible = "olimex,a64-olinuxino-1ge4gw", "allwinner,sun50i-a64"; + + aliases { + ethernet1 = &rtl8723bs; + mmc1 = &mmc2; + }; + + bt-sound { + compatible = "simple-audio-card"; + simple-audio-card,format = "i2s"; + simple-audio-card,bitclock-inversion = <1>; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,name = "RTL8723BS"; + simple-audio-card,cpu { + sound-dai = <&i2s1>; + }; + simple-audio-card,codec { + sound-dai = <&bt_sco>; + }; + }; + + bt_sco: bt-sco { + compatible = "linux,bt-sco"; + #sound-dai-cells = <0>; + status = "okay"; + }; + + wifi_pwrseq: wifi_pwrseq { + compatible = "mmc-pwrseq-simple"; + reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ + }; +}; + +&i2s1 { + status = "okay"; +}; + +&mmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_pins>; + vmmc-supply = <®_aldo2>; + vqmmc-supply = <®_dldo4>; + mmc-pwrseq = <&wifi_pwrseq>; + bus-width = <4>; + non-removable; + status = "okay"; + + rtl8723bs: wifi@1 { + reg = <1>; + interrupt-parent = <&r_pio>; + interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ + interrupt-names = "host-wake"; + }; +}; + +&mmc2 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc2_pins>; + vmmc-supply = <®_dcdc1>; + vqmmc-supply = <®_dcdc1>; + bus-width = <8>; + non-removable; + cap-mmc-hw-reset; + status = "okay"; +}; + +&pio { + uart1_cts_pins: uart1_cts_pins { + pins = "PG8"; + function = "uart1"; + }; +}; + +&uart1 { + pinctrl-names = "default"; + pinctrl-0 = <&uart1_pins>, <&uart1_cts_pins>; + status = "okay"; + bluetooth { + compatible = "realtek,rtl8723bs-bt"; + reset-gpios = <&r_pio 0 4 GPIO_ACTIVE_LOW>; /* PL4 */ + device-wake-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */ + host-wake-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ + firmware-postfix = "olinuxino"; + }; +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Gs16M.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Gs16M.dts new file mode 100644 index 0000000000000..5b85f4d2b05fb --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Gs16M.dts @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (C) 2019 OLIMEX Ltd. + * + */ + +/dts-v1/; + +#include "sun50i-a64-olinuxino-1G.dts" + +/ { + model = "Olimex A64-Olinuxino-1Gs16M"; + compatible = "olimex,a64-olinuxino-1gs16m", "allwinner,sun50i-a64"; + + aliases { + spi0 = &spi0; + }; +}; + +&spi0 { + status = "okay"; + + spi-nor@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "winbond,w25q128", "jedec,spi-nor", "spi-flash"; + reg = <0>; + spi-max-frequency = <10000000>; + status = "okay"; + }; +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-2Ge8G.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-2Ge8G.dts new file mode 100644 index 0000000000000..3583c37d39308 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-2Ge8G.dts @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (C) 2019 OLIMEX Ltd. + * + */ + +/dts-v1/; + +#include "sun50i-a64-olinuxino-1G.dts" + +/ { + model = "Olimex A64-Olinuxino-2Ge8G-IND"; + compatible = "olimex,a64-olinuxino-2ge8g", "allwinner,sun50i-a64"; +}; + +&mmc2 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc2_pins>; + vmmc-supply = <®_dcdc1>; + vqmmc-supply = <®_dcdc1>; + bus-width = <8>; + non-removable; + cap-mmc-hw-reset; + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi index 7a41015a9ce59..7e613d2ca48fc 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi @@ -787,6 +787,11 @@ function = "uart3"; }; + uart3_ph_pins: uart3-ph-pins { + pins = "PH4", "PH5"; + function = "uart3"; + }; + uart4_pins: uart4-pins { pins = "PD2", "PD3"; function = "uart4"; @@ -850,6 +855,20 @@ status = "disabled"; }; + i2s2: i2s@1c22800 { + #sound-dai-cells = <0>; + compatible = "allwinner,sun50i-a64-i2s", + "allwinner,sun8i-h3-i2s"; + reg = <0x01c22800 0x400>; + interrupts = ; + clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>; + clock-names = "apb", "mod"; + dmas = <&dma 27>; + resets = <&ccu RST_BUS_I2S2>; + dma-names = "tx"; + status = "disabled"; + }; + dai: dai@1c22c00 { #sound-dai-cells = <0>; compatible = "allwinner,sun50i-a64-codec-i2s"; @@ -1147,6 +1166,7 @@ }; hdmi: hdmi@1ee0000 { + #sound-dai-cells = <0>; compatible = "allwinner,sun50i-a64-dw-hdmi", "allwinner,sun8i-a83t-dw-hdmi"; reg = <0x01ee0000 0x10000>;