mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
Allwinner: Add kernel patches for 6.7 kernel
This commit is contained in:
@@ -0,0 +1,843 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
Date: Thu, 1 Sep 2022 17:36:53 +0200
|
||||||
|
Subject: ASoC: AC200: Initial driver
|
||||||
|
|
||||||
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
---
|
||||||
|
sound/soc/codecs/Kconfig | 10 +
|
||||||
|
sound/soc/codecs/Makefile | 2 +
|
||||||
|
sound/soc/codecs/ac200.c | 774 ++++++++++
|
||||||
|
3 files changed, 786 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
|
||||||
|
index 68e051ddecd6..aed686afff16 100644
|
||||||
|
--- a/sound/soc/codecs/Kconfig
|
||||||
|
+++ b/sound/soc/codecs/Kconfig
|
||||||
|
@@ -16,6 +16,7 @@ config SND_SOC_ALL_CODECS
|
||||||
|
depends on COMPILE_TEST
|
||||||
|
imply SND_SOC_88PM860X
|
||||||
|
imply SND_SOC_AB8500_CODEC
|
||||||
|
+ imply SND_SOC_AC200_CODEC
|
||||||
|
imply SND_SOC_AC97_CODEC
|
||||||
|
imply SND_SOC_AD1836
|
||||||
|
imply SND_SOC_AD193X_SPI
|
||||||
|
@@ -397,6 +398,15 @@ config SND_SOC_AB8500_CODEC
|
||||||
|
tristate
|
||||||
|
depends on ABX500_CORE
|
||||||
|
|
||||||
|
+config SND_SOC_AC200_CODEC
|
||||||
|
+ tristate "AC200 Codec"
|
||||||
|
+ depends on MFD_AC200
|
||||||
|
+ help
|
||||||
|
+ Enable support for X-Powers AC200 analog audio codec.
|
||||||
|
+
|
||||||
|
+ To compile this driver as a module, choose M here: the module
|
||||||
|
+ will be called snd-soc-ac200.
|
||||||
|
+
|
||||||
|
config SND_SOC_AC97_CODEC
|
||||||
|
tristate "Build generic ASoC AC97 CODEC driver"
|
||||||
|
select SND_AC97_CODEC
|
||||||
|
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
|
||||||
|
index 6c56841521f5..b0860c75f4a3 100644
|
||||||
|
--- a/sound/soc/codecs/Makefile
|
||||||
|
+++ b/sound/soc/codecs/Makefile
|
||||||
|
@@ -1,6 +1,7 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
snd-soc-88pm860x-objs := 88pm860x-codec.o
|
||||||
|
snd-soc-ab8500-codec-objs := ab8500-codec.o
|
||||||
|
+snd-soc-ac200-objs := ac200.o
|
||||||
|
snd-soc-ac97-objs := ac97.o
|
||||||
|
snd-soc-ad1836-objs := ad1836.o
|
||||||
|
snd-soc-ad193x-objs := ad193x.o
|
||||||
|
@@ -387,6 +388,7 @@ snd-soc-simple-mux-objs := simple-mux.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_SND_SOC_88PM860X) += snd-soc-88pm860x.o
|
||||||
|
obj-$(CONFIG_SND_SOC_AB8500_CODEC) += snd-soc-ab8500-codec.o
|
||||||
|
+obj-$(CONFIG_SND_SOC_AC200_CODEC) += snd-soc-ac200.o
|
||||||
|
obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
|
||||||
|
obj-$(CONFIG_SND_SOC_AD1836) += snd-soc-ad1836.o
|
||||||
|
obj-$(CONFIG_SND_SOC_AD193X) += snd-soc-ad193x.o
|
||||||
|
diff --git a/sound/soc/codecs/ac200.c b/sound/soc/codecs/ac200.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..113a45408116
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sound/soc/codecs/ac200.c
|
||||||
|
@@ -0,0 +1,774 @@
|
||||||
|
+// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
+/*
|
||||||
|
+ * X-Powers AC200 Codec Driver
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2022 Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <linux/module.h>
|
||||||
|
+#include <linux/regmap.h>
|
||||||
|
+#include <sound/core.h>
|
||||||
|
+#include <sound/pcm.h>
|
||||||
|
+#include <sound/pcm_params.h>
|
||||||
|
+#include <sound/soc.h>
|
||||||
|
+#include <sound/tlv.h>
|
||||||
|
+
|
||||||
|
+#define AC200_CODEC_RATES (SNDRV_PCM_RATE_8000 | \
|
||||||
|
+ SNDRV_PCM_RATE_11025 | \
|
||||||
|
+ SNDRV_PCM_RATE_16000 | \
|
||||||
|
+ SNDRV_PCM_RATE_22050 | \
|
||||||
|
+ SNDRV_PCM_RATE_32000 | \
|
||||||
|
+ SNDRV_PCM_RATE_44100 | \
|
||||||
|
+ SNDRV_PCM_RATE_48000 | \
|
||||||
|
+ SNDRV_PCM_RATE_96000 | \
|
||||||
|
+ SNDRV_PCM_RATE_192000 | \
|
||||||
|
+ SNDRV_PCM_RATE_KNOT)
|
||||||
|
+
|
||||||
|
+#define AC200_CODEC_FORMATS (SNDRV_PCM_FMTBIT_S8 | \
|
||||||
|
+ SNDRV_PCM_FMTBIT_S16_LE | \
|
||||||
|
+ SNDRV_PCM_FMTBIT_S20_LE | \
|
||||||
|
+ SNDRV_PCM_FMTBIT_S24_LE | \
|
||||||
|
+ SNDRV_PCM_FMTBIT_S32_LE)
|
||||||
|
+
|
||||||
|
+#define AC200_SYS_AUDIO_CTL0 0x0010
|
||||||
|
+#define AC200_SYS_AUDIO_CTL0_MCLK_GATING BIT(1)
|
||||||
|
+#define AC200_SYS_AUDIO_CTL0_RST_INVALID BIT(0)
|
||||||
|
+#define AC200_SYS_AUDIO_CTL1 0x0012
|
||||||
|
+#define AC200_SYS_AUDIO_CTL1_I2S_IO_EN BIT(0)
|
||||||
|
+
|
||||||
|
+#define AC200_SYS_CLK_CTL 0x2000
|
||||||
|
+#define AC200_SYS_CLK_CTL_I2S 15
|
||||||
|
+#define AC200_SYS_CLK_CTL_ADC 3
|
||||||
|
+#define AC200_SYS_CLK_CTL_DAC 2
|
||||||
|
+#define AC200_SYS_MOD_RST 0x2002
|
||||||
|
+#define AC200_SYS_MOD_RST_I2S 15
|
||||||
|
+#define AC200_SYS_MOD_RST_ADC 3
|
||||||
|
+#define AC200_SYS_MOD_RST_DAC 2
|
||||||
|
+#define AC200_SYS_SR_CTL 0x2004
|
||||||
|
+#define AC200_SYS_SR_CTL_SR_MASK GENMASK(3, 0)
|
||||||
|
+#define AC200_SYS_SR_CTL_SR(x) (x)
|
||||||
|
+#define AC200_I2S_CTL 0x2100
|
||||||
|
+#define AC200_I2S_CTL_SDO_EN 3
|
||||||
|
+#define AC200_I2S_CTL_TX_EN 2
|
||||||
|
+#define AC200_I2S_CTL_RX_EN 1
|
||||||
|
+#define AC200_I2S_CTL_GEN 0
|
||||||
|
+#define AC200_I2S_CLK 0x2102
|
||||||
|
+#define AC200_I2S_CLK_BCLK_OUT BIT(15)
|
||||||
|
+#define AC200_I2S_CLK_LRCK_OUT BIT(14)
|
||||||
|
+#define AC200_I2S_CLK_BCLKDIV_MASK GENMASK(13, 10)
|
||||||
|
+#define AC200_I2S_CLK_BCLKDIV(x) ((x) << 10)
|
||||||
|
+#define AC200_I2S_CLK_LRCK_MASK GENMASK(9, 0)
|
||||||
|
+#define AC200_I2S_CLK_LRCK(x) ((x) - 1)
|
||||||
|
+#define AC200_I2S_FMT0 0x2104
|
||||||
|
+#define AC200_I2S_FMT0_MODE_MASK GENMASK(15, 14)
|
||||||
|
+#define AC200_I2S_FMT0_MODE(x) ((x) << 14)
|
||||||
|
+#define AC200_I2S_FMT0_MODE_PCM 0
|
||||||
|
+#define AC200_I2S_FMT0_MODE_LEFT 1
|
||||||
|
+#define AC200_I2S_FMT0_MODE_RIGHT 2
|
||||||
|
+#define AC200_I2S_FMT0_TX_OFFSET_MASK GENMASK(11, 10)
|
||||||
|
+#define AC200_I2S_FMT0_TX_OFFSET(x) ((x) << 10)
|
||||||
|
+#define AC200_I2S_FMT0_RX_OFFSET_MASK GENMASK(9, 8)
|
||||||
|
+#define AC200_I2S_FMT0_RX_OFFSET(x) ((x) << 8)
|
||||||
|
+#define AC200_I2S_FMT0_SR_MASK GENMASK(6, 4)
|
||||||
|
+#define AC200_I2S_FMT0_SR(x) ((x) << 4)
|
||||||
|
+#define AC200_I2S_FMT0_SW_MASK GENMASK(3, 1)
|
||||||
|
+#define AC200_I2S_FMT0_SW(x) ((x) << 1)
|
||||||
|
+#define AC200_I2S_FMT1 0x2108
|
||||||
|
+#define AC200_I2S_FMT1_BCLK_POL_INVERT BIT(15)
|
||||||
|
+#define AC200_I2S_FMT1_LRCK_POL_INVERT BIT(14)
|
||||||
|
+#define AC200_I2S_MIX_SRC 0x2114
|
||||||
|
+#define AC200_I2S_MIX_SRC_LMIX_DAC 13
|
||||||
|
+#define AC200_I2S_MIX_SRC_LMIX_ADC 12
|
||||||
|
+#define AC200_I2S_MIX_SRC_RMIX_DAC 9
|
||||||
|
+#define AC200_I2S_MIX_SRC_RMIX_ADC 8
|
||||||
|
+#define AC200_I2S_MIX_GAIN 0x2116
|
||||||
|
+#define AC200_I2S_MIX_GAIN_LMIX_DAC 13
|
||||||
|
+#define AC200_I2S_MIX_GAIN_LMIX_ADC 12
|
||||||
|
+#define AC200_I2S_MIX_GAIN_RMIX_DAC 9
|
||||||
|
+#define AC200_I2S_MIX_GAIN_RMIX_ADC 8
|
||||||
|
+#define AC200_I2S_DAC_VOL 0x2118
|
||||||
|
+#define AC200_I2S_DAC_VOL_LEFT 8
|
||||||
|
+#define AC200_I2S_DAC_VOL_RIGHT 0
|
||||||
|
+#define AC200_I2S_ADC_VOL 0x211A
|
||||||
|
+#define AC200_I2S_ADC_VOL_LEFT 8
|
||||||
|
+#define AC200_I2S_ADC_VOL_RIGHT 0
|
||||||
|
+#define AC200_DAC_CTL 0x2200
|
||||||
|
+#define AC200_DAC_CTL_DAC_EN 15
|
||||||
|
+#define AC200_DAC_MIX_SRC 0x2202
|
||||||
|
+#define AC200_DAC_MIX_SRC_LMIX_DAC 13
|
||||||
|
+#define AC200_DAC_MIX_SRC_LMIX_ADC 12
|
||||||
|
+#define AC200_DAC_MIX_SRC_RMIX_DAC 9
|
||||||
|
+#define AC200_DAC_MIX_SRC_RMIX_ADC 8
|
||||||
|
+#define AC200_DAC_MIX_GAIN 0x2204
|
||||||
|
+#define AC200_DAC_MIX_GAIN_LMIX_DAC 13
|
||||||
|
+#define AC200_DAC_MIX_GAIN_LMIX_ADC 12
|
||||||
|
+#define AC200_DAC_MIX_GAIN_RMIX_DAC 9
|
||||||
|
+#define AC200_DAC_MIX_GAIN_RMIX_ADC 8
|
||||||
|
+#define AC200_OUT_MIX_CTL 0x2220
|
||||||
|
+#define AC200_OUT_MIX_CTL_RDAC_EN 15
|
||||||
|
+#define AC200_OUT_MIX_CTL_LDAC_EN 14
|
||||||
|
+#define AC200_OUT_MIX_CTL_RMIX_EN 13
|
||||||
|
+#define AC200_OUT_MIX_CTL_LMIX_EN 12
|
||||||
|
+#define AC200_OUT_MIX_CTL_MIC1_VOL 4
|
||||||
|
+#define AC200_OUT_MIX_CTL_MIC2_VOL 0
|
||||||
|
+#define AC200_OUT_MIX_SRC 0x2222
|
||||||
|
+#define AC200_OUT_MIX_SRC_RMIX_MIC1 14
|
||||||
|
+#define AC200_OUT_MIX_SRC_RMIX_MIC2 13
|
||||||
|
+#define AC200_OUT_MIX_SRC_RMIX_RDAC 9
|
||||||
|
+#define AC200_OUT_MIX_SRC_RMIX_LDAC 8
|
||||||
|
+#define AC200_OUT_MIX_SRC_LMIX_MIC1 6
|
||||||
|
+#define AC200_OUT_MIX_SRC_LMIX_MIC2 5
|
||||||
|
+#define AC200_OUT_MIX_SRC_LMIX_RDAC 1
|
||||||
|
+#define AC200_OUT_MIX_SRC_LMIX_LDAC 0
|
||||||
|
+#define AC200_LINEOUT_CTL 0x2224
|
||||||
|
+#define AC200_LINEOUT_CTL_EN 15
|
||||||
|
+#define AC200_LINEOUT_CTL_LEN 14
|
||||||
|
+#define AC200_LINEOUT_CTL_REN 13
|
||||||
|
+#define AC200_LINEOUT_CTL_LMONO 12
|
||||||
|
+#define AC200_LINEOUT_CTL_RMONO 11
|
||||||
|
+#define AC200_LINEOUT_CTL_VOL 0
|
||||||
|
+#define AC200_ADC_CTL 0x2300
|
||||||
|
+#define AC200_ADC_CTL_ADC_EN 15
|
||||||
|
+#define AC200_MBIAS_CTL 0x2310
|
||||||
|
+#define AC200_MBIAS_CTL_MBIAS_EN 15
|
||||||
|
+#define AC200_MBIAS_CTL_ADDA_BIAS_EN 3
|
||||||
|
+#define AC200_ADC_MIC_CTL 0x2320
|
||||||
|
+#define AC200_ADC_MIC_CTL_RADC_EN 15
|
||||||
|
+#define AC200_ADC_MIC_CTL_LADC_EN 14
|
||||||
|
+#define AC200_ADC_MIC_CTL_ADC_VOL 8
|
||||||
|
+#define AC200_ADC_MIC_CTL_MIC1_GAIN_EN 7
|
||||||
|
+#define AC200_ADC_MIC_CTL_MIC1_BOOST 4
|
||||||
|
+#define AC200_ADC_MIC_CTL_MIC2_GAIN_EN 3
|
||||||
|
+#define AC200_ADC_MIC_CTL_MIC2_BOOST 0
|
||||||
|
+#define AC200_ADC_MIX_SRC 0x2322
|
||||||
|
+#define AC200_ADC_MIX_SRC_RMIX_MIC1 14
|
||||||
|
+#define AC200_ADC_MIX_SRC_RMIX_MIC2 13
|
||||||
|
+#define AC200_ADC_MIX_SRC_RMIX_RMIX 9
|
||||||
|
+#define AC200_ADC_MIX_SRC_RMIX_LMIX 8
|
||||||
|
+#define AC200_ADC_MIX_SRC_LMIX_MIC1 6
|
||||||
|
+#define AC200_ADC_MIX_SRC_LMIX_MIC2 5
|
||||||
|
+#define AC200_ADC_MIX_SRC_LMIX_LMIX 1
|
||||||
|
+#define AC200_ADC_MIX_SRC_LMIX_RMIX 0
|
||||||
|
+
|
||||||
|
+struct ac200_codec {
|
||||||
|
+ struct regmap *regmap;
|
||||||
|
+ unsigned int format;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct ac200_map {
|
||||||
|
+ int match;
|
||||||
|
+ int value;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(mixer_scale, -600, 600, 0);
|
||||||
|
+static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(gain_scale, -450, 150, 0);
|
||||||
|
+static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(lineout_scale, -4650, 150, 1);
|
||||||
|
+static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(codec_scale, -12000, 75, 1);
|
||||||
|
+static const unsigned int mic_scale[] = {
|
||||||
|
+ TLV_DB_RANGE_HEAD(2),
|
||||||
|
+ 0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
|
||||||
|
+ 1, 7, TLV_DB_SCALE_ITEM(2400, 300, 0),
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct snd_kcontrol_new ac200_codec_controls[] = {
|
||||||
|
+ SOC_DOUBLE_TLV("Master Playback Volume", AC200_I2S_DAC_VOL,
|
||||||
|
+ AC200_I2S_DAC_VOL_LEFT, AC200_I2S_DAC_VOL_RIGHT,
|
||||||
|
+ 0xff, 0, codec_scale),
|
||||||
|
+ SOC_DOUBLE_TLV("Master Capture Volume", AC200_I2S_ADC_VOL,
|
||||||
|
+ AC200_I2S_ADC_VOL_LEFT, AC200_I2S_ADC_VOL_RIGHT,
|
||||||
|
+ 0xff, 0, codec_scale),
|
||||||
|
+ SOC_DOUBLE_TLV("I2S ADC Capture Volume", AC200_I2S_MIX_GAIN,
|
||||||
|
+ AC200_I2S_MIX_GAIN_LMIX_ADC, AC200_I2S_MIX_GAIN_RMIX_ADC,
|
||||||
|
+ 0x1, 1, mixer_scale),
|
||||||
|
+ SOC_DOUBLE_TLV("I2S DAC Capture Volume", AC200_I2S_MIX_GAIN,
|
||||||
|
+ AC200_I2S_MIX_GAIN_LMIX_DAC, AC200_I2S_MIX_GAIN_RMIX_DAC,
|
||||||
|
+ 0x1, 1, mixer_scale),
|
||||||
|
+ SOC_DOUBLE_TLV("DAC I2S Playback Volume", AC200_DAC_MIX_GAIN,
|
||||||
|
+ AC200_DAC_MIX_GAIN_LMIX_DAC, AC200_DAC_MIX_GAIN_RMIX_DAC,
|
||||||
|
+ 0x1, 1, mixer_scale),
|
||||||
|
+ SOC_DOUBLE_TLV("ADC Playback Volume", AC200_DAC_MIX_GAIN,
|
||||||
|
+ AC200_DAC_MIX_GAIN_LMIX_ADC, AC200_DAC_MIX_GAIN_RMIX_ADC,
|
||||||
|
+ 0x1, 1, mixer_scale),
|
||||||
|
+ SOC_SINGLE_TLV("MIC1 Playback Volume", AC200_OUT_MIX_CTL,
|
||||||
|
+ AC200_OUT_MIX_CTL_MIC1_VOL, 0x7, 0, gain_scale),
|
||||||
|
+ SOC_SINGLE_TLV("MIC2 Playback Volume", AC200_OUT_MIX_CTL,
|
||||||
|
+ AC200_OUT_MIX_CTL_MIC2_VOL, 0x7, 0, gain_scale),
|
||||||
|
+ SOC_SINGLE_TLV("ADC Volume", AC200_ADC_MIC_CTL,
|
||||||
|
+ AC200_ADC_MIC_CTL_ADC_VOL, 0x07, 0, gain_scale),
|
||||||
|
+ SOC_SINGLE_TLV("Line Out Playback Volume", AC200_LINEOUT_CTL,
|
||||||
|
+ AC200_LINEOUT_CTL_VOL, 0x1f, 0, lineout_scale),
|
||||||
|
+ SOC_SINGLE_TLV("MIC1 Boost Volume", AC200_ADC_MIC_CTL,
|
||||||
|
+ AC200_ADC_MIC_CTL_MIC1_BOOST, 0x07, 0, mic_scale),
|
||||||
|
+ SOC_SINGLE_TLV("MIC2 Boost Volume", AC200_ADC_MIC_CTL,
|
||||||
|
+ AC200_ADC_MIC_CTL_MIC2_BOOST, 0x07, 0, mic_scale),
|
||||||
|
+ SOC_DOUBLE("Line Out Playback Switch", AC200_LINEOUT_CTL,
|
||||||
|
+ AC200_LINEOUT_CTL_LEN, AC200_LINEOUT_CTL_REN, 1, 0),
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct snd_kcontrol_new i2s_mixer[] = {
|
||||||
|
+ SOC_DAPM_DOUBLE("I2S DAC Capture Switch", AC200_I2S_MIX_SRC,
|
||||||
|
+ AC200_I2S_MIX_SRC_LMIX_DAC,
|
||||||
|
+ AC200_I2S_MIX_SRC_RMIX_DAC, 1, 0),
|
||||||
|
+ SOC_DAPM_DOUBLE("I2S ADC Capture Switch", AC200_I2S_MIX_SRC,
|
||||||
|
+ AC200_I2S_MIX_SRC_LMIX_ADC,
|
||||||
|
+ AC200_I2S_MIX_SRC_RMIX_ADC, 1, 0),
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct snd_kcontrol_new dac_mixer[] = {
|
||||||
|
+ SOC_DAPM_DOUBLE("DAC I2S Playback Switch", AC200_DAC_MIX_SRC,
|
||||||
|
+ AC200_DAC_MIX_SRC_LMIX_DAC,
|
||||||
|
+ AC200_DAC_MIX_SRC_RMIX_DAC, 1, 0),
|
||||||
|
+ SOC_DAPM_DOUBLE("ADC Playback Switch", AC200_DAC_MIX_SRC,
|
||||||
|
+ AC200_DAC_MIX_SRC_LMIX_ADC,
|
||||||
|
+ AC200_DAC_MIX_SRC_RMIX_ADC, 1, 0),
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct snd_kcontrol_new output_mixer[] = {
|
||||||
|
+ SOC_DAPM_DOUBLE("MIC1 Playback Switch", AC200_OUT_MIX_SRC,
|
||||||
|
+ AC200_OUT_MIX_SRC_LMIX_MIC1,
|
||||||
|
+ AC200_OUT_MIX_SRC_RMIX_MIC1, 1, 0),
|
||||||
|
+ SOC_DAPM_DOUBLE("MIC2 Playback Switch", AC200_OUT_MIX_SRC,
|
||||||
|
+ AC200_OUT_MIX_SRC_LMIX_MIC2,
|
||||||
|
+ AC200_OUT_MIX_SRC_RMIX_MIC2, 1, 0),
|
||||||
|
+ SOC_DAPM_DOUBLE("DAC Playback Switch", AC200_OUT_MIX_SRC,
|
||||||
|
+ AC200_OUT_MIX_SRC_LMIX_LDAC,
|
||||||
|
+ AC200_OUT_MIX_SRC_RMIX_RDAC, 1, 0),
|
||||||
|
+ SOC_DAPM_DOUBLE("DAC Reversed Playback Switch", AC200_OUT_MIX_SRC,
|
||||||
|
+ AC200_OUT_MIX_SRC_LMIX_RDAC,
|
||||||
|
+ AC200_OUT_MIX_SRC_RMIX_LDAC, 1, 0),
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct snd_kcontrol_new input_mixer[] = {
|
||||||
|
+ SOC_DAPM_DOUBLE("MIC1 Capture Switch", AC200_ADC_MIX_SRC,
|
||||||
|
+ AC200_ADC_MIX_SRC_LMIX_MIC1,
|
||||||
|
+ AC200_ADC_MIX_SRC_RMIX_MIC1, 1, 0),
|
||||||
|
+ SOC_DAPM_DOUBLE("MIC2 Capture Switch", AC200_ADC_MIX_SRC,
|
||||||
|
+ AC200_ADC_MIX_SRC_LMIX_MIC2,
|
||||||
|
+ AC200_ADC_MIX_SRC_RMIX_MIC2, 1, 0),
|
||||||
|
+ SOC_DAPM_DOUBLE("Output Mixer Capture Switch", AC200_ADC_MIX_SRC,
|
||||||
|
+ AC200_ADC_MIX_SRC_LMIX_LMIX,
|
||||||
|
+ AC200_ADC_MIX_SRC_RMIX_RMIX, 1, 0),
|
||||||
|
+ SOC_DAPM_DOUBLE("Output Mixer Reverse Capture Switch",
|
||||||
|
+ AC200_ADC_MIX_SRC,
|
||||||
|
+ AC200_ADC_MIX_SRC_LMIX_RMIX,
|
||||||
|
+ AC200_ADC_MIX_SRC_RMIX_LMIX, 1, 0),
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+const char * const lineout_mux_enum_text[] = {
|
||||||
|
+ "Stereo", "Mono",
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static SOC_ENUM_DOUBLE_DECL(lineout_mux_enum, AC200_LINEOUT_CTL,
|
||||||
|
+ AC200_LINEOUT_CTL_LMONO, AC200_LINEOUT_CTL_RMONO,
|
||||||
|
+ lineout_mux_enum_text);
|
||||||
|
+
|
||||||
|
+static const struct snd_kcontrol_new lineout_mux =
|
||||||
|
+ SOC_DAPM_ENUM("Line Out Source Playback Route", lineout_mux_enum);
|
||||||
|
+
|
||||||
|
+static const struct snd_soc_dapm_widget ac200_codec_dapm_widgets[] = {
|
||||||
|
+ /* Regulator */
|
||||||
|
+ SND_SOC_DAPM_REGULATOR_SUPPLY("avcc", 0, 0),
|
||||||
|
+
|
||||||
|
+ /* System clocks */
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("CLK SYS I2S", AC200_SYS_CLK_CTL,
|
||||||
|
+ AC200_SYS_CLK_CTL_I2S, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("CLK SYS DAC", AC200_SYS_CLK_CTL,
|
||||||
|
+ AC200_SYS_CLK_CTL_DAC, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("CLK SYS ADC", AC200_SYS_CLK_CTL,
|
||||||
|
+ AC200_SYS_CLK_CTL_ADC, 0, NULL, 0),
|
||||||
|
+
|
||||||
|
+ /* Module resets */
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("RST SYS I2S", AC200_SYS_MOD_RST,
|
||||||
|
+ AC200_SYS_MOD_RST_I2S, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("RST SYS DAC", AC200_SYS_MOD_RST,
|
||||||
|
+ AC200_SYS_MOD_RST_DAC, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("RST SYS ADC", AC200_SYS_MOD_RST,
|
||||||
|
+ AC200_SYS_MOD_RST_DAC, 0, NULL, 0),
|
||||||
|
+
|
||||||
|
+ /* I2S gates */
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("CLK I2S GEN", AC200_I2S_CTL,
|
||||||
|
+ AC200_I2S_CTL_GEN, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("CLK I2S SDO", AC200_I2S_CTL,
|
||||||
|
+ AC200_I2S_CTL_SDO_EN, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("CLK I2S TX", AC200_I2S_CTL,
|
||||||
|
+ AC200_I2S_CTL_TX_EN, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("CLK I2S RX", AC200_I2S_CTL,
|
||||||
|
+ AC200_I2S_CTL_RX_EN, 0, NULL, 0),
|
||||||
|
+
|
||||||
|
+ /* Module supplies */
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("ADC Enable", AC200_ADC_CTL,
|
||||||
|
+ AC200_ADC_CTL_ADC_EN, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("DAC Enable", AC200_DAC_CTL,
|
||||||
|
+ AC200_DAC_CTL_DAC_EN, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("Line Out Enable", AC200_LINEOUT_CTL,
|
||||||
|
+ AC200_LINEOUT_CTL_EN, 0, NULL, 0),
|
||||||
|
+
|
||||||
|
+ /* Bias */
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("MIC Bias", AC200_MBIAS_CTL,
|
||||||
|
+ AC200_MBIAS_CTL_MBIAS_EN, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_SUPPLY("ADDA Bias", AC200_MBIAS_CTL,
|
||||||
|
+ AC200_MBIAS_CTL_ADDA_BIAS_EN, 0, NULL, 0),
|
||||||
|
+
|
||||||
|
+ /* DAC */
|
||||||
|
+ SND_SOC_DAPM_DAC("Left DAC", "Playback", AC200_OUT_MIX_CTL,
|
||||||
|
+ AC200_OUT_MIX_CTL_LDAC_EN, 0),
|
||||||
|
+ SND_SOC_DAPM_DAC("Right DAC", "Playback", AC200_OUT_MIX_CTL,
|
||||||
|
+ AC200_OUT_MIX_CTL_RDAC_EN, 0),
|
||||||
|
+
|
||||||
|
+ /* ADC */
|
||||||
|
+ SND_SOC_DAPM_ADC("Left ADC", "Capture", AC200_ADC_MIC_CTL,
|
||||||
|
+ AC200_ADC_MIC_CTL_LADC_EN, 0),
|
||||||
|
+ SND_SOC_DAPM_ADC("Right ADC", "Capture", AC200_ADC_MIC_CTL,
|
||||||
|
+ AC200_ADC_MIC_CTL_RADC_EN, 0),
|
||||||
|
+
|
||||||
|
+ /* Mixers */
|
||||||
|
+ SND_SOC_DAPM_MIXER("Left Output Mixer", AC200_OUT_MIX_CTL,
|
||||||
|
+ AC200_OUT_MIX_CTL_LMIX_EN, 0,
|
||||||
|
+ output_mixer, ARRAY_SIZE(output_mixer)),
|
||||||
|
+ SND_SOC_DAPM_MIXER("Right Output Mixer", AC200_OUT_MIX_CTL,
|
||||||
|
+ AC200_OUT_MIX_CTL_RMIX_EN, 0,
|
||||||
|
+ output_mixer, ARRAY_SIZE(output_mixer)),
|
||||||
|
+
|
||||||
|
+ SND_SOC_DAPM_MIXER("Left Input Mixer", SND_SOC_NOPM, 0, 0,
|
||||||
|
+ input_mixer, ARRAY_SIZE(input_mixer)),
|
||||||
|
+ SND_SOC_DAPM_MIXER("Right Input Mixer", SND_SOC_NOPM, 0, 0,
|
||||||
|
+ input_mixer, ARRAY_SIZE(input_mixer)),
|
||||||
|
+
|
||||||
|
+ SND_SOC_DAPM_MIXER("Left DAC Mixer", SND_SOC_NOPM, 0, 0,
|
||||||
|
+ dac_mixer, ARRAY_SIZE(dac_mixer)),
|
||||||
|
+ SND_SOC_DAPM_MIXER("Right DAC Mixer", SND_SOC_NOPM, 0, 0,
|
||||||
|
+ dac_mixer, ARRAY_SIZE(dac_mixer)),
|
||||||
|
+
|
||||||
|
+ SND_SOC_DAPM_MIXER("Left I2S Mixer", SND_SOC_NOPM, 0, 0,
|
||||||
|
+ i2s_mixer, ARRAY_SIZE(i2s_mixer)),
|
||||||
|
+ SND_SOC_DAPM_MIXER("Right I2S Mixer", SND_SOC_NOPM, 0, 0,
|
||||||
|
+ i2s_mixer, ARRAY_SIZE(i2s_mixer)),
|
||||||
|
+
|
||||||
|
+ /* Muxes */
|
||||||
|
+ SND_SOC_DAPM_MUX("Line Out Source Playback Route",
|
||||||
|
+ SND_SOC_NOPM, 0, 0, &lineout_mux),
|
||||||
|
+
|
||||||
|
+ /* Gain/attenuation */
|
||||||
|
+ SND_SOC_DAPM_PGA("MIC1 Amplifier", AC200_ADC_MIC_CTL,
|
||||||
|
+ AC200_ADC_MIC_CTL_MIC1_GAIN_EN, 0, NULL, 0),
|
||||||
|
+ SND_SOC_DAPM_PGA("MIC2 Amplifier", AC200_ADC_MIC_CTL,
|
||||||
|
+ AC200_ADC_MIC_CTL_MIC2_GAIN_EN, 0, NULL, 0),
|
||||||
|
+
|
||||||
|
+ /* Inputs */
|
||||||
|
+ SND_SOC_DAPM_INPUT("MIC1"),
|
||||||
|
+ SND_SOC_DAPM_INPUT("MIC2"),
|
||||||
|
+
|
||||||
|
+ /* Outputs */
|
||||||
|
+ SND_SOC_DAPM_OUTPUT("LINEOUT"),
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct snd_soc_dapm_route ac200_codec_dapm_routes[] = {
|
||||||
|
+ { "RST SYS I2S", NULL, "CLK SYS I2S" },
|
||||||
|
+ { "RST SYS ADC", NULL, "CLK SYS ADC" },
|
||||||
|
+ { "RST SYS DAC", NULL, "CLK SYS DAC" },
|
||||||
|
+
|
||||||
|
+ { "CLK I2S GEN", NULL, "RST SYS I2S" },
|
||||||
|
+ { "CLK I2S SDO", NULL, "CLK I2S GEN" },
|
||||||
|
+ { "CLK I2S TX", NULL, "CLK I2S SDO" },
|
||||||
|
+ { "CLK I2S RX", NULL, "CLK I2S SDO" },
|
||||||
|
+
|
||||||
|
+ { "ADC Enable", NULL, "RST SYS ADC" },
|
||||||
|
+ { "ADC Enable", NULL, "ADDA Bias" },
|
||||||
|
+ { "ADC Enable", NULL, "avcc" },
|
||||||
|
+ { "DAC Enable", NULL, "RST SYS DAC" },
|
||||||
|
+ { "DAC Enable", NULL, "ADDA Bias" },
|
||||||
|
+ { "DAC Enable", NULL, "avcc" },
|
||||||
|
+
|
||||||
|
+ { "Left DAC", NULL, "DAC Enable" },
|
||||||
|
+ { "Left DAC", NULL, "CLK I2S RX" },
|
||||||
|
+ { "Right DAC", NULL, "DAC Enable" },
|
||||||
|
+ { "Right DAC", NULL, "CLK I2S RX" },
|
||||||
|
+
|
||||||
|
+ { "Left ADC", NULL, "ADC Enable" },
|
||||||
|
+ { "Left ADC", NULL, "CLK I2S TX" },
|
||||||
|
+ { "Right ADC", NULL, "ADC Enable" },
|
||||||
|
+ { "Right ADC", NULL, "CLK I2S TX" },
|
||||||
|
+
|
||||||
|
+ { "Left Output Mixer", "MIC1 Playback Switch", "MIC1 Amplifier" },
|
||||||
|
+ { "Left Output Mixer", "MIC2 Playback Switch", "MIC2 Amplifier" },
|
||||||
|
+ { "Left Output Mixer", "DAC Playback Switch", "Left DAC Mixer" },
|
||||||
|
+ { "Left Output Mixer", "DAC Reversed Playback Switch", "Right DAC Mixer" },
|
||||||
|
+
|
||||||
|
+ { "Right Output Mixer", "MIC1 Playback Switch", "MIC1 Amplifier" },
|
||||||
|
+ { "Right Output Mixer", "MIC2 Playback Switch", "MIC2 Amplifier" },
|
||||||
|
+ { "Right Output Mixer", "DAC Playback Switch", "Right DAC Mixer" },
|
||||||
|
+ { "Right Output Mixer", "DAC Reversed Playback Switch", "Left DAC Mixer" },
|
||||||
|
+
|
||||||
|
+ { "Left Input Mixer", "MIC1 Capture Switch", "MIC1 Amplifier" },
|
||||||
|
+ { "Left Input Mixer", "MIC2 Capture Switch", "MIC2 Amplifier" },
|
||||||
|
+ { "Left Input Mixer", "Output Mixer Capture Switch", "Left Output Mixer" },
|
||||||
|
+ { "Left Input Mixer", "Output Mixer Reverse Capture Switch", "Right Output Mixer" },
|
||||||
|
+
|
||||||
|
+ { "Right Input Mixer", "MIC1 Capture Switch", "MIC1 Amplifier" },
|
||||||
|
+ { "Right Input Mixer", "MIC2 Capture Switch", "MIC2 Amplifier" },
|
||||||
|
+ { "Right Input Mixer", "Output Mixer Capture Switch", "Right Output Mixer" },
|
||||||
|
+ { "Right Input Mixer", "Output Mixer Reverse Capture Switch", "Left Output Mixer" },
|
||||||
|
+
|
||||||
|
+ { "Left I2S Mixer", "I2S DAC Capture Switch", "Left DAC" },
|
||||||
|
+ { "Left I2S Mixer", "I2S ADC Capture Switch", "Left Input Mixer" },
|
||||||
|
+ { "Right I2S Mixer", "I2S DAC Capture Switch", "Right DAC" },
|
||||||
|
+ { "Right I2S Mixer", "I2S ADC Capture Switch", "Right Input Mixer" },
|
||||||
|
+
|
||||||
|
+ { "Left DAC Mixer", "DAC I2S Playback Switch", "Left DAC" },
|
||||||
|
+ { "Left DAC Mixer", "ADC Playback Switch", "Left Input Mixer" },
|
||||||
|
+ { "Right DAC Mixer", "DAC I2S Playback Switch", "Right DAC" },
|
||||||
|
+ { "Right DAC Mixer", "ADC Playback Switch", "Right Input Mixer" },
|
||||||
|
+
|
||||||
|
+ { "Line Out Source Playback Route", "Stereo", "Left Output Mixer" },
|
||||||
|
+ { "Line Out Source Playback Route", "Stereo", "Right Output Mixer" },
|
||||||
|
+ { "Line Out Source Playback Route", "Mono", "Right Output Mixer" },
|
||||||
|
+ { "Line Out Source Playback Route", "Mono", "Left Output Mixer" },
|
||||||
|
+
|
||||||
|
+ { "Left ADC", NULL, "Left I2S Mixer" },
|
||||||
|
+ { "Right ADC", NULL, "Right I2S Mixer" },
|
||||||
|
+
|
||||||
|
+ { "LINEOUT", NULL, "Line Out Enable", },
|
||||||
|
+ { "LINEOUT", NULL, "Line Out Source Playback Route" },
|
||||||
|
+
|
||||||
|
+ { "MIC1", NULL, "MIC Bias" },
|
||||||
|
+ { "MIC2", NULL, "MIC Bias" },
|
||||||
|
+ { "MIC1 Amplifier", NULL, "MIC1" },
|
||||||
|
+ { "MIC2 Amplifier", NULL, "MIC2" },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static int ac200_get_sr_sw(unsigned int width)
|
||||||
|
+{
|
||||||
|
+ switch (width) {
|
||||||
|
+ case 8:
|
||||||
|
+ return 1;
|
||||||
|
+ case 12:
|
||||||
|
+ return 2;
|
||||||
|
+ case 16:
|
||||||
|
+ return 3;
|
||||||
|
+ case 20:
|
||||||
|
+ return 4;
|
||||||
|
+ case 24:
|
||||||
|
+ return 5;
|
||||||
|
+ case 28:
|
||||||
|
+ return 6;
|
||||||
|
+ case 32:
|
||||||
|
+ return 7;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return -EINVAL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const struct ac200_map ac200_bclk_div_map[] = {
|
||||||
|
+ { .match = 1, .value = 1 },
|
||||||
|
+ { .match = 2, .value = 2 },
|
||||||
|
+ { .match = 4, .value = 3 },
|
||||||
|
+ { .match = 6, .value = 4 },
|
||||||
|
+ { .match = 8, .value = 5 },
|
||||||
|
+ { .match = 12, .value = 6 },
|
||||||
|
+ { .match = 16, .value = 7 },
|
||||||
|
+ { .match = 24, .value = 8 },
|
||||||
|
+ { .match = 32, .value = 9 },
|
||||||
|
+ { .match = 48, .value = 10 },
|
||||||
|
+ { .match = 64, .value = 11 },
|
||||||
|
+ { .match = 96, .value = 12 },
|
||||||
|
+ { .match = 128, .value = 13 },
|
||||||
|
+ { .match = 176, .value = 14 },
|
||||||
|
+ { .match = 192, .value = 15 },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static int ac200_get_bclk_div(unsigned int sample_rate, unsigned int period)
|
||||||
|
+{
|
||||||
|
+ unsigned int sysclk_rate = (sample_rate % 4000) ? 22579200 : 24576000;
|
||||||
|
+ unsigned int div = sysclk_rate / sample_rate / period;
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < ARRAY_SIZE(ac200_bclk_div_map); i++) {
|
||||||
|
+ const struct ac200_map *bdiv = &ac200_bclk_div_map[i];
|
||||||
|
+
|
||||||
|
+ if (bdiv->match == div)
|
||||||
|
+ return bdiv->value;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return -EINVAL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const struct ac200_map ac200_ssr_map[] = {
|
||||||
|
+ { .match = 8000, .value = 0 },
|
||||||
|
+ { .match = 11025, .value = 1 },
|
||||||
|
+ { .match = 12000, .value = 2 },
|
||||||
|
+ { .match = 16000, .value = 3 },
|
||||||
|
+ { .match = 22050, .value = 4 },
|
||||||
|
+ { .match = 24000, .value = 5 },
|
||||||
|
+ { .match = 32000, .value = 6 },
|
||||||
|
+ { .match = 44100, .value = 7 },
|
||||||
|
+ { .match = 48000, .value = 8 },
|
||||||
|
+ { .match = 96000, .value = 9 },
|
||||||
|
+ { .match = 192000, .value = 10 },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static int ac200_get_ssr(unsigned int sample_rate)
|
||||||
|
+{
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < ARRAY_SIZE(ac200_ssr_map); i++) {
|
||||||
|
+ const struct ac200_map *ssr = &ac200_ssr_map[i];
|
||||||
|
+
|
||||||
|
+ if (ssr->match == sample_rate)
|
||||||
|
+ return ssr->value;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return -EINVAL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int ac200_codec_hw_params(struct snd_pcm_substream *substream,
|
||||||
|
+ struct snd_pcm_hw_params *params,
|
||||||
|
+ struct snd_soc_dai *dai)
|
||||||
|
+{
|
||||||
|
+ struct ac200_codec *priv = snd_soc_dai_get_drvdata(dai);
|
||||||
|
+ unsigned int slot_width = params_physical_width(params);
|
||||||
|
+ unsigned int sample_rate = params_rate(params);
|
||||||
|
+ int sr, period, sw, bclkdiv, ssr;
|
||||||
|
+
|
||||||
|
+ sr = ac200_get_sr_sw(params_width(params));
|
||||||
|
+ if (sr < 0)
|
||||||
|
+ return sr;
|
||||||
|
+
|
||||||
|
+ sw = ac200_get_sr_sw(slot_width);
|
||||||
|
+ if (sw < 0)
|
||||||
|
+ return sw;
|
||||||
|
+
|
||||||
|
+ regmap_update_bits(priv->regmap, AC200_I2S_FMT0,
|
||||||
|
+ AC200_I2S_FMT0_SR_MASK |
|
||||||
|
+ AC200_I2S_FMT0_SW_MASK,
|
||||||
|
+ AC200_I2S_FMT0_SR(sr) |
|
||||||
|
+ AC200_I2S_FMT0_SW(sw));
|
||||||
|
+
|
||||||
|
+ switch (priv->format & SND_SOC_DAIFMT_FORMAT_MASK) {
|
||||||
|
+ case SND_SOC_DAIFMT_I2S:
|
||||||
|
+ case SND_SOC_DAIFMT_RIGHT_J:
|
||||||
|
+ case SND_SOC_DAIFMT_LEFT_J:
|
||||||
|
+ period = slot_width;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_DSP_A:
|
||||||
|
+ case SND_SOC_DAIFMT_DSP_B:
|
||||||
|
+ period = slot_width * 2;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ bclkdiv = ac200_get_bclk_div(sample_rate, period);
|
||||||
|
+ if (bclkdiv < 0)
|
||||||
|
+ return bclkdiv;
|
||||||
|
+
|
||||||
|
+ regmap_update_bits(priv->regmap, AC200_I2S_CLK,
|
||||||
|
+ AC200_I2S_CLK_LRCK_MASK |
|
||||||
|
+ AC200_I2S_CLK_BCLKDIV_MASK,
|
||||||
|
+ AC200_I2S_CLK_LRCK(period) |
|
||||||
|
+ AC200_I2S_CLK_BCLKDIV(bclkdiv));
|
||||||
|
+
|
||||||
|
+ ssr = ac200_get_ssr(sample_rate);
|
||||||
|
+ if (ssr < 0)
|
||||||
|
+ return ssr;
|
||||||
|
+
|
||||||
|
+ regmap_update_bits(priv->regmap, AC200_SYS_SR_CTL,
|
||||||
|
+ AC200_SYS_SR_CTL_SR_MASK,
|
||||||
|
+ AC200_SYS_SR_CTL_SR(ssr));
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int ac200_codec_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
|
||||||
|
+{
|
||||||
|
+ struct ac200_codec *priv = snd_soc_dai_get_drvdata(dai);
|
||||||
|
+ unsigned long offset, mode, value;
|
||||||
|
+
|
||||||
|
+ priv->format = fmt;
|
||||||
|
+
|
||||||
|
+ switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
|
||||||
|
+ case SND_SOC_DAIFMT_CBP_CFP:
|
||||||
|
+ value = AC200_I2S_CLK_BCLK_OUT | AC200_I2S_CLK_LRCK_OUT;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_CBC_CFP:
|
||||||
|
+ value = AC200_I2S_CLK_LRCK_OUT;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_CBP_CFC:
|
||||||
|
+ value = AC200_I2S_CLK_BCLK_OUT;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_CBC_CFC:
|
||||||
|
+ value = 0;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ return -EINVAL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ regmap_update_bits(priv->regmap, AC200_I2S_CLK,
|
||||||
|
+ AC200_I2S_CLK_BCLK_OUT |
|
||||||
|
+ AC200_I2S_CLK_LRCK_OUT, value);
|
||||||
|
+
|
||||||
|
+ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
|
||||||
|
+ case SND_SOC_DAIFMT_I2S:
|
||||||
|
+ mode = AC200_I2S_FMT0_MODE_LEFT;
|
||||||
|
+ offset = 1;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_RIGHT_J:
|
||||||
|
+ mode = AC200_I2S_FMT0_MODE_RIGHT;
|
||||||
|
+ offset = 0;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_LEFT_J:
|
||||||
|
+ mode = AC200_I2S_FMT0_MODE_LEFT;
|
||||||
|
+ offset = 0;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_DSP_A:
|
||||||
|
+ mode = AC200_I2S_FMT0_MODE_PCM;
|
||||||
|
+ offset = 1;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_DSP_B:
|
||||||
|
+ mode = AC200_I2S_FMT0_MODE_PCM;
|
||||||
|
+ offset = 0;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ return -EINVAL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ regmap_update_bits(priv->regmap, AC200_I2S_FMT0,
|
||||||
|
+ AC200_I2S_FMT0_MODE_MASK |
|
||||||
|
+ AC200_I2S_FMT0_TX_OFFSET_MASK |
|
||||||
|
+ AC200_I2S_FMT0_RX_OFFSET_MASK,
|
||||||
|
+ AC200_I2S_FMT0_MODE(mode) |
|
||||||
|
+ AC200_I2S_FMT0_TX_OFFSET(offset) |
|
||||||
|
+ AC200_I2S_FMT0_RX_OFFSET(offset));
|
||||||
|
+
|
||||||
|
+ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
|
||||||
|
+ case SND_SOC_DAIFMT_NB_NF:
|
||||||
|
+ value = 0;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_NB_IF:
|
||||||
|
+ value = AC200_I2S_FMT1_LRCK_POL_INVERT;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_IB_NF:
|
||||||
|
+ value = AC200_I2S_FMT1_BCLK_POL_INVERT;
|
||||||
|
+ break;
|
||||||
|
+ case SND_SOC_DAIFMT_IB_IF:
|
||||||
|
+ value = AC200_I2S_FMT1_BCLK_POL_INVERT |
|
||||||
|
+ AC200_I2S_FMT1_LRCK_POL_INVERT;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ return -EINVAL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ regmap_update_bits(priv->regmap, AC200_I2S_FMT1,
|
||||||
|
+ AC200_I2S_FMT1_BCLK_POL_INVERT |
|
||||||
|
+ AC200_I2S_FMT1_LRCK_POL_INVERT, value);
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const struct snd_soc_dai_ops ac200_codec_dai_ops = {
|
||||||
|
+ .hw_params = ac200_codec_hw_params,
|
||||||
|
+ .set_fmt = ac200_codec_set_fmt,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static struct snd_soc_dai_driver ac200_codec_dai = {
|
||||||
|
+ .name = "ac200-dai",
|
||||||
|
+ .playback = {
|
||||||
|
+ .stream_name = "Playback",
|
||||||
|
+ .channels_min = 2,
|
||||||
|
+ .channels_max = 2,
|
||||||
|
+ .rates = AC200_CODEC_RATES,
|
||||||
|
+ .formats = AC200_CODEC_FORMATS,
|
||||||
|
+ },
|
||||||
|
+ .capture = {
|
||||||
|
+ .stream_name = "Capture",
|
||||||
|
+ .channels_min = 1,
|
||||||
|
+ .channels_max = 2,
|
||||||
|
+ .rates = AC200_CODEC_RATES,
|
||||||
|
+ .formats = AC200_CODEC_FORMATS,
|
||||||
|
+ },
|
||||||
|
+ .ops = &ac200_codec_dai_ops,
|
||||||
|
+ .symmetric_rate = 1,
|
||||||
|
+ .symmetric_sample_bits = 1,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static int ac200_codec_component_probe(struct snd_soc_component *component)
|
||||||
|
+{
|
||||||
|
+ struct ac200_codec *priv = snd_soc_component_get_drvdata(component);
|
||||||
|
+
|
||||||
|
+ snd_soc_component_init_regmap(component, priv->regmap);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static struct snd_soc_component_driver ac200_soc_component = {
|
||||||
|
+ .controls = ac200_codec_controls,
|
||||||
|
+ .num_controls = ARRAY_SIZE(ac200_codec_controls),
|
||||||
|
+ .dapm_widgets = ac200_codec_dapm_widgets,
|
||||||
|
+ .num_dapm_widgets = ARRAY_SIZE(ac200_codec_dapm_widgets),
|
||||||
|
+ .dapm_routes = ac200_codec_dapm_routes,
|
||||||
|
+ .num_dapm_routes = ARRAY_SIZE(ac200_codec_dapm_routes),
|
||||||
|
+ .probe = ac200_codec_component_probe,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static int ac200_codec_probe(struct platform_device *pdev)
|
||||||
|
+{
|
||||||
|
+ struct ac200_codec *priv;
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ priv = devm_kzalloc(&pdev->dev, sizeof(struct ac200_codec), GFP_KERNEL);
|
||||||
|
+ if (!priv)
|
||||||
|
+ return -ENOMEM;
|
||||||
|
+
|
||||||
|
+ priv->regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
||||||
|
+ if (!priv->regmap)
|
||||||
|
+ return -EPROBE_DEFER;
|
||||||
|
+
|
||||||
|
+ platform_set_drvdata(pdev, priv);
|
||||||
|
+
|
||||||
|
+ ret = regmap_write(priv->regmap, AC200_SYS_AUDIO_CTL0,
|
||||||
|
+ AC200_SYS_AUDIO_CTL0_RST_INVALID |
|
||||||
|
+ AC200_SYS_AUDIO_CTL0_MCLK_GATING);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ ret = regmap_write(priv->regmap, AC200_SYS_AUDIO_CTL1,
|
||||||
|
+ AC200_SYS_AUDIO_CTL1_I2S_IO_EN);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ ret = devm_snd_soc_register_component(&pdev->dev, &ac200_soc_component,
|
||||||
|
+ &ac200_codec_dai, 1);
|
||||||
|
+
|
||||||
|
+ if (ret)
|
||||||
|
+ dev_err(&pdev->dev, "Failed to register codec: %d\n", ret);
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int ac200_codec_remove(struct platform_device *pdev)
|
||||||
|
+{
|
||||||
|
+ struct ac200_codec *priv = dev_get_drvdata(&pdev->dev);
|
||||||
|
+
|
||||||
|
+ regmap_write(priv->regmap, AC200_SYS_AUDIO_CTL0, 0);
|
||||||
|
+ regmap_write(priv->regmap, AC200_SYS_AUDIO_CTL1, 0);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const struct of_device_id ac200_codec_match[] = {
|
||||||
|
+ { .compatible = "x-powers,ac200-codec" },
|
||||||
|
+ { }
|
||||||
|
+};
|
||||||
|
+MODULE_DEVICE_TABLE(of, ac200_codec_match);
|
||||||
|
+
|
||||||
|
+static struct platform_driver ac200_codec_driver = {
|
||||||
|
+ .driver = {
|
||||||
|
+ .name = "ac200-codec",
|
||||||
|
+ .of_match_table = ac200_codec_match,
|
||||||
|
+ },
|
||||||
|
+ .probe = ac200_codec_probe,
|
||||||
|
+ .remove = ac200_codec_remove,
|
||||||
|
+};
|
||||||
|
+module_platform_driver(ac200_codec_driver);
|
||||||
|
+
|
||||||
|
+MODULE_DESCRIPTION("X-Powers AC200 Codec Driver");
|
||||||
|
+MODULE_AUTHOR("Jernej Skrabec <jernej.skrabec@gmail.com>");
|
||||||
|
+MODULE_LICENSE("GPL");
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,606 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: afaulkner420 <afaulkner420@gmail.com>
|
||||||
|
Date: Fri, 25 Mar 2022 20:18:18 +0000
|
||||||
|
Subject: Add sunxi-addr driver - Used to fix uwe5622 bluetooth MAC addresses
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/misc/Kconfig | 1 +
|
||||||
|
drivers/misc/Makefile | 1 +
|
||||||
|
drivers/misc/sunxi-addr/Kconfig | 6 +
|
||||||
|
drivers/misc/sunxi-addr/Makefile | 5 +
|
||||||
|
drivers/misc/sunxi-addr/sha256.c | 178 +++++
|
||||||
|
drivers/misc/sunxi-addr/sunxi-addr.c | 357 ++++++++++
|
||||||
|
6 files changed, 548 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
|
||||||
|
index 57201f491f8d..26f2df508f70 100644
|
||||||
|
--- a/drivers/misc/Kconfig
|
||||||
|
+++ b/drivers/misc/Kconfig
|
||||||
|
@@ -593,4 +593,5 @@ source "drivers/misc/cardreader/Kconfig"
|
||||||
|
source "drivers/misc/uacce/Kconfig"
|
||||||
|
source "drivers/misc/pvpanic/Kconfig"
|
||||||
|
source "drivers/misc/mchp_pci1xxxx/Kconfig"
|
||||||
|
+source "drivers/misc/sunxi-addr/Kconfig"
|
||||||
|
endmenu
|
||||||
|
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
|
||||||
|
index c5556e3008c1..9ba27862b564 100644
|
||||||
|
--- a/drivers/misc/Makefile
|
||||||
|
+++ b/drivers/misc/Makefile
|
||||||
|
@@ -69,3 +69,4 @@ obj-$(CONFIG_TMR_INJECT) += xilinx_tmr_inject.o
|
||||||
|
obj-$(CONFIG_TPS6594_ESM) += tps6594-esm.o
|
||||||
|
obj-$(CONFIG_TPS6594_PFSM) += tps6594-pfsm.o
|
||||||
|
obj-$(CONFIG_MODEM_POWER) += modem-power.o
|
||||||
|
+obj-$(CONFIG_SUNXI_ADDR_MGT) += sunxi-addr/
|
||||||
|
diff --git a/drivers/misc/sunxi-addr/Kconfig b/drivers/misc/sunxi-addr/Kconfig
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..801dd2c02a56
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drivers/misc/sunxi-addr/Kconfig
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+config SUNXI_ADDR_MGT
|
||||||
|
+ tristate "Allwinner Network MAC Addess Manager"
|
||||||
|
+ depends on BT || ETHERNET || WLAN
|
||||||
|
+ depends on NVMEM_SUNXI_SID
|
||||||
|
+ help
|
||||||
|
+ allwinner network mac address management
|
||||||
|
diff --git a/drivers/misc/sunxi-addr/Makefile b/drivers/misc/sunxi-addr/Makefile
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..f01fd4783566
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drivers/misc/sunxi-addr/Makefile
|
||||||
|
@@ -0,0 +1,5 @@
|
||||||
|
+#
|
||||||
|
+# Makefile for wifi mac addr manager drivers
|
||||||
|
+#
|
||||||
|
+sunxi_addr-objs := sunxi-addr.o sha256.o
|
||||||
|
+obj-$(CONFIG_SUNXI_ADDR_MGT) += sunxi_addr.o
|
||||||
|
diff --git a/drivers/misc/sunxi-addr/sha256.c b/drivers/misc/sunxi-addr/sha256.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..78825810c53f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drivers/misc/sunxi-addr/sha256.c
|
||||||
|
@@ -0,0 +1,178 @@
|
||||||
|
+/*
|
||||||
|
+ * Local implement of sha256.
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2013 Allwinner.
|
||||||
|
+ *
|
||||||
|
+ * This file is licensed under the terms of the GNU General Public
|
||||||
|
+ * License version 2. This program is licensed "as is" without any
|
||||||
|
+ * warranty of any kind, whether express or implied.
|
||||||
|
+ */
|
||||||
|
+#include <linux/kernel.h>
|
||||||
|
+#include <linux/string.h>
|
||||||
|
+
|
||||||
|
+/****************************** MACROS ******************************/
|
||||||
|
+#define ROTRIGHT(a, b) (((a) >> (b)) | ((a) << (32 - (b))))
|
||||||
|
+#define CH(x, y, z) (((x) & (y)) ^ (~(x) & (z)))
|
||||||
|
+#define MAJ(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
|
||||||
|
+#define EP0(x) (ROTRIGHT(x, 2) ^ ROTRIGHT(x, 13) ^ ROTRIGHT(x, 22))
|
||||||
|
+#define EP1(x) (ROTRIGHT(x, 6) ^ ROTRIGHT(x, 11) ^ ROTRIGHT(x, 25))
|
||||||
|
+#define SIG0(x) (ROTRIGHT(x, 7) ^ ROTRIGHT(x, 18) ^ ((x) >> 3))
|
||||||
|
+#define SIG1(x) (ROTRIGHT(x, 17) ^ ROTRIGHT(x, 19) ^ ((x) >> 10))
|
||||||
|
+
|
||||||
|
+/**************************** VARIABLES *****************************/
|
||||||
|
+static const uint32_t k[64] = {
|
||||||
|
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||||
|
+ 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||||
|
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||||
|
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
||||||
|
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
|
||||||
|
+ 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
||||||
|
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
|
||||||
|
+ 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
||||||
|
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
|
||||||
|
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
||||||
|
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
|
||||||
|
+ 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
||||||
|
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
|
||||||
|
+ 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
||||||
|
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
|
||||||
|
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct sha256_ctx {
|
||||||
|
+ uint8_t data[64]; /* current 512-bit chunk of message data, just like a buffer */
|
||||||
|
+ uint32_t datalen; /* sign the data length of current chunk */
|
||||||
|
+ uint64_t bitlen; /* the bit length of the total message */
|
||||||
|
+ uint32_t state[8]; /* store the middle state of hash abstract */
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/*********************** FUNCTION DEFINITIONS ***********************/
|
||||||
|
+static void sha256_transform(struct sha256_ctx *ctx, const uint8_t *data)
|
||||||
|
+{
|
||||||
|
+ uint32_t a, b, c, d, e, f, g, h, i, j, t1, t2, m[64];
|
||||||
|
+
|
||||||
|
+ /* initialization */
|
||||||
|
+ for (i = 0, j = 0; i < 16; ++i, j += 4)
|
||||||
|
+ m[i] = (data[j] << 24) | (data[j + 1] << 16) |
|
||||||
|
+ (data[j + 2] << 8) | (data[j + 3]);
|
||||||
|
+ for ( ; i < 64; ++i)
|
||||||
|
+ m[i] = SIG1(m[i - 2]) + m[i - 7] + SIG0(m[i - 15]) + m[i - 16];
|
||||||
|
+
|
||||||
|
+ a = ctx->state[0];
|
||||||
|
+ b = ctx->state[1];
|
||||||
|
+ c = ctx->state[2];
|
||||||
|
+ d = ctx->state[3];
|
||||||
|
+ e = ctx->state[4];
|
||||||
|
+ f = ctx->state[5];
|
||||||
|
+ g = ctx->state[6];
|
||||||
|
+ h = ctx->state[7];
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < 64; ++i) {
|
||||||
|
+ t1 = h + EP1(e) + CH(e, f, g) + k[i] + m[i];
|
||||||
|
+ t2 = EP0(a) + MAJ(a, b, c);
|
||||||
|
+ h = g;
|
||||||
|
+ g = f;
|
||||||
|
+ f = e;
|
||||||
|
+ e = d + t1;
|
||||||
|
+ d = c;
|
||||||
|
+ c = b;
|
||||||
|
+ b = a;
|
||||||
|
+ a = t1 + t2;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ctx->state[0] += a;
|
||||||
|
+ ctx->state[1] += b;
|
||||||
|
+ ctx->state[2] += c;
|
||||||
|
+ ctx->state[3] += d;
|
||||||
|
+ ctx->state[4] += e;
|
||||||
|
+ ctx->state[5] += f;
|
||||||
|
+ ctx->state[6] += g;
|
||||||
|
+ ctx->state[7] += h;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void sha256_init(struct sha256_ctx *ctx)
|
||||||
|
+{
|
||||||
|
+ ctx->datalen = 0;
|
||||||
|
+ ctx->bitlen = 0;
|
||||||
|
+ ctx->state[0] = 0x6a09e667;
|
||||||
|
+ ctx->state[1] = 0xbb67ae85;
|
||||||
|
+ ctx->state[2] = 0x3c6ef372;
|
||||||
|
+ ctx->state[3] = 0xa54ff53a;
|
||||||
|
+ ctx->state[4] = 0x510e527f;
|
||||||
|
+ ctx->state[5] = 0x9b05688c;
|
||||||
|
+ ctx->state[6] = 0x1f83d9ab;
|
||||||
|
+ ctx->state[7] = 0x5be0cd19;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void sha256_update(struct sha256_ctx *ctx, const uint8_t *data, size_t len)
|
||||||
|
+{
|
||||||
|
+ uint32_t i;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < len; ++i) {
|
||||||
|
+ ctx->data[ctx->datalen] = data[i];
|
||||||
|
+ ctx->datalen++;
|
||||||
|
+ if (ctx->datalen == 64) {
|
||||||
|
+ /* 64 byte = 512 bit means the buffer ctx->data has
|
||||||
|
+ * fully stored one chunk of message,
|
||||||
|
+ * so do the sha256 hash map for the current chunk.
|
||||||
|
+ */
|
||||||
|
+ sha256_transform(ctx, ctx->data);
|
||||||
|
+ ctx->bitlen += 512;
|
||||||
|
+ ctx->datalen = 0;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void sha256_final(struct sha256_ctx *ctx, uint8_t *hash)
|
||||||
|
+{
|
||||||
|
+ uint32_t i;
|
||||||
|
+
|
||||||
|
+ i = ctx->datalen;
|
||||||
|
+
|
||||||
|
+ /* Pad whatever data is left in the buffer. */
|
||||||
|
+ if (ctx->datalen < 56) {
|
||||||
|
+ ctx->data[i++] = 0x80; /* pad 10000000 = 0x80 */
|
||||||
|
+ while (i < 56)
|
||||||
|
+ ctx->data[i++] = 0x00;
|
||||||
|
+ } else {
|
||||||
|
+ ctx->data[i++] = 0x80;
|
||||||
|
+ while (i < 64)
|
||||||
|
+ ctx->data[i++] = 0x00;
|
||||||
|
+ sha256_transform(ctx, ctx->data);
|
||||||
|
+ memset(ctx->data, 0, 56);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* Append to the padding the total message's length in bits and transform. */
|
||||||
|
+ ctx->bitlen += ctx->datalen * 8;
|
||||||
|
+ ctx->data[63] = ctx->bitlen;
|
||||||
|
+ ctx->data[62] = ctx->bitlen >> 8;
|
||||||
|
+ ctx->data[61] = ctx->bitlen >> 16;
|
||||||
|
+ ctx->data[60] = ctx->bitlen >> 24;
|
||||||
|
+ ctx->data[59] = ctx->bitlen >> 32;
|
||||||
|
+ ctx->data[58] = ctx->bitlen >> 40;
|
||||||
|
+ ctx->data[57] = ctx->bitlen >> 48;
|
||||||
|
+ ctx->data[56] = ctx->bitlen >> 56;
|
||||||
|
+ sha256_transform(ctx, ctx->data);
|
||||||
|
+
|
||||||
|
+ /* copying the final state to the output hash(use big endian). */
|
||||||
|
+ for (i = 0; i < 4; ++i) {
|
||||||
|
+ hash[i] = (ctx->state[0] >> (24 - i * 8)) & 0x000000ff;
|
||||||
|
+ hash[i + 4] = (ctx->state[1] >> (24 - i * 8)) & 0x000000ff;
|
||||||
|
+ hash[i + 8] = (ctx->state[2] >> (24 - i * 8)) & 0x000000ff;
|
||||||
|
+ hash[i + 12] = (ctx->state[3] >> (24 - i * 8)) & 0x000000ff;
|
||||||
|
+ hash[i + 16] = (ctx->state[4] >> (24 - i * 8)) & 0x000000ff;
|
||||||
|
+ hash[i + 20] = (ctx->state[5] >> (24 - i * 8)) & 0x000000ff;
|
||||||
|
+ hash[i + 24] = (ctx->state[6] >> (24 - i * 8)) & 0x000000ff;
|
||||||
|
+ hash[i + 28] = (ctx->state[7] >> (24 - i * 8)) & 0x000000ff;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int hmac_sha256(const uint8_t *plaintext, ssize_t psize, uint8_t *output)
|
||||||
|
+{
|
||||||
|
+ struct sha256_ctx ctx;
|
||||||
|
+
|
||||||
|
+ sha256_init(&ctx);
|
||||||
|
+ sha256_update(&ctx, plaintext, psize);
|
||||||
|
+ sha256_final(&ctx, output);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
diff --git a/drivers/misc/sunxi-addr/sunxi-addr.c b/drivers/misc/sunxi-addr/sunxi-addr.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..f4f2dcecbb48
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drivers/misc/sunxi-addr/sunxi-addr.c
|
||||||
|
@@ -0,0 +1,357 @@
|
||||||
|
+/*
|
||||||
|
+ * The driver of SUNXI NET MAC ADDR Manager.
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2013 Allwinner.
|
||||||
|
+ *
|
||||||
|
+ * This file is licensed under the terms of the GNU General Public
|
||||||
|
+ * License version 2. This program is licensed "as is" without any
|
||||||
|
+ * warranty of any kind, whether express or implied.
|
||||||
|
+ */
|
||||||
|
+#define DEBUG
|
||||||
|
+
|
||||||
|
+#include <linux/kernel.h>
|
||||||
|
+#include <linux/module.h>
|
||||||
|
+#include <linux/miscdevice.h>
|
||||||
|
+#include <linux/of.h>
|
||||||
|
+#include <linux/platform_device.h>
|
||||||
|
+
|
||||||
|
+#define ADDR_MGT_DBG(fmt, arg...) printk(KERN_DEBUG "[ADDR_MGT] %s: " fmt "\n",\
|
||||||
|
+ __func__, ## arg)
|
||||||
|
+#define ADDR_MGT_ERR(fmt, arg...) printk(KERN_ERR "[ADDR_MGT] %s: " fmt "\n",\
|
||||||
|
+ __func__, ## arg)
|
||||||
|
+
|
||||||
|
+#define MODULE_CUR_VERSION "v1.0.9"
|
||||||
|
+
|
||||||
|
+#define MATCH_STR_LEN 20
|
||||||
|
+#define ADDR_VAL_LEN 6
|
||||||
|
+#define ADDR_STR_LEN 18
|
||||||
|
+#define ID_LEN 16
|
||||||
|
+#define HASH_LEN 32
|
||||||
|
+
|
||||||
|
+#define TYPE_ANY 0
|
||||||
|
+#define TYPE_BURN 1
|
||||||
|
+#define TYPE_IDGEN 2
|
||||||
|
+#define TYPE_USER 3
|
||||||
|
+#define TYPE_RAND 4
|
||||||
|
+
|
||||||
|
+#define ADDR_FMT_STR 0
|
||||||
|
+#define ADDR_FMT_VAL 1
|
||||||
|
+
|
||||||
|
+#define IS_TYPE_INVALID(x) ((x < TYPE_ANY) || (x > TYPE_RAND))
|
||||||
|
+
|
||||||
|
+#define ADDR_CLASS_ATTR_ADD(name) \
|
||||||
|
+static ssize_t addr_##name##_show(const struct class *class, \
|
||||||
|
+ const struct class_attribute *attr, char *buffer) \
|
||||||
|
+{ \
|
||||||
|
+ char addr[ADDR_STR_LEN]; \
|
||||||
|
+ if (IS_TYPE_INVALID(get_addr_by_name(ADDR_FMT_STR, addr, #name))) \
|
||||||
|
+ return 0; \
|
||||||
|
+ return sprintf(buffer, "%.17s\n", addr); \
|
||||||
|
+} \
|
||||||
|
+static ssize_t addr_##name##_store(const struct class *class, \
|
||||||
|
+ const struct class_attribute *attr, \
|
||||||
|
+ const char *buffer, size_t count) \
|
||||||
|
+{ \
|
||||||
|
+ if (count != ADDR_STR_LEN) { \
|
||||||
|
+ ADDR_MGT_ERR("Length wrong."); \
|
||||||
|
+ return -EINVAL; \
|
||||||
|
+ } \
|
||||||
|
+ set_addr_by_name(TYPE_USER, ADDR_FMT_STR, buffer, #name); \
|
||||||
|
+ return count; \
|
||||||
|
+} \
|
||||||
|
+static CLASS_ATTR_RW(addr_##name);
|
||||||
|
+
|
||||||
|
+struct addr_mgt_info {
|
||||||
|
+ unsigned int type_def;
|
||||||
|
+ unsigned int type_cur;
|
||||||
|
+ unsigned int flag;
|
||||||
|
+ char *addr;
|
||||||
|
+ char *name;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static struct addr_mgt_info info[] = {
|
||||||
|
+ {TYPE_ANY, TYPE_ANY, 1, NULL, "wifi"},
|
||||||
|
+ {TYPE_ANY, TYPE_ANY, 0, NULL, "bt" },
|
||||||
|
+ {TYPE_ANY, TYPE_ANY, 1, NULL, "eth" },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+extern int hmac_sha256(const uint8_t *plaintext, ssize_t psize, uint8_t *output);
|
||||||
|
+extern int sunxi_get_soc_chipid(unsigned char *chipid);
|
||||||
|
+
|
||||||
|
+static int addr_parse(int fmt, const char *addr, int check)
|
||||||
|
+{
|
||||||
|
+ char val_buf[ADDR_VAL_LEN];
|
||||||
|
+ char cmp_buf[ADDR_VAL_LEN];
|
||||||
|
+ int ret = ADDR_VAL_LEN;
|
||||||
|
+
|
||||||
|
+ if (fmt == ADDR_FMT_STR)
|
||||||
|
+ ret = sscanf(addr, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
|
||||||
|
+ &val_buf[0], &val_buf[1], &val_buf[2],
|
||||||
|
+ &val_buf[3], &val_buf[4], &val_buf[5]);
|
||||||
|
+ else
|
||||||
|
+ memcpy(val_buf, addr, ADDR_VAL_LEN);
|
||||||
|
+
|
||||||
|
+ if (ret != ADDR_VAL_LEN)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if (check && (val_buf[0] & 0x3))
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ memset(cmp_buf, 0x00, ADDR_VAL_LEN);
|
||||||
|
+ if (memcmp(val_buf, cmp_buf, ADDR_VAL_LEN) == 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ memset(cmp_buf, 0xFF, ADDR_VAL_LEN);
|
||||||
|
+ if (memcmp(val_buf, cmp_buf, ADDR_VAL_LEN) == 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static struct addr_mgt_info *addr_find_by_name(char *name)
|
||||||
|
+{
|
||||||
|
+ int i = 0;
|
||||||
|
+ for (i = 0; i < ARRAY_SIZE(info); i++) {
|
||||||
|
+ if (strcmp(info[i].name, name) == 0)
|
||||||
|
+ return &info[i];
|
||||||
|
+ }
|
||||||
|
+ return NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int get_addr_by_name(int fmt, char *addr, char *name)
|
||||||
|
+{
|
||||||
|
+ struct addr_mgt_info *t;
|
||||||
|
+
|
||||||
|
+ t = addr_find_by_name(name);
|
||||||
|
+ if (t == NULL) {
|
||||||
|
+ ADDR_MGT_ERR("can't find addr named: %s", name);
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (IS_TYPE_INVALID(t->type_cur)) {
|
||||||
|
+ ADDR_MGT_ERR("addr type invalid");
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (addr_parse(ADDR_FMT_VAL, t->addr, t->flag)) {
|
||||||
|
+ ADDR_MGT_ERR("addr parse fail(%s)", t->addr);
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (fmt == ADDR_FMT_STR)
|
||||||
|
+ sprintf(addr, "%02X:%02X:%02X:%02X:%02X:%02X",
|
||||||
|
+ t->addr[0], t->addr[1], t->addr[2],
|
||||||
|
+ t->addr[3], t->addr[4], t->addr[5]);
|
||||||
|
+ else
|
||||||
|
+ memcpy(addr, t->addr, ADDR_VAL_LEN);
|
||||||
|
+
|
||||||
|
+ return t->type_cur;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int set_addr_by_name(int type, int fmt, const char *addr, char *name)
|
||||||
|
+{
|
||||||
|
+ struct addr_mgt_info *t;
|
||||||
|
+
|
||||||
|
+ t = addr_find_by_name(name);
|
||||||
|
+ if (t == NULL) {
|
||||||
|
+ ADDR_MGT_ERR("can't find addr named: %s", name);
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (addr_parse(fmt, addr, t->flag)) {
|
||||||
|
+ ADDR_MGT_ERR("addr parse fail(%s)", addr);
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ t->type_cur = type;
|
||||||
|
+ if (fmt == ADDR_FMT_STR)
|
||||||
|
+ sscanf(addr, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
|
||||||
|
+ &t->addr[0], &t->addr[1], &t->addr[2],
|
||||||
|
+ &t->addr[3], &t->addr[4], &t->addr[5]);
|
||||||
|
+ else
|
||||||
|
+ memcpy(t->addr, addr, ADDR_VAL_LEN);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int get_custom_mac_address(int fmt, char *name, char *addr)
|
||||||
|
+{
|
||||||
|
+ return get_addr_by_name(fmt, addr, name);
|
||||||
|
+}
|
||||||
|
+EXPORT_SYMBOL_GPL(get_custom_mac_address);
|
||||||
|
+
|
||||||
|
+static int addr_factory(struct device_node *np,
|
||||||
|
+ int idx, int type, char *mac, char *name)
|
||||||
|
+{
|
||||||
|
+ int ret, i;
|
||||||
|
+ char match[MATCH_STR_LEN];
|
||||||
|
+ const char *p;
|
||||||
|
+ char id[ID_LEN], hash[HASH_LEN], cmp_buf[ID_LEN];
|
||||||
|
+ struct timespec64 curtime;
|
||||||
|
+
|
||||||
|
+ switch (type) {
|
||||||
|
+ case TYPE_BURN:
|
||||||
|
+ sprintf(match, "addr_%s", name);
|
||||||
|
+ ret = of_property_read_string_index(np, match, 0, &p);
|
||||||
|
+ if (ret)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ ret = sscanf(p, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
|
||||||
|
+ &mac[0], &mac[1], &mac[2],
|
||||||
|
+ &mac[3], &mac[4], &mac[5]);
|
||||||
|
+
|
||||||
|
+ if (ret != ADDR_VAL_LEN)
|
||||||
|
+ return -1;
|
||||||
|
+ break;
|
||||||
|
+ case TYPE_IDGEN:
|
||||||
|
+ if (idx > HASH_LEN / ADDR_VAL_LEN - 1)
|
||||||
|
+ return -1;
|
||||||
|
+ if (sunxi_get_soc_chipid(id))
|
||||||
|
+ return -1;
|
||||||
|
+ memset(cmp_buf, 0x00, ID_LEN);
|
||||||
|
+ if (memcmp(id, cmp_buf, ID_LEN) == 0)
|
||||||
|
+ return -1;
|
||||||
|
+ if (hmac_sha256(id, ID_LEN, hash))
|
||||||
|
+ return -1;
|
||||||
|
+ memcpy(mac, &hash[idx * ADDR_VAL_LEN], ADDR_VAL_LEN);
|
||||||
|
+ break;
|
||||||
|
+ case TYPE_RAND:
|
||||||
|
+ for (i = 0; i < ADDR_VAL_LEN; i++) {
|
||||||
|
+ ktime_get_real_ts64(&curtime);
|
||||||
|
+ mac[i] = (char)curtime.tv_nsec;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ ADDR_MGT_ERR("unsupport type: %d", type);
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int addr_init(struct platform_device *pdev)
|
||||||
|
+{
|
||||||
|
+ struct device_node *np = pdev->dev.of_node;
|
||||||
|
+ int type, i, j;
|
||||||
|
+ char match[MATCH_STR_LEN];
|
||||||
|
+ char addr[ADDR_VAL_LEN];
|
||||||
|
+ int type_tab[] = {TYPE_BURN, TYPE_IDGEN, TYPE_RAND};
|
||||||
|
+
|
||||||
|
+ /* init addr type and value */
|
||||||
|
+ for (i = 0; i < ARRAY_SIZE(info); i++) {
|
||||||
|
+ sprintf(match, "type_addr_%s", info[i].name);
|
||||||
|
+ if (of_property_read_u32(np, match, &type)) {
|
||||||
|
+ ADDR_MGT_DBG("Failed to get type_def_%s, use default: %d",
|
||||||
|
+ info[i].name, info[i].type_def);
|
||||||
|
+ } else {
|
||||||
|
+ info[i].type_def = type;
|
||||||
|
+ info[i].type_cur = type;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (IS_TYPE_INVALID(info[i].type_def))
|
||||||
|
+ return -1;
|
||||||
|
+ if (info[i].type_def != TYPE_ANY) {
|
||||||
|
+ if (addr_factory(np, i, info[i].type_def, addr, info[i].name))
|
||||||
|
+ return -1;
|
||||||
|
+ } else {
|
||||||
|
+ for (j = 0; j < ARRAY_SIZE(type_tab); j++) {
|
||||||
|
+ if (!addr_factory(np, i, type_tab[j], addr, info[i].name)) {
|
||||||
|
+ info[i].type_cur = type_tab[j];
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (info[i].flag)
|
||||||
|
+ addr[0] &= 0xFC;
|
||||||
|
+
|
||||||
|
+ if (addr_parse(ADDR_FMT_VAL, addr, info[i].flag))
|
||||||
|
+ return -1;
|
||||||
|
+ else {
|
||||||
|
+ info[i].addr = devm_kzalloc(&pdev->dev, ADDR_VAL_LEN, GFP_KERNEL);
|
||||||
|
+ memcpy(info[i].addr, addr, ADDR_VAL_LEN);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static ssize_t summary_show(const struct class *class,
|
||||||
|
+ const struct class_attribute *attr, char *buffer)
|
||||||
|
+{
|
||||||
|
+ int i = 0, ret = 0;
|
||||||
|
+
|
||||||
|
+ ret += sprintf(&buffer[ret], "name cfg cur address\n");
|
||||||
|
+ for (i = 0; i < ARRAY_SIZE(info); i++) {
|
||||||
|
+ ret += sprintf(&buffer[ret],
|
||||||
|
+ "%4s %d %d %02X:%02X:%02X:%02X:%02X:%02X\n",
|
||||||
|
+ info[i].name, info[i].type_def, info[i].type_cur,
|
||||||
|
+ info[i].addr[0], info[i].addr[1], info[i].addr[2],
|
||||||
|
+ info[i].addr[3], info[i].addr[4], info[i].addr[5]);
|
||||||
|
+ }
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+static CLASS_ATTR_RO(summary);
|
||||||
|
+
|
||||||
|
+ADDR_CLASS_ATTR_ADD(wifi);
|
||||||
|
+ADDR_CLASS_ATTR_ADD(bt);
|
||||||
|
+ADDR_CLASS_ATTR_ADD(eth);
|
||||||
|
+
|
||||||
|
+static struct attribute *addr_class_attrs[] = {
|
||||||
|
+ &class_attr_summary.attr,
|
||||||
|
+ &class_attr_addr_wifi.attr,
|
||||||
|
+ &class_attr_addr_bt.attr,
|
||||||
|
+ &class_attr_addr_eth.attr,
|
||||||
|
+ NULL
|
||||||
|
+};
|
||||||
|
+ATTRIBUTE_GROUPS(addr_class);
|
||||||
|
+
|
||||||
|
+static struct class addr_class = {
|
||||||
|
+ .name = "addr_mgt",
|
||||||
|
+ .class_groups = addr_class_groups,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct of_device_id addr_mgt_ids[] = {
|
||||||
|
+ { .compatible = "allwinner,sunxi-addr_mgt" },
|
||||||
|
+ { /* Sentinel */ }
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static int addr_mgt_probe(struct platform_device *pdev)
|
||||||
|
+{
|
||||||
|
+ int status;
|
||||||
|
+
|
||||||
|
+ ADDR_MGT_DBG("module version: %s", MODULE_CUR_VERSION);
|
||||||
|
+ status = class_register(&addr_class);
|
||||||
|
+ if (status < 0) {
|
||||||
|
+ ADDR_MGT_ERR("class register error, status: %d.", status);
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (addr_init(pdev)) {
|
||||||
|
+ ADDR_MGT_ERR("failed to init addr.");
|
||||||
|
+ class_unregister(&addr_class);
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ ADDR_MGT_DBG("success.");
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int addr_mgt_remove(struct platform_device *pdev)
|
||||||
|
+{
|
||||||
|
+ class_unregister(&addr_class);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static struct platform_driver addr_mgt_driver = {
|
||||||
|
+ .probe = addr_mgt_probe,
|
||||||
|
+ .remove = addr_mgt_remove,
|
||||||
|
+ .driver = {
|
||||||
|
+ .owner = THIS_MODULE,
|
||||||
|
+ .name = "sunxi-addr-mgt",
|
||||||
|
+ .of_match_table = addr_mgt_ids,
|
||||||
|
+ },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+module_platform_driver_probe(addr_mgt_driver, addr_mgt_probe);
|
||||||
|
+
|
||||||
|
+MODULE_AUTHOR("Allwinnertech");
|
||||||
|
+MODULE_DESCRIPTION("Network MAC Addess Manager");
|
||||||
|
+MODULE_LICENSE("GPL");
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Tue, 12 Apr 2022 21:14:36 +0300
|
||||||
|
Subject: Bananapro add AXP209 regulators
|
||||||
|
|
||||||
|
Author: Heiko Jehmlich <hje@jecons.de>
|
||||||
|
Signed-off-by: Heiko Jehmlich <hje@jecons.de>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts | 50 ++++++++++
|
||||||
|
1 file changed, 50 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts
|
||||||
|
index 3a34fb39a840..d5bc590604a9 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts
|
||||||
|
@@ -257,3 +257,53 @@ &usbphy {
|
||||||
|
®_ahci_5v {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+#include "axp209.dtsi"
|
||||||
|
+
|
||||||
|
+&ac_power_supply {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&battery_power_supply {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+®_dcdc2 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-max-microvolt = <1450000>;
|
||||||
|
+ regulator-name = "vdd-cpu";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+®_dcdc3 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-max-microvolt = <1400000>;
|
||||||
|
+ regulator-name = "vdd-int-dll";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+®_ldo1 {
|
||||||
|
+ regulator-name = "vdd-rtc";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+®_ldo2 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <3000000>;
|
||||||
|
+ regulator-max-microvolt = <3000000>;
|
||||||
|
+ regulator-name = "avcc";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+®_ldo3 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <2800000>;
|
||||||
|
+ regulator-max-microvolt = <2800000>;
|
||||||
|
+ regulator-name = "vddio-csi0";
|
||||||
|
+ regulator-ramp-delay = <1600>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+®_ldo4 {
|
||||||
|
+ regulator-always-on; /* required for SATA */
|
||||||
|
+ regulator-min-microvolt = <2800000>;
|
||||||
|
+ regulator-max-microvolt = <2800000>;
|
||||||
|
+ regulator-name = "vddio-csi1";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: afaulkner420 <afaulkner420@gmail.com>
|
||||||
|
Date: Fri, 25 Mar 2022 19:26:16 +0000
|
||||||
|
Subject: Compile the pwm overlay
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/Makefile | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
index 9e3def41669e..40d67ebb5932 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
@@ -38,6 +38,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += \
|
||||||
|
sun50i-h6-i2c0.dtbo \
|
||||||
|
sun50i-h6-i2c1.dtbo \
|
||||||
|
sun50i-h6-i2c2.dtbo \
|
||||||
|
+ sun50i-h6-pwm.dtbo \
|
||||||
|
sun50i-h6-ruart.dtbo \
|
||||||
|
sun50i-h6-spi-add-cs1.dtbo \
|
||||||
|
sun50i-h6-spi-jedec-nor.dtbo \
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Icenowy Zheng <icenowy@aosc.io>
|
||||||
|
Date: Mon, 25 Dec 2017 12:08:01 +0800
|
||||||
|
Subject: Doc:dt-bindings:usb: add binding for DWC3 controller on Allwinner SoC
|
||||||
|
|
||||||
|
The Allwinner H6 SoC uses DWC3 controller for USB3.
|
||||||
|
|
||||||
|
Add its device tree binding document.
|
||||||
|
|
||||||
|
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||||
|
---
|
||||||
|
Documentation/devicetree/bindings/usb/allwinner,dwc3.txt | 39 ++++++++++
|
||||||
|
1 file changed, 39 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Documentation/devicetree/bindings/usb/allwinner,dwc3.txt b/Documentation/devicetree/bindings/usb/allwinner,dwc3.txt
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..3f7714636785
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Documentation/devicetree/bindings/usb/allwinner,dwc3.txt
|
||||||
|
@@ -0,0 +1,39 @@
|
||||||
|
+Allwinner SuperSpeed DWC3 USB SoC controller
|
||||||
|
+
|
||||||
|
+Required properties:
|
||||||
|
+- compatible: should contain "allwinner,sun50i-h6-dwc3" for H6 SoC
|
||||||
|
+- clocks: A list of phandle + clock-specifier pairs for the
|
||||||
|
+ clocks listed in clock-names
|
||||||
|
+- clock-names: Should contain the following:
|
||||||
|
+ "bus" The bus clock of the DWC3 part
|
||||||
|
+- resets: A list of phandle + reset-specifier pairs for the
|
||||||
|
+ resets listed in reset-names
|
||||||
|
+- reset-names: Should contain the following:
|
||||||
|
+ "bus" The bus reset of the DWC3 part
|
||||||
|
+
|
||||||
|
+Required child node:
|
||||||
|
+A child node must exist to represent the core DWC3 IP block. The name of
|
||||||
|
+the node is not important. The content of the node is defined in dwc3.txt.
|
||||||
|
+
|
||||||
|
+Phy documentation is provided in the following places:
|
||||||
|
+Documentation/devicetree/bindings/phy/sun50i-usb3-phy.txt
|
||||||
|
+
|
||||||
|
+Example device nodes:
|
||||||
|
+ usb3: usb@5200000 {
|
||||||
|
+ compatible = "allwinner,sun50i-h6-dwc3";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <1>;
|
||||||
|
+ ranges;
|
||||||
|
+ clocks = <&ccu CLK_BUS_XHCI>;
|
||||||
|
+ clock-names = "bus";
|
||||||
|
+ resets = <&ccu RST_BUS_XHCI>;
|
||||||
|
+ reset-names = "bus";
|
||||||
|
+
|
||||||
|
+ dwc3: dwc3 {
|
||||||
|
+ compatible = "snps,dwc3";
|
||||||
|
+ reg = <0x5200000 0x10000>;
|
||||||
|
+ interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ phys = <&usb3phy>;
|
||||||
|
+ phy-names = "usb3-phy";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Thu, 3 Feb 2022 21:22:16 +0300
|
||||||
|
Subject: Fix compile error node not found
|
||||||
|
|
||||||
|
Error: arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts:47.1-4 Label or path de not found
|
||||||
|
Error: arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts:70.1-6 Label or path hdmi not found
|
||||||
|
Error: arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts:75.1-10 Label or path hdmi_out not found
|
||||||
|
FATAL ERROR: Syntax error parsing input tree
|
||||||
|
make[2]: *** [scripts/Makefile.lib:365: arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dtb] Error 1
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts | 26 ----------
|
||||||
|
1 file changed, 26 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts
|
||||||
|
index f380d492ae67..d1c9bd0236f4 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts
|
||||||
|
@@ -23,17 +23,6 @@ chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
|
- connector {
|
||||||
|
- compatible = "hdmi-connector";
|
||||||
|
- type = "a";
|
||||||
|
-
|
||||||
|
- port {
|
||||||
|
- hdmi_con_in: endpoint {
|
||||||
|
- remote-endpoint = <&hdmi_out_con>;
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
reg_vcc5v: vcc5v {
|
||||||
|
/* board wide 5V supply directly from the DC input */
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
@@ -44,10 +33,6 @@ reg_vcc5v: vcc5v {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
-&de {
|
||||||
|
- status = "okay";
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
&ehci0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
@@ -67,17 +52,6 @@ &emac1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
-&hdmi {
|
||||||
|
- hvcc-supply = <®_bldo1>;
|
||||||
|
- status = "okay";
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
-&hdmi_out {
|
||||||
|
- hdmi_out_con: endpoint {
|
||||||
|
- remote-endpoint = <&hdmi_con_in>;
|
||||||
|
- };
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
&ir {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Thu, 28 Apr 2022 15:45:14 +0300
|
||||||
|
Subject: Fix include uapi spi spidev module
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/spi/spidev.c | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
|
||||||
|
index 456eca57ee4f..6a306e8efc6f 100644
|
||||||
|
--- a/drivers/spi/spidev.c
|
||||||
|
+++ b/drivers/spi/spidev.c
|
||||||
|
@@ -21,8 +21,7 @@
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/compat.h>
|
||||||
|
|
||||||
|
-#include <linux/spi/spi.h>
|
||||||
|
-#include <linux/spi/spidev.h>
|
||||||
|
+#include <uapi/linux/spi/spidev.h>
|
||||||
|
|
||||||
|
#include <linux/uaccess.h>
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
From a0336ec2aa6ea38d4b2c9a2100b67fd6d09005cd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jonas Karlman <jonas@kwiboo.se>
|
||||||
|
Date: Sat, 23 May 2020 15:07:15 +0000
|
||||||
|
Subject: [PATCH 038/170] HACK: media: uapi: hevc: tiles and num_slices
|
||||||
|
|
||||||
|
---
|
||||||
|
include/media/hevc-ctrls.h | 7 +++++--
|
||||||
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h
|
||||||
|
index a536dab3f..c8618dc68 100644
|
||||||
|
--- a/include/media/hevc-ctrls.h
|
||||||
|
+++ b/include/media/hevc-ctrls.h
|
||||||
|
@@ -83,7 +83,8 @@ struct v4l2_ctrl_hevc_sps {
|
||||||
|
__u8 chroma_format_idc;
|
||||||
|
__u8 sps_max_sub_layers_minus1;
|
||||||
|
|
||||||
|
- __u8 padding[6];
|
||||||
|
+ __u8 num_slices;
|
||||||
|
+ __u8 padding[5];
|
||||||
|
|
||||||
|
__u64 flags;
|
||||||
|
};
|
||||||
|
@@ -208,7 +209,9 @@ struct v4l2_ctrl_hevc_slice_params {
|
||||||
|
__u16 short_term_ref_pic_set_size;
|
||||||
|
__u16 long_term_ref_pic_set_size;
|
||||||
|
|
||||||
|
- __u8 padding[4];
|
||||||
|
+ __u32 num_entry_point_offsets;
|
||||||
|
+ __u32 entry_point_offset_minus1[256];
|
||||||
|
+ __u8 padding[8];
|
||||||
|
|
||||||
|
/* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */
|
||||||
|
struct v4l2_hevc_pred_weight_table pred_weight_table;
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Wed, 2 Feb 2022 11:28:14 +0300
|
||||||
|
Subject: Makefile: CONFIG_SHELL fix for builddeb packaging
|
||||||
|
|
||||||
|
---
|
||||||
|
Makefile | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 5c418efbe89b..453d10c493e4 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -426,7 +426,9 @@ KCONFIG_CONFIG ?= .config
|
||||||
|
export KCONFIG_CONFIG
|
||||||
|
|
||||||
|
# SHELL used by kbuild
|
||||||
|
-CONFIG_SHELL := sh
|
||||||
|
+CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
|
||||||
|
+ else if [ -x /bin/bash ]; then echo /bin/bash; \
|
||||||
|
+ else echo sh; fi ; fi)
|
||||||
|
|
||||||
|
HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS 2>/dev/null)
|
||||||
|
HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS 2>/dev/null)
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: afaulkner420 <afaulkner420@gmail.com>
|
||||||
|
Date: Fri, 25 Mar 2022 19:23:56 +0000
|
||||||
|
Subject: Move sun50i-h6-pwm settings to its own overlay
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd | 14 ------
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso | 25 ++++++++++
|
||||||
|
2 files changed, 25 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd
|
||||||
|
index d8e79ba4531b..f757db7aa4ad 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd
|
||||||
|
@@ -54,20 +54,6 @@ if test "${param_pps_falling_edge}" = "1"; then
|
||||||
|
fdt set /pps@0 assert-falling-edge
|
||||||
|
fi
|
||||||
|
|
||||||
|
-for f in ${overlays}; do
|
||||||
|
- if test "${f}" = "pwm"; then
|
||||||
|
- setenv bootargs_new ""
|
||||||
|
- for arg in ${bootargs}; do
|
||||||
|
- if test "${arg}" = "console=ttyS0,115200"; then
|
||||||
|
- echo "Warning: Disabling ttyS0 console due to enabled PWM overlay"
|
||||||
|
- else
|
||||||
|
- setenv bootargs_new "${bootargs_new} ${arg}"
|
||||||
|
- fi
|
||||||
|
- done
|
||||||
|
- setenv bootargs "${bootargs_new}"
|
||||||
|
- fi
|
||||||
|
-done
|
||||||
|
-
|
||||||
|
if test -n "${param_w1_pin}"; then
|
||||||
|
setenv tmp_bank "${param_w1_pin}"
|
||||||
|
setenv tmp_pin "${param_w1_pin}"
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..a8aa74ed1988
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h6-pwm";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&pio>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ pwm_pin: pwm-pin {
|
||||||
|
+ pins = "PD22";
|
||||||
|
+ function = "pwm";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&pwm>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pwm_pin>;
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
From 4ca80443bbab08aede430ab4f13e2818836f19b5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jonas Karlman <jonas@kwiboo.se>
|
||||||
|
Date: Sat, 23 May 2020 15:03:46 +0000
|
||||||
|
Subject: [PATCH 037/170] WIP: media: uapi: hevc: add fields needed for rkvdec
|
||||||
|
|
||||||
|
NOTE: these fields are used by rkvdec hevc backend
|
||||||
|
|
||||||
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||||
|
---
|
||||||
|
include/media/hevc-ctrls.h | 12 ++++++++++--
|
||||||
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h
|
||||||
|
index 01ccda48d..a536dab3f 100644
|
||||||
|
--- a/include/media/hevc-ctrls.h
|
||||||
|
+++ b/include/media/hevc-ctrls.h
|
||||||
|
@@ -58,6 +58,8 @@ enum v4l2_mpeg_video_hevc_start_code {
|
||||||
|
/* The controls are not stable at the moment and will likely be reworked. */
|
||||||
|
struct v4l2_ctrl_hevc_sps {
|
||||||
|
/* ISO/IEC 23008-2, ITU-T Rec. H.265: Sequence parameter set */
|
||||||
|
+ __u8 video_parameter_set_id;
|
||||||
|
+ __u8 seq_parameter_set_id;
|
||||||
|
__u16 pic_width_in_luma_samples;
|
||||||
|
__u16 pic_height_in_luma_samples;
|
||||||
|
__u8 bit_depth_luma_minus8;
|
||||||
|
@@ -81,6 +83,8 @@ struct v4l2_ctrl_hevc_sps {
|
||||||
|
__u8 chroma_format_idc;
|
||||||
|
__u8 sps_max_sub_layers_minus1;
|
||||||
|
|
||||||
|
+ __u8 padding[6];
|
||||||
|
+
|
||||||
|
__u64 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -108,6 +112,7 @@ struct v4l2_ctrl_hevc_sps {
|
||||||
|
|
||||||
|
struct v4l2_ctrl_hevc_pps {
|
||||||
|
/* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture parameter set */
|
||||||
|
+ __u8 pic_parameter_set_id;
|
||||||
|
__u8 num_extra_slice_header_bits;
|
||||||
|
__u8 num_ref_idx_l0_default_active_minus1;
|
||||||
|
__u8 num_ref_idx_l1_default_active_minus1;
|
||||||
|
@@ -123,7 +128,7 @@ struct v4l2_ctrl_hevc_pps {
|
||||||
|
__s8 pps_tc_offset_div2;
|
||||||
|
__u8 log2_parallel_merge_level_minus2;
|
||||||
|
|
||||||
|
- __u8 padding[4];
|
||||||
|
+ __u8 padding;
|
||||||
|
__u64 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -200,7 +205,10 @@ struct v4l2_ctrl_hevc_slice_params {
|
||||||
|
__u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
|
||||||
|
__u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
|
||||||
|
|
||||||
|
- __u8 padding;
|
||||||
|
+ __u16 short_term_ref_pic_set_size;
|
||||||
|
+ __u16 long_term_ref_pic_set_size;
|
||||||
|
+
|
||||||
|
+ __u8 padding[4];
|
||||||
|
|
||||||
|
/* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */
|
||||||
|
struct v4l2_hevc_pred_weight_table pred_weight_table;
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
||||||
@@ -0,0 +1,430 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Sat, 16 Apr 2022 11:51:35 +0300
|
||||||
|
Subject: add initial support for orangepi3-lts
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/Makefile | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts | 399 ++++++++++
|
||||||
|
2 files changed, 400 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
index 74a6e5e0d7b3..62d716418e60 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
@@ -42,6 +42,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-beelink-gs1.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-3.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-3-lts.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-lite2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-one-plus.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..dd6b4e15263e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts
|
||||||
|
@@ -0,0 +1,399 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+// Copyright (C) 2023 Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
+// Copyright (C) 2019 Ondřej Jirman <megous@megous.com>
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+
|
||||||
|
+#include "sun50i-h6.dtsi"
|
||||||
|
+#include "sun50i-h6-cpu-opp.dtsi"
|
||||||
|
+
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "OrangePi 3 LTS";
|
||||||
|
+ compatible = "xunlong,orangepi-3-lts", "allwinner,sun50i-h6";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet0 = &emac;
|
||||||
|
+ serial0 = &uart0;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ stdout-path = "serial0:115200n8";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ connector {
|
||||||
|
+ compatible = "hdmi-connector";
|
||||||
|
+ ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
|
||||||
|
+ type = "a";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ hdmi_con_in: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_out_con>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ ext_osc32k: ext_osc32k_clk {
|
||||||
|
+ #clock-cells = <0>;
|
||||||
|
+ compatible = "fixed-clock";
|
||||||
|
+ clock-frequency = <32768>;
|
||||||
|
+ clock-output-names = "ext_osc32k";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ status {
|
||||||
|
+ label = "green-led";
|
||||||
|
+ gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
|
||||||
|
+ default-state = "on";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ power {
|
||||||
|
+ label = "red-led";
|
||||||
|
+ gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vcc5v: vcc5v {
|
||||||
|
+ /* board wide 5V supply directly from the DC jack */
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc-5v";
|
||||||
|
+ regulator-min-microvolt = <5000000>;
|
||||||
|
+ regulator-max-microvolt = <5000000>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_gmac_3v3: gmac-3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc-gmac-3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ startup-delay-us = <150000>;
|
||||||
|
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vcc33_wifi: vcc33-wifi {
|
||||||
|
+ /* Always on 3.3V regulator for WiFi and BT */
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc33-wifi";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpio = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vcc_wifi_io: vcc-wifi-io {
|
||||||
|
+ /* Always on 1.8V/300mA regulator for WiFi and BT IO */
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc-wifi-io";
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ vin-supply = <®_vcc33_wifi>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi-pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ clocks = <&rtc 1>;
|
||||||
|
+ clock-names = "ext_clock";
|
||||||
|
+ reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */
|
||||||
|
+ post-power-on-delay-ms = <200>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ac200_codec {
|
||||||
|
+ avcc-supply = <®_aldo2>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ac200_pwm_clk {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&analog {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <®_dcdca>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&de {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&dwc3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emac {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&ext_rgmii_pins>;
|
||||||
|
+ phy-mode = "rgmii-id";
|
||||||
|
+ phy-handle = <&ext_rgmii_phy>;
|
||||||
|
+ phy-supply = <®_gmac_3v3>;
|
||||||
|
+ allwinner,rx-delay-ps = <200>;
|
||||||
|
+ allwinner,tx-delay-ps = <300>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&gpu {
|
||||||
|
+ mali-supply = <®_dcdcc>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi {
|
||||||
|
+ hvcc-supply = <®_bldo2>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi_out {
|
||||||
|
+ hdmi_out_con: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_con_in>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2s1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2s3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mdio {
|
||||||
|
+ ext_rgmii_phy: ethernet-phy@1 {
|
||||||
|
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
+ reg = <1>;
|
||||||
|
+ motorcomm,clk-out-frequency-hz = <125000000>;
|
||||||
|
+ reset-gpios = <&pio 3 14 GPIO_ACTIVE_LOW>; /* PD14 */
|
||||||
|
+ reset-assert-us = <15000>;
|
||||||
|
+ reset-deassert-us = <40000>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc0 {
|
||||||
|
+ vmmc-supply = <®_cldo1>;
|
||||||
|
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc1 {
|
||||||
|
+ vmmc-supply = <®_vcc33_wifi>;
|
||||||
|
+ vqmmc-supply = <®_vcc_wifi_io>;
|
||||||
|
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ non-removable;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2 {
|
||||||
|
+ vmmc-supply = <®_cldo1>;
|
||||||
|
+ vqmmc-supply = <®_bldo2>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ non-removable;
|
||||||
|
+ cap-mmc-hw-reset;
|
||||||
|
+ mmc-hs200-1_8v;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pio {
|
||||||
|
+ vcc-pc-supply = <®_bldo2>;
|
||||||
|
+ vcc-pd-supply = <®_cldo1>;
|
||||||
|
+ vcc-pg-supply = <®_vcc_wifi_io>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pwm {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&r_ir {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&r_i2c {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ axp805: pmic@36 {
|
||||||
|
+ compatible = "x-powers,axp805", "x-powers,axp806";
|
||||||
|
+ reg = <0x36>;
|
||||||
|
+ interrupt-parent = <&r_intc>;
|
||||||
|
+ interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+ interrupt-controller;
|
||||||
|
+ #interrupt-cells = <1>;
|
||||||
|
+ x-powers,self-working-mode;
|
||||||
|
+ vina-supply = <®_vcc5v>;
|
||||||
|
+ vinb-supply = <®_vcc5v>;
|
||||||
|
+ vinc-supply = <®_vcc5v>;
|
||||||
|
+ vind-supply = <®_vcc5v>;
|
||||||
|
+ vine-supply = <®_vcc5v>;
|
||||||
|
+ aldoin-supply = <®_vcc5v>;
|
||||||
|
+ bldoin-supply = <®_vcc5v>;
|
||||||
|
+ cldoin-supply = <®_vcc5v>;
|
||||||
|
+
|
||||||
|
+ regulators {
|
||||||
|
+ reg_aldo1: aldo1 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vcc-pl-led-ir";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_aldo2: aldo2 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vcc33-audio-tv-ephy-mac";
|
||||||
|
+ regulator-enable-ramp-delay = <100000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ /* ALDO3 is shorted to CLDO1 */
|
||||||
|
+ reg_aldo3: aldo3 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-1";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_bldo1: bldo1 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-name = "vcc18-dram-bias-pll";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_bldo2: bldo2 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-name = "vcc-efuse-pcie-hdmi-pc";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_bldo3: bldo3 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-name = "vcc-pm-pg-dcxoio-wifi";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ bldo4 {
|
||||||
|
+ /* unused */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_cldo1: cldo1 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-2";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cldo2 {
|
||||||
|
+ /* unused */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cldo3 {
|
||||||
|
+ /* unused */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_dcdca: dcdca {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <800000>;
|
||||||
|
+ regulator-max-microvolt = <1160000>;
|
||||||
|
+ regulator-ramp-delay = <2500>;
|
||||||
|
+ regulator-name = "vdd-cpu";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_dcdcc: dcdcc {
|
||||||
|
+ regulator-enable-ramp-delay = <32000>;
|
||||||
|
+ regulator-min-microvolt = <810000>;
|
||||||
|
+ regulator-max-microvolt = <1080000>;
|
||||||
|
+ regulator-ramp-delay = <2500>;
|
||||||
|
+ regulator-name = "vdd-gpu";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_dcdcd: dcdcd {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <960000>;
|
||||||
|
+ regulator-max-microvolt = <960000>;
|
||||||
|
+ regulator-name = "vdd-sys";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_dcdce: dcdce {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1200000>;
|
||||||
|
+ regulator-max-microvolt = <1200000>;
|
||||||
|
+ regulator-name = "vcc-dram";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sw {
|
||||||
|
+ /* unused */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&rtc {
|
||||||
|
+ clocks = <&ext_osc32k>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sound_hdmi {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart0_ph_pins>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart1 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
|
||||||
|
+ uart-has-rtscts;
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb2otg {
|
||||||
|
+ /*
|
||||||
|
+ * This board doesn't have a controllable VBUS even though it
|
||||||
|
+ * does have an ID pin. Using it as anything but a USB host is
|
||||||
|
+ * unsafe.
|
||||||
|
+ */
|
||||||
|
+ dr_mode = "host";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb2phy {
|
||||||
|
+ usb0_id_det-gpios = <&pio 2 15 GPIO_ACTIVE_HIGH>; /* PC15 */
|
||||||
|
+ usb0_vbus-supply = <®_vcc5v>;
|
||||||
|
+ usb3_vbus-supply = <®_vcc5v>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb3phy {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Sat, 16 Apr 2022 11:51:35 +0300
|
||||||
|
Subject: add nodes for sunxi-info, sunxi-addr and sunxi-dump-reg
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 19 ++++++++++
|
||||||
|
1 file changed, 19 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
index 538c90663602..6365cce07304 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
@@ -1243,6 +1243,25 @@ ths: thermal-sensor@5070400 {
|
||||||
|
nvmem-cell-names = "calibration";
|
||||||
|
#thermal-sensor-cells = <1>;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ sunxi-info {
|
||||||
|
+ compatible = "allwinner,sun50i-h6-sys-info";
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ addr_mgt: addr-mgt {
|
||||||
|
+ compatible = "allwinner,sunxi-addr_mgt";
|
||||||
|
+ type_addr_wifi = <0x2>;
|
||||||
|
+ type_addr_bt = <0x2>;
|
||||||
|
+ type_addr_eth = <0x2>;
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dump_reg: dump_reg@20000 {
|
||||||
|
+ compatible = "allwinner,sunxi-dump-reg";
|
||||||
|
+ reg = <0x0 0x03001000 0x0 0x0f20>;
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
thermal-zones {
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
index 98735d39e6e8..5ff1b357a25b 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
@@ -1053,6 +1053,25 @@ ths: thermal-sensor@5070400 {
|
||||||
|
nvmem-cell-names = "calibration";
|
||||||
|
#thermal-sensor-cells = <1>;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ dump_reg: dump_reg@20000 {
|
||||||
|
+ compatible = "allwinner,sunxi-dump-reg";
|
||||||
|
+ reg = <0x0 0x03001000 0x0 0x0f20>;
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sunxi-info {
|
||||||
|
+ compatible = "allwinner,sun50i-h616-sys-info";
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ addr_mgt: addr-mgt {
|
||||||
|
+ compatible = "allwinner,sunxi-addr_mgt";
|
||||||
|
+ type_addr_wifi = <0x2>;
|
||||||
|
+ type_addr_bt = <0x2>;
|
||||||
|
+ type_addr_eth = <0x2>;
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
thermal-zones {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Sun, 23 Jan 2022 16:43:53 +0300
|
||||||
|
Subject: arm:arm64:dts: Add leds axp20x charger
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/axp209.dtsi | 5 +++++
|
||||||
|
arch/arm/boot/dts/allwinner/axp22x.dtsi | 5 +++++
|
||||||
|
arch/arm/boot/dts/allwinner/axp81x.dtsi | 5 +++++
|
||||||
|
arch/arm64/boot/dts/allwinner/axp803.dtsi | 5 +++++
|
||||||
|
4 files changed, 20 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/axp209.dtsi b/arch/arm/boot/dts/allwinner/axp209.dtsi
|
||||||
|
index 469d0f7d5185..bad2b8fcf6b5 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/axp209.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/axp209.dtsi
|
||||||
|
@@ -76,6 +76,11 @@ axp_gpio: gpio {
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ axp_led: led {
|
||||||
|
+ compatible = "x-powers,axp20x-led";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
battery_power_supply: battery-power {
|
||||||
|
compatible = "x-powers,axp209-battery-power-supply";
|
||||||
|
status = "disabled";
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/axp22x.dtsi b/arch/arm/boot/dts/allwinner/axp22x.dtsi
|
||||||
|
index f79650afd0a7..91c66b2456e9 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/axp22x.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/axp22x.dtsi
|
||||||
|
@@ -62,6 +62,11 @@ axp_adc: adc {
|
||||||
|
#io-channel-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ axp_led: led {
|
||||||
|
+ compatible = "x-powers,axp20x-led";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
battery_power_supply: battery-power {
|
||||||
|
compatible = "x-powers,axp221-battery-power-supply";
|
||||||
|
status = "disabled";
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/axp81x.dtsi b/arch/arm/boot/dts/allwinner/axp81x.dtsi
|
||||||
|
index a4b1be159b02..9a432a0dcdab 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/axp81x.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/axp81x.dtsi
|
||||||
|
@@ -64,6 +64,11 @@ axp_gpio: gpio {
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ axp_led: led {
|
||||||
|
+ compatible = "x-powers,axp20x-led";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
battery_power_supply: battery-power {
|
||||||
|
compatible = "x-powers,axp813-battery-power-supply";
|
||||||
|
status = "disabled";
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/axp803.dtsi b/arch/arm64/boot/dts/allwinner/axp803.dtsi
|
||||||
|
index 422be59f5d88..3ad8967a11dd 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/axp803.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/axp803.dtsi
|
||||||
|
@@ -28,6 +28,11 @@ axp_gpio: gpio {
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ axp_led: led {
|
||||||
|
+ compatible = "x-powers,axp20x-led";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
battery_power_supply: battery-power {
|
||||||
|
compatible = "x-powers,axp803-battery-power-supply",
|
||||||
|
"x-powers,axp813-battery-power-supply";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,195 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 15:00:36 +0300
|
||||||
|
Subject: arm:dts: Add sun8i-h2-plus-nanopi-duo device
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/Makefile | 1 +
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h2-plus-nanopi-duo.dts | 164 ++++++++++
|
||||||
|
2 files changed, 165 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/Makefile b/arch/arm/boot/dts/allwinner/Makefile
|
||||||
|
index eebb5a0c873a..5833777340fd 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/Makefile
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/Makefile
|
||||||
|
@@ -281,6 +281,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \
|
||||||
|
sun8i-a83t-tbs-a711.dtb \
|
||||||
|
sun8i-h2-plus-bananapi-m2-zero.dtb \
|
||||||
|
sun8i-h2-plus-libretech-all-h3-cc.dtb \
|
||||||
|
+ sun8i-h2-plus-nanopi-duo.dtb \
|
||||||
|
sun8i-h2-plus-orangepi-r1.dtb \
|
||||||
|
sun8i-h2-plus-orangepi-zero.dtb \
|
||||||
|
sun8i-h3-bananapi-m2-plus.dtb \
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-nanopi-duo.dts b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-nanopi-duo.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..2b31b8fddbf3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-nanopi-duo.dts
|
||||||
|
@@ -0,0 +1,164 @@
|
||||||
|
+/*
|
||||||
|
+ * adapted by karabek, 2018 , based on
|
||||||
|
+ * Copyright (C) 2016 James Pettigrew <james@innovum.com.au>
|
||||||
|
+ * Copyright (C) 2016 Milo Kim <woogyom.kim@gmail.com>
|
||||||
|
+ *
|
||||||
|
+ *
|
||||||
|
+ * This file is dual-licensed: you can use it either under the terms
|
||||||
|
+ * of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
+ * licensing only applies to this file, and not this project as a
|
||||||
|
+ * whole.
|
||||||
|
+ *
|
||||||
|
+ * a) This file is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU General Public License as
|
||||||
|
+ * published by the Free Software Foundation; either version 2 of the
|
||||||
|
+ * License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This file is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ * GNU General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * Or, alternatively,
|
||||||
|
+ *
|
||||||
|
+ * b) Permission is hereby granted, free of charge, to any person
|
||||||
|
+ * obtaining a copy of this software and associated documentation
|
||||||
|
+ * files (the "Software"), to deal in the Software without
|
||||||
|
+ * restriction, including without limitation the rights to use,
|
||||||
|
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
+ * sell copies of the Software, and to permit persons to whom the
|
||||||
|
+ * Software is furnished to do so, subject to the following
|
||||||
|
+ * conditions:
|
||||||
|
+ *
|
||||||
|
+ * The above copyright notice and this permission notice shall be
|
||||||
|
+ * included in all copies or substantial portions of the Software.
|
||||||
|
+ *
|
||||||
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "sun8i-h3-nanopi.dtsi"
|
||||||
|
+#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "FriendlyARM NanoPi DUO";
|
||||||
|
+ compatible = "friendlyarm,nanopi-duo", "allwinner,sun8i-h3";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet0 = &emac;
|
||||||
|
+ ethernet1 = &xr819;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_sy8113b: gpio-regulator {
|
||||||
|
+ compatible = "regulator-gpio";
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ regulator-type = "voltage";
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1100000>;
|
||||||
|
+ regulator-max-microvolt = <1300000>;
|
||||||
|
+ regulator-ramp-delay = <50>; // 50=4ms check
|
||||||
|
+
|
||||||
|
+ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; // PL6 check
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpios-states = <0x1>;
|
||||||
|
+ states = <1100000 0x0
|
||||||
|
+ 1300000 0x1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vcc_wifi: reg_vcc_wifi {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-name = "vcc-wifi";
|
||||||
|
+ gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; // PL7 WIFI_POWER_EN
|
||||||
|
+ startup-delay-us = <70000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&wifi_en_npi>;
|
||||||
|
+ reset-gpios = <&pio 6 13 GPIO_ACTIVE_LOW>; // PG13 WL_RESTN
|
||||||
|
+ post-power-on-delay-ms = <200>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <®_sy8113b>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emac {
|
||||||
|
+ phy-handle = <&int_mii_phy>;
|
||||||
|
+ phy-mode = "mii";
|
||||||
|
+ allwinner,leds-active-low;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc1 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc1_pins>;
|
||||||
|
+ vqmmc-supply = <®_vcc_wifi>;
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ non-removable;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ xr819: sdio_wifi@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ compatible = "xradio,xr819";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&wifi_wake>;
|
||||||
|
+ interrupt-parent = <&pio>;
|
||||||
|
+ interrupts = <6 10 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
+ interrupt-names = "host-wake";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc1_pins {
|
||||||
|
+ bias-pull-up;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pio {
|
||||||
|
+ wifi_en_npi: wifi_en_pin {
|
||||||
|
+ pins = "PG13";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+ wifi_wake: wifi_wake@0 {
|
||||||
|
+ pins = "PG10";
|
||||||
|
+ function = "irq";
|
||||||
|
+ pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb_otg {
|
||||||
|
+ dr_mode = "peripheral";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbphy {
|
||||||
|
+ /*
|
||||||
|
+ * USB Type-A port VBUS is always on. However, MicroUSB VBUS can only
|
||||||
|
+ * power up the board; when it's used as OTG port, this VBUS is
|
||||||
|
+ * always off even if the board is powered via GPIO pins.
|
||||||
|
+ */
|
||||||
|
+ status = "okay";
|
||||||
|
+ usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,256 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 15:23:33 +0300
|
||||||
|
Subject: arm:dts: Add sun8i-h2-plus-sunvell-r69 device
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/Makefile | 1 +
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h2-plus-sunvell-r69.dts | 225 ++++++++++
|
||||||
|
2 files changed, 226 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/Makefile b/arch/arm/boot/dts/allwinner/Makefile
|
||||||
|
index 5833777340fd..cf12179accb7 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/Makefile
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/Makefile
|
||||||
|
@@ -284,6 +284,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \
|
||||||
|
sun8i-h2-plus-nanopi-duo.dtb \
|
||||||
|
sun8i-h2-plus-orangepi-r1.dtb \
|
||||||
|
sun8i-h2-plus-orangepi-zero.dtb \
|
||||||
|
+ sun8i-h2-plus-sunvell-r69.dtb \
|
||||||
|
sun8i-h3-bananapi-m2-plus.dtb \
|
||||||
|
sun8i-h3-bananapi-m2-plus-v1.2.dtb \
|
||||||
|
sun8i-h3-beelink-x2.dtb \
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-sunvell-r69.dts b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-sunvell-r69.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..bb0c2f72b723
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-sunvell-r69.dts
|
||||||
|
@@ -0,0 +1,225 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ or MIT)
|
||||||
|
+/*
|
||||||
|
+ * Based original Sunvell R69 FEX file (2019 karabek)
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "sun8i-h3.dtsi"
|
||||||
|
+#include "sunxi-common-regulators.dtsi"
|
||||||
|
+
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+#include <dt-bindings/input/input.h>
|
||||||
|
+#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "Sunvell R69";
|
||||||
|
+ compatible = "sunvell,sunvell-r69", "allwinner,sun8i-h2-plus";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet0 = &emac;
|
||||||
|
+ ethernet1 = &xr819;
|
||||||
|
+ serial0 = &uart0;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ stdout-path = "serial0:115200n8";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ connector {
|
||||||
|
+ compatible = "hdmi-connector";
|
||||||
|
+ type = "a";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ hdmi_con_in: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_out_con>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&leds_opc>, <&leds_r_opc>;
|
||||||
|
+
|
||||||
|
+ pwr_led {
|
||||||
|
+ label = "sunvell-r69:red:pwr";
|
||||||
|
+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ status_led {
|
||||||
|
+ label = "sunvell-r69:blue:status";
|
||||||
|
+ gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vdd_cpux: vdd-cpux-regulator {
|
||||||
|
+ compatible = "regulator-gpio";
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ regulator-type = "voltage";
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1100000>;
|
||||||
|
+ regulator-max-microvolt = <1300000>;
|
||||||
|
+ regulator-ramp-delay = <50>; /* 4ms */
|
||||||
|
+
|
||||||
|
+ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpios-states = <0x1>;
|
||||||
|
+ states = <1100000 0x0
|
||||||
|
+ 1300000 0x1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vcc_wifi: reg_vcc_wifi {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vcc-wifi";
|
||||||
|
+ gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ startup-delay-us = <70000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ reset-gpios = <&r_pio 0 0 GPIO_ACTIVE_LOW>;
|
||||||
|
+ post-power-on-delay-ms = <200>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <®_vdd_cpux>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&de {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emac {
|
||||||
|
+ phy-handle = <&int_mii_phy>;
|
||||||
|
+ phy-mode = "mii";
|
||||||
|
+ allwinner,leds-active-low;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi_out {
|
||||||
|
+ hdmi_out_con: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_con_in>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ir {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&r_ir_rx_pin>; /* <&r_ir_rx_pin> */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc0 {
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc1 {
|
||||||
|
+ vmmc-supply = <®_vcc_wifi>;
|
||||||
|
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ non-removable;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ xr819: sdio_wifi@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ compatible = "xradio,xr819";
|
||||||
|
+ interrupt-parent = <&pio>;
|
||||||
|
+ interrupts = <0 11 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
+ interrupt-names = "host-wake";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc2_8bit_pins>;
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ non-removable;
|
||||||
|
+ cap-mmc-hw-reset;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2_8bit_pins {
|
||||||
|
+ /* Increase current from 30mA to 40mA for DDR eMMC */
|
||||||
|
+ allwinner,drive = <SUN4I_PINCTRL_40_MA>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pio {
|
||||||
|
+ leds_opc: led_pins {
|
||||||
|
+ pins = "PA15";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&r_pio {
|
||||||
|
+ leds_r_opc: led_pins {
|
||||||
|
+ pins = "PL10";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+®_usb0_vbus {
|
||||||
|
+ gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart0_pa_pins>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart1 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart1_pins>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart2 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart2_pins>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart3 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart3_pins>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb_otg {
|
||||||
|
+ dr_mode = "host";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbphy {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 14:46:11 +0300
|
||||||
|
Subject: arm:dts: a10-cubiebord a20-cubietruck green LED mmc0 default-trigger
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun4i-a10-cubieboard.dts | 2 +-
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts | 1 +
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun4i-a10-cubieboard.dts b/arch/arm/boot/dts/allwinner/sun4i-a10-cubieboard.dts
|
||||||
|
index 0645d6064235..f97b53c4438c 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun4i-a10-cubieboard.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun4i-a10-cubieboard.dts
|
||||||
|
@@ -83,7 +83,7 @@ led-0 {
|
||||||
|
led-1 {
|
||||||
|
label = "cubieboard:green:usr";
|
||||||
|
gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>; /* LED2 */
|
||||||
|
- linux,default-trigger = "heartbeat";
|
||||||
|
+ linux,default-trigger = "mmc0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts
|
||||||
|
index 525cb7fcca79..df428f29b82f 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts
|
||||||
|
@@ -93,6 +93,7 @@ led-2 {
|
||||||
|
led-3 {
|
||||||
|
label = "cubietruck:green:usr";
|
||||||
|
gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ linux,default-trigger = "mmc0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 13:18:28 +0300
|
||||||
|
Subject: arm:dts: a20-orangepi and mini fix phy-mode, hdmi
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-orangepi-mini.dts | 2 +-
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-orangepi.dts | 31 +++++++++-
|
||||||
|
2 files changed, 31 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-orangepi-mini.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-orangepi-mini.dts
|
||||||
|
index 84efa01e7cba..fc87309aec4a 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-orangepi-mini.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-orangepi-mini.dts
|
||||||
|
@@ -121,7 +121,7 @@ &gmac {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&gmac_rgmii_pins>;
|
||||||
|
phy-handle = <&phy1>;
|
||||||
|
- phy-mode = "rgmii";
|
||||||
|
+ phy-mode = "rgmii-id";
|
||||||
|
phy-supply = <®_gmac_3v3>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-orangepi.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-orangepi.dts
|
||||||
|
index 5d77f1d9818f..0c760b0a51c0 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-orangepi.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-orangepi.dts
|
||||||
|
@@ -61,6 +61,17 @@ chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
|
+ hdmi-connector {
|
||||||
|
+ compatible = "hdmi-connector";
|
||||||
|
+ type = "a";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ hdmi_con_in: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_out_con>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
@@ -85,6 +96,14 @@ &ahci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&codec {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&de {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&ehci0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
@@ -97,11 +116,21 @@ &gmac {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&gmac_rgmii_pins>;
|
||||||
|
phy-handle = <&phy1>;
|
||||||
|
- phy-mode = "rgmii";
|
||||||
|
+ phy-mode = "rgmii-id";
|
||||||
|
phy-supply = <®_gmac_3v3>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&hdmi {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi_out {
|
||||||
|
+ hdmi_out_con: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_con_in>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&i2c0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 15:34:01 +0300
|
||||||
|
Subject: arm:dts: h3-nanopi-neo Add regulator, leds, mmc2
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo.dts | 57 ++++++++++
|
||||||
|
1 file changed, 57 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo.dts
|
||||||
|
index df71fab3cf4e..032849663443 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo.dts
|
||||||
|
@@ -49,6 +49,63 @@ / {
|
||||||
|
aliases {
|
||||||
|
ethernet0 = &emac;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ /* Warning: sunxi-5.18:
|
||||||
|
+ * The leds node is present in the sun8i-h3-nanopi.dtsi file
|
||||||
|
+ * You will have to fix this situation yourself
|
||||||
|
+ */
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ pwr {
|
||||||
|
+ label = "nanopi:red:pwr";
|
||||||
|
+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
|
||||||
|
+ linux,default-trigger = "default-on";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ status {
|
||||||
|
+ label = "nanopi:green:status";
|
||||||
|
+ gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_cpux: gpio-regulator {
|
||||||
|
+ compatible = "regulator-gpio";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ regulator-type = "voltage";
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1100000>;
|
||||||
|
+ regulator-max-microvolt = <1300000>;
|
||||||
|
+ regulator-ramp-delay = <50>; /* 4ms */
|
||||||
|
+ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
|
||||||
|
+ gpios-states = <0x1>;
|
||||||
|
+ states = <1100000 0x0
|
||||||
|
+ 1300000 0x1>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <&vdd_cpux>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc2_8bit_pins>;
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ non-removable;
|
||||||
|
+ cap-mmc-hw-reset;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2_8bit_pins {
|
||||||
|
+ /* Increase drive strength for DDR modes */
|
||||||
|
+ drive-strength = <40>;
|
||||||
|
+ /* eMMC is missing pull-ups */
|
||||||
|
+ bias-pull-up;
|
||||||
|
};
|
||||||
|
|
||||||
|
&ehci0 {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 15:45:43 +0300
|
||||||
|
Subject: arm:dts: h3-nanopi-neo-air Add regulator camera wifi bluetooth otg
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo-air.dts | 153 ++++++++++
|
||||||
|
1 file changed, 153 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo-air.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo-air.dts
|
||||||
|
index 9e1a33f94cad..bff96ae65469 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo-air.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo-air.dts
|
||||||
|
@@ -70,12 +70,92 @@ led-0 {
|
||||||
|
led-1 {
|
||||||
|
label = "nanopi:blue:status";
|
||||||
|
gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+ vdd_cpux: gpio-regulator {
|
||||||
|
+ compatible = "regulator-gpio";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ regulator-type = "voltage";
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1100000>;
|
||||||
|
+ regulator-max-microvolt = <1300000>;
|
||||||
|
+ regulator-ramp-delay = <50>; /* 4ms */
|
||||||
|
+ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
|
||||||
|
+ gpios-states = <0x1>;
|
||||||
|
+ states = <1100000 0x0
|
||||||
|
+ 1300000 0x1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
wifi_pwrseq: wifi_pwrseq {
|
||||||
|
compatible = "mmc-pwrseq-simple";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&wifi_en_npi>;
|
||||||
|
reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
|
||||||
|
+ post-power-on-delay-ms = <200>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ rfkill_bt {
|
||||||
|
+ compatible = "rfkill-gpio";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&bt_pwr_pin>;
|
||||||
|
+ reset-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
|
||||||
|
+ clocks = <&osc32k>;
|
||||||
|
+ clock-frequency = <32768>;
|
||||||
|
+ rfkill-name = "sunxi-bt";
|
||||||
|
+ rfkill-type = "bluetooth";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cam_xclk: cam-xclk {
|
||||||
|
+ #clock-cells = <0>;
|
||||||
|
+ compatible = "fixed-clock";
|
||||||
|
+ clock-frequency = <24000000>;
|
||||||
|
+ clock-output-names = "cam-xclk";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_cam_avdd: cam-avdd {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "cam500b-avdd";
|
||||||
|
+ regulator-min-microvolt = <2800000>;
|
||||||
|
+ regulator-max-microvolt = <2800000>;
|
||||||
|
+ vin-supply = <®_vcc3v3>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_cam_dovdd: cam-dovdd {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "cam500b-dovdd";
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ vin-supply = <®_vcc3v3>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_cam_dvdd: cam-dvdd {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "cam500b-dvdd";
|
||||||
|
+ regulator-min-microvolt = <1500000>;
|
||||||
|
+ regulator-max-microvolt = <1500000>;
|
||||||
|
+ vin-supply = <®_vcc3v3>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <&vdd_cpux>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pio {
|
||||||
|
+ bt_pwr_pin: bt_pwr_pin@0 {
|
||||||
|
+ pins = "PG13";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&r_pio {
|
||||||
|
+ wifi_en_npi: wifi_en_pin {
|
||||||
|
+ pins = "PL7";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -110,6 +190,74 @@ &mmc2 {
|
||||||
|
vqmmc-supply = <®_vcc3v3>;
|
||||||
|
bus-width = <8>;
|
||||||
|
non-removable;
|
||||||
|
+ cap-mmc-hw-reset;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2_8bit_pins {
|
||||||
|
+ /* Increase drive strength for DDR modes */
|
||||||
|
+ drive-strength = <40>;
|
||||||
|
+ /* eMMC is missing pull-ups */
|
||||||
|
+ bias-pull-up;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&csi {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+
|
||||||
|
+ /* Parallel bus endpoint */
|
||||||
|
+ csi_from_ov5640: endpoint {
|
||||||
|
+ remote-endpoint = <&ov5640_to_csi>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ data-shift = <2>;
|
||||||
|
+ hsync-active = <1>; /* Active high */
|
||||||
|
+ vsync-active = <0>; /* Active low */
|
||||||
|
+ data-active = <1>; /* Active high */
|
||||||
|
+ pclk-sample = <1>; /* Rising */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+ ov5640: camera@3c {
|
||||||
|
+ compatible = "ovti,ov5640";
|
||||||
|
+ reg = <0x3c>;
|
||||||
|
+ clocks = <&cam_xclk>;
|
||||||
|
+ clock-names = "xclk";
|
||||||
|
+
|
||||||
|
+ reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>;
|
||||||
|
+ powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ AVDD-supply = <®_cam_avdd>;
|
||||||
|
+ DOVDD-supply = <®_cam_dovdd>;
|
||||||
|
+ DVDD-supply = <®_cam_dvdd>;
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ ov5640_to_csi: endpoint {
|
||||||
|
+ remote-endpoint = <&csi_from_ov5640>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ data-shift = <2>;
|
||||||
|
+ hsync-active = <1>; /* Active high */
|
||||||
|
+ vsync-active = <0>; /* Active low */
|
||||||
|
+ data-active = <1>; /* Active high */
|
||||||
|
+ pclk-sample = <1>; /* Rising */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c2_pins {
|
||||||
|
+ bias-pull-up;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -137,6 +285,11 @@ bluetooth {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&usb_otg {
|
||||||
|
+ dr_mode = "peripheral";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&usbphy {
|
||||||
|
/* USB VBUS is always on */
|
||||||
|
status = "okay";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 18:23:18 +0300
|
||||||
|
Subject: arm:dts: h3-orangepi-2 Add regulator vdd cpu
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-2.dts | 29 ++++++++++
|
||||||
|
1 file changed, 29 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-2.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-2.dts
|
||||||
|
index 2b5890327a47..bc20c44d1c22 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-2.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-2.dts
|
||||||
|
@@ -124,6 +124,10 @@ &de {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <®_vdd_cpux>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&ehci1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
@@ -178,6 +182,31 @@ rtl8189: sdio_wifi@1 {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&r_i2c {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ reg_vdd_cpux: regulator@65 {
|
||||||
|
+ compatible = "silergy,sy8106a";
|
||||||
|
+ reg = <0x65>;
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ silergy,fixed-microvolt = <1200000>;
|
||||||
|
+ /*
|
||||||
|
+ * The datasheet uses 1.1V as the minimum value of VDD-CPUX,
|
||||||
|
+ * however both the Armbian DVFS table and the official one
|
||||||
|
+ * have operating points with voltage under 1.1V, and both
|
||||||
|
+ * DVFS table are known to work properly at the lowest
|
||||||
|
+ * operating point.
|
||||||
|
+ *
|
||||||
|
+ * Use 1.0V as the minimum voltage instead.
|
||||||
|
+ */
|
||||||
|
+ regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-max-microvolt = <1400000>;
|
||||||
|
+ regulator-ramp-delay = <200>;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
®_usb1_vbus {
|
||||||
|
gpio = <&pio 6 13 GPIO_ACTIVE_HIGH>;
|
||||||
|
status = "okay";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,206 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Wed, 2 Feb 2022 21:29:16 +0300
|
||||||
|
Subject: arm:dts:overlay: sun8i-h3-cpu-clock add overclock
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/overlay/Makefile | 3 +
|
||||||
|
arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso | 31 +++++
|
||||||
|
arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso | 67 ++++++++++
|
||||||
|
arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso | 61 +++++++++
|
||||||
|
4 files changed, 162 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/overlay/Makefile b/arch/arm/boot/dts/allwinner/overlay/Makefile
|
||||||
|
index 0c47e8fda8fc..560f926b7018 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/overlay/Makefile
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/overlay/Makefile
|
||||||
|
@@ -60,6 +60,9 @@ dtb-$(CONFIG_MACH_SUN7I) += \
|
||||||
|
dtb-$(CONFIG_MACH_SUN8I) += \
|
||||||
|
sun8i-h3-analog-codec.dtbo \
|
||||||
|
sun8i-h3-cir.dtbo \
|
||||||
|
+ sun8i-h3-cpu-clock-1.2GHz-1.3v.dtbo \
|
||||||
|
+ sun8i-h3-cpu-clock-1.368GHz-1.3v.dtbo \
|
||||||
|
+ sun8i-h3-cpu-clock-1.3GHz-1.3v.dtbo \
|
||||||
|
sun8i-h3-i2c0.dtbo \
|
||||||
|
sun8i-h3-i2c1.dtbo \
|
||||||
|
sun8i-h3-i2c2.dtbo \
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..b07e694c781a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+// DT overlay for CPU frequency operating points to up to 1.2GHz at a maximum CPU voltage of 1.3v
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&cpu0_opp_table>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ compatible = "operating-points-v2";
|
||||||
|
+ opp-shared;
|
||||||
|
+
|
||||||
|
+ // in order to match the existing DT cooling-maps, update the existing OP table in-place
|
||||||
|
+ // with the new voltages
|
||||||
|
+
|
||||||
|
+ opp-1104000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1104000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1200000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..e3fd7e5c85a6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso
|
||||||
|
@@ -0,0 +1,67 @@
|
||||||
|
+// DT overlay for CPU frequency operating points to 1.3GHz at a maximum CPU voltage of 1.3v
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&cpu0_opp_table>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ compatible = "operating-points-v2";
|
||||||
|
+ opp-shared;
|
||||||
|
+
|
||||||
|
+ // in order to match the DT cooling-maps, update the existing OP table in-place
|
||||||
|
+ // with the new voltages
|
||||||
|
+
|
||||||
|
+ opp-1056000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1056000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1104000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1104000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1152000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1152000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1200000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1224000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1224000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1248000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1248000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1296000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1296000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1368000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1368000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..413222831eab
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso
|
||||||
|
@@ -0,0 +1,61 @@
|
||||||
|
+// DT overlay for CPU frequency operating points to 1.3GHz at a maximum CPU voltage of 1.3v
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&cpu0_opp_table>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ compatible = "operating-points-v2";
|
||||||
|
+ opp-shared;
|
||||||
|
+
|
||||||
|
+ // in order to match the DT cooling-maps, update the existing OP table in-place
|
||||||
|
+ // with the new voltages
|
||||||
|
+
|
||||||
|
+ opp-1056000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1056000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1104000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1104000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1152000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1152000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1200000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1224000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1224000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1248000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1248000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1296000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1296000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: hehopmajieh <hehopmajieh@debian.bg>
|
||||||
|
Date: Thu, 19 Mar 2020 10:40:44 +0200
|
||||||
|
Subject: arm:dts:sun5i-a13-olinuxino Add panel lcd-olinuxino-4.3 needed to fix
|
||||||
|
overlay tests
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino.dts | 79 ++++++----
|
||||||
|
1 file changed, 44 insertions(+), 35 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino.dts b/arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino.dts
|
||||||
|
index fadeae3cd8bb..d015a24c67a2 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino.dts
|
||||||
|
@@ -48,6 +48,7 @@
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
+#include <dt-bindings/pwm/pwm.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Olimex A13-Olinuxino";
|
||||||
|
@@ -72,40 +73,28 @@ led {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
- bridge {
|
||||||
|
- compatible = "dumb-vga-dac";
|
||||||
|
+ lcd_backlight: backlight {
|
||||||
|
+ compatible = "pwm-backlight";
|
||||||
|
+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
|
||||||
|
+ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
|
||||||
|
+ default-brightness-level = <8>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ panel: panel {
|
||||||
|
+ compatible = "olimex,lcd-olinuxino-4.3";
|
||||||
|
+ backlight = <&lcd_backlight>;
|
||||||
|
+ enable-gpios = <&axp_gpio 0 GPIO_ACTIVE_HIGH>; /* AXP GPIO0 */
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ port {
|
||||||
|
+ panel_input: endpoint {
|
||||||
|
+ remote-endpoint = <&tcon0_out_lcd>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ };
|
||||||
|
|
||||||
|
- ports {
|
||||||
|
- #address-cells = <1>;
|
||||||
|
- #size-cells = <0>;
|
||||||
|
-
|
||||||
|
- port@0 {
|
||||||
|
- reg = <0>;
|
||||||
|
-
|
||||||
|
- vga_bridge_in: endpoint {
|
||||||
|
- remote-endpoint = <&tcon0_out_vga>;
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- port@1 {
|
||||||
|
- reg = <1>;
|
||||||
|
-
|
||||||
|
- vga_bridge_out: endpoint {
|
||||||
|
- remote-endpoint = <&vga_con_in>;
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- vga {
|
||||||
|
- compatible = "vga-connector";
|
||||||
|
-
|
||||||
|
- port {
|
||||||
|
- vga_con_in: endpoint {
|
||||||
|
- remote-endpoint = <&vga_bridge_out>;
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
};
|
||||||
|
|
||||||
|
&be0 {
|
||||||
|
@@ -130,6 +119,11 @@ axp209: pmic@34 {
|
||||||
|
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
+ axp_gpio:gpio{
|
||||||
|
+ compatible = "x-powers,axp209-gpio";
|
||||||
|
+ gpio-controller;
|
||||||
|
+ #gpio-cells = <2>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -221,12 +215,18 @@ &tcon0 {
|
||||||
|
};
|
||||||
|
|
||||||
|
&tcon0_out {
|
||||||
|
- tcon0_out_vga: endpoint@0 {
|
||||||
|
+ tcon0_out_lcd: endpoint@0 {
|
||||||
|
reg = <0>;
|
||||||
|
- remote-endpoint = <&vga_bridge_in>;
|
||||||
|
+ remote-endpoint = <&panel_input>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&pwm {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pwm0_pin>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&uart1 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart1_pg_pins>;
|
||||||
|
@@ -245,3 +245,12 @@ &usbphy {
|
||||||
|
usb1_vbus-supply = <®_usb1_vbus>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+&rtp {
|
||||||
|
+ allwinner,ts-attached;
|
||||||
|
+ #thermal-sensor-cells = <0>;
|
||||||
|
+ /* sensitive/noisy touch panel */
|
||||||
|
+ touchscreen-inverted-x;
|
||||||
|
+ allwinner,tp-sensitive-adjust = <0>;
|
||||||
|
+ allwinner,filter-type = <3>;
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mitko Gamishev <hehopmajieh@debian.bg>
|
||||||
|
Date: Wed, 5 Feb 2020 15:00:25 +0200
|
||||||
|
Subject: arm:dts:sun5i-a13-olinuxino-micro add panel lcd-olinuxino-4.3
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino-micro.dts | 62 +++++++++-
|
||||||
|
1 file changed, 60 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino-micro.dts b/arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino-micro.dts
|
||||||
|
index bfe1075e62cc..32874f6a5917 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino-micro.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun5i-a13-olinuxino-micro.dts
|
||||||
|
@@ -44,7 +44,7 @@
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun5i-a13.dtsi"
|
||||||
|
#include "sunxi-common-regulators.dtsi"
|
||||||
|
-
|
||||||
|
+#include <dt-bindings/pwm/pwm.h>
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
@@ -70,6 +70,40 @@ led {
|
||||||
|
default-state = "on";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ backlight: backlight {
|
||||||
|
+ compatible = "pwm-backlight";
|
||||||
|
+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
|
||||||
|
+ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
|
||||||
|
+ default-brightness-level = <8>;
|
||||||
|
+
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ panel: panel {
|
||||||
|
+ compatible = "olimex,lcd-olinuxino-4.3";
|
||||||
|
+ backlight = <&backlight>;
|
||||||
|
+ enable-gpios = <&pio 1 10 GPIO_ACTIVE_HIGH>; /* PB10 */
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ port {
|
||||||
|
+ panel_input: endpoint {
|
||||||
|
+ remote-endpoint = <&tcon0_out_lcd>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+&be0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&codec {
|
||||||
|
+ status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&ehci0 {
|
||||||
|
@@ -117,10 +151,28 @@ ®_usb0_vbus {
|
||||||
|
};
|
||||||
|
|
||||||
|
®_usb1_vbus {
|
||||||
|
- gpio = <&pio 6 11 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ gpio = <&pio 2 19 GPIO_ACTIVE_HIGH>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&tcon0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&lcd_rgb666_pins>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+&tcon0_out {
|
||||||
|
+ tcon0_out_lcd: endpoint@0 {
|
||||||
|
+ reg = <0>;
|
||||||
|
+ remote-endpoint = <&panel_input>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pwm {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pwm0_pin>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&uart1 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart1_pg_pins>;
|
||||||
|
@@ -139,3 +191,9 @@ &usbphy {
|
||||||
|
usb1_vbus-supply = <®_usb1_vbus>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+&rtp {
|
||||||
|
+ allwinner,ts-attached;
|
||||||
|
+ touchscreen-inverted-x;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Sun, 23 Jan 2022 22:32:07 +0300
|
||||||
|
Subject: arm:dts:sun7i-a20 Disable OOB IRQ for brcm-wifi on Cubietruck and
|
||||||
|
Banana-Pro
|
||||||
|
|
||||||
|
While doing some brcmfmac driver work I needed to test this also on some
|
||||||
|
devicetree based boards. So I fired up the good old Cubietruck and when
|
||||||
|
that would not work a Banana Pro.
|
||||||
|
|
||||||
|
With an unmodified 4.17 kernel both boards intermittently would come up
|
||||||
|
with non working wifi with the following errors:
|
||||||
|
|
||||||
|
brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout
|
||||||
|
brcmfmac: brcmf_bus_started: failed: -110
|
||||||
|
brcmfmac: brcmf_attach: dongle is not responding: err=-110
|
||||||
|
brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed
|
||||||
|
|
||||||
|
They would come up this way more often then with actual working wifi,
|
||||||
|
once this problem happens it seems to require a power-cycle to fix.
|
||||||
|
Once things work one can safely reboot without hitting the issue.
|
||||||
|
|
||||||
|
I've found that disabling OOB interrupts fixes this. This really is more
|
||||||
|
of a workaround then a proper fix, but it makes the wifi reliable again
|
||||||
|
and it does not have much of a downside.
|
||||||
|
|
||||||
|
Using an OOB IRQ instead of the sdio-IRQ mechanism is mostly important to
|
||||||
|
allow the MMC controller to go into runtime-suspend which is not really an
|
||||||
|
issue on these boards since they are (usually) not battery powered.
|
||||||
|
|
||||||
|
I've looked at recent brcmfmac and mmc-core changes which may explain this
|
||||||
|
and I've not found anything. So the most likely culprit is the A20 external
|
||||||
|
interrupt handling e.g. perhaps it is set to edge instead of level? Either
|
||||||
|
way I do not have time to further investigate this.
|
||||||
|
|
||||||
|
BugLink: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908438
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts | 16 ++++++++--
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts | 16 ++++++++--
|
||||||
|
2 files changed, 26 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts
|
||||||
|
index e22f0e8bb17a..e687480765e6 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts
|
||||||
|
@@ -162,9 +162,19 @@ &mmc3 {
|
||||||
|
brcmf: wifi@1 {
|
||||||
|
reg = <1>;
|
||||||
|
compatible = "brcm,bcm4329-fmac";
|
||||||
|
- interrupt-parent = <&pio>;
|
||||||
|
- interrupts = <7 15 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
- interrupt-names = "host-wake";
|
||||||
|
+ /*
|
||||||
|
+ * OOB interrupt support is broken ATM, often the first irq
|
||||||
|
+ * does not get seen resulting in the drv probe failing with:
|
||||||
|
+ *
|
||||||
|
+ * brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout
|
||||||
|
+ * brcmfmac: brcmf_bus_started: failed: -110
|
||||||
|
+ * brcmfmac: brcmf_attach: dongle is not responding: err=-110
|
||||||
|
+ * brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed
|
||||||
|
+ *
|
||||||
|
+ * interrupt-parent = <&pio>;
|
||||||
|
+ * interrupts = <7 15 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+ * interrupt-names = "host-wake";
|
||||||
|
+ */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts
|
||||||
|
index 52160e368304..525cb7fcca79 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts
|
||||||
|
@@ -213,9 +213,19 @@ &mmc3 {
|
||||||
|
brcmf: wifi@1 {
|
||||||
|
reg = <1>;
|
||||||
|
compatible = "brcm,bcm4329-fmac";
|
||||||
|
- interrupt-parent = <&pio>;
|
||||||
|
- interrupts = <7 10 IRQ_TYPE_LEVEL_LOW>; /* PH10 / EINT10 */
|
||||||
|
- interrupt-names = "host-wake";
|
||||||
|
+ /*
|
||||||
|
+ * OOB interrupt support is broken ATM, often the first irq
|
||||||
|
+ * does not get seen resulting in the drv probe failing with:
|
||||||
|
+ *
|
||||||
|
+ * brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout
|
||||||
|
+ * brcmfmac: brcmf_bus_started: failed: -110
|
||||||
|
+ * brcmfmac: brcmf_attach: dongle is not responding: err=-110
|
||||||
|
+ * brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed
|
||||||
|
+ *
|
||||||
|
+ * interrupt-parent = <&pio>;
|
||||||
|
+ * interrupts = <7 10 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+ * interrupt-names = "host-wake";
|
||||||
|
+ */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Fri, 28 Jan 2022 15:15:19 +0300
|
||||||
|
Subject: arm:dts: sun7i-a20-bananapro add hdmi-connector, de
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts | 30 ++++++++++
|
||||||
|
1 file changed, 30 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts
|
||||||
|
index e687480765e6..3a34fb39a840 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-bananapro.dts
|
||||||
|
@@ -60,6 +60,17 @@ chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
|
+ hdmi-connector {
|
||||||
|
+ compatible = "hdmi-connector";
|
||||||
|
+ type = "a";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ hdmi_con_in: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_out_con>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
@@ -91,6 +102,7 @@ reg_gmac_3v3: gmac-3v3 {
|
||||||
|
};
|
||||||
|
|
||||||
|
&ahci {
|
||||||
|
+ target-supply = <®_ahci_5v>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -98,6 +110,10 @@ &codec {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&de {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&ehci0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
@@ -115,6 +131,16 @@ &gmac {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&hdmi {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi_out {
|
||||||
|
+ hdmi_out_con: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_con_in>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&i2c0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
@@ -227,3 +253,7 @@ &usbphy {
|
||||||
|
usb2_vbus-supply = <®_usb2_vbus>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+®_ahci_5v {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Fri, 28 Jan 2022 11:38:08 +0300
|
||||||
|
Subject: arm:dts: sun7i-a20-cubietruck add alias uart2
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts
|
||||||
|
index df428f29b82f..a3d169c4395e 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-cubietruck.dts
|
||||||
|
@@ -55,6 +55,7 @@ / {
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uart0;
|
||||||
|
+ serial2 = &uart2;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Saraev <stefan@saraev.ca>
|
||||||
|
Date: Wed, 24 Jun 2020 20:53:36 +0300
|
||||||
|
Subject: arm:dts:sun7i-a20: olimex-som(204)-evb,olinuxino-micro decrease dcdc2
|
||||||
|
min voltage
|
||||||
|
|
||||||
|
fixes some kernel crashes
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som-evb.dts | 2 +-
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som204-evb.dts | 2 +-
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts | 2 +-
|
||||||
|
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som-evb.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som-evb.dts
|
||||||
|
index f05ee32bc9cb..e1867190c70c 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som-evb.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som-evb.dts
|
||||||
|
@@ -247,7 +247,7 @@ ®_ahci_5v {
|
||||||
|
|
||||||
|
®_dcdc2 {
|
||||||
|
regulator-always-on;
|
||||||
|
- regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-min-microvolt = <1300000>;
|
||||||
|
regulator-max-microvolt = <1400000>;
|
||||||
|
regulator-name = "vdd-cpu";
|
||||||
|
};
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som204-evb.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som204-evb.dts
|
||||||
|
index 54af6c18075b..ae3aa1055559 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som204-evb.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-olimex-som204-evb.dts
|
||||||
|
@@ -218,7 +218,7 @@ ®_ahci_5v {
|
||||||
|
|
||||||
|
®_dcdc2 {
|
||||||
|
regulator-always-on;
|
||||||
|
- regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-min-microvolt = <1300000>;
|
||||||
|
regulator-max-microvolt = <1400000>;
|
||||||
|
regulator-name = "vdd-cpu";
|
||||||
|
};
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts
|
||||||
|
index a1b89b2a2999..7077ceea73e2 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts
|
||||||
|
@@ -268,7 +268,7 @@ &battery_power_supply {
|
||||||
|
|
||||||
|
®_dcdc2 {
|
||||||
|
regulator-always-on;
|
||||||
|
- regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-min-microvolt = <1300000>;
|
||||||
|
regulator-max-microvolt = <1400000>;
|
||||||
|
regulator-name = "vdd-cpu";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Saraev <stefan@saraev.ca>
|
||||||
|
Date: Wed, 3 Jun 2020 13:49:44 +0300
|
||||||
|
Subject: arm:dts:sun7i-a20-olinuxino-lime2 enable audio codec
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts
|
||||||
|
index ecb91fb899ff..e0174ca486cd 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts
|
||||||
|
@@ -96,6 +96,10 @@ &ahci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&codec {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&de {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: hehopmajieh <hehopmajieh@debian.bg>
|
||||||
|
Date: Tue, 16 Jun 2020 15:40:59 +0300
|
||||||
|
Subject: arm:dts:sun7i-a20-olinuxino-lime2 enable ldo3 always-on
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts
|
||||||
|
index e0174ca486cd..ae710f785915 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-lime2.dts
|
||||||
|
@@ -237,10 +237,10 @@ ®_ldo2 {
|
||||||
|
};
|
||||||
|
|
||||||
|
®_ldo3 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
regulator-min-microvolt = <2800000>;
|
||||||
|
regulator-max-microvolt = <2800000>;
|
||||||
|
regulator-name = "vddio-csi0";
|
||||||
|
- regulator-soft-start;
|
||||||
|
regulator-ramp-delay = <1600>;
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: hehopmajieh <hehopmajieh@debian.bg>
|
||||||
|
Date: Tue, 14 Apr 2020 10:28:16 +0300
|
||||||
|
Subject: arm:dts:sun7i-a20-olinuxino-micro-emmc Add vqmmc node
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro-emmc.dts | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro-emmc.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro-emmc.dts
|
||||||
|
index 2337b44a88aa..c79e9ad02812 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro-emmc.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro-emmc.dts
|
||||||
|
@@ -55,6 +55,7 @@ mmc2_pwrseq: pwrseq {
|
||||||
|
|
||||||
|
&mmc2 {
|
||||||
|
vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ vqmmc-supply = <®_vcc3v3>;
|
||||||
|
bus-width = <4>;
|
||||||
|
non-removable;
|
||||||
|
mmc-pwrseq = <&mmc2_pwrseq>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 7 Feb 2022 19:15:17 +0300
|
||||||
|
Subject: arm:dts: sun8i-h2-plus-orangepi-zero fix xradio interrupt
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts
|
||||||
|
index 3706216ffb40..7b42ab8b5180 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts
|
||||||
|
@@ -49,6 +49,7 @@
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
+#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Xunlong Orange Pi Zero";
|
||||||
|
@@ -151,6 +152,10 @@ &mmc1 {
|
||||||
|
*/
|
||||||
|
xr819: sdio_wifi@1 {
|
||||||
|
reg = <1>;
|
||||||
|
+ compatible = "xradio,xr819";
|
||||||
|
+ interrupt-parent = <&pio>;
|
||||||
|
+ interrupts = <6 10 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
+ interrupt-names = "host-wake";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Wed, 2 Feb 2022 21:34:48 +0300
|
||||||
|
Subject: arm:dts:sun8i-h3 add thermal zones
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3.dtsi | 68 ++++++++--
|
||||||
|
1 file changed, 55 insertions(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi b/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi
|
||||||
|
index 30d72d3b670e..1b02a4c3f05d 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi
|
||||||
|
@@ -297,32 +297,74 @@ ths: thermal-sensor@1c25000 {
|
||||||
|
};
|
||||||
|
|
||||||
|
thermal-zones {
|
||||||
|
- cpu_thermal: cpu-thermal {
|
||||||
|
- polling-delay-passive = <0>;
|
||||||
|
- polling-delay = <0>;
|
||||||
|
+ cpu_thermal {
|
||||||
|
+ /* milliseconds */
|
||||||
|
+ polling-delay-passive = <250>;
|
||||||
|
+ polling-delay = <1000>;
|
||||||
|
thermal-sensors = <&ths>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
- cpu_hot_trip: cpu-hot {
|
||||||
|
+ cpu_warm: cpu_warm {
|
||||||
|
+ temperature = <75000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_hot_pre: cpu_hot_pre {
|
||||||
|
temperature = <80000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "passive";
|
||||||
|
};
|
||||||
|
|
||||||
|
- cpu_very_hot_trip: cpu-very-hot {
|
||||||
|
- temperature = <100000>;
|
||||||
|
- hysteresis = <0>;
|
||||||
|
+ cpu_hot: cpu_hot {
|
||||||
|
+ temperature = <85000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_very_hot_pre: cpu_very_hot_pre {
|
||||||
|
+ temperature = <90000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_very_hot: cpu_very_hot {
|
||||||
|
+ temperature = <95000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_crit: cpu_crit {
|
||||||
|
+ temperature = <105000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cooling-maps {
|
||||||
|
- cpu-hot-limit {
|
||||||
|
- trip = <&cpu_hot_trip>;
|
||||||
|
- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||||
|
- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||||
|
- <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||||
|
- <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
||||||
|
+ cpu_warm_limit_cpu {
|
||||||
|
+ trip = <&cpu_warm>;
|
||||||
|
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT 2>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_hot_pre_limit_cpu {
|
||||||
|
+ trip = <&cpu_hot_pre>;
|
||||||
|
+ cooling-device = <&cpu0 2 3>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_hot_limit_cpu {
|
||||||
|
+ trip = <&cpu_hot>;
|
||||||
|
+ cooling-device = <&cpu0 3 4>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_very_hot_pre_limit_cpu {
|
||||||
|
+ trip = <&cpu_very_hot_pre>;
|
||||||
|
+ cooling-device = <&cpu0 5 6>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_very_hot_limit_cpu {
|
||||||
|
+ trip = <&cpu_very_hot>;
|
||||||
|
+ cooling-device = <&cpu0 7 THERMAL_NO_LIMIT>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Fri, 28 Jan 2022 15:06:34 +0300
|
||||||
|
Subject: arm:dts:sun8i-h3-bananapi-m2-plus add wifi_pwrseq
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3-bananapi-m2-plus.dts | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-bananapi-m2-plus.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-bananapi-m2-plus.dts
|
||||||
|
index 195a75da13f1..f3f324e669a0 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-bananapi-m2-plus.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-bananapi-m2-plus.dts
|
||||||
|
@@ -48,3 +48,8 @@ / {
|
||||||
|
model = "Banana Pi BPI-M2-Plus H3";
|
||||||
|
compatible = "sinovoip,bpi-m2-plus", "allwinner,sun8i-h3";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+&wifi_pwrseq {
|
||||||
|
+ clocks = <&rtc 1>;
|
||||||
|
+ clock-names = "ext_clock";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 14:14:41 +0300
|
||||||
|
Subject: arm:dts: sun8i-h3-nanopi add leds pio pins
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3-nanopi.dtsi | 23 ++++++++++
|
||||||
|
1 file changed, 23 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi.dtsi b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi.dtsi
|
||||||
|
index cf8413fba6c1..57d5f75133fd 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi.dtsi
|
||||||
|
@@ -59,6 +59,8 @@ chosen {
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&leds_npi>, <&leds_r_npi>;
|
||||||
|
|
||||||
|
led-0 {
|
||||||
|
label = "nanopi:blue:status";
|
||||||
|
@@ -75,6 +77,8 @@ led-1 {
|
||||||
|
|
||||||
|
gpio-keys {
|
||||||
|
compatible = "gpio-keys";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&sw_r_npi>;
|
||||||
|
|
||||||
|
key-0 {
|
||||||
|
label = "k1";
|
||||||
|
@@ -100,6 +104,25 @@ &ohci3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&pio {
|
||||||
|
+ leds_npi: led_pins {
|
||||||
|
+ pins = "PA10";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&r_pio {
|
||||||
|
+ leds_r_npi: led_pins {
|
||||||
|
+ pins = "PL10";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sw_r_npi: key_pins {
|
||||||
|
+ pins = "PL3";
|
||||||
|
+ function = "gpio_in";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&uart0 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart0_pa_pins>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gunjan Gupta <viraniac@gmail.com>
|
||||||
|
Date: Mon, 26 Jun 2023 13:29:46 +0000
|
||||||
|
Subject: ARM: dts: sun8i: nanopiduo2: Use key-0 as power button
|
||||||
|
|
||||||
|
The onboard button key-0 was not marked as power button. This meant
|
||||||
|
that once the board was suspended, there was no way to bring it back
|
||||||
|
to life. Mark key-0 as power button so that it can be used to bring
|
||||||
|
the board back to life
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts
|
||||||
|
index 343b02b97155..4878d27bab3e 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts
|
||||||
|
@@ -42,8 +42,9 @@ gpio-keys {
|
||||||
|
|
||||||
|
key-0 {
|
||||||
|
label = "k1";
|
||||||
|
- linux,code = <BTN_0>;
|
||||||
|
+ linux,code = <KEY_POWER>;
|
||||||
|
gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; /* PL3 */
|
||||||
|
+ wakeup-source;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gunjan Gupta <viraniac@gmail.com>
|
||||||
|
Date: Mon, 26 Jun 2023 13:53:14 +0000
|
||||||
|
Subject: ARM: dts: sun8i: nanopiduo2: enable ethernet
|
||||||
|
|
||||||
|
NanoPi Duo2 has pinout for ethernet. Lets enable the same in dts
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts
|
||||||
|
index 4878d27bab3e..8669fd0879e7 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts
|
||||||
|
@@ -105,6 +105,13 @@ &ehci0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&emac {
|
||||||
|
+ phy-handle = <&int_mii_phy>;
|
||||||
|
+ phy-mode = "mii";
|
||||||
|
+ allwinner,leds-active-low;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&mmc0 {
|
||||||
|
bus-width = <4>;
|
||||||
|
cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 7 Feb 2022 19:01:59 +0300
|
||||||
|
Subject: arm:dts: sun8i-h3-orangepi-pc-plus add wifi_pwrseq
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc-plus.dts | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc-plus.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc-plus.dts
|
||||||
|
index babf4cf1b2f6..e1efbf1b1baf 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc-plus.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc-plus.dts
|
||||||
|
@@ -51,10 +51,16 @@ aliases {
|
||||||
|
/* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */
|
||||||
|
ethernet1 = &rtl8189ftv;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 WIFI_EN */
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
bus-width = <4>;
|
||||||
|
non-removable;
|
||||||
|
status = "okay";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gunjan Gupta <viraniac@gmail.com>
|
||||||
|
Date: Mon, 10 Jul 2023 19:24:21 +0000
|
||||||
|
Subject: arm: dts: sun8i: h3: reduce opp-microvolt to prevent not supported by
|
||||||
|
regulator error
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3.dtsi | 7 ++++---
|
||||||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi b/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi
|
||||||
|
index 1b02a4c3f05d..8c2f597772fe 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi
|
||||||
|
@@ -86,19 +86,19 @@ opp-1008000000 {
|
||||||
|
|
||||||
|
opp-1104000000 {
|
||||||
|
opp-hz = /bits/ 64 <1104000000>;
|
||||||
|
- opp-microvolt = <1320000 1320000 1320000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
};
|
||||||
|
|
||||||
|
opp-1200000000 {
|
||||||
|
opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
- opp-microvolt = <1320000 1320000 1320000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
};
|
||||||
|
|
||||||
|
opp-1296000000 {
|
||||||
|
opp-hz = /bits/ 64 <1296000000>;
|
||||||
|
- opp-microvolt = <1340000 1340000 1340000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -106,6 +106,7 @@ opp-1368000000 {
|
||||||
|
opp-hz = /bits/ 64 <1368000000>;
|
||||||
|
opp-microvolt = <1400000 1400000 1400000>;
|
||||||
|
clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ status = "disabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Fri, 28 Jan 2022 15:01:30 +0300
|
||||||
|
Subject: arm:dts: sun8i-r40 add clk_out_a fix bananam2ultra
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-r40.dtsi | 17 ++++++++++
|
||||||
|
1 file changed, 17 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-r40.dtsi b/arch/arm/boot/dts/allwinner/sun8i-r40.dtsi
|
||||||
|
index 83562328b8c0..74c20d84046f 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-r40.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-r40.dtsi
|
||||||
|
@@ -75,6 +75,23 @@ osc32k: osc32k {
|
||||||
|
clock-accuracy = <20000>;
|
||||||
|
clock-output-names = "ext-osc32k";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ osc24M_32k: clk@1 {
|
||||||
|
+ #clock-cells = <0>;
|
||||||
|
+ compatible = "fixed-factor-clock";
|
||||||
|
+ clock-div = <732>;
|
||||||
|
+ clock-mult = <1>;
|
||||||
|
+ clocks = <&osc24M>;
|
||||||
|
+ clock-output-names = "osc24M_32k";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ clk_out_a: clk@01c201f0 {
|
||||||
|
+ #clock-cells = <0>;
|
||||||
|
+ compatible = "allwinner,sun7i-a20-out-clk";
|
||||||
|
+ reg = <0x01c201f0 0x4>;
|
||||||
|
+ clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>;
|
||||||
|
+ clock-output-names = "clk_out_a";
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Tue, 25 Jan 2022 21:18:21 +0300
|
||||||
|
Subject: arm:dts: sun8i-r40 bananapi-m2-ultra add codec analog
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-r40-bananapi-m2-ultra.dts | 10 ++++++
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-r40.dtsi | 18 ++++++++++
|
||||||
|
2 files changed, 28 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-r40-bananapi-m2-ultra.dts b/arch/arm/boot/dts/allwinner/sun8i-r40-bananapi-m2-ultra.dts
|
||||||
|
index 3508633a8e55..ebb2bd322112 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-r40-bananapi-m2-ultra.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-r40-bananapi-m2-ultra.dts
|
||||||
|
@@ -118,6 +118,16 @@ &cpu0 {
|
||||||
|
cpu-supply = <®_dcdc2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+&codec {
|
||||||
|
+ allwinner,audio-routing =
|
||||||
|
+ "Headphone", "HP",
|
||||||
|
+ "Headphone", "HPCOM",
|
||||||
|
+ "MIC1", "Mic",
|
||||||
|
+ "Mic", "MBIAS";
|
||||||
|
+ allwinner,codec-analog-controls = <&codec_analog>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&de {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-r40.dtsi b/arch/arm/boot/dts/allwinner/sun8i-r40.dtsi
|
||||||
|
index f4c8e442a278..83562328b8c0 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-r40.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-r40.dtsi
|
||||||
|
@@ -837,6 +837,24 @@ i2s2: i2s@1c22800 {
|
||||||
|
dma-names = "rx", "tx";
|
||||||
|
};
|
||||||
|
|
||||||
|
+ codec: codec@1c22c00 {
|
||||||
|
+ #sound-dai-cells = <1>;
|
||||||
|
+ compatible = "allwinner,sun8i-h3-codec";
|
||||||
|
+ reg = <0x01c22c00 0x300>;
|
||||||
|
+ interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_CODEC>;
|
||||||
|
+ clock-names = "apb", "codec";
|
||||||
|
+ resets = <&ccu RST_BUS_CODEC>;
|
||||||
|
+ dmas = <&dma 19>, <&dma 19>;
|
||||||
|
+ dma-names = "rx", "tx";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ codec_analog: codec-analog@1c22f00 {
|
||||||
|
+ compatible = "allwinner,sun8i-a23-codec-analog";
|
||||||
|
+ reg = <0x01c22f00 0x4>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
ths: thermal-sensor@1c24c00 {
|
||||||
|
compatible = "allwinner,sun8i-r40-ths";
|
||||||
|
reg = <0x01c24c00 0x100>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Fri, 28 Jan 2022 12:58:57 +0300
|
||||||
|
Subject: arm:dts: sun8i-v3s/s3-pinecube enable sound codec
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-s3-pinecube.dts | 14 ++++++++++
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi | 14 ++++++++++
|
||||||
|
2 files changed, 28 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-s3-pinecube.dts b/arch/arm/boot/dts/allwinner/sun8i-s3-pinecube.dts
|
||||||
|
index 20966e954eda..773ad05033a2 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-s3-pinecube.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-s3-pinecube.dts
|
||||||
|
@@ -58,6 +58,20 @@ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+
|
||||||
|
+&i2s0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&codec {
|
||||||
|
+ allwinner,audio-routing =
|
||||||
|
+ "Speaker", "LINEOUT",
|
||||||
|
+ "MIC1", "Mic",
|
||||||
|
+ "Mic", "MBIAS";
|
||||||
|
+ allwinner,pa-gpios = <&pio 6 6 GPIO_ACTIVE_HIGH>; /* PG6 */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&csi1 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&csi1_8bit_pins>;
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi
|
||||||
|
index 3b9a282c2746..2e8d60f605da 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi
|
||||||
|
@@ -471,6 +471,20 @@ codec_analog: codec-analog@1c23000 {
|
||||||
|
reg = <0x01c23000 0x4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+
|
||||||
|
+ i2s0: i2s@1c22000 {
|
||||||
|
+ #sound-dai-cells = <0>;
|
||||||
|
+ compatible = "allwinner,sun8i-h3-i2s";
|
||||||
|
+ reg = <0x01c22000 0x400>;
|
||||||
|
+ interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_I2S0>, <&ccu CLK_I2S0>;
|
||||||
|
+ clock-names = "apb", "mod";
|
||||||
|
+ dmas = <&dma 3>, <&dma 3>;
|
||||||
|
+ resets = <&ccu RST_BUS_I2S0>; /* TODO: Areset/sun8i-v3s-ccu says this isn't available on V3s */
|
||||||
|
+ dma-names = "rx", "tx";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
uart0: serial@1c28000 {
|
||||||
|
compatible = "snps,dw-apb-uart";
|
||||||
|
reg = <0x01c28000 0x400>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philipp Rossak <embed3d@gmail.com>
|
||||||
|
Date: Sat, 27 Jan 2018 21:30:16 +0100
|
||||||
|
Subject: arm:dts: sun9i-a80 add thermal sensor
|
||||||
|
|
||||||
|
As we have gained the support for the thermal sensor in A80,
|
||||||
|
we can now add its device nodes to the device tree.
|
||||||
|
|
||||||
|
The clocks and the resets are shared between the GPADC and the THS
|
||||||
|
sensor.
|
||||||
|
|
||||||
|
Signed-off-by: Philipp Rossak <embed3d@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun9i-a80.dtsi | 11 ++++++++++
|
||||||
|
1 file changed, 11 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun9i-a80.dtsi b/arch/arm/boot/dts/allwinner/sun9i-a80.dtsi
|
||||||
|
index 7d3f3300f431..14c68bdd1292 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun9i-a80.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun9i-a80.dtsi
|
||||||
|
@@ -941,6 +941,17 @@ ccu: clock@6000000 {
|
||||||
|
#reset-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ ths: thermal-sensor@6004C00 {
|
||||||
|
+ compatible = "allwinner,sun9i-a80-ths";
|
||||||
|
+ reg = <0x06004C00 0x100>;
|
||||||
|
+ interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_GPADC>, <&ccu CLK_GPADC>;
|
||||||
|
+ clock-names = "bus", "mod";
|
||||||
|
+ resets = <&ccu RST_BUS_GPADC>;
|
||||||
|
+ #thermal-sensor-cells = <1>;
|
||||||
|
+ #io-channel-cells = <0>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
timer@6000c00 {
|
||||||
|
compatible = "allwinner,sun4i-a10-timer";
|
||||||
|
reg = <0x06000c00 0xa0>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philipp Rossak <embed3d@gmail.com>
|
||||||
|
Date: Sat, 27 Jan 2018 21:39:09 +0100
|
||||||
|
Subject: arm:dts: sun9i-a80 add thermal zone
|
||||||
|
|
||||||
|
This patch adds the thermal zones to the A80.
|
||||||
|
|
||||||
|
Sensor 0 is located besides the big CPU, sensor 1 is located besides the
|
||||||
|
DRAM, sensor 2 is located besides the GPU and sensor 3 is located besides
|
||||||
|
the small CPU.
|
||||||
|
|
||||||
|
Signed-off-by: Philipp Rossak <embed3d@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sun9i-a80.dtsi | 26 ++++++++++
|
||||||
|
1 file changed, 26 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun9i-a80.dtsi b/arch/arm/boot/dts/allwinner/sun9i-a80.dtsi
|
||||||
|
index 14c68bdd1292..7b7260f0cfa9 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun9i-a80.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun9i-a80.dtsi
|
||||||
|
@@ -1261,4 +1261,30 @@ r_rsb: rsb@8003400 {
|
||||||
|
#size-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ thermal-zones {
|
||||||
|
+ cpu0_thermal: cpu0-thermal {
|
||||||
|
+ polling-delay-passive = <1000>;
|
||||||
|
+ polling-delay = <5000>;
|
||||||
|
+ thermal-sensors = <&ths 0>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dram_thermal: dram-thermal {
|
||||||
|
+ polling-delay-passive = <1000>;
|
||||||
|
+ polling-delay = <5000>;
|
||||||
|
+ thermal-sensors = <&ths 1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ gpu_thermal: gpu-thermal {
|
||||||
|
+ polling-delay-passive = <1000>;
|
||||||
|
+ polling-delay = <5000>;
|
||||||
|
+ thermal-sensors = <&ths 2>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu2_thermal: cpu2-thermal {
|
||||||
|
+ polling-delay-passive = <1000>;
|
||||||
|
+ polling-delay = <5000>;
|
||||||
|
+ thermal-sensors = <&ths 3>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,657 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Radoslav <radoslavv@centrum.sk>
|
||||||
|
Date: Sat, 15 Apr 2023 22:47:26 +0200
|
||||||
|
Subject: enable TV Output on OrangePi Zero LTE
|
||||||
|
|
||||||
|
Credits to sorce https://github.com/robertojguerra/orangepi-zero-full-setup/blob/main/README2.md
|
||||||
|
Merged:
|
||||||
|
1. sunxi-6.1/0036-wip-h3-h5-cvbs-armbian.patch : makes additions to the "dts", which tells the kernel where are the new devices. Adds kernel code to interact with the tv encoder. With my modifications, now it is applicable to Armbian (this patch came from the LibreElec github).
|
||||||
|
https://github.com/robertojguerra/orangepi-zero-full-setup/blob/main/sunxi-6.1/0036-wip-h3-h5-cvbs-armbian.patch
|
||||||
|
2. sunxi-6.1/zzzz2-tv.patch : by Armbian user "gleam2003", adds directives to make sure that the dtbo (device tree binary overlay) is compiled
|
||||||
|
https://github.com/robertojguerra/orangepi-zero-full-setup/blob/main/sunxi-6.1/zzzz2-tv.patch
|
||||||
|
3. sunxi-6.1/zzzz3-tv.patch : more additions to the "dts" and "dtsi" (like C include files), which I noticed were included in "yam" patch, but missing from the LibreElec patch
|
||||||
|
https://github.com/robertojguerra/orangepi-zero-full-setup/blob/main/sunxi-6.1/zzzz3-tv.patch
|
||||||
|
|
||||||
|
> X-Git-Archeology: - Revision 41260ac309b487d241fec97ffbdeced730bc2d04: https://github.com/armbian/build/commit/41260ac309b487d241fec97ffbdeced730bc2d04
|
||||||
|
> X-Git-Archeology: Date: Sat, 15 Apr 2023 22:47:26 +0200
|
||||||
|
> X-Git-Archeology: From: Radoslav <radoslavv@centrum.sk>
|
||||||
|
> X-Git-Archeology: Subject: h3-tve (arm-dts-sun8i-h3-orangepizero-add_tve.patch)
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/overlay/Makefile | 1 +
|
||||||
|
arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays | 10 +
|
||||||
|
arch/arm/boot/dts/allwinner/overlay/sun8i-h3-tve.dtso | 34 ++++
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts | 4 +
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc.dts | 4 +
|
||||||
|
arch/arm/boot/dts/allwinner/sun8i-h3.dtsi | 22 +++
|
||||||
|
arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi | 95 +++++++++-
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/Makefile | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays | 5 +
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-tve.dtso | 34 ++++
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 22 +++
|
||||||
|
drivers/clk/sunxi-ng/ccu-sun8i-h3.c | 14 +-
|
||||||
|
drivers/gpu/drm/sun4i/Makefile | 2 +-
|
||||||
|
drivers/gpu/drm/sun4i/sun4i_tv.c | 35 +++-
|
||||||
|
drivers/gpu/drm/sun4i/sun8i_mixer.c | 36 +++-
|
||||||
|
drivers/gpu/drm/sun4i/sun8i_mixer.h | 5 +-
|
||||||
|
16 files changed, 310 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/overlay/Makefile b/arch/arm/boot/dts/allwinner/overlay/Makefile
|
||||||
|
index 560f926b7018..23ecb62e2478 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/overlay/Makefile
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/overlay/Makefile
|
||||||
|
@@ -80,6 +80,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \
|
||||||
|
sun8i-h3-usbhost2.dtbo \
|
||||||
|
sun8i-h3-usbhost3.dtbo \
|
||||||
|
sun8i-h3-w1-gpio.dtbo \
|
||||||
|
+ sun8i-h3-tve.dtbo \
|
||||||
|
sun8i-r40-i2c2.dtbo \
|
||||||
|
sun8i-r40-i2c3.dtbo \
|
||||||
|
sun8i-r40-spi-spidev0.dtbo \
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays b/arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays
|
||||||
|
index 302973491051..a347fe7b0e81 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays
|
||||||
|
@@ -34,6 +34,7 @@ adding fixed software (GPIO) chip selects is possible with a separate overlay
|
||||||
|
- usbhost2
|
||||||
|
- usbhost3
|
||||||
|
- w1-gpio
|
||||||
|
+- tve
|
||||||
|
|
||||||
|
### Overlay details:
|
||||||
|
|
||||||
|
@@ -248,3 +249,12 @@ param_w1_pin_int_pullup (bool)
|
||||||
|
Set to 1 to enable the pull-up
|
||||||
|
This option should not be used with multiple devices, parasite power setup
|
||||||
|
or long wires - please use external pull-up resistor instead
|
||||||
|
+
|
||||||
|
+### tve
|
||||||
|
+
|
||||||
|
+Activates Composite TV Encoder
|
||||||
|
+
|
||||||
|
+Parameters:
|
||||||
|
+ Unknown at this stage.
|
||||||
|
+ Maybe none.
|
||||||
|
+ Not sure how to change the mode between PAL/NTSC.
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-tve.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-tve.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..07ba7ba713dd
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-tve.dtso
|
||||||
|
@@ -0,0 +1,34 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun8i-h3";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&de>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&mixer1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@2 {
|
||||||
|
+ target = <&tcon1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@3 {
|
||||||
|
+ target = <&tve>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts
|
||||||
|
index 7b42ab8b5180..330a79390238 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts
|
||||||
|
@@ -180,6 +180,10 @@ flash@0 {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&tve {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&uart0 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart0_pa_pins>;
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc.dts
|
||||||
|
index 624e248e3ffc..01c3a7f7620a 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc.dts
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc.dts
|
||||||
|
@@ -214,6 +214,10 @@ &sound_hdmi {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&tve {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&uart0 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart0_pa_pins>;
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi b/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi
|
||||||
|
index 8c2f597772fe..35c864fe4823 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3.dtsi
|
||||||
|
@@ -295,6 +295,20 @@ ths: thermal-sensor@1c25000 {
|
||||||
|
nvmem-cell-names = "calibration";
|
||||||
|
#thermal-sensor-cells = <0>;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ tve: tv-encoder@1e00000 {
|
||||||
|
+ compatible = "allwinner,sun8i-h3-tv-encoder";
|
||||||
|
+ reg = <0x01e00000 0x1000>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_TVE>;
|
||||||
|
+ resets = <&ccu RST_BUS_TVE>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ tve_in_tcon1: endpoint {
|
||||||
|
+ remote-endpoint = <&tcon1_out_tve>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
thermal-zones {
|
||||||
|
@@ -384,6 +398,10 @@ &mbus {
|
||||||
|
compatible = "allwinner,sun8i-h3-mbus";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&mixer1 {
|
||||||
|
+ resets = <&display_clocks RST_WB>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&mmc0 {
|
||||||
|
compatible = "allwinner,sun7i-a20-mmc";
|
||||||
|
clocks = <&ccu CLK_BUS_MMC0>,
|
||||||
|
@@ -431,3 +449,7 @@ &rtc {
|
||||||
|
&sid {
|
||||||
|
compatible = "allwinner,sun8i-h3-sid";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+&tcon1_out_tve {
|
||||||
|
+ remote-endpoint = <&tve_in_tcon1>;
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi
|
||||||
|
index 5a3fb7644dd1..2e211b39b6cf 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi
|
||||||
|
@@ -102,7 +102,7 @@ osc32k: osc32k_clk {
|
||||||
|
|
||||||
|
de: display-engine {
|
||||||
|
compatible = "allwinner,sun8i-h3-display-engine";
|
||||||
|
- allwinner,pipelines = <&mixer0>;
|
||||||
|
+ allwinner,pipelines = <&mixer0>, <&mixer1>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -160,11 +160,50 @@ ports {
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
mixer0_out: port@1 {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
reg = <1>;
|
||||||
|
|
||||||
|
- mixer0_out_tcon0: endpoint {
|
||||||
|
+ mixer0_out_tcon0: endpoint@0 {
|
||||||
|
+ reg = <0>;
|
||||||
|
remote-endpoint = <&tcon0_in_mixer0>;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ mixer0_out_tcon1: endpoint@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ remote-endpoint = <&tcon1_in_mixer0>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ mixer1: mixer@1200000 {
|
||||||
|
+ compatible = "allwinner,sun8i-h3-de2-mixer-1";
|
||||||
|
+ reg = <0x01200000 0x100000>;
|
||||||
|
+ clocks = <&display_clocks CLK_BUS_MIXER1>,
|
||||||
|
+ <&display_clocks CLK_MIXER1>;
|
||||||
|
+ clock-names = "bus",
|
||||||
|
+ "mod";
|
||||||
|
+ /* reset is added by SoC dtsi */
|
||||||
|
+
|
||||||
|
+ ports {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+
|
||||||
|
+ mixer1_out: port@1 {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ reg = <1>;
|
||||||
|
+
|
||||||
|
+ mixer1_out_tcon0: endpoint@0 {
|
||||||
|
+ reg = <0>;
|
||||||
|
+ remote-endpoint = <&tcon0_in_mixer1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ mixer1_out_tcon1: endpoint@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ remote-endpoint = <&tcon1_in_mixer1>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
@@ -193,11 +232,19 @@ ports {
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
tcon0_in: port@0 {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
|
- tcon0_in_mixer0: endpoint {
|
||||||
|
+ tcon0_in_mixer0: endpoint@0 {
|
||||||
|
+ reg = <0>;
|
||||||
|
remote-endpoint = <&mixer0_out_tcon0>;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ tcon0_in_mixer1: endpoint@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ remote-endpoint = <&mixer1_out_tcon0>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
tcon0_out: port@1 {
|
||||||
|
@@ -213,6 +260,48 @@ tcon0_out_hdmi: endpoint@1 {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+ tcon1: lcd-controller@1c0d000 {
|
||||||
|
+ compatible = "allwinner,sun8i-h3-tcon-tv",
|
||||||
|
+ "allwinner,sun8i-a83t-tcon-tv";
|
||||||
|
+ reg = <0x01c0d000 0x1000>;
|
||||||
|
+ interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_TCON1>, <&ccu CLK_TVE>;
|
||||||
|
+ clock-names = "ahb", "tcon-ch1";
|
||||||
|
+ resets = <&ccu RST_BUS_TCON1>;
|
||||||
|
+ reset-names = "lcd";
|
||||||
|
+
|
||||||
|
+ ports {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+
|
||||||
|
+ tcon1_in: port@0 {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ reg = <0>;
|
||||||
|
+
|
||||||
|
+ tcon1_in_mixer0: endpoint@0 {
|
||||||
|
+ reg = <0>;
|
||||||
|
+ remote-endpoint = <&mixer0_out_tcon1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ tcon1_in_mixer1: endpoint@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ remote-endpoint = <&mixer1_out_tcon1>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ tcon1_out: port@1 {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ reg = <1>;
|
||||||
|
+
|
||||||
|
+ tcon1_out_tve: endpoint@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
mmc0: mmc@1c0f000 {
|
||||||
|
/* compatible and clocks are in per SoC .dtsi file */
|
||||||
|
reg = <0x01c0f000 0x1000>;
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
index fb6b30d5753e..84711585fc86 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
@@ -27,6 +27,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += \
|
||||||
|
sun50i-h5-spi-add-cs1.dtbo \
|
||||||
|
sun50i-h5-spi-jedec-nor.dtbo \
|
||||||
|
sun50i-h5-spi-spidev.dtbo \
|
||||||
|
+ sun50i-h5-tve.dtbo \
|
||||||
|
sun50i-h5-uart1.dtbo \
|
||||||
|
sun50i-h5-uart2.dtbo \
|
||||||
|
sun50i-h5-uart3.dtbo \
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays
|
||||||
|
index 1ac7fbcf62d1..a2ef4427c65b 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays
|
||||||
|
@@ -26,6 +26,7 @@ adding fixed software (GPIO) chip selects is possible with a separate overlay
|
||||||
|
- spi-add-cs1
|
||||||
|
- spi-jedec-nor
|
||||||
|
- spi-spidev
|
||||||
|
+- tve
|
||||||
|
- uart1
|
||||||
|
- uart2
|
||||||
|
- uart3
|
||||||
|
@@ -170,6 +171,10 @@ param_spidev_max_freq (int)
|
||||||
|
Default: 1000000
|
||||||
|
Range: 3000 - 100000000
|
||||||
|
|
||||||
|
+### tve
|
||||||
|
+
|
||||||
|
+Activates Composite TV Encoder
|
||||||
|
+
|
||||||
|
### uart1
|
||||||
|
|
||||||
|
Activates serial port 1 (/dev/ttyS1)
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-tve.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-tve.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..73e6e1215a5a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-tve.dtso
|
||||||
|
@@ -0,0 +1,34 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun8i-h5";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&de>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&mixer1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@2 {
|
||||||
|
+ target = <&tcon1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@3 {
|
||||||
|
+ target = <&tve>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
|
||||||
|
index c63e0871658e..fee2d680d2ca 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
|
||||||
|
@@ -203,6 +203,20 @@ ths: thermal-sensor@1c25000 {
|
||||||
|
nvmem-cell-names = "calibration";
|
||||||
|
#thermal-sensor-cells = <1>;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ tve: tv-encoder@1e40000 {
|
||||||
|
+ compatible = "allwinner,sun50i-h5-tv-encoder";
|
||||||
|
+ reg = <0x01e40000 0x1000>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_TVE>;
|
||||||
|
+ resets = <&ccu RST_BUS_TVE>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ tve_in_tcon1: endpoint {
|
||||||
|
+ remote-endpoint = <&tcon1_out_tve>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
thermal-zones {
|
||||||
|
@@ -307,6 +321,10 @@ &mbus {
|
||||||
|
compatible = "allwinner,sun50i-h5-mbus";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&mixer1 {
|
||||||
|
+ resets = <&display_clocks RST_MIXER1>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&mmc0 {
|
||||||
|
compatible = "allwinner,sun50i-h5-mmc",
|
||||||
|
"allwinner,sun50i-a64-mmc";
|
||||||
|
@@ -342,3 +360,7 @@ &rtc {
|
||||||
|
&sid {
|
||||||
|
compatible = "allwinner,sun50i-h5-sid";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+&tcon1_out_tve {
|
||||||
|
+ remote-endpoint = <&tve_in_tcon1>;
|
||||||
|
+};
|
||||||
|
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-h3.c b/drivers/clk/sunxi-ng/ccu-sun8i-h3.c
|
||||||
|
index 5d75d07dec0e..80731b155f6c 100644
|
||||||
|
--- a/drivers/clk/sunxi-ng/ccu-sun8i-h3.c
|
||||||
|
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-h3.c
|
||||||
|
@@ -469,8 +469,18 @@ static SUNXI_CCU_M_WITH_MUX_GATE(tcon_clk, "tcon", tcon_parents,
|
||||||
|
CLK_SET_RATE_PARENT);
|
||||||
|
|
||||||
|
static const char * const tve_parents[] = { "pll-de", "pll-periph1" };
|
||||||
|
-static SUNXI_CCU_M_WITH_MUX_GATE(tve_clk, "tve", tve_parents,
|
||||||
|
- 0x120, 0, 4, 24, 3, BIT(31), 0);
|
||||||
|
+struct ccu_div tve_clk = {
|
||||||
|
+ .enable = BIT(31),
|
||||||
|
+ .div = _SUNXI_CCU_DIV(0, 4),
|
||||||
|
+ .mux = _SUNXI_CCU_MUX(24, 3),
|
||||||
|
+ .fixed_post_div = 16,
|
||||||
|
+ .common = {
|
||||||
|
+ .reg = 0x120,
|
||||||
|
+ .features = CCU_FEATURE_FIXED_POSTDIV,
|
||||||
|
+ .hw.init = CLK_HW_INIT_PARENTS("tve", tve_parents,
|
||||||
|
+ &ccu_div_ops, 0),
|
||||||
|
+ },
|
||||||
|
+};
|
||||||
|
|
||||||
|
static const char * const deinterlace_parents[] = { "pll-periph0", "pll-periph1" };
|
||||||
|
static SUNXI_CCU_M_WITH_MUX_GATE(deinterlace_clk, "deinterlace", deinterlace_parents,
|
||||||
|
diff --git a/drivers/gpu/drm/sun4i/Makefile b/drivers/gpu/drm/sun4i/Makefile
|
||||||
|
index 5e9dc9370584..3a7130623351 100644
|
||||||
|
--- a/drivers/gpu/drm/sun4i/Makefile
|
||||||
|
+++ b/drivers/gpu/drm/sun4i/Makefile
|
||||||
|
@@ -19,7 +19,7 @@ sun8i-drm-hdmi-y += sun8i_hdmi_phy_clk.o
|
||||||
|
|
||||||
|
sun8i-mixer-y += sun8i_mixer.o sun8i_ui_layer.o \
|
||||||
|
sun8i_vi_layer.o sun8i_ui_scaler.o \
|
||||||
|
- sun8i_vi_scaler.o sun8i_csc.o
|
||||||
|
+ sun8i_vi_scaler.o sun8i_csc.o sun4i_tv.o
|
||||||
|
|
||||||
|
sun4i-tcon-y += sun4i_crtc.o
|
||||||
|
sun4i-tcon-y += sun4i_tcon_dclk.o
|
||||||
|
diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
|
||||||
|
index ec65d9d59de7..d2235d5a7416 100644
|
||||||
|
--- a/drivers/gpu/drm/sun4i/sun4i_tv.c
|
||||||
|
+++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
|
||||||
|
@@ -10,6 +10,7 @@
|
||||||
|
#include <linux/component.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/of_address.h>
|
||||||
|
+#include <linux/of_device.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/regmap.h>
|
||||||
|
#include <linux/reset.h>
|
||||||
|
@@ -159,6 +160,11 @@ struct tv_mode {
|
||||||
|
const struct resync_parameters *resync_params;
|
||||||
|
};
|
||||||
|
|
||||||
|
+struct sun4i_tv_quirks {
|
||||||
|
+ unsigned int calibration;
|
||||||
|
+ unsigned int unknown : 1;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
struct sun4i_tv {
|
||||||
|
struct drm_connector connector;
|
||||||
|
struct drm_encoder encoder;
|
||||||
|
@@ -419,7 +425,7 @@ static const struct regmap_config sun4i_tv_regmap_config = {
|
||||||
|
.reg_bits = 32,
|
||||||
|
.val_bits = 32,
|
||||||
|
.reg_stride = 4,
|
||||||
|
- .max_register = SUN4I_TVE_WSS_DATA2_REG,
|
||||||
|
+ .max_register = 0x400,
|
||||||
|
.name = "tv-encoder",
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -429,13 +435,19 @@ static int sun4i_tv_bind(struct device *dev, struct device *master,
|
||||||
|
struct platform_device *pdev = to_platform_device(dev);
|
||||||
|
struct drm_device *drm = data;
|
||||||
|
struct sun4i_drv *drv = drm->dev_private;
|
||||||
|
+ const struct sun4i_tv_quirks *quirks;
|
||||||
|
struct sun4i_tv *tv;
|
||||||
|
void __iomem *regs;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
+ quirks = of_device_get_match_data(dev);
|
||||||
|
+ if (!quirks)
|
||||||
|
+ return -EINVAL;
|
||||||
|
+
|
||||||
|
tv = devm_kzalloc(dev, sizeof(*tv), GFP_KERNEL);
|
||||||
|
if (!tv)
|
||||||
|
return -ENOMEM;
|
||||||
|
+
|
||||||
|
tv->drv = drv;
|
||||||
|
dev_set_drvdata(dev, tv);
|
||||||
|
|
||||||
|
@@ -472,6 +484,11 @@ static int sun4i_tv_bind(struct device *dev, struct device *master,
|
||||||
|
}
|
||||||
|
clk_prepare_enable(tv->clk);
|
||||||
|
|
||||||
|
+ if (quirks->calibration)
|
||||||
|
+ regmap_write(tv->regs, 0x304, quirks->calibration);
|
||||||
|
+ if (quirks->unknown)
|
||||||
|
+ regmap_write(tv->regs, 0x30c, 0x00101110);
|
||||||
|
+
|
||||||
|
drm_encoder_helper_add(&tv->encoder,
|
||||||
|
&sun4i_tv_helper_funcs);
|
||||||
|
ret = drm_simple_encoder_init(drm, &tv->encoder,
|
||||||
|
@@ -551,8 +568,22 @@ static void sun4i_tv_remove(struct platform_device *pdev)
|
||||||
|
component_del(&pdev->dev, &sun4i_tv_ops);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static const struct sun4i_tv_quirks a10_quirks = {
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct sun4i_tv_quirks h3_quirks = {
|
||||||
|
+ .calibration = 0x02000c00,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct sun4i_tv_quirks h5_quirks = {
|
||||||
|
+ .calibration = 0x02850000,
|
||||||
|
+ .unknown = 1,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static const struct of_device_id sun4i_tv_of_table[] = {
|
||||||
|
- { .compatible = "allwinner,sun4i-a10-tv-encoder" },
|
||||||
|
+ { .compatible = "allwinner,sun4i-a10-tv-encoder", .data = &a10_quirks },
|
||||||
|
+ { .compatible = "allwinner,sun8i-h3-tv-encoder", .data = &h3_quirks },
|
||||||
|
+ { .compatible = "allwinner,sun50i-h5-tv-encoder", .data = &h5_quirks },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(of, sun4i_tv_of_table);
|
||||||
|
diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||||
|
index fe1d92f18f18..8316ef1547b6 100644
|
||||||
|
--- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||||
|
+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||||
|
@@ -37,6 +37,12 @@ struct de2_fmt_info {
|
||||||
|
|
||||||
|
static bool hw_preconfigured;
|
||||||
|
|
||||||
|
+static const u32 sun8i_rgb2yuv_coef[12] = {
|
||||||
|
+ 0x00000107, 0x00000204, 0x00000064, 0x00004200,
|
||||||
|
+ 0x00001f68, 0x00001ed6, 0x000001c2, 0x00020200,
|
||||||
|
+ 0x000001c2, 0x00001e87, 0x00001fb7, 0x00020200,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static const struct de2_fmt_info de2_formats[] = {
|
||||||
|
{
|
||||||
|
.drm_fmt = DRM_FORMAT_ARGB8888,
|
||||||
|
@@ -437,10 +443,29 @@ static void sun8i_mixer_mode_set(struct sunxi_engine *engine,
|
||||||
|
interlaced ? "on" : "off");
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void sun8i_mixer_apply_color_correction(struct sunxi_engine *engine)
|
||||||
|
+{
|
||||||
|
+ DRM_DEBUG_DRIVER("Applying RGB to YUV color correction\n");
|
||||||
|
+
|
||||||
|
+ regmap_bulk_write(engine->regs, SUN8I_MIXER_DCSC_COEF_REG(0),
|
||||||
|
+ sun8i_rgb2yuv_coef, 12);
|
||||||
|
+ regmap_write(engine->regs, SUN8I_MIXER_DCSC_EN, 1);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void sun8i_mixer_disable_color_correction(struct sunxi_engine *engine)
|
||||||
|
+{
|
||||||
|
+ DRM_DEBUG_DRIVER("Disabling color correction\n");
|
||||||
|
+
|
||||||
|
+ /* Disable color correction */
|
||||||
|
+ regmap_write(engine->regs, SUN8I_MIXER_DCSC_EN, 0);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static const struct sunxi_engine_ops sun8i_engine_ops = {
|
||||||
|
- .commit = sun8i_mixer_commit,
|
||||||
|
- .layers_init = sun8i_layers_init,
|
||||||
|
- .mode_set = sun8i_mixer_mode_set,
|
||||||
|
+ .commit = sun8i_mixer_commit,
|
||||||
|
+ .layers_init = sun8i_layers_init,
|
||||||
|
+ .mode_set = sun8i_mixer_mode_set,
|
||||||
|
+ .apply_color_correction = sun8i_mixer_apply_color_correction,
|
||||||
|
+ .disable_color_correction = sun8i_mixer_disable_color_correction,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regmap_config sun8i_mixer_regmap_config = {
|
||||||
|
@@ -721,8 +746,9 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg = {
|
||||||
|
static const struct sun8i_mixer_cfg sun8i_h3_mixer1_cfg = {
|
||||||
|
.ccsc = CCSC_MIXER1_LAYOUT,
|
||||||
|
.mod_rate = 432000000,
|
||||||
|
- .scaler_mask = 0xf,
|
||||||
|
- .ui_num = 3,
|
||||||
|
+ .scaler_mask = 0x3,
|
||||||
|
+ .scanline_yuv = 2048,
|
||||||
|
+ .ui_num = 1,
|
||||||
|
.vi_num = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h
|
||||||
|
index 68e2741b0962..7bc8efca6980 100644
|
||||||
|
--- a/drivers/gpu/drm/sun4i/sun8i_mixer.h
|
||||||
|
+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h
|
||||||
|
@@ -119,6 +119,10 @@
|
||||||
|
/* format 20 is packed YVU444 10-bit */
|
||||||
|
/* format 21 is packed YUV444 10-bit */
|
||||||
|
|
||||||
|
+/* The DCSC sub-engine is used to do color space conversation */
|
||||||
|
+#define SUN8I_MIXER_DCSC_EN 0xb0000
|
||||||
|
+#define SUN8I_MIXER_DCSC_COEF_REG(x) (0xb0010 + 0x4 * (x))
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Sub-engines listed bellow are unused for now. The EN registers are here only
|
||||||
|
* to be used to disable these sub-engines.
|
||||||
|
@@ -129,7 +133,6 @@
|
||||||
|
#define SUN8I_MIXER_PEAK_EN 0xa6000
|
||||||
|
#define SUN8I_MIXER_ASE_EN 0xa8000
|
||||||
|
#define SUN8I_MIXER_FCC_EN 0xaa000
|
||||||
|
-#define SUN8I_MIXER_DCSC_EN 0xb0000
|
||||||
|
|
||||||
|
#define SUN50I_MIXER_FCE_EN 0x70000
|
||||||
|
#define SUN50I_MIXER_PEAK_EN 0x70800
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Tue, 1 Feb 2022 19:43:08 +0300
|
||||||
|
Subject: arm:dts:sunxi-h3-h5.dtsi add i2s0 i2s1 pins
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi | 10 ++++++++++
|
||||||
|
1 file changed, 10 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi
|
||||||
|
index 68dd7a6331b4..5a3fb7644dd1 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi
|
||||||
|
@@ -464,6 +464,16 @@ i2c2_pins: i2c2-pins {
|
||||||
|
function = "i2c2";
|
||||||
|
};
|
||||||
|
|
||||||
|
+ i2s0_pins: i2s0-pins {
|
||||||
|
+ pins = "PA18", "PA19", "PA20", "PA21";
|
||||||
|
+ function = "i2s0";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ i2s1_pins: i2s1-pins {
|
||||||
|
+ pins = "PG10", "PG11", "PG12", "PG13";
|
||||||
|
+ function = "i2s1";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
mmc0_pins: mmc0-pins {
|
||||||
|
pins = "PF0", "PF1", "PF2", "PF3",
|
||||||
|
"PF4", "PF5";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Fri, 28 Jan 2022 16:12:37 +0300
|
||||||
|
Subject: arm:dts: sunxi-h3-h5.dtsi force mmc0 bus-width
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi
|
||||||
|
index ad2179fae156..68dd7a6331b4 100644
|
||||||
|
--- a/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi
|
||||||
|
@@ -221,6 +221,7 @@ mmc0: mmc@1c0f000 {
|
||||||
|
resets = <&ccu RST_BUS_MMC0>;
|
||||||
|
reset-names = "ahb";
|
||||||
|
interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ bus-width = <0x4>;
|
||||||
|
status = "disabled";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,428 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: wuweidong <625769020@qq.com>
|
||||||
|
Date: Mon, 27 Nov 2017 10:23:51 +0800
|
||||||
|
Subject: arm64:dts: Add sun50i-h5-nanopi-k1-plus device
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/Makefile | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts | 396 ++++++++++
|
||||||
|
2 files changed, 397 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
index 358efa5d6abc..29c44ac36599 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
@@ -28,6 +28,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo-plus2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-r1s-h5.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-pc2.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-k1-plus.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-prime.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus2.dtb
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..b7045a9efab5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts
|
||||||
|
@@ -0,0 +1,396 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2016 ARM Ltd.
|
||||||
|
+ *
|
||||||
|
+ * This file is dual-licensed: you can use it either under the terms
|
||||||
|
+ * of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
+ * licensing only applies to this file, and not this project as a
|
||||||
|
+ * whole.
|
||||||
|
+ *
|
||||||
|
+ * a) This file is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU General Public License as
|
||||||
|
+ * published by the Free Software Foundation; either version 2 of the
|
||||||
|
+ * License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This file is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ * GNU General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * Or, alternatively,
|
||||||
|
+ *
|
||||||
|
+ * b) Permission is hereby granted, free of charge, to any person
|
||||||
|
+ * obtaining a copy of this software and associated documentation
|
||||||
|
+ * files (the "Software"), to deal in the Software without
|
||||||
|
+ * restriction, including without limitation the rights to use,
|
||||||
|
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
+ * sell copies of the Software, and to permit persons to whom the
|
||||||
|
+ * Software is furnished to do so, subject to the following
|
||||||
|
+ * conditions:
|
||||||
|
+ *
|
||||||
|
+ * The above copyright notice and this permission notice shall be
|
||||||
|
+ * included in all copies or substantial portions of the Software.
|
||||||
|
+ *
|
||||||
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "sun50i-h5.dtsi"
|
||||||
|
+
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+#include <dt-bindings/input/input.h>
|
||||||
|
+#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "FriendlyElec NanoPi K1 Plus";
|
||||||
|
+ compatible = "friendlyelec,nanopi-k1-plus", "allwinner,sun50i-h5";
|
||||||
|
+
|
||||||
|
+ reg_vcc3v3: vcc3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet0 = &emac;
|
||||||
|
+ serial0 = &uart0;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ stdout-path = "serial0:115200n8";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ connector {
|
||||||
|
+ compatible = "hdmi-connector";
|
||||||
|
+ type = "a";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ hdmi_con_in: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_out_con>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ status {
|
||||||
|
+ label = "nanopi:green:status";
|
||||||
|
+ gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
+ };
|
||||||
|
+ pwr {
|
||||||
|
+ label = "nanopi:red:pwr";
|
||||||
|
+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ default-state = "on";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ r-gpio-keys {
|
||||||
|
+ compatible = "gpio-keys";
|
||||||
|
+
|
||||||
|
+ sw4 {
|
||||||
|
+ label = "sw4";
|
||||||
|
+ linux,code = <BTN_0>;
|
||||||
|
+ gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_gmac_3v3: gmac-3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&gmac_power_pin_nanopi>;
|
||||||
|
+ regulator-name = "gmac-3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ startup-delay-us = <100000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_usb0_vbus: usb0-vbus {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "usb0-vbus";
|
||||||
|
+ regulator-min-microvolt = <5000000>;
|
||||||
|
+ regulator-max-microvolt = <5000000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&wifi_en_npi>;
|
||||||
|
+ reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
|
||||||
|
+ post-power-on-delay-ms = <200>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ rfkill_bt {
|
||||||
|
+ compatible = "rfkill-gpio";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&bt_pwr_pin>;
|
||||||
|
+ reset-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
|
||||||
|
+ clocks = <&osc32k>;
|
||||||
|
+ clock-frequency = <32768>;
|
||||||
|
+ rfkill-name = "sunxi-bt";
|
||||||
|
+ rfkill-type = "bluetooth";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ pcm5102a: pcm5102a-codec {
|
||||||
|
+ #sound-dai-cells = <0>;
|
||||||
|
+ compatible = "ti,pcm5102a";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <®_vdd_cpux>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&codec {
|
||||||
|
+ allwinner,audio-routing =
|
||||||
|
+ "Line Out", "LINEOUT",
|
||||||
|
+ "MIC1", "Mic",
|
||||||
|
+ "Mic", "MBIAS";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&de {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&external_mdio {
|
||||||
|
+ ext_rgmii_phy: ethernet-phy@1 {
|
||||||
|
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
+ reg = <0>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emac {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&emac_rgmii_pins>;
|
||||||
|
+ phy-supply = <®_gmac_3v3>;
|
||||||
|
+ phy-handle = <&ext_rgmii_phy>;
|
||||||
|
+ phy-mode = "rgmii-id";
|
||||||
|
+ local-mac-address = [ 00 00 00 00 00 00 ];
|
||||||
|
+ allwinner,leds-active-low;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ir {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&r_ir_rx_pin>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc0 {
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc1 {
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ vqmmc-supply = <®_vcc3v3>;
|
||||||
|
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ non-removable;
|
||||||
|
+ status = "okay";
|
||||||
|
+ brcmf: bcrmf@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ compatible = "brcm,bcm4329-fmac";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2 {
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ non-removable;
|
||||||
|
+ cap-mmc-hw-reset;
|
||||||
|
+ boot_device = <0>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2_8bit_pins {
|
||||||
|
+ /* Increase drive strength for DDR modes */
|
||||||
|
+ drive-strength = <40>;
|
||||||
|
+ /* eMMC is missing pull-ups */
|
||||||
|
+ bias-pull-up;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi_out {
|
||||||
|
+ hdmi_out_con: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_con_in>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+&pio {
|
||||||
|
+ leds_npi: led_pins@0 {
|
||||||
|
+ pins = "PA10";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+ gmac_power_pin_nanopi: gmac_power_pin@0 {
|
||||||
|
+ pins = "PD6";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+ bt_pwr_pin: bt_pwr_pin@0 {
|
||||||
|
+ pins = "PG13";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+ spi0_cs_pins: spi0_cs_pins {
|
||||||
|
+ pins = "PC3", "PA6";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+&r_pio {
|
||||||
|
+ leds_r_npi: led_pins@0 {
|
||||||
|
+ pins = "PL10";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+ vdd_cpux_r_npi: regulator_pins@0 {
|
||||||
|
+ allwinner,pins = "PL6";
|
||||||
|
+ allwinner,function = "gpio_out";
|
||||||
|
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||||
|
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||||
|
+ };
|
||||||
|
+ wifi_en_npi: wifi_en_pin {
|
||||||
|
+ pins = "PL7";
|
||||||
|
+ function = "gpio_out";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+&ohci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+&r_i2c {
|
||||||
|
+ status = "okay";
|
||||||
|
+ reg_vdd_cpux: regulator@65 {
|
||||||
|
+ compatible = "silergy,sy8106a";
|
||||||
|
+ reg = <0x65>;
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ silergy,fixed-microvolt = <1200000>;
|
||||||
|
+ /*
|
||||||
|
+ * The datasheet uses 1.1V as the minimum value of VDD-CPUX,
|
||||||
|
+ * however both the Armbian DVFS table and the official one
|
||||||
|
+ * have operating points with voltage under 1.1V, and both
|
||||||
|
+ * DVFS table are known to work properly at the lowest
|
||||||
|
+ * operating point.
|
||||||
|
+ *
|
||||||
|
+ * Use 1.0V as the minimum voltage instead.
|
||||||
|
+ */
|
||||||
|
+ regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-max-microvolt = <1400000>;
|
||||||
|
+ regulator-ramp-delay = <200>;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&spi0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+ spi-flash@0 {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ compatible = "jedec,spi-nor";
|
||||||
|
+ reg = <0>; /* Chip select 0 */
|
||||||
|
+ spi-max-frequency = <10000000>;
|
||||||
|
+ status = "okay";
|
||||||
|
+ partitions {
|
||||||
|
+ compatible = "fixed-partitions";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <1>;
|
||||||
|
+ partition@0 {
|
||||||
|
+ label = "uboot";
|
||||||
|
+ reg = <0x0 0x100000>;
|
||||||
|
+ };
|
||||||
|
+ partition@100000 {
|
||||||
|
+ label = "env";
|
||||||
|
+ reg = <0x100000 0x100000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart0_pa_pins>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart1 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart1_pins>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart2 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart2_pins>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart3 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart3_pins>, <&uart3_rts_cts_pins>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+&usb_otg {
|
||||||
|
+ dr_mode = "otg";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbphy {
|
||||||
|
+ /* USB Type-A ports' VBUS is always on */
|
||||||
|
+ usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
|
||||||
|
+ usb0_vbus-supply = <®_usb0_vbus>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2s0 {
|
||||||
|
+ sound-dai = <&pcm5102a>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
\ No newline at end of file
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,271 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 18:54:36 +0300
|
||||||
|
Subject: arm64:dts: Add sun50i-h5-nanopi-m1-plus2 device
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/Makefile | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts | 240 ++++++++++
|
||||||
|
2 files changed, 241 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
index 0250c273de9c..9d813575ca26 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
@@ -31,6 +31,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo-core2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-r1s-h5.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-pc2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-k1-plus.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-m1-plus2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-prime.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus2.dtb
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..d051382cc800
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts
|
||||||
|
@@ -0,0 +1,240 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
|
||||||
|
+ * Copyright (C) 2017 Armbian
|
||||||
|
+ *
|
||||||
|
+ * This file is dual-licensed: you can use it either under the terms
|
||||||
|
+ * of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
+ * licensing only applies to this file, and not this project as a
|
||||||
|
+ * whole.
|
||||||
|
+ *
|
||||||
|
+ * a) This file is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU General Public License as
|
||||||
|
+ * published by the Free Software Foundation; either version 2 of the
|
||||||
|
+ * License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This file is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ * GNU General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * Or, alternatively,
|
||||||
|
+ *
|
||||||
|
+ * b) Permission is hereby granted, free of charge, to any person
|
||||||
|
+ * obtaining a copy of this software and associated documentation
|
||||||
|
+ * files (the "Software"), to deal in the Software without
|
||||||
|
+ * restriction, including without limitation the rights to use,
|
||||||
|
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
+ * sell copies of the Software, and to permit persons to whom the
|
||||||
|
+ * Software is furnished to do so, subject to the following
|
||||||
|
+ * conditions:
|
||||||
|
+ *
|
||||||
|
+ * The above copyright notice and this permission notice shall be
|
||||||
|
+ * included in all copies or substantial portions of the Software.
|
||||||
|
+ *
|
||||||
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "sun50i-h5.dtsi"
|
||||||
|
+
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "FriendlyARM Nanopi M1 Plus 2";
|
||||||
|
+ compatible = "friendlyarm,nanopi-neo2", "allwinner,sun50i-h5";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet0 = &emac;
|
||||||
|
+ serial0 = &uart0;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ stdout-path = "serial0:115200n8";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ pwr {
|
||||||
|
+ label = "nanopi:green:pwr";
|
||||||
|
+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ default-state = "on";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ status {
|
||||||
|
+ label = "nanopi:blue:status";
|
||||||
|
+ gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_gmac_3v3: gmac-3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "gmac-3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ startup-delay-us = <100000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vcc3v3: vcc3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_usb0_vbus: usb0-vbus {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "usb0-vbus";
|
||||||
|
+ regulator-min-microvolt = <5000000>;
|
||||||
|
+ regulator-max-microvolt = <5000000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
|
||||||
|
+ post-power-on-delay-ms = <50>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emac {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&emac_rgmii_pins>;
|
||||||
|
+ phy-supply = <®_gmac_3v3>;
|
||||||
|
+ phy-handle = <&ext_rgmii_phy>;
|
||||||
|
+ phy-mode = "rgmii";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mdio {
|
||||||
|
+ ext_rgmii_phy: ethernet-phy@7 {
|
||||||
|
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
+ reg = <7>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc0 {
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc1 {
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ vqmmc-supply = <®_vcc3v3>;
|
||||||
|
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ non-removable;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ brcmf: brcmf@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ compatible = "brcm,bcm4329-fmac";
|
||||||
|
+ interrupt-parent = <&pio>;
|
||||||
|
+ interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 */
|
||||||
|
+ interrupt-names = "host-wake";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&wifi_wake>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc2_8bit_pins>;
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ non-removable;
|
||||||
|
+ cap-mmc-hw-reset;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&de {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mixer0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&r_pio {
|
||||||
|
+ wifi_wake: wifi_wake@0 {
|
||||||
|
+ pins = "PL7";
|
||||||
|
+ function = "irq";
|
||||||
|
+ bias-pull-up;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&tcon0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&r_i2c {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart0_pa_pins>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb_otg {
|
||||||
|
+ dr_mode = "peripheral";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbphy {
|
||||||
|
+ /* USB Type-A port's VBUS is always on */
|
||||||
|
+ usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
|
||||||
|
+ usb0_vbus-supply = <®_usb0_vbus>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,241 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 18:43:42 +0300
|
||||||
|
Subject: arm64:dts: Add sun50i-h5-nanopi-neo-core2 device
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/Makefile | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts | 210 ++++++++++
|
||||||
|
2 files changed, 211 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
index 29c44ac36599..1764856f6c2d 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
@@ -26,6 +26,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-libretech-all-h3-it.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-libretech-all-h5-cc.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo-plus2.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo-core2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-r1s-h5.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-pc2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-k1-plus.dtb
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..57283cc16ad9
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts
|
||||||
|
@@ -0,0 +1,210 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2017 Antony Antony <antony@phenome.org>
|
||||||
|
+ * Copyright (C) 2016 ARM Ltd.
|
||||||
|
+ *
|
||||||
|
+ * This file is dual-licensed: you can use it either under the terms
|
||||||
|
+ * of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
+ * licensing only applies to this file, and not this project as a
|
||||||
|
+ * whole.
|
||||||
|
+ *
|
||||||
|
+ * a) This file is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU General Public License as
|
||||||
|
+ * published by the Free Software Foundation; either version 2 of the
|
||||||
|
+ * License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This file is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ * GNU General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * Or, alternatively,
|
||||||
|
+ *
|
||||||
|
+ * b) Permission is hereby granted, free of charge, to any person
|
||||||
|
+ * obtaining a copy of this software and associated documentation
|
||||||
|
+ * files (the "Software"), to deal in the Software without
|
||||||
|
+ * restriction, including without limitation the rights to use,
|
||||||
|
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
+ * sell copies of the Software, and to permit persons to whom the
|
||||||
|
+ * Software is furnished to do so, subject to the following
|
||||||
|
+ * conditions:
|
||||||
|
+ *
|
||||||
|
+ * The above copyright notice and this permission notice shall be
|
||||||
|
+ * included in all copies or substantial portions of the Software.
|
||||||
|
+ *
|
||||||
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "sun50i-h5.dtsi"
|
||||||
|
+
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+#include <dt-bindings/input/input.h>
|
||||||
|
+#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "FriendlyARM NanoPi NEO Core2";
|
||||||
|
+ compatible = "friendlyarm,nanopi-neo-core2", "allwinner,sun50i-h5";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet0 = &emac;
|
||||||
|
+ serial0 = &uart0;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ stdout-path = "serial0:115200n8";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ pwr {
|
||||||
|
+ label = "nanopi:red:pwr";
|
||||||
|
+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
|
||||||
|
+ linux,default-trigger = "default-on";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ status {
|
||||||
|
+ label = "nanopi:green:status";
|
||||||
|
+ gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_gmac_3v3: gmac-3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ regulator-name = "gmac-3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ startup-delay-us = <100000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vcc3v3: vcc3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
|
||||||
|
+ post-power-on-delay-ms = <200>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <&vdd_cpux>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&codec {
|
||||||
|
+ allwinner,audio-routing =
|
||||||
|
+ "Line Out", "LINEOUT",
|
||||||
|
+ "MIC1", "Mic",
|
||||||
|
+ "Mic", "MBIAS";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emac {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&emac_rgmii_pins>;
|
||||||
|
+ phy-supply = <®_gmac_3v3>;
|
||||||
|
+ phy-handle = <&ext_rgmii_phy>;
|
||||||
|
+ phy-mode = "rgmii-id";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&external_mdio {
|
||||||
|
+ ext_rgmii_phy: ethernet-phy@7 {
|
||||||
|
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
+ reg = <7>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc0 {
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc1 {
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ vqmmc-supply = <®_vcc3v3>;
|
||||||
|
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ non-removable;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ brcmf: wifi@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ compatible = "brcm,bcm4329-fmac";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc2_8bit_pins>;
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ non-removable;
|
||||||
|
+ cap-mmc-hw-reset;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&r_i2c {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ vdd_cpux: regulator@65 {
|
||||||
|
+ compatible = "silergy,sy8106a";
|
||||||
|
+ reg = <0x65>;
|
||||||
|
+ silergy,fixed-microvolt = <1000000>;
|
||||||
|
+ regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-max-microvolt = <1400000>;
|
||||||
|
+ regulator-ramp-delay = <200>;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart0_pa_pins>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb_otg {
|
||||||
|
+ dr_mode = "otg";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbphy {
|
||||||
|
+ /* USB Type-A ports' VBUS is always on */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,211 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 18:49:55 +0300
|
||||||
|
Subject: arm64:dts: Add sun50i-h5-nanopi-neo2-v1.1 device
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/Makefile | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts | 180 ++++++++++
|
||||||
|
2 files changed, 181 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
index 1764856f6c2d..0250c273de9c 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
@@ -25,6 +25,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-libretech-all-h3-cc.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-libretech-all-h3-it.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-libretech-all-h5-cc.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo2.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo2-v1.1.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo-plus2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo-core2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-r1s-h5.dtb
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..06ffbbd29a93
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts
|
||||||
|
@@ -0,0 +1,180 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
|
||||||
|
+ *
|
||||||
|
+ * This file is dual-licensed: you can use it either under the terms
|
||||||
|
+ * of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
+ * licensing only applies to this file, and not this project as a
|
||||||
|
+ * whole.
|
||||||
|
+ *
|
||||||
|
+ * a) This file is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU General Public License as
|
||||||
|
+ * published by the Free Software Foundation; either version 2 of the
|
||||||
|
+ * License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This file is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ * GNU General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * Or, alternatively,
|
||||||
|
+ *
|
||||||
|
+ * b) Permission is hereby granted, free of charge, to any person
|
||||||
|
+ * obtaining a copy of this software and associated documentation
|
||||||
|
+ * files (the "Software"), to deal in the Software without
|
||||||
|
+ * restriction, including without limitation the rights to use,
|
||||||
|
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
+ * sell copies of the Software, and to permit persons to whom the
|
||||||
|
+ * Software is furnished to do so, subject to the following
|
||||||
|
+ * conditions:
|
||||||
|
+ *
|
||||||
|
+ * The above copyright notice and this permission notice shall be
|
||||||
|
+ * included in all copies or substantial portions of the Software.
|
||||||
|
+ *
|
||||||
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "sun50i-h5.dtsi"
|
||||||
|
+
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "FriendlyARM NanoPi NEO 2";
|
||||||
|
+ compatible = "friendlyarm,nanopi-neo2", "allwinner,sun50i-h5";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet0 = &emac;
|
||||||
|
+ serial0 = &uart0;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ stdout-path = "serial0:115200n8";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ pwr {
|
||||||
|
+ label = "nanopi:red:pwr";
|
||||||
|
+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
|
||||||
|
+ linux,default-trigger = "default-on";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ status {
|
||||||
|
+ label = "nanopi:green:status";
|
||||||
|
+ gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_gmac_3v3: gmac-3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "gmac-3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ startup-delay-us = <100000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vcc3v3: vcc3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_cpux: gpio-regulator {
|
||||||
|
+ compatible = "regulator-gpio";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ regulator-type = "voltage";
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1100000>;
|
||||||
|
+ regulator-max-microvolt = <1300000>;
|
||||||
|
+ regulator-ramp-delay = <50>; /* 4ms */
|
||||||
|
+ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
|
||||||
|
+ gpios-states = <0x1>;
|
||||||
|
+ states = <1100000 0x0
|
||||||
|
+ 1300000 0x1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_usb0_vbus: usb0-vbus {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "usb0-vbus";
|
||||||
|
+ regulator-min-microvolt = <5000000>;
|
||||||
|
+ regulator-max-microvolt = <5000000>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <&vdd_cpux>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emac {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&emac_rgmii_pins>;
|
||||||
|
+ phy-supply = <®_gmac_3v3>;
|
||||||
|
+ phy-handle = <&ext_rgmii_phy>;
|
||||||
|
+ phy-mode = "rgmii-id";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&external_mdio {
|
||||||
|
+ ext_rgmii_phy: ethernet-phy@7 {
|
||||||
|
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
+ reg = <7>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc0 {
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart0_pa_pins>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb_otg {
|
||||||
|
+ dr_mode = "otg";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbphy {
|
||||||
|
+ /* USB Type-A port's VBUS is always on */
|
||||||
|
+ usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
|
||||||
|
+ usb0_vbus-supply = <®_usb0_vbus>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 14:24:40 +0300
|
||||||
|
Subject: arm64:dts: FIXME: a64-olinuxino add regulator audio mmc
|
||||||
|
|
||||||
|
Duplicate nodes appeared as a result of patching and this needs
|
||||||
|
to be fixed and tested on the board
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts | 46 ++++++++++
|
||||||
|
1 file changed, 46 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
|
||||||
|
index 21d0bdc28766..636b64a1d8db 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
|
||||||
|
@@ -52,6 +52,13 @@ reg_usb1_vbus: usb1-vbus {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+ reg_vcc3v3: vcc3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
wifi_pwrseq: wifi_pwrseq {
|
||||||
|
compatible = "mmc-pwrseq-simple";
|
||||||
|
reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
|
||||||
|
@@ -99,6 +106,10 @@ &ehci1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&mixer0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&emac {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&rgmii_pins>;
|
||||||
|
@@ -159,6 +170,16 @@ rtl8723bs: wifi@1 {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&mmc2 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc2_pins>;
|
||||||
|
+ vmmc-supply = <®_vcc3v3>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ non-removable;
|
||||||
|
+ cap-mmc-hw-reset;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&ohci0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
@@ -184,6 +205,7 @@ &r_pio {
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
+/* FIXME: Duplicate node */
|
||||||
|
&pio {
|
||||||
|
vcc-pa-supply = <®_dcdc1>;
|
||||||
|
vcc-pb-supply = <®_dcdc1>;
|
||||||
|
@@ -365,6 +387,30 @@ &sound_hdmi {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+/* FIXME: Duplicate node
|
||||||
|
+ * &sound {
|
||||||
|
+ * status = "okay";
|
||||||
|
+ * simple-audio-card,widgets = "Microphone", "Internal Microphone Left",
|
||||||
|
+ * "Microphone", "Internal Microphone Right",
|
||||||
|
+ * "Headphone", "Headphone Jack";
|
||||||
|
+ * simple-audio-card,aux-devs = <&codec_analog>;
|
||||||
|
+ * simple-audio-card,routing =
|
||||||
|
+ * "Left DAC", "AIF1 Slot 0 Left",
|
||||||
|
+ * "Right DAC", "AIF1 Slot 0 Right",
|
||||||
|
+ * "INL", "LINEOUT",
|
||||||
|
+ * "INR", "LINEOUT",
|
||||||
|
+ * "Headphone Jack", "HP",
|
||||||
|
+ * "AIF1 Slot 0 Left ADC", "Left ADC",
|
||||||
|
+ * "AIF1 Slot 0 Right ADC", "Right ADC",
|
||||||
|
+ * "Left ADC", "ADC",
|
||||||
|
+ * "Right ADC", "ADC",
|
||||||
|
+ * "Internal Microphone Left", "MBIAS",
|
||||||
|
+ * "MIC1", "Internal Microphone Left",
|
||||||
|
+ * "Internal Microphone Right", "HBIAS",
|
||||||
|
+ * "MIC2", "Internal Microphone Right";
|
||||||
|
+ * };
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
&uart0 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart0_pb_pins>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gunjan Gupta <viraniac@gmail.com>
|
||||||
|
Date: Tue, 19 Sep 2023 11:06:01 +0000
|
||||||
|
Subject: Add wifi nodes for Inovato Quadra
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/Makefile | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6-inovato-quadra.dts | 56 ++++++++++
|
||||||
|
2 files changed, 57 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
index 62d716418e60..83ab07b7f18a 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
@@ -48,6 +48,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-one-plus.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64-model-b.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-inovato-quadra.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-inovato-quadra.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-inovato-quadra.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..551ad69f18a6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-inovato-quadra.dts
|
||||||
|
@@ -0,0 +1,56 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+// Copyright (c) 2023 Gunjan Gupta <gunjan@armbian.com>
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+
|
||||||
|
+#include "sun50i-h6-tanix.dtsi"
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "Inovato Quadra";
|
||||||
|
+ compatible = "oranth,inovato-quadra", "allwinner,sun50i-h6";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet1 = &xr819;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ led-0 {
|
||||||
|
+ label = "red";
|
||||||
|
+ gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ led-1 {
|
||||||
|
+ label = "blue";
|
||||||
|
+ gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
|
||||||
|
+ default-state = "on";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2s1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc1 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc1_pins>;
|
||||||
|
+
|
||||||
|
+ xr819: sdio_wifi@1 {
|
||||||
|
+ compatible = "xradio,xr819";
|
||||||
|
+ interrupt-names = "host-wake";
|
||||||
|
+ interrupt-parent = <&r_pio>;
|
||||||
|
+ interrupts = <1 0 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
+ local-mac-address = [dc 44 6d c0 ff ee];
|
||||||
|
+ reg = <1>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sound_hdmi {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&wifi_pwrseq {
|
||||||
|
+ post-power-on-delay-ms = <0xc8>;
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Sun, 13 Nov 2022 23:15:38 +0300
|
||||||
|
Subject: arm64: dts: allwiner: sun50i-h616.dtsi: add usb,ehci,ohci
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 11 ++++++++--
|
||||||
|
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
index 74aed0d232a9..44f8ae11ca16 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
@@ -58,12 +58,12 @@ reserved-memory {
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * 256 KiB reserved for Trusted Firmware-A (BL31).
|
||||||
|
+ * 512 KiB reserved for Trusted Firmware-A (BL31).
|
||||||
|
* This is added by BL31 itself, but some bootloaders fail
|
||||||
|
* to propagate this into the DTB handed to kernels.
|
||||||
|
*/
|
||||||
|
secmon@40000000 {
|
||||||
|
- reg = <0x0 0x40000000 0x0 0x40000>;
|
||||||
|
+ reg = <0x0 0x40000000 0x0 0x80000>;
|
||||||
|
no-map;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
@@ -466,6 +466,8 @@ spi0: spi@5010000 {
|
||||||
|
clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
|
||||||
|
clock-names = "ahb", "mod";
|
||||||
|
resets = <&ccu RST_BUS_SPI0>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&spi0_pins>;
|
||||||
|
status = "disabled";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
@@ -479,6 +481,8 @@ spi1: spi@5011000 {
|
||||||
|
clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
|
||||||
|
clock-names = "ahb", "mod";
|
||||||
|
resets = <&ccu RST_BUS_SPI1>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&spi1_pins>;
|
||||||
|
status = "disabled";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
@@ -688,11 +692,14 @@ r_ccu: clock@7010000 {
|
||||||
|
r_pio: pinctrl@7022000 {
|
||||||
|
compatible = "allwinner,sun50i-h616-r-pinctrl";
|
||||||
|
reg = <0x07022000 0x400>;
|
||||||
|
+ interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&r_ccu CLK_R_APB1>, <&osc24M>,
|
||||||
|
<&rtc CLK_OSC32K>;
|
||||||
|
clock-names = "apb", "hosc", "losc";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <3>;
|
||||||
|
+ interrupt-controller;
|
||||||
|
+ #interrupt-cells = <3>;
|
||||||
|
|
||||||
|
/omit-if-no-ref/
|
||||||
|
r_i2c_pins: r-i2c-pins {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,144 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||||
|
Date: Fri, 16 Aug 2019 16:40:20 +0200
|
||||||
|
Subject: arm64: dts: allwinner: h6: Add AC200 EPHY nodes
|
||||||
|
|
||||||
|
All Allwinner H6 SoCs feature a co-packaged AC200 die, which replaces
|
||||||
|
the integrated PHY and audio circuitry of its H3/H5 predecessors. It is
|
||||||
|
using an internal I2C connection, but otherwise pretty much behaves as
|
||||||
|
it would be externally connected.
|
||||||
|
|
||||||
|
Since every H6 SoC contains this chip, add the required DT nodes to the
|
||||||
|
SoC .dtsi, but keep them disabled. This is for now just covering the
|
||||||
|
AC200 MFD parent and its EPHY child.
|
||||||
|
Any board making use of one of the integrated PHY needs to enable it and
|
||||||
|
connect the MAC and PHY accordingly.
|
||||||
|
|
||||||
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||||
|
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 73 ++++++++++
|
||||||
|
1 file changed, 73 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
index a6b32f7b786e..f50f17bd87f6 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
@@ -24,6 +24,16 @@ aliases {
|
||||||
|
mmc2 = &mmc2;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ ac200_pwm_clk: ac200_clk {
|
||||||
|
+ compatible = "pwm-clock";
|
||||||
|
+ #clock-cells = <0>;
|
||||||
|
+ clock-frequency = <24000000>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pwm1_pin>;
|
||||||
|
+ pwms = <&pwm 1 42 0>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
cpus {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
@@ -335,6 +345,14 @@ ths_calibration: thermal-sensor-calibration@14 {
|
||||||
|
cpu_speed_grade: cpu-speed-grade@1c {
|
||||||
|
reg = <0x1c 0x4>;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ ephy_calib: ephy_calib@2c {
|
||||||
|
+ reg = <0x2c 0x2>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ ac200_bg: ac200_bg@30 {
|
||||||
|
+ reg = <0x30 0x2>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
timer@3009000 {
|
||||||
|
@@ -390,6 +408,13 @@ ext_rgmii_pins: rgmii-pins {
|
||||||
|
drive-strength = <40>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ ext_rmii_pins: rmii_pins {
|
||||||
|
+ pins = "PA0", "PA1", "PA2", "PA3", "PA4",
|
||||||
|
+ "PA5", "PA6", "PA7", "PA8", "PA9";
|
||||||
|
+ function = "emac";
|
||||||
|
+ drive-strength = <40>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
hdmi_pins: hdmi-pins {
|
||||||
|
pins = "PH8", "PH9", "PH10";
|
||||||
|
function = "hdmi";
|
||||||
|
@@ -410,6 +435,12 @@ i2c2_pins: i2c2-pins {
|
||||||
|
function = "i2c2";
|
||||||
|
};
|
||||||
|
|
||||||
|
+ i2c3_pins: i2c3-pins {
|
||||||
|
+ pins = "PB17", "PB18";
|
||||||
|
+ function = "i2c3";
|
||||||
|
+ bias-pull-up;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
mmc0_pins: mmc0-pins {
|
||||||
|
pins = "PF0", "PF1", "PF2", "PF3",
|
||||||
|
"PF4", "PF5";
|
||||||
|
@@ -437,6 +468,11 @@ mmc2_pins: mmc2-pins {
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ pwm1_pin: pwm1-pin {
|
||||||
|
+ pins = "PB19";
|
||||||
|
+ function = "pwm1";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
/omit-if-no-ref/
|
||||||
|
spi0_pins: spi0-pins {
|
||||||
|
pins = "PC0", "PC2", "PC3";
|
||||||
|
@@ -648,6 +684,43 @@ i2c2: i2c@5002800 {
|
||||||
|
#size-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ i2c3: i2c@5002c00 {
|
||||||
|
+ compatible = "allwinner,sun50i-h6-i2c",
|
||||||
|
+ "allwinner,sun6i-a31-i2c";
|
||||||
|
+ reg = <0x05002c00 0x400>;
|
||||||
|
+ interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_I2C3>;
|
||||||
|
+ resets = <&ccu RST_BUS_I2C3>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&i2c3_pins>;
|
||||||
|
+ clock-frequency = <100000>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+
|
||||||
|
+ ac200: mfd@10 {
|
||||||
|
+ compatible = "x-powers,ac200";
|
||||||
|
+ reg = <0x10>;
|
||||||
|
+ clocks = <&ac200_pwm_clk>;
|
||||||
|
+ interrupt-parent = <&pio>;
|
||||||
|
+ interrupts = <1 20 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+ interrupt-controller;
|
||||||
|
+ #interrupt-cells = <1>;
|
||||||
|
+ nvmem-cells = <&ac200_bg>;
|
||||||
|
+ nvmem-cell-names = "bandgap";
|
||||||
|
+
|
||||||
|
+ ac200_ephy_ctl: syscon {
|
||||||
|
+ compatible = "x-powers,ac200-ephy-ctl";
|
||||||
|
+ nvmem-cells = <&ephy_calib>;
|
||||||
|
+ nvmem-cell-names = "calibration";
|
||||||
|
+ #clock-cells = <0>;
|
||||||
|
+ #reset-cells = <0>;
|
||||||
|
+ phy-mode = "rmii";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
spi0: spi@5010000 {
|
||||||
|
compatible = "allwinner,sun50i-h6-spi",
|
||||||
|
"allwinner,sun8i-h3-spi";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
Date: Thu, 1 Sep 2022 17:45:03 +0200
|
||||||
|
Subject: arm64: dts: allwinner: h6: add AC200 codec nodes
|
||||||
|
|
||||||
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 42 ++++++++++
|
||||||
|
1 file changed, 42 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
index f50f17bd87f6..538c90663602 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
@@ -24,6 +24,22 @@ aliases {
|
||||||
|
mmc2 = &mmc2;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ analog: analog-codec {
|
||||||
|
+ compatible = "simple-audio-card";
|
||||||
|
+ simple-audio-card,format = "i2s";
|
||||||
|
+ simple-audio-card,name = "ac200-audio";
|
||||||
|
+ simple-audio-card,mclk-fs = <512>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+
|
||||||
|
+ simple-audio-card,cpu {
|
||||||
|
+ sound-dai = <&i2s3>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ simple-audio-card,codec {
|
||||||
|
+ sound-dai = <&ac200_codec>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
ac200_pwm_clk: ac200_clk {
|
||||||
|
compatible = "pwm-clock";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
@@ -441,6 +457,11 @@ i2c3_pins: i2c3-pins {
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ i2s3_pins: i2s3-pins {
|
||||||
|
+ pins = "PB12", "PB13", "PB14", "PB15", "PB16";
|
||||||
|
+ function = "i2s3";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
mmc0_pins: mmc0-pins {
|
||||||
|
pins = "PF0", "PF1", "PF2", "PF3",
|
||||||
|
"PF4", "PF5";
|
||||||
|
@@ -718,6 +739,12 @@ ac200_ephy_ctl: syscon {
|
||||||
|
phy-mode = "rmii";
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ ac200_codec: codec {
|
||||||
|
+ #sound-dai-cells = <0>;
|
||||||
|
+ compatible = "x-powers,ac200-codec";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -775,6 +802,21 @@ mdio: mdio {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+ i2s3: i2s@508f000 {
|
||||||
|
+ #sound-dai-cells = <0>;
|
||||||
|
+ compatible = "allwinner,sun50i-h6-i2s";
|
||||||
|
+ reg = <0x0508f000 0x1000>;
|
||||||
|
+ interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_I2S3>, <&ccu CLK_I2S3>;
|
||||||
|
+ clock-names = "apb", "mod";
|
||||||
|
+ dmas = <&dma 6>, <&dma 6>;
|
||||||
|
+ resets = <&ccu RST_BUS_I2S3>;
|
||||||
|
+ dma-names = "rx", "tx";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&i2s3_pins>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
i2s1: i2s@5091000 {
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
|
compatible = "allwinner,sun50i-h6-i2s";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
Date: Thu, 1 Sep 2022 17:49:28 +0200
|
||||||
|
Subject: arm64: dts: allwinner: h6: enable AC200 codec
|
||||||
|
|
||||||
|
Enable AC200 analog codec on H6 based boards where present.
|
||||||
|
|
||||||
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts | 25 ++++++++++
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts | 25 ++++++++++
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6-mini.dts | 14 ++++++
|
||||||
|
3 files changed, 64 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
|
||||||
|
index 5e3405408244..871020167557 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
|
||||||
|
@@ -104,6 +104,19 @@ wifi_pwrseq: wifi-pwrseq {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&ac200_codec {
|
||||||
|
+ avcc-supply = <®_aldo2>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ac200_pwm_clk {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&analog {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&cpu0 {
|
||||||
|
cpu-supply = <®_dcdca>;
|
||||||
|
};
|
||||||
|
@@ -172,6 +185,14 @@ ext_rgmii_phy: ethernet-phy@1 {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&i2c3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2s3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&mmc0 {
|
||||||
|
vmmc-supply = <®_cldo1>;
|
||||||
|
cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||||
|
@@ -219,6 +240,10 @@ &pio {
|
||||||
|
vcc-pg-supply = <®_vcc_wifi_io>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+&pwm {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&r_ir {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
|
||||||
|
index 454d2a2974c9..5bb973ea3fb4 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
|
||||||
|
@@ -93,6 +93,19 @@ &dwc3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&ac200_codec {
|
||||||
|
+ avcc-supply = <®_aldo2>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ac200_pwm_clk {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&analog {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&cpu0 {
|
||||||
|
cpu-supply = <®_dcdca>;
|
||||||
|
};
|
||||||
|
@@ -139,6 +152,14 @@ &i2s1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&i2c3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2s3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&mdio {
|
||||||
|
ext_rgmii_phy: ethernet-phy@1 {
|
||||||
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
@@ -195,6 +216,10 @@ &pio {
|
||||||
|
vcc-pg-supply = <®_aldo1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+&pwm {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&r_i2c {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6-mini.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6-mini.dts
|
||||||
|
index 08d84160d88f..931e8b99fd93 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6-mini.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6-mini.dts
|
||||||
|
@@ -10,6 +10,20 @@ / {
|
||||||
|
compatible = "oranth,tanix-tx6-mini", "allwinner,sun50i-h6";
|
||||||
|
};
|
||||||
|
|
||||||
|
+
|
||||||
|
+&ac200_codec {
|
||||||
|
+ avcc-supply = <®_vcc3v3>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&analog {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2s3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&r_ir {
|
||||||
|
linux,rc-map-name = "rc-tanix-tx3mini";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||||
|
Date: Sat, 24 Aug 2019 01:03:05 +0200
|
||||||
|
Subject: arm64: dts: allwinner: h6: tanix: enable Ethernet
|
||||||
|
|
||||||
|
Tanix-TX6 and TX6 mini boards provide an 100MBit/s Ethernet port, which
|
||||||
|
uses the EPHY integrated into the Allwinner H6 SoC.
|
||||||
|
|
||||||
|
Enable the MAC node, plus the required AC200 nodes to allow configuring
|
||||||
|
and enabling the integrated PHY.
|
||||||
|
|
||||||
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||||
|
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi | 38 ++++++++++
|
||||||
|
1 file changed, 38 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi
|
||||||
|
index 4903d6358112..51a75debab44 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi
|
||||||
|
@@ -10,6 +10,7 @@
|
||||||
|
|
||||||
|
/ {
|
||||||
|
aliases {
|
||||||
|
+ ethernet0 = &emac;
|
||||||
|
serial0 = &uart0;
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -84,6 +85,16 @@ wifi_pwrseq: wifi-pwrseq {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&ac200_ephy_ctl {
|
||||||
|
+ x-powers,led-polarity = <GPIO_ACTIVE_HIGH>;
|
||||||
|
+ phy-address = <1>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ac200_pwm_clk {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&cpu0 {
|
||||||
|
cpu-supply = <®_vdd_cpu_gpu>;
|
||||||
|
};
|
||||||
|
@@ -104,6 +115,14 @@ &ehci3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&emac {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&ext_rmii_pins>;
|
||||||
|
+ phy-mode = "rmii";
|
||||||
|
+ phy-handle = <&ext_rmii_phy>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&gpu {
|
||||||
|
mali-supply = <®_vdd_cpu_gpu>;
|
||||||
|
status = "okay";
|
||||||
|
@@ -119,6 +138,21 @@ hdmi_out_con: endpoint {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&i2c3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mdio {
|
||||||
|
+ ext_rmii_phy: ethernet-phy@1 {
|
||||||
|
+ compatible = "ethernet-phy-id0044.1400",
|
||||||
|
+ "ethernet-phy-ieee802.3-c22";
|
||||||
|
+ reg = <1>;
|
||||||
|
+ resets = <&ac200_ephy_ctl>;
|
||||||
|
+ reset-names = "phy";
|
||||||
|
+ clocks = <&ac200_ephy_ctl>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&mmc0 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&mmc0_pins>;
|
||||||
|
@@ -161,6 +195,10 @@ &pio {
|
||||||
|
vcc-pg-supply = <®_vcc1v8>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+&pwm {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&r_ir {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kali Prasad <kprasadvnsi@protonmail.com>
|
||||||
|
Date: Sun, 19 Sep 2021 08:02:27 +0000
|
||||||
|
Subject: arm64: dts: allwinner: h616: Add device node for SID
|
||||||
|
|
||||||
|
The device tree binding for H616's SID controller.
|
||||||
|
|
||||||
|
Signed-off-by: Kali Prasad <kprasadvnsi@protonmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 15 ++++++++++
|
||||||
|
1 file changed, 15 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
index 45359b0d317a..7ad1982fb47f 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
@@ -171,6 +171,21 @@ ccu: clock@3001000 {
|
||||||
|
#reset-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ sid: efuse@3006000 {
|
||||||
|
+ compatible = "allwinner,sun50i-h616-sid";
|
||||||
|
+ reg = <0x03006000 0x1000>;
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <1>;
|
||||||
|
+
|
||||||
|
+ cpu_speed_grade: cpu-speed-grade@00 {
|
||||||
|
+ reg = <0x00 0x02>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ ths_calibration: thermal-sensor-calibration@14 {
|
||||||
|
+ reg = <0x14 0x8>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
watchdog: watchdog@30090a0 {
|
||||||
|
compatible = "allwinner,sun50i-h616-wdt",
|
||||||
|
"allwinner,sun6i-a31-wdt";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,305 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AGM1968 <AGM1968@users.noreply.github.com>
|
||||||
|
Date: Tue, 23 May 2023 16:43:00 +0000
|
||||||
|
Subject: arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||||
|
drivers/cpufreq/cpufreq-dt-platdev.c drivers/cpufreq/sun50i-cpufreq-nvmem.c
|
||||||
|
|
||||||
|
Signed-off-by: AGM1968 <AGM1968@users.noreply.github.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi | 75 ++++++++
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts | 6 +
|
||||||
|
drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
|
||||||
|
drivers/cpufreq/sun50i-cpufreq-nvmem.c | 91 +++++++---
|
||||||
|
4 files changed, 149 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..36f2950367c6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi
|
||||||
|
@@ -0,0 +1,75 @@
|
||||||
|
+//SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+//Testing Version 1 from: AGM1968 <AGM1968@users.noreply.github.com>
|
||||||
|
+//Noted: PLL_CPUX = 24 MHz*N/P (WIP)
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ cpu_opp_table: opp-table-cpu {
|
||||||
|
+ compatible = "allwinner,sun50i-h616-operating-points";
|
||||||
|
+ nvmem-cells = <&cpu_speed_grade>;
|
||||||
|
+ opp-shared;
|
||||||
|
+
|
||||||
|
+ opp-480000000 {
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ opp-hz = /bits/ 64 <480000000>;
|
||||||
|
+ opp-microvolt-speed0 = <820000 820000 1100000>;
|
||||||
|
+ opp-microvolt-speed1 = <880000 880000 1100000>;
|
||||||
|
+ opp-microvolt-speed2 = <880000 880000 1100000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-600000000 {
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ opp-hz = /bits/ 64 <600000000>;
|
||||||
|
+ opp-microvolt-speed0 = <820000 820000 1100000>;
|
||||||
|
+ opp-microvolt-speed1 = <880000 880000 1100000>;
|
||||||
|
+ opp-microvolt-speed2 = <880000 880000 1100000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-792000000 {
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ opp-hz = /bits/ 64 <792000000>;
|
||||||
|
+ opp-microvolt-speed0 = <860000 860000 1100000>;
|
||||||
|
+ opp-microvolt-speed1 = <940000 940000 1100000>;
|
||||||
|
+ opp-microvolt-speed2 = <940000 940000 1100000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1008000000 {
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ opp-hz = /bits/ 64 <1008000000>;
|
||||||
|
+ opp-microvolt-speed0 = <900000 900000 1100000>;
|
||||||
|
+ opp-microvolt-speed1 = <1020000 1020000 1100000>;
|
||||||
|
+ opp-microvolt-speed2 = <1020000 1020000 1100000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1200000000 {
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
+ opp-microvolt-speed0 = <960000 960000 1100000>;
|
||||||
|
+ opp-microvolt-speed1 = <1100000 1100000 1100000>;
|
||||||
|
+ opp-microvolt-speed2 = <1100000 1100000 1100000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1512000000 {
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ opp-hz = /bits/ 64 <1512000000>;
|
||||||
|
+ opp-microvolt-speed0 = <1100000 1100000 1100000>;
|
||||||
|
+ opp-microvolt-speed1 = <1100000 1100000 1100000>;
|
||||||
|
+ opp-microvolt-speed2 = <1100000 1100000 1100000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ operating-points-v2 = <&cpu_opp_table>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu1 {
|
||||||
|
+ operating-points-v2 = <&cpu_opp_table>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu2 {
|
||||||
|
+ operating-points-v2 = <&cpu_opp_table>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu3 {
|
||||||
|
+ operating-points-v2 = <&cpu_opp_table>;
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||||
|
index 8d8009c7f9a3..28b5b1be932f 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||||
|
@@ -6,12 +6,18 @@
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
#include "sun50i-h616-orangepi-zero.dtsi"
|
||||||
|
+#include "sun50i-h616-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "OrangePi Zero2";
|
||||||
|
compatible = "xunlong,orangepi-zero2", "allwinner,sun50i-h616";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <®_dcdca>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&emac0 {
|
||||||
|
phy-supply = <®_dcdce>;
|
||||||
|
};
|
||||||
|
diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c
|
||||||
|
index fb2875ce1fdd..e63d36839769 100644
|
||||||
|
--- a/drivers/cpufreq/cpufreq-dt-platdev.c
|
||||||
|
+++ b/drivers/cpufreq/cpufreq-dt-platdev.c
|
||||||
|
@@ -104,6 +104,7 @@ static const struct of_device_id allowlist[] __initconst = {
|
||||||
|
*/
|
||||||
|
static const struct of_device_id blocklist[] __initconst = {
|
||||||
|
{ .compatible = "allwinner,sun50i-h6", },
|
||||||
|
+ { .compatible = "allwinner,sun50i-h616", },
|
||||||
|
|
||||||
|
{ .compatible = "apple,arm-platform", },
|
||||||
|
|
||||||
|
diff --git a/drivers/cpufreq/sun50i-cpufreq-nvmem.c b/drivers/cpufreq/sun50i-cpufreq-nvmem.c
|
||||||
|
index 6845ab5034ec..5d85bfe475de 100644
|
||||||
|
--- a/drivers/cpufreq/sun50i-cpufreq-nvmem.c
|
||||||
|
+++ b/drivers/cpufreq/sun50i-cpufreq-nvmem.c
|
||||||
|
@@ -6,6 +6,9 @@
|
||||||
|
* provide the OPP framework with required information.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2019 Yangtao Li <tiny.windzz@gmail.com>
|
||||||
|
+ *
|
||||||
|
+ * ADD efuse_xlate to extract SoC version so that h6 and h616 can coexist.
|
||||||
|
+ * Version 1 AGM1968 <AGM1968@users.noreply.github.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
@@ -20,25 +23,62 @@
|
||||||
|
|
||||||
|
#define MAX_NAME_LEN 7
|
||||||
|
|
||||||
|
-#define NVMEM_MASK 0x7
|
||||||
|
-#define NVMEM_SHIFT 5
|
||||||
|
+#define SUN50I_H616_NVMEM_MASK 0x22
|
||||||
|
+#define SUN50I_H616_NVMEM_SHIFT 5
|
||||||
|
+#define SUN50I_H6_NVMEM_MASK 0x7
|
||||||
|
+#define SUN50I_H6_NVMEM_SHIFT 5
|
||||||
|
+
|
||||||
|
+struct sunxi_cpufreq_soc_data {
|
||||||
|
+ u32 (*efuse_xlate) (void *efuse);
|
||||||
|
+};
|
||||||
|
|
||||||
|
static struct platform_device *cpufreq_dt_pdev, *sun50i_cpufreq_pdev;
|
||||||
|
|
||||||
|
+static u32 sun50i_h616_efuse_xlate(void *efuse)
|
||||||
|
+{
|
||||||
|
+ u32 efuse_value = (*(u32 *)efuse >> SUN50I_H616_NVMEM_SHIFT) &
|
||||||
|
+ SUN50I_H616_NVMEM_MASK;
|
||||||
|
+
|
||||||
|
+ /* Tested as V1 h616 soc. Expected efuse values are 1 - 3,
|
||||||
|
+ slowest to fastest */
|
||||||
|
+ if (efuse_value >=1 && efuse_value <= 3)
|
||||||
|
+ return efuse_value - 1;
|
||||||
|
+ else
|
||||||
|
+ return 0;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static u32 sun50i_h6_efuse_xlate(void *efuse)
|
||||||
|
+{
|
||||||
|
+ u32 efuse_value = (*(u32 *)efuse >> SUN50I_H6_NVMEM_SHIFT) &
|
||||||
|
+ SUN50I_H6_NVMEM_MASK;
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * We treat unexpected efuse values as if the SoC was from
|
||||||
|
+ * the slowest bin. Expected efuse values are 1 - 3, slowest
|
||||||
|
+ * to fastest.
|
||||||
|
+ */
|
||||||
|
+ if (efuse_value >= 1 && efuse_value <= 3)
|
||||||
|
+ return efuse_value - 1;
|
||||||
|
+ else
|
||||||
|
+ return 0;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* sun50i_cpufreq_get_efuse() - Determine speed grade from efuse value
|
||||||
|
+ * @soc_data: pointer to sunxi_cpufreq_soc_data context
|
||||||
|
* @versions: Set to the value parsed from efuse
|
||||||
|
*
|
||||||
|
* Returns 0 if success.
|
||||||
|
*/
|
||||||
|
-static int sun50i_cpufreq_get_efuse(u32 *versions)
|
||||||
|
+static int sun50i_cpufreq_get_efuse(const struct sunxi_cpufreq_soc_data *soc_data,
|
||||||
|
+ u32 *versions)
|
||||||
|
{
|
||||||
|
struct nvmem_cell *speedbin_nvmem;
|
||||||
|
struct device_node *np;
|
||||||
|
struct device *cpu_dev;
|
||||||
|
- u32 *speedbin, efuse_value;
|
||||||
|
+ u32 *speedbin;
|
||||||
|
size_t len;
|
||||||
|
- int ret;
|
||||||
|
|
||||||
|
cpu_dev = get_cpu_device(0);
|
||||||
|
if (!cpu_dev)
|
||||||
|
@@ -47,10 +87,9 @@ static int sun50i_cpufreq_get_efuse(u32 *versions)
|
||||||
|
np = dev_pm_opp_of_get_opp_desc_node(cpu_dev);
|
||||||
|
if (!np)
|
||||||
|
return -ENOENT;
|
||||||
|
-
|
||||||
|
- ret = of_device_is_compatible(np,
|
||||||
|
- "allwinner,sun50i-h6-operating-points");
|
||||||
|
- if (!ret) {
|
||||||
|
+ if (of_device_is_compatible(np, "allwinner,sun50i-h6-operating-points")) {}
|
||||||
|
+ else if (of_device_is_compatible(np, "allwinner,sun50i-h616-operating-points")) {}
|
||||||
|
+ else {
|
||||||
|
of_node_put(np);
|
||||||
|
return -ENOENT;
|
||||||
|
}
|
||||||
|
@@ -66,17 +105,7 @@ static int sun50i_cpufreq_get_efuse(u32 *versions)
|
||||||
|
if (IS_ERR(speedbin))
|
||||||
|
return PTR_ERR(speedbin);
|
||||||
|
|
||||||
|
- efuse_value = (*speedbin >> NVMEM_SHIFT) & NVMEM_MASK;
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * We treat unexpected efuse values as if the SoC was from
|
||||||
|
- * the slowest bin. Expected efuse values are 1-3, slowest
|
||||||
|
- * to fastest.
|
||||||
|
- */
|
||||||
|
- if (efuse_value >= 1 && efuse_value <= 3)
|
||||||
|
- *versions = efuse_value - 1;
|
||||||
|
- else
|
||||||
|
- *versions = 0;
|
||||||
|
+ *versions = soc_data->efuse_xlate(speedbin);
|
||||||
|
|
||||||
|
kfree(speedbin);
|
||||||
|
return 0;
|
||||||
|
@@ -84,18 +113,23 @@ static int sun50i_cpufreq_get_efuse(u32 *versions)
|
||||||
|
|
||||||
|
static int sun50i_cpufreq_nvmem_probe(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
+ const struct of_device_id *match;
|
||||||
|
int *opp_tokens;
|
||||||
|
char name[MAX_NAME_LEN];
|
||||||
|
unsigned int cpu;
|
||||||
|
u32 speed = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
+ match = dev_get_platdata(&pdev->dev);
|
||||||
|
+ if (!match)
|
||||||
|
+ return -EINVAL;
|
||||||
|
+
|
||||||
|
opp_tokens = kcalloc(num_possible_cpus(), sizeof(*opp_tokens),
|
||||||
|
GFP_KERNEL);
|
||||||
|
if (!opp_tokens)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
- ret = sun50i_cpufreq_get_efuse(&speed);
|
||||||
|
+ ret = sun50i_cpufreq_get_efuse(match-> data, &speed);
|
||||||
|
if (ret) {
|
||||||
|
kfree(opp_tokens);
|
||||||
|
return ret;
|
||||||
|
@@ -159,8 +193,17 @@ static struct platform_driver sun50i_cpufreq_driver = {
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
+static const struct sunxi_cpufreq_soc_data sun50i_h616_data = {
|
||||||
|
+ .efuse_xlate = sun50i_h616_efuse_xlate,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct sunxi_cpufreq_soc_data sun50i_h6_data = {
|
||||||
|
+ .efuse_xlate = sun50i_h6_efuse_xlate,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static const struct of_device_id sun50i_cpufreq_match_list[] = {
|
||||||
|
- { .compatible = "allwinner,sun50i-h6" },
|
||||||
|
+ { .compatible = "allwinner,sun50i-h6", .data = &sun50i_h6_data },
|
||||||
|
+ { .compatible = "allwinner,sun50i-h616", .data = &sun50i_h616_data },
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(of, sun50i_cpufreq_match_list);
|
||||||
|
@@ -196,8 +239,8 @@ static int __init sun50i_cpufreq_init(void)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
sun50i_cpufreq_pdev =
|
||||||
|
- platform_device_register_simple("sun50i-cpufreq-nvmem",
|
||||||
|
- -1, NULL, 0);
|
||||||
|
+ platform_device_register_data(NULL,
|
||||||
|
+ "sun50i-cpufreq-nvmem", -1, match, sizeof(*match));
|
||||||
|
ret = PTR_ERR_OR_ZERO(sun50i_cpufreq_pdev);
|
||||||
|
if (ret == 0)
|
||||||
|
return 0;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kali Prasad <kprasadvnsi@protonmail.com>
|
||||||
|
Date: Sun, 19 Sep 2021 08:02:27 +0000
|
||||||
|
Subject: arm64: dts: allwinner: h616: Add thermal sensor and thermal zones
|
||||||
|
|
||||||
|
There are four sensors, CPU, GPU, VE, and DDR.
|
||||||
|
|
||||||
|
Signed-off-by: Kali Prasad <kprasadvnsi@protonmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 75 ++++++++++
|
||||||
|
1 file changed, 75 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
index 7ad1982fb47f..8628a9e3dfca 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
@@ -9,6 +9,7 @@
|
||||||
|
#include <dt-bindings/clock/sun6i-rtc.h>
|
||||||
|
#include <dt-bindings/reset/sun50i-h616-ccu.h>
|
||||||
|
#include <dt-bindings/reset/sun50i-h6-r-ccu.h>
|
||||||
|
+#include <dt-bindings/thermal/thermal.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
@@ -25,6 +26,8 @@ cpu0: cpu@0 {
|
||||||
|
reg = <0>;
|
||||||
|
enable-method = "psci";
|
||||||
|
clocks = <&ccu CLK_CPUX>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ #cooling-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu1: cpu@1 {
|
||||||
|
@@ -33,6 +36,8 @@ cpu1: cpu@1 {
|
||||||
|
reg = <1>;
|
||||||
|
enable-method = "psci";
|
||||||
|
clocks = <&ccu CLK_CPUX>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ #cooling-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu2: cpu@2 {
|
||||||
|
@@ -41,6 +46,8 @@ cpu2: cpu@2 {
|
||||||
|
reg = <2>;
|
||||||
|
enable-method = "psci";
|
||||||
|
clocks = <&ccu CLK_CPUX>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ #cooling-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu3: cpu@3 {
|
||||||
|
@@ -49,6 +56,8 @@ cpu3: cpu@3 {
|
||||||
|
reg = <3>;
|
||||||
|
enable-method = "psci";
|
||||||
|
clocks = <&ccu CLK_CPUX>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ #cooling-cells = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -833,5 +842,71 @@ r_rsb: rsb@7083000 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ ths: thermal-sensor@5070400 {
|
||||||
|
+ compatible = "allwinner,sun50i-h616-ths";
|
||||||
|
+ reg = <0x05070400 0x400>;
|
||||||
|
+ interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_THS>;
|
||||||
|
+ clock-names = "bus";
|
||||||
|
+ resets = <&ccu RST_BUS_THS>;
|
||||||
|
+ nvmem-cells = <&ths_calibration>;
|
||||||
|
+ nvmem-cell-names = "calibration";
|
||||||
|
+ #thermal-sensor-cells = <1>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ thermal-zones {
|
||||||
|
+ cpu-thermal {
|
||||||
|
+ polling-delay-passive = <500>;
|
||||||
|
+ polling-delay = <1000>;
|
||||||
|
+ thermal-sensors = <&ths 2>;
|
||||||
|
+ sustainable-power = <1000>;
|
||||||
|
+ k_po = <20>;
|
||||||
|
+ k_pu = <40>;
|
||||||
|
+ k_i = <0>;
|
||||||
|
+
|
||||||
|
+ trips {
|
||||||
|
+ cpu_threshold: trip-point@0 {
|
||||||
|
+ temperature = <60000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ hysteresis = <0>;
|
||||||
|
+ };
|
||||||
|
+ cpu_target: trip-point@1 {
|
||||||
|
+ temperature = <70000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ hysteresis = <0>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cooling-maps {
|
||||||
|
+ map0 {
|
||||||
|
+ trip = <&cpu_target>;
|
||||||
|
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||||
|
+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||||
|
+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||||
|
+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ gpu-thermal {
|
||||||
|
+ polling-delay-passive = <500>;
|
||||||
|
+ polling-delay = <1000>;
|
||||||
|
+ thermal-sensors = <&ths 0>;
|
||||||
|
+ sustainable-power = <1100>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ ve-thermal {
|
||||||
|
+ polling-delay-passive = <0>;
|
||||||
|
+ polling-delay = <0>;
|
||||||
|
+ thermal-sensors = <&ths 1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ ddr-thermal {
|
||||||
|
+ polling-delay-passive = <0>;
|
||||||
|
+ polling-delay = <0>;
|
||||||
|
+ thermal-sensors = <&ths 3>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Micha=C5=82=20Dzieko=C5=84ski?=
|
||||||
|
<michal.dziekonski+github@gmail.com>
|
||||||
|
Date: Wed, 3 May 2023 12:17:28 +0000
|
||||||
|
Subject: arm64: dts: allwinner: h616: Fix thermal zones (add missing trips)
|
||||||
|
|
||||||
|
Signed-off-by: Michal Dziekonski <michal.dziekonski+github@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 29 ++++++++++
|
||||||
|
1 file changed, 29 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
index 8628a9e3dfca..17b13d3193cc 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
@@ -877,6 +877,11 @@ cpu_target: trip-point@1 {
|
||||||
|
type = "passive";
|
||||||
|
hysteresis = <0>;
|
||||||
|
};
|
||||||
|
+ cpu_temp_critical: trip-point@2 {
|
||||||
|
+ temperature = <110000>;
|
||||||
|
+ type = "critical";
|
||||||
|
+ hysteresis = <0>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
cooling-maps {
|
||||||
|
@@ -895,18 +900,42 @@ gpu-thermal {
|
||||||
|
polling-delay = <1000>;
|
||||||
|
thermal-sensors = <&ths 0>;
|
||||||
|
sustainable-power = <1100>;
|
||||||
|
+
|
||||||
|
+ trips {
|
||||||
|
+ gpu_temp_critical: trip-point@0 {
|
||||||
|
+ temperature = <110000>;
|
||||||
|
+ type = "critical";
|
||||||
|
+ hysteresis = <0>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
ve-thermal {
|
||||||
|
polling-delay-passive = <0>;
|
||||||
|
polling-delay = <0>;
|
||||||
|
thermal-sensors = <&ths 1>;
|
||||||
|
+
|
||||||
|
+ trips {
|
||||||
|
+ ve_temp_critical: trip-point@0 {
|
||||||
|
+ temperature = <110000>;
|
||||||
|
+ type = "critical";
|
||||||
|
+ hysteresis = <0>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
ddr-thermal {
|
||||||
|
polling-delay-passive = <0>;
|
||||||
|
polling-delay = <0>;
|
||||||
|
thermal-sensors = <&ths 3>;
|
||||||
|
+
|
||||||
|
+ trips {
|
||||||
|
+ ddr_temp_critical: trip-point@0 {
|
||||||
|
+ temperature = <110000>;
|
||||||
|
+ type = "critical";
|
||||||
|
+ hysteresis = <0>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AGM1968 <AGM1968@users.noreply.github.com>
|
||||||
|
Date: Wed, 31 May 2023 08:12:00 +0000
|
||||||
|
Subject: LED-green_power_on-red_status_heartbeat
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
|
||||||
|
|
||||||
|
Signed-off-by: AGM1968 <AGM1968@users.noreply.github.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 7 ++++---
|
||||||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
|
||||||
|
index 0666d16ba7d0..19451a0c85ae 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
|
||||||
|
@@ -26,16 +26,17 @@ leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
led-0 {
|
||||||
|
- function = LED_FUNCTION_POWER;
|
||||||
|
+ function = LED_FUNCTION_STATUS;
|
||||||
|
color = <LED_COLOR_ID_RED>;
|
||||||
|
gpios = <&pio 2 12 GPIO_ACTIVE_HIGH>; /* PC12 */
|
||||||
|
- default-state = "on";
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
};
|
||||||
|
|
||||||
|
led-1 {
|
||||||
|
- function = LED_FUNCTION_STATUS;
|
||||||
|
+ function = LED_FUNCTION_POWER;
|
||||||
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
|
gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */
|
||||||
|
+ default-state = "on";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Micha=C5=82=20Dzieko=C5=84ski?=
|
||||||
|
<michal.dziekonski+github@gmail.com>
|
||||||
|
Date: Sun, 28 May 2023 00:26:43 +0000
|
||||||
|
Subject: arm64: dts: allwinner: h616 orangepi zero2: Enable expansion board
|
||||||
|
USB ports
|
||||||
|
|
||||||
|
Signed-off-by: Michal Dziekonski <michal.dziekonski+github@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts | 9 +++++++++
|
||||||
|
1 file changed, 9 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||||
|
index 28b5b1be932f..22434978bc49 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||||
|
@@ -22,6 +22,15 @@ &emac0 {
|
||||||
|
phy-supply = <®_dcdce>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+
|
||||||
|
+/* USB 2 & 3 are on headers used by expansion board */
|
||||||
|
+&ehci2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+&ehci3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&gpu {
|
||||||
|
mali-supply = <®_dcdcc>;
|
||||||
|
status = "okay";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,26 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ukhellfire <afaulkner420@gmail.com>
|
||||||
|
Date: Fri, 25 Mar 2022 07:10:57 +0000
|
||||||
|
Subject: arm64: dts/allwinner/sun50i-h6: Fix H6 emmc
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
index 60fef6a46d34..a6b32f7b786e 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
@@ -547,8 +547,7 @@ mmc1: mmc@4021000 {
|
||||||
|
};
|
||||||
|
|
||||||
|
mmc2: mmc@4022000 {
|
||||||
|
- compatible = "allwinner,sun50i-h6-emmc",
|
||||||
|
- "allwinner,sun50i-a64-emmc";
|
||||||
|
+ compatible = "allwinner,sun50i-h6-emmc";
|
||||||
|
reg = <0x04022000 0x1000>;
|
||||||
|
clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
|
||||||
|
clock-names = "ahb", "mmc";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
Date: Fri, 15 Oct 2021 21:07:46 +0200
|
||||||
|
Subject: arm64:dts: allwinner: sun50i-h616 Add GPU node
|
||||||
|
|
||||||
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 14 ++++++++++
|
||||||
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
index 44f8ae11ca16..26ef79c5d895 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
@@ -108,6 +108,20 @@ soc {
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges = <0x0 0x0 0x0 0x40000000>;
|
||||||
|
|
||||||
|
+ gpu: gpu@1800000 {
|
||||||
|
+ compatible = "allwinner,sun50i-h616-mali",
|
||||||
|
+ "arm,mali-bifrost";
|
||||||
|
+ reg = <0x1800000 0x40000>;
|
||||||
|
+ interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
+ <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
+ <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ interrupt-names = "job", "mmu", "gpu";
|
||||||
|
+ clocks = <&ccu CLK_GPU0>, <&ccu CLK_BUS_GPU>;
|
||||||
|
+ clock-names = "core", "bus";
|
||||||
|
+ resets = <&ccu RST_BUS_GPU>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
syscon: syscon@3000000 {
|
||||||
|
compatible = "allwinner,sun50i-h616-system-control";
|
||||||
|
reg = <0x03000000 0x1000>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
Date: Fri, 15 Oct 2021 21:14:55 +0200
|
||||||
|
Subject: arm64:dts:allwinner: sun50i-h616 Add VPU node
|
||||||
|
|
||||||
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 24 ++++++++++
|
||||||
|
1 file changed, 24 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
index 26ef79c5d895..944ff2747d27 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||||
|
@@ -122,6 +122,17 @@ gpu: gpu@1800000 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
+ video-codec@1c0e000 {
|
||||||
|
+ compatible = "allwinner,sun50i-h616-video-engine";
|
||||||
|
+ reg = <0x01c0e000 0x2000>;
|
||||||
|
+ clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
|
||||||
|
+ <&ccu CLK_MBUS_VE>;
|
||||||
|
+ clock-names = "ahb", "mod", "ram";
|
||||||
|
+ resets = <&ccu RST_BUS_VE>;
|
||||||
|
+ interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ allwinner,sram = <&ve_sram 1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
syscon: syscon@3000000 {
|
||||||
|
compatible = "allwinner,sun50i-h616-system-control";
|
||||||
|
reg = <0x03000000 0x1000>;
|
||||||
|
@@ -136,6 +147,19 @@ sram_c: sram@28000 {
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x00028000 0x30000>;
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ sram_c1: sram@1a00000 {
|
||||||
|
+ compatible = "mmio-sram";
|
||||||
|
+ reg = <0x01a00000 0x200000>;
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <1>;
|
||||||
|
+ ranges = <0 0x01a00000 0x200000>;
|
||||||
|
+
|
||||||
|
+ ve_sram: sram-section@0 {
|
||||||
|
+ compatible = "allwinner,sun50i-h616-sram-c1";
|
||||||
|
+ reg = <0x000000 0x200000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
ccu: clock@3001000 {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
From 8e36084386d07a07f755bda978875b1354162019 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gunjan Gupta <viraniac@gmail.com>
|
||||||
|
Date: Wed, 13 Dec 2023 19:15:45 +0000
|
||||||
|
Subject: [PATCH] arm64: dts: h616: add wifi support for orange pi zero 2 and
|
||||||
|
zero3
|
||||||
|
|
||||||
|
---
|
||||||
|
.../allwinner/sun50i-h616-orangepi-zero.dtsi | 38 +++++++++++++++++++
|
||||||
|
1 file changed, 38 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
|
||||||
|
index 19451a0c85ae..400966667d1e 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
|
||||||
|
@@ -59,6 +59,34 @@ reg_usb1_vbus: regulator-usb1-vbus {
|
||||||
|
gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ reg_vcc33_wifi: vcc33-wifi {
|
||||||
|
+ /* Always on 3.3V regulator for WiFi and BT */
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc33-wifi";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ vin-supply = <®_vcc5v>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ reg_vcc_wifi_io: vcc-wifi-io {
|
||||||
|
+ /* Always on 1.8V/300mA regulator for WiFi and BT IO */
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc-wifi-io";
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ vin-supply = <®_vcc33_wifi>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi-pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ clocks = <&rtc 1>;
|
||||||
|
+ clock-names = "osc32k-out";
|
||||||
|
+ reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */
|
||||||
|
+ post-power-on-delay-ms = <200>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
&ehci1 {
|
||||||
|
@@ -90,6 +118,16 @@ &mmc0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&mmc1 {
|
||||||
|
+ vmmc-supply = <®_vcc33_wifi>;
|
||||||
|
+ vqmmc-supply = <®_vcc_wifi_io>;
|
||||||
|
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ non-removable;
|
||||||
|
+ mmc-ddr-1_8v;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&ohci1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: root <guido.lehwalder@gmail.com>
|
||||||
|
Date: Tue, 26 Jan 2021 18:17:33 +0300
|
||||||
|
Subject: arm64:dts: nanopi-a64 set right phy-mode to rgmii-id
|
||||||
|
|
||||||
|
set right phy-mode for NPI A64 to rgmii-id for working
|
||||||
|
onboard-ethernet
|
||||||
|
|
||||||
|
Signed-off-by: root <guido.lehwalder@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
|
||||||
|
index 6239d2c435c8..2d65dad79e5b 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
|
||||||
|
@@ -80,7 +80,7 @@ &ehci1 {
|
||||||
|
&emac {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&rgmii_pins>;
|
||||||
|
- phy-mode = "rgmii";
|
||||||
|
+ phy-mode = "rgmii-id";
|
||||||
|
phy-handle = <&ext_rgmii_phy>;
|
||||||
|
phy-supply = <®_dcdc1>;
|
||||||
|
status = "okay";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,143 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Wed, 2 Feb 2022 20:27:02 +0300
|
||||||
|
Subject: arm64:dts:overlay: sun50i-a64-pine64-7inch-lcd
|
||||||
|
|
||||||
|
Added to orange-pi-5.9 2020-11-30
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/Makefile | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays | 5 +
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso | 87 ++++++++++
|
||||||
|
3 files changed, 93 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
index ae404a5258a9..8d5ae3e3beb8 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
@@ -2,6 +2,7 @@
|
||||||
|
dtb-$(CONFIG_ARCH_SUNXI) += \
|
||||||
|
sun50i-a64-i2c0.dtbo \
|
||||||
|
sun50i-a64-i2c1.dtbo \
|
||||||
|
+ sun50i-a64-pine64-7inch-lcd.dtbo \
|
||||||
|
sun50i-a64-pps-gpio.dtbo \
|
||||||
|
sun50i-a64-spi-add-cs1.dtbo \
|
||||||
|
sun50i-a64-spi-jedec-nor.dtbo \
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays
|
||||||
|
index cd9dbc686412..b684c2e3abb1 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays
|
||||||
|
@@ -20,6 +20,7 @@ on supported boards, so this controller is not supported in provided overlays
|
||||||
|
|
||||||
|
- i2c0
|
||||||
|
- i2c1
|
||||||
|
+- pine64-7inch-lcd
|
||||||
|
- pps-gpio
|
||||||
|
- spi-add-cs1
|
||||||
|
- spi-jedec-nor
|
||||||
|
@@ -44,6 +45,10 @@ Activates TWI/I2C bus 1
|
||||||
|
|
||||||
|
I2C1 pins (SCL, SDA): PH2, PH3
|
||||||
|
|
||||||
|
+### pine64-7inch-lcd
|
||||||
|
+
|
||||||
|
+Activates the Pine64 7" LCD on pine64/pine64so boards
|
||||||
|
+
|
||||||
|
### pps-gpio
|
||||||
|
|
||||||
|
Activates pulse-per-second GPIO client
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..34708103fe15
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso
|
||||||
|
@@ -0,0 +1,87 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+#include <dt-bindings/pwm/pwm.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-a64";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <®_ldo_io0>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vcc-ctp";
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&i2c0>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ gt911: touchscreen@5d {
|
||||||
|
+ compatible = "goodix,gt911";
|
||||||
|
+ reg = <0x5d>;
|
||||||
|
+
|
||||||
|
+ interrupt-parent = <&pio>;
|
||||||
|
+ interrupts = <7 4 IRQ_TYPE_EDGE_RISING>; /* PH4 */
|
||||||
|
+ reset-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
|
||||||
|
+ AVDD28-supply = <®_ldo_io0>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@2 {
|
||||||
|
+ target = <&r_pwm>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@3 {
|
||||||
|
+ target-path = "/";
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ backlight: backlight {
|
||||||
|
+ compatible = "pwm-backlight";
|
||||||
|
+ pwms = <&r_pwm 0 50000 PWM_POLARITY_INVERTED>;
|
||||||
|
+ brightness-levels = <1 2 4 8 16 32 64 128 512>;
|
||||||
|
+ default-brightness-level = <8>;
|
||||||
|
+ enable-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@4 {
|
||||||
|
+ target = <&dsi>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ vcc-dsi-supply = <®_dldo1>;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ panel@0 {
|
||||||
|
+ compatible = "feiyang,fy07024di26a30d";
|
||||||
|
+ reg = <0>;
|
||||||
|
+ avdd-supply = <®_dc1sw>;
|
||||||
|
+ dvdd-supply = <®_dldo2>;
|
||||||
|
+ reset-gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */
|
||||||
|
+ backlight = <&backlight>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@5 {
|
||||||
|
+ target = <&dphy>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,216 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Wed, 2 Feb 2022 21:01:10 +0300
|
||||||
|
Subject: arm64:dts:overlay sun50i-h5 add gpio regulator overclock
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/Makefile | 4 +
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso | 31 +++++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso | 31 +++++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso | 61 ++++++++++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso | 38 ++++++
|
||||||
|
5 files changed, 165 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
index 8d5ae3e3beb8..9e3def41669e 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
@@ -14,6 +14,10 @@ dtb-$(CONFIG_ARCH_SUNXI) += \
|
||||||
|
sun50i-a64-w1-gpio.dtbo \
|
||||||
|
sun50i-h5-analog-codec.dtbo \
|
||||||
|
sun50i-h5-cir.dtbo \
|
||||||
|
+ sun50i-h5-cpu-clock-1.0GHz-1.1v.dtbo \
|
||||||
|
+ sun50i-h5-cpu-clock-1.2GHz-1.3v.dtbo \
|
||||||
|
+ sun50i-h5-cpu-clock-1.3GHz-1.3v.dtbo \
|
||||||
|
+ sun50i-h5-gpio-regulator-1.3v.dtbo \
|
||||||
|
sun50i-h5-i2c0.dtbo \
|
||||||
|
sun50i-h5-i2c1.dtbo \
|
||||||
|
sun50i-h5-i2c2.dtbo \
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..674ec1dcbfe4
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+// DT overlay for CPU frequency operating points to up to 1.0GHz at a maximum CPU voltage of 1.1v
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&cpu_opp_table>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ compatible = "operating-points-v2";
|
||||||
|
+ opp-shared;
|
||||||
|
+
|
||||||
|
+ // in order to match the H5 DT cooling-maps, update the existing OP table in-place
|
||||||
|
+ // with the new voltages
|
||||||
|
+
|
||||||
|
+ opp-960000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <960000000>;
|
||||||
|
+ opp-microvolt = <1100000 1100000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1008000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1008000000>;
|
||||||
|
+ opp-microvolt = <1100000 1100000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..4fb5c81d31d5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+// DT overlay for CPU frequency operating points to up to 1.2GHz at a maximum CPU voltage of 1.3v
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&cpu_opp_table>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ compatible = "operating-points-v2";
|
||||||
|
+ opp-shared;
|
||||||
|
+
|
||||||
|
+ // in order to match the H5 DT cooling-maps, update the existing OP table in-place
|
||||||
|
+ // with the new voltages
|
||||||
|
+
|
||||||
|
+ opp-1104000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1104000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1200000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..9c633973df8b
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso
|
||||||
|
@@ -0,0 +1,61 @@
|
||||||
|
+// DT overlay for CPU frequency operating points to 1.3GHz at a maximum CPU voltage of 1.3v
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&cpu_opp_table>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ compatible = "operating-points-v2";
|
||||||
|
+ opp-shared;
|
||||||
|
+
|
||||||
|
+ // in order to match the H5 DT cooling-maps, update the existing OP table in-place
|
||||||
|
+ // with the new voltages
|
||||||
|
+
|
||||||
|
+ opp-1056000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1056000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1104000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1104000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1152000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1152000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1200000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1224000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1224000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1248000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1248000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ opp-1296000000 {
|
||||||
|
+ opp-hz = /bits/ 64 <1296000000>;
|
||||||
|
+ opp-microvolt = <1300000 1300000 1300000>;
|
||||||
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..8d2755c3d76f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso
|
||||||
|
@@ -0,0 +1,38 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h5";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target-path = "/";
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ reg_vdd_cpux: gpio-regulator {
|
||||||
|
+ compatible = "regulator-gpio";
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ regulator-type = "voltage";
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1100000>;
|
||||||
|
+ regulator-max-microvolt = <1300000>;
|
||||||
|
+ regulator-ramp-delay = <50>; /* 4ms */
|
||||||
|
+
|
||||||
|
+ gpios = <&r_pio 0 6 0>; /* PL6 */
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpios-states = <0x1>;
|
||||||
|
+ states = <1100000 0x0
|
||||||
|
+ 1300000 0x1>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&cpu0>;
|
||||||
|
+
|
||||||
|
+ __overlay__ {
|
||||||
|
+ cpu-supply = <®_vdd_cpux>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,487 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Your Name <you@example.com>
|
||||||
|
Date: Tue, 30 May 2023 12:04:55 +0800
|
||||||
|
Subject: cb1-overlay
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/Makefile | 15 +-
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd | 110 ++++++++++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso | 13 ++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso | 27 +++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso | 18 ++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso | 42 ++++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso | 28 +++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso | 28 +++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso | 28 +++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso | 28 +++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso | 33 +++
|
||||||
|
arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso | 13 ++
|
||||||
|
12 files changed, 381 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
index 40d67ebb5932..fb6b30d5753e 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile
|
||||||
|
@@ -47,12 +47,23 @@ dtb-$(CONFIG_ARCH_SUNXI) += \
|
||||||
|
sun50i-h6-uart1.dtbo \
|
||||||
|
sun50i-h6-uart2.dtbo \
|
||||||
|
sun50i-h6-uart3.dtbo \
|
||||||
|
- sun50i-h6-w1-gpio.dtbo
|
||||||
|
+ sun50i-h6-w1-gpio.dtbo \
|
||||||
|
+ sun50i-h616-spi-spidev.dtbo \
|
||||||
|
+ sun50i-h616-spidev0_0.dtbo \
|
||||||
|
+ sun50i-h616-spidev1_0.dtbo \
|
||||||
|
+ sun50i-h616-spidev1_1.dtbo \
|
||||||
|
+ sun50i-h616-spidev1_2.dtbo \
|
||||||
|
+ sun50i-h616-ir.dtbo \
|
||||||
|
+ sun50i-h616-tft35_spi.dtbo \
|
||||||
|
+ sun50i-h616-mcp2515.dtbo \
|
||||||
|
+ sun50i-h616-ws2812.dtbo \
|
||||||
|
+ sun50i-h616-light.dtbo
|
||||||
|
|
||||||
|
scr-$(CONFIG_ARCH_SUNXI) += \
|
||||||
|
sun50i-a64-fixup.scr \
|
||||||
|
sun50i-h5-fixup.scr \
|
||||||
|
- sun50i-h6-fixup.scr
|
||||||
|
+ sun50i-h6-fixup.scr \
|
||||||
|
+ sun50i-h616-fixup.scr
|
||||||
|
|
||||||
|
dtbotxt-$(CONFIG_ARCH_SUNXI) += \
|
||||||
|
README.sun50i-a64-overlays \
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..2bde77cb082d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd
|
||||||
|
@@ -0,0 +1,110 @@
|
||||||
|
+# overlays fixup script
|
||||||
|
+# implements (or rather substitutes) overlay arguments functionality
|
||||||
|
+# using u-boot scripting, environment variables and "fdt" command
|
||||||
|
+
|
||||||
|
+# setexpr test_var ${tmp_bank} - A
|
||||||
|
+# works only for hex numbers (A-F)
|
||||||
|
+
|
||||||
|
+setenv decompose_pin 'setexpr tmp_bank sub "P(C|G|H|I)\\d+" "\\1";
|
||||||
|
+setexpr tmp_pin sub "P\\S(\\d+)" "\\1";
|
||||||
|
+test "${tmp_bank}" = "C" && setenv tmp_bank 2;
|
||||||
|
+test "${tmp_bank}" = "G" && setenv tmp_bank 6'
|
||||||
|
+test "${tmp_bank}" = "H" && setenv tmp_bank 7;
|
||||||
|
+test "${tmp_bank}" = "I" && setenv tmp_bank 8;
|
||||||
|
+
|
||||||
|
+if test -n "${param_spinor_spi_bus}"; then
|
||||||
|
+ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@5010000"
|
||||||
|
+ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@5011000"
|
||||||
|
+ fdt set /soc/${tmp_spi_path} status "okay"
|
||||||
|
+ fdt set /soc/${tmp_spi_path}/spiflash@0 status "okay"
|
||||||
|
+ if test -n "${param_spinor_max_freq}"; then
|
||||||
|
+ fdt set /soc/${tmp_spi_path}/spiflash@0 spi-max-frequency "<${param_spinor_max_freq}>"
|
||||||
|
+ fi
|
||||||
|
+ if test "${param_spinor_spi_cs}" = "1"; then
|
||||||
|
+ fdt set /soc/${tmp_spi_path}/spiflash@0 reg "<1>"
|
||||||
|
+ fi
|
||||||
|
+ env delete tmp_spi_path
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+if test -n "${param_spidev_spi_bus}"; then
|
||||||
|
+ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@5010000"
|
||||||
|
+ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@5011000"
|
||||||
|
+ fdt set /soc/${tmp_spi_path} status "okay"
|
||||||
|
+ fdt set /soc/${tmp_spi_path}/spidev status "okay"
|
||||||
|
+ if test -n "${param_spidev_max_freq}"; then
|
||||||
|
+ fdt set /soc/${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>"
|
||||||
|
+ fi
|
||||||
|
+ if test "${param_spidev_spi_cs}" = "1"; then
|
||||||
|
+ fdt set /soc/${tmp_spi_path}/spidev reg "<1>"
|
||||||
|
+ fi
|
||||||
|
+ env delete tmp_spi_path
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+if test -n "${param_pps_pin}"; then
|
||||||
|
+ setenv tmp_bank "${param_pps_pin}"
|
||||||
|
+ setenv tmp_pin "${param_pps_pin}"
|
||||||
|
+ run decompose_pin
|
||||||
|
+ fdt set /soc/pinctrl@300b000/pps_pins pins "${param_pps_pin}"
|
||||||
|
+ fdt get value tmp_phandle /soc/pinctrl@300b000 phandle
|
||||||
|
+ fdt set /pps@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>"
|
||||||
|
+ env delete tmp_pin tmp_bank tmp_phandle
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+if test "${param_pps_falling_edge}" = "1"; then
|
||||||
|
+ fdt set /pps@0 assert-falling-edge
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+for f in ${overlays}; do
|
||||||
|
+ if test "${f}" = "pwm34"; then
|
||||||
|
+ setenv bootargs_new ""
|
||||||
|
+ for arg in ${bootargs}; do
|
||||||
|
+ if test "${arg}" = "console=ttyS0,115200"; then
|
||||||
|
+ echo "Warning: Disabling ttyS0 console due to enabled PWM3 and PWM4 overlay"
|
||||||
|
+ else
|
||||||
|
+ setenv bootargs_new "${bootargs_new} ${arg}"
|
||||||
|
+ fi
|
||||||
|
+ done
|
||||||
|
+ setenv bootargs "${bootargs_new}"
|
||||||
|
+ fi
|
||||||
|
+done
|
||||||
|
+
|
||||||
|
+if test -n "${param_w1_pin}"; then
|
||||||
|
+ setenv tmp_bank "${param_w1_pin}"
|
||||||
|
+ setenv tmp_pin "${param_w1_pin}"
|
||||||
|
+ run decompose_pin
|
||||||
|
+ fdt set /soc/pinctrl@300b000/w1_pins pins "${param_w1_pin}"
|
||||||
|
+ fdt get value tmp_phandle /soc/pinctrl@300b000 phandle
|
||||||
|
+ fdt set /onewire@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>"
|
||||||
|
+ env delete tmp_pin tmp_bank tmp_phandle
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+if test "${param_w1_pin_int_pullup}" = "1"; then
|
||||||
|
+ fdt set /soc/pinctrl@300b000/w1_pins bias-pull-up
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+if test "${param_uart1_rtscts}" = "1"; then
|
||||||
|
+ fdt get value tmp_phandle1 /soc/pinctrl@300b000/uart1-pins phandle
|
||||||
|
+ fdt get value tmp_phandle2 /soc/pinctrl@300b000/uart1-rts-cts-pins phandle
|
||||||
|
+ fdt set /soc/serial@5000400 pinctrl-names "default" "default"
|
||||||
|
+ fdt set /soc/serial@5000400 pinctrl-0 "<${tmp_phandle1}>"
|
||||||
|
+ fdt set /soc/serial@5000400 pinctrl-1 "<${tmp_phandle2}>"
|
||||||
|
+ env delete tmp_phandle1 tmp_phandle2
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+if test "${param_uart2_rtscts}" = "1"; then
|
||||||
|
+ fdt get value tmp_phandle1 /soc/pinctrl@300b000/uart2-pins phandle
|
||||||
|
+ fdt get value tmp_phandle2 /soc/pinctrl@300b000/uart2-rts-cts-pins phandle
|
||||||
|
+ fdt set /soc/serial@5000800 pinctrl-names "default" "default"
|
||||||
|
+ fdt set /soc/serial@5000800 pinctrl-0 "<${tmp_phandle1}>"
|
||||||
|
+ fdt set /soc/serial@5000800 pinctrl-1 "<${tmp_phandle2}>"
|
||||||
|
+ env delete tmp_phandle1 tmp_phandle2
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+if test "${param_uart3_rtscts}" = "1"; then
|
||||||
|
+ fdt get value tmp_phandle1 /soc/pinctrl@300b000/uart3-pins phandle
|
||||||
|
+ fdt get value tmp_phandle2 /soc/pinctrl@300b000/uart3-rts-cts-pins phandle
|
||||||
|
+ fdt set /soc/serial@5000c00 pinctrl-names "default" "default"
|
||||||
|
+ fdt set /soc/serial@5000c00 pinctrl-0 "<${tmp_phandle1}>"
|
||||||
|
+ fdt set /soc/serial@5000c00 pinctrl-1 "<${tmp_phandle2}>"
|
||||||
|
+ env delete tmp_phandle1 tmp_phandle2
|
||||||
|
+fi
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..825433add1c3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h616";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&ir>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..5010ea6a57b5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso
|
||||||
|
@@ -0,0 +1,27 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h616";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&i2c_gpio>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&uart0>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@2 {
|
||||||
|
+ target = <&pwm>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..64841956e568
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso
|
||||||
|
@@ -0,0 +1,18 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&spi1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&can>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..e0ceed71965f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso
|
||||||
|
@@ -0,0 +1,42 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h616";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target-path = "/aliases";
|
||||||
|
+ __overlay__ {
|
||||||
|
+ spi0 = "/soc/spi@5010000";
|
||||||
|
+ spi1 = "/soc/spi@5011000";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&spi0>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ spidev@0 {
|
||||||
|
+ compatible = "rohm,dh2228fv";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ reg = <0>;
|
||||||
|
+ spi-max-frequency = <1000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@2 {
|
||||||
|
+ target = <&spi1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ spidev@0 {
|
||||||
|
+ compatible = "rohm,dh2228fv";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ reg = <0>;
|
||||||
|
+ spi-max-frequency = <1000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..a5a89707c3dd
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso
|
||||||
|
@@ -0,0 +1,28 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h616";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target-path = "/aliases";
|
||||||
|
+ __overlay__ {
|
||||||
|
+ spi0 = "/soc/spi@5010000";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&spi0>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ spidev0_0: spidev@0 {
|
||||||
|
+ compatible = "rohm,dh2228fv";
|
||||||
|
+ status = "okay";
|
||||||
|
+ reg = <0>;
|
||||||
|
+ spi-max-frequency = <1000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..20a0486442cc
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso
|
||||||
|
@@ -0,0 +1,28 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h616";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target-path = "/aliases";
|
||||||
|
+ __overlay__ {
|
||||||
|
+ spi1 = "/soc/spi@5011000";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&spi1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ spidev1_0: spidev@0 {
|
||||||
|
+ compatible = "rohm,dh2228fv";
|
||||||
|
+ status = "okay";
|
||||||
|
+ reg = <0>;
|
||||||
|
+ spi-max-frequency = <1000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..a9ae45e84063
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso
|
||||||
|
@@ -0,0 +1,28 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h616";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target-path = "/aliases";
|
||||||
|
+ __overlay__ {
|
||||||
|
+ spi1 = "/soc/spi@5011000";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&spi1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ spidev1_1: spidev@1 {
|
||||||
|
+ compatible = "rohm,dh2228fv";
|
||||||
|
+ status = "okay";
|
||||||
|
+ reg = <1>;
|
||||||
|
+ spi-max-frequency = <1000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..efe5a8949b3a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso
|
||||||
|
@@ -0,0 +1,28 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h616";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target-path = "/aliases";
|
||||||
|
+ __overlay__ {
|
||||||
|
+ spi1 = "/soc/spi@5011000";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&spi1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ spidev1_2: spidev@2 {
|
||||||
|
+ compatible = "rohm,dh2228fv";
|
||||||
|
+ status = "okay";
|
||||||
|
+ reg = <2>;
|
||||||
|
+ spi-max-frequency = <1000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..e96582bcbed5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso
|
||||||
|
@@ -0,0 +1,33 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&i2c_gpio>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@1 {
|
||||||
|
+ target = <&spi1>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@2 {
|
||||||
|
+ target = <&tft_35>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ spi-max-frequency = <12500000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fragment@3 {
|
||||||
|
+ target = <&tft_tp>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..4e43907cb0ce
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+/dts-v1/;
|
||||||
|
+/plugin/;
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "allwinner,sun50i-h616";
|
||||||
|
+
|
||||||
|
+ fragment@0 {
|
||||||
|
+ target = <&ws2812>;
|
||||||
|
+ __overlay__ {
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Fri, 28 Jan 2022 15:52:48 +0300
|
||||||
|
Subject: arm64:dts: sun50i-a64 force mmc0 bus-width
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
|
||||||
|
index 2bf345c04514..8d724dae11a3 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
|
||||||
|
@@ -569,6 +569,7 @@ mmc0: mmc@1c0f000 {
|
||||||
|
interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
max-frequency = <150000000>;
|
||||||
|
status = "disabled";
|
||||||
|
+ bus-width = <0x4>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: hehopmajieh <hehopmajieh@debian.bg>
|
||||||
|
Date: Wed, 20 May 2020 09:25:56 +0300
|
||||||
|
Subject: arm64:dts:sun50i-a64-olinuxino-1Ge16GW Disable clock phase and hs
|
||||||
|
just for test
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts
|
||||||
|
index 100a7ce499a6..41c7a4ed4287 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts
|
||||||
|
@@ -15,8 +15,8 @@ / {
|
||||||
|
|
||||||
|
&mmc2 {
|
||||||
|
vqmmc-supply = <®_eldo1>;
|
||||||
|
- mmc-hs200-1_8v;
|
||||||
|
- allwinner,drive-data-phase = <180>;
|
||||||
|
+/* mmc-hs200-1_8v;
|
||||||
|
+ allwinner,drive-data-phase = <180>;*/
|
||||||
|
};
|
||||||
|
|
||||||
|
&pio {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Saraev <stefan@saraev.ca>
|
||||||
|
Date: Fri, 20 Mar 2020 17:31:49 +0200
|
||||||
|
Subject: arm64:dts: sun50i-a64-olinuxino-1Ge16GW: enable bluetooth
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts | 21 ++++++++++
|
||||||
|
1 file changed, 21 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts
|
||||||
|
index a508d77d2c09..100a7ce499a6 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts
|
||||||
|
@@ -18,3 +18,24 @@ &mmc2 {
|
||||||
|
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";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,598 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mitko Gamishev <hehopmajieh@debian.bg>
|
||||||
|
Date: Wed, 5 Feb 2020 15:03:08 +0200
|
||||||
|
Subject: arm64:dts:sun50i-a64-olinuxino add boards
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/Makefile | 5 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1G.dts | 362 ++++++++++
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts | 20 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge4GW.dts | 97 +++
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Gs16M.dts | 31 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-2Ge8G.dts | 25 +
|
||||||
|
6 files changed, 540 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
|
||||||
|
index 54424ab784a5..4d4d2e5c01f2 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 000000000000..54af704d2c68
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1G.dts
|
||||||
|
@@ -0,0 +1,362 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2019 OLIMEX Ltd.
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+
|
||||||
|
+#include "sun50i-a64.dtsi"
|
||||||
|
+
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "Olimex A64-Olinuxino-1G";
|
||||||
|
+ compatible = "olimex,a64-olinuxino-1g", "allwinner,sun50i-a64";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ ethernet0 = &emac;
|
||||||
|
+ serial0 = &uart0;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ 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 = <GIC_SPI 32 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", "AIF1 Slot 0 Left",
|
||||||
|
+ "Right DAC", "AIF1 Slot 0 Right",
|
||||||
|
+ "Headphone Jack", "HP",
|
||||||
|
+ "AIF1 Slot 0 Left ADC", "Left ADC",
|
||||||
|
+ "AIF1 Slot 0 Right ADC", "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 */
|
||||||
|
+&uart3 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart3_pins>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&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 000000000000..a508d77d2c09
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts
|
||||||
|
@@ -0,0 +1,20 @@
|
||||||
|
+// 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>;
|
||||||
|
+};
|
||||||
|
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 000000000000..c87ecc6e1d8f
|
||||||
|
--- /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 000000000000..5b85f4d2b05f
|
||||||
|
--- /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 000000000000..3583c37d3930
|
||||||
|
--- /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";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Saraev <stefan@saraev.ca>
|
||||||
|
Date: Fri, 20 Mar 2020 13:53:44 +0200
|
||||||
|
Subject: arm64:dts: sun50i-a64-olinuxino-emmc: enable bluetooth
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-emmc.dts | 17 ++++++++++
|
||||||
|
1 file changed, 17 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-emmc.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-emmc.dts
|
||||||
|
index efb20846de49..963b8b2075e8 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-emmc.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-emmc.dts
|
||||||
|
@@ -22,4 +22,21 @@ &mmc2 {
|
||||||
|
|
||||||
|
&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";
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Fri, 28 Jan 2022 15:48:25 +0300
|
||||||
|
Subject: arm64:dts: sun50i-a64-orangepi-win add aliase ethernet1
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
|
||||||
|
index 306ce4acf967..fff7fe6dd4ad 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
|
||||||
|
@@ -15,6 +15,7 @@ / {
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
ethernet0 = &emac;
|
||||||
|
+ ethernet1 = &brcmf;
|
||||||
|
serial0 = &uart0;
|
||||||
|
serial1 = &uart1;
|
||||||
|
serial2 = &uart2;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Tue, 25 Jan 2022 19:10:06 +0300
|
||||||
|
Subject: arm64:dts: sun50i-a64-pine64 add spi0
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 29 ++++++++++
|
||||||
|
1 file changed, 29 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||||
|
index cba8ae87529f..fc0f7975c731 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||||
|
@@ -350,3 +350,32 @@ &usb_otg {
|
||||||
|
&usbphy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+&spi0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+ spi-flash@0 {
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ compatible = "jedec,spi-nor";
|
||||||
|
+ reg = <0>; /* Chip select 0 */
|
||||||
|
+ spi-max-frequency = <10000000>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+ partitions {
|
||||||
|
+ compatible = "fixed-partitions";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <1>;
|
||||||
|
+ partition@0 {
|
||||||
|
+ label = "uboot";
|
||||||
|
+ reg = <0x0 0x100000>;
|
||||||
|
+ };
|
||||||
|
+ partition@100000 {
|
||||||
|
+ label = "env";
|
||||||
|
+ reg = <0x100000 0x100000>;
|
||||||
|
+ };
|
||||||
|
+ partition@200000 {
|
||||||
|
+ label = "data";
|
||||||
|
+ reg = <0x200000 0x200000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||||
|
Date: Wed, 31 Oct 2018 20:45:16 -0700
|
||||||
|
Subject: arm64:dts: sun50i-a64-pine64 enable Bluetooth
|
||||||
|
|
||||||
|
Pine64 has optional RTL8723BS WiFi + BT module, BT is connected to UART1
|
||||||
|
and uses PL4 as BT reset, PL5 as device wake GPIO, PL6 as host wake GPIO
|
||||||
|
the I2C controlling signals are connected to R_I2C bus.
|
||||||
|
|
||||||
|
Enable it in the device tree.
|
||||||
|
|
||||||
|
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 10 +++++++++-
|
||||||
|
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||||
|
index a08c97f231ac..cba8ae87529f 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||||
|
@@ -310,7 +310,15 @@ &uart0 {
|
||||||
|
&uart1 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
|
||||||
|
- status = "disabled";
|
||||||
|
+ 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 = "pine64";
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
/* On Pi-2 connector */
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Icenowy Zheng <icenowy@aosc.io>
|
||||||
|
Date: Thu, 9 Feb 2017 00:18:56 +0800
|
||||||
|
Subject: arm64:dts: sun50i-a64-pine64 enable wifi mmc1
|
||||||
|
|
||||||
|
The Wi-Fi modules of Pine64 is powered via DLDO4 and ELDO1 (the latter
|
||||||
|
one provides I/O voltage).
|
||||||
|
|
||||||
|
Add device node for it.
|
||||||
|
|
||||||
|
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 16 ++++++++++
|
||||||
|
1 file changed, 16 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||||
|
index 17886709b6b4..a08c97f231ac 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
||||||
|
@@ -35,6 +35,11 @@ hdmi_con_in: endpoint {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
&codec {
|
||||||
|
@@ -128,6 +133,17 @@ &mmc0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&mmc1 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc1_pins>;
|
||||||
|
+ vmmc-supply = <®_dldo4>;
|
||||||
|
+ vqmmc-supply = <®_eldo1>;
|
||||||
|
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
+ non-removable;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&ohci0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AGM1968 <AGM1968@users.noreply.github.com>
|
||||||
|
Date: Mon, 26 Jun 2023 14:29:56 +0000
|
||||||
|
Subject: Temp_fix mailbox
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
|
||||||
|
|
||||||
|
Signed-off-by: AGM1968 <AGM1968@users.noreply.github.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi | 7 ++++---
|
||||||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
|
||||||
|
index 67c4ecff7150..33d83ec887b1 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
|
||||||
|
@@ -42,7 +42,7 @@ bat: battery {
|
||||||
|
resistance-temp-table = <20 150>;
|
||||||
|
ocv-capacity-celsius = <20>;
|
||||||
|
ocv-capacity-table-0 =
|
||||||
|
- <4334000 100>,
|
||||||
|
+ <4334000 100>,
|
||||||
|
<4319700 99>,
|
||||||
|
<4304300 98>,
|
||||||
|
<4292200 97>,
|
||||||
|
@@ -144,7 +144,7 @@ bat: battery {
|
||||||
|
<3393500 1>,
|
||||||
|
<3256000 0>;
|
||||||
|
x-powers,ocv-capacity-table =
|
||||||
|
- <0xc0 0>,
|
||||||
|
+ <0xc0 0>,
|
||||||
|
<0xc1 1>,
|
||||||
|
<0xc2 1>,
|
||||||
|
<0xc3 2>,
|
||||||
|
@@ -191,7 +191,7 @@ ppkb_battery: keyboard-battery {
|
||||||
|
factory-internal-resistance-micro-ohms = <120000>;
|
||||||
|
ocv-capacity-celsius = <20>;
|
||||||
|
ocv-capacity-table-0 =
|
||||||
|
- <4147328 100>,
|
||||||
|
+ <4147328 100>,
|
||||||
|
<4132636 99>,
|
||||||
|
<4121720 98>,
|
||||||
|
<4110905 97>,
|
||||||
|
@@ -749,6 +749,7 @@ &mmc1 {
|
||||||
|
non-removable;
|
||||||
|
post-power-on-delay-ms = <1>; /* wifi power is always on */
|
||||||
|
status = "okay";
|
||||||
|
+ keep-power-in-suspend;
|
||||||
|
|
||||||
|
rtl8723cs: wifi@1 {
|
||||||
|
reg = <1>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||||
|
Date: Sun, 3 Dec 2017 11:43:08 -0800
|
||||||
|
Subject: arm64:dts: sun50i-a64-sopine-baseboard Add i2s2 mmc1
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts | 14 ++++++++++
|
||||||
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
|
||||||
|
index 970d528378db..ee4fd195e6a4 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
|
||||||
|
@@ -100,6 +100,10 @@ &i2s2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&i2s2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&mdio {
|
||||||
|
ext_rgmii_phy: ethernet-phy@1 {
|
||||||
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
@@ -107,6 +111,16 @@ ext_rgmii_phy: ethernet-phy@1 {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&mmc1 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc1_pins>;
|
||||||
|
+ vmmc-supply = <®_dldo4>;
|
||||||
|
+ vqmmc-supply = <®_eldo1>;
|
||||||
|
+ non-removable;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&mmc2 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&mmc2_pins>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||||
|
Date: Wed, 31 Oct 2018 20:50:09 -0700
|
||||||
|
Subject: arm64:dts: sun50i-a64-sopine-baseboard enable Bluetooth
|
||||||
|
|
||||||
|
SoPine has optional RTL8723BS WiFi + BT module, BT is connected to UART1
|
||||||
|
and uses PL4 as BT reset, PL5 as device wake GPIO, PL6 as host wake GPIO
|
||||||
|
the I2C controlling signals are connected to R_I2C bus.
|
||||||
|
|
||||||
|
Enable it in the device tree.
|
||||||
|
|
||||||
|
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts | 14 ++++++++++
|
||||||
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
|
||||||
|
index ee4fd195e6a4..56714cc3f507 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
|
||||||
|
@@ -197,6 +197,20 @@ &uart0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&uart1 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_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 = "pine64";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
/* On Pi-2 connector */
|
||||||
|
&uart2 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Saraev <stefan@saraev.ca>
|
||||||
|
Date: Mon, 6 Apr 2020 15:26:10 +0300
|
||||||
|
Subject: arm64:dts:sun50i-a64.dtsi adjust thermal trip points
|
||||||
|
|
||||||
|
default values for alert1/crit are way too high.
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
|
||||||
|
index 8d724dae11a3..c566075f9b31 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
|
||||||
|
@@ -245,21 +245,21 @@ map1 {
|
||||||
|
trips {
|
||||||
|
cpu_alert0: cpu_alert0 {
|
||||||
|
/* milliCelsius */
|
||||||
|
- temperature = <75000>;
|
||||||
|
+ temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "passive";
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu_alert1: cpu_alert1 {
|
||||||
|
/* milliCelsius */
|
||||||
|
- temperature = <90000>;
|
||||||
|
+ temperature = <80000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "hot";
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu_crit: cpu_crit {
|
||||||
|
/* milliCelsius */
|
||||||
|
- temperature = <110000>;
|
||||||
|
+ temperature = <90000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Wed, 2 Feb 2022 20:40:02 +0300
|
||||||
|
Subject: arm64:dts:sun50i-h5 add cpu opp refs
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-bananapi-m2-plus.dts | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts | 3 ++-
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts | 1 +
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts | 1 +
|
||||||
|
8 files changed, 9 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-bananapi-m2-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-bananapi-m2-plus.dts
|
||||||
|
index cfb943e9ae85..a54bacaddbe0 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-bananapi-m2-plus.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-bananapi-m2-plus.dts
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
#include <arm/allwinner/sunxi-bananapi-m2-plus.dtsi>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts
|
||||||
|
index b7045a9efab5..4980076da872 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts
|
||||||
|
@@ -42,6 +42,7 @@
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
@@ -393,4 +394,4 @@ &usbphy {
|
||||||
|
&i2s0 {
|
||||||
|
sound-dai = <&pcm5102a>;
|
||||||
|
status = "disabled";
|
||||||
|
-};
|
||||||
|
\ No newline at end of file
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts
|
||||||
|
index d051382cc800..2c742e0e8af3 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts
|
||||||
|
@@ -43,6 +43,7 @@
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts
|
||||||
|
index 57283cc16ad9..8d1958cd5dfa 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts
|
||||||
|
@@ -43,6 +43,7 @@
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts
|
||||||
|
index 4c3921ac236c..49e28ed6d2bb 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts
|
||||||
|
@@ -4,6 +4,7 @@
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts
|
||||||
|
index 06ffbbd29a93..be48938ee030 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts
|
||||||
|
@@ -42,6 +42,7 @@
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
|
||||||
|
index 39331229c315..ba597c9d3bef 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
index 375572d2f9b5..8b92d5e77220 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
@@ -5,6 +5,7 @@
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Wed, 2 Feb 2022 21:12:46 +0300
|
||||||
|
Subject: arm64:dts:sun50i-h5 add termal zones
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 66 ++++++++--
|
||||||
|
1 file changed, 54 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
|
||||||
|
index 080c3d10fdfa..c63e0871658e 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
|
||||||
|
@@ -207,31 +207,73 @@ ths: thermal-sensor@1c25000 {
|
||||||
|
|
||||||
|
thermal-zones {
|
||||||
|
cpu_thermal: cpu-thermal {
|
||||||
|
- polling-delay-passive = <0>;
|
||||||
|
- polling-delay = <0>;
|
||||||
|
+ /* milliseconds */
|
||||||
|
+ polling-delay-passive = <250>;
|
||||||
|
+ polling-delay = <1000>;
|
||||||
|
thermal-sensors = <&ths 0>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
- cpu_hot_trip: cpu-hot {
|
||||||
|
+ cpu_warm: cpu_warm {
|
||||||
|
+ temperature = <75000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_hot_pre: cpu_hot_pre {
|
||||||
|
temperature = <80000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "passive";
|
||||||
|
};
|
||||||
|
|
||||||
|
- cpu_very_hot_trip: cpu-very-hot {
|
||||||
|
- temperature = <100000>;
|
||||||
|
- hysteresis = <0>;
|
||||||
|
+ cpu_hot: cpu_hot {
|
||||||
|
+ temperature = <85000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_very_hot_pre: cpu_very_hot_pre {
|
||||||
|
+ temperature = <90000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_very_hot: cpu_very_hot {
|
||||||
|
+ temperature = <95000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
+ type = "passive";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_crit: cpu_crit {
|
||||||
|
+ temperature = <105000>;
|
||||||
|
+ hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cooling-maps {
|
||||||
|
- cpu-hot-limit {
|
||||||
|
- trip = <&cpu_hot_trip>;
|
||||||
|
- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||||
|
- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||||
|
- <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||||
|
- <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
||||||
|
+ cpu_warm_limit_cpu {
|
||||||
|
+ trip = <&cpu_warm>;
|
||||||
|
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT 2>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_hot_pre_limit_cpu {
|
||||||
|
+ trip = <&cpu_hot_pre>;
|
||||||
|
+ cooling-device = <&cpu0 2 3>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_hot_limit_cpu {
|
||||||
|
+ trip = <&cpu_hot>;
|
||||||
|
+ cooling-device = <&cpu0 3 4>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_very_hot_pre_limit_cpu {
|
||||||
|
+ trip = <&cpu_very_hot_pre>;
|
||||||
|
+ cooling-device = <&cpu0 5 6>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cpu_very_hot_limit_cpu {
|
||||||
|
+ trip = <&cpu_very_hot>;
|
||||||
|
+ cooling-device = <&cpu0 7 THERMAL_NO_LIMIT>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gunjan Gupta <viraniac@gmail.com>
|
||||||
|
Date: Sat, 15 Jul 2023 17:06:17 +0000
|
||||||
|
Subject: arm64: dts: sun50i: h5: enable power button for orangepi prime
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
index f430acd8558f..35e09098570f 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
@@ -63,8 +63,9 @@ gpio-keys {
|
||||||
|
|
||||||
|
key-sw4 {
|
||||||
|
label = "sw4";
|
||||||
|
- linux,code = <BTN_0>;
|
||||||
|
+ linux,code = <KEY_POWER>;
|
||||||
|
gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
|
||||||
|
+ wakeup-source;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 19:24:24 +0300
|
||||||
|
Subject: arm64:dts: sun50i-h5-nanopi-neo2 add regulator, led triger
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts | 23 +++++++++-
|
||||||
|
1 file changed, 22 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
|
||||||
|
index 05486cccee1c..39331229c315 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
|
||||||
|
@@ -25,12 +25,13 @@ leds {
|
||||||
|
led-0 {
|
||||||
|
label = "nanopi:green:pwr";
|
||||||
|
gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
- default-state = "on";
|
||||||
|
+ linux,default-trigger = "default-on";
|
||||||
|
};
|
||||||
|
|
||||||
|
led-1 {
|
||||||
|
label = "nanopi:blue:status";
|
||||||
|
gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -51,6 +52,22 @@ reg_vcc3v3: vcc3v3 {
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ vdd_cpux: gpio-regulator {
|
||||||
|
+ compatible = "regulator-gpio";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ regulator-type = "voltage";
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1100000>;
|
||||||
|
+ regulator-max-microvolt = <1100000>;
|
||||||
|
+ regulator-ramp-delay = <50>; /* 4ms */
|
||||||
|
+ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
|
||||||
|
+ gpios-states = <0x1>;
|
||||||
|
+ states = <1100000 0x0
|
||||||
|
+ 1100000 0x1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
reg_usb0_vbus: usb0-vbus {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "usb0-vbus";
|
||||||
|
@@ -62,6 +79,10 @@ reg_usb0_vbus: usb0-vbus {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <&vdd_cpux>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&ehci0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Tue, 27 Sep 2022 15:28:08 +0300
|
||||||
|
Subject: arm64: dts: sun50i-h5-nanopi-r1s-h5: add rtl8153 support
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts | 10 +++++++++-
|
||||||
|
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts
|
||||||
|
index a3e040da38a0..78c568cabcb2 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts
|
||||||
|
@@ -21,7 +21,8 @@ / {
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
ethernet0 = &emac;
|
||||||
|
- ethernet1 = &rtl8189etv;
|
||||||
|
+ ethernet1 = &rtl8153;
|
||||||
|
+ ethernet2 = &rtl8189etv;
|
||||||
|
serial0 = &uart0;
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -116,6 +117,13 @@ &cpu0 {
|
||||||
|
|
||||||
|
&ehci1 {
|
||||||
|
status = "okay";
|
||||||
|
+
|
||||||
|
+ rtl8153: device@1 {
|
||||||
|
+ compatible = "usbbda,8153";
|
||||||
|
+ reg = <1>;
|
||||||
|
+ realtek,led-data = <0x87>;
|
||||||
|
+ local-mac-address = [00 00 00 00 00 00];
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
&ehci2 {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 19:27:52 +0300
|
||||||
|
Subject: arm64:dts: sun50i-h5-orangepi-pc2 add spi flash
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts | 25 +++++++---
|
||||||
|
1 file changed, 19 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts
|
||||||
|
index df4d1ceea75e..880f9de8d22f 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts
|
||||||
|
@@ -178,15 +178,28 @@ &sound_hdmi {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
-&spi0 {
|
||||||
|
+&spi0 {
|
||||||
|
status = "okay";
|
||||||
|
-
|
||||||
|
- flash@0 {
|
||||||
|
+ spi-flash@0 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
- #size-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
compatible = "jedec,spi-nor";
|
||||||
|
- reg = <0>;
|
||||||
|
- spi-max-frequency = <40000000>;
|
||||||
|
+ reg = <0>; /* Chip select 0 */
|
||||||
|
+ spi-max-frequency = <10000000>;
|
||||||
|
+ status = "okay";
|
||||||
|
+ partitions {
|
||||||
|
+ compatible = "fixed-partitions";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <1>;
|
||||||
|
+ partition@0 {
|
||||||
|
+ label = "uboot";
|
||||||
|
+ reg = <0x0 0x100000>;
|
||||||
|
+ };
|
||||||
|
+ partition@100000 {
|
||||||
|
+ label = "env";
|
||||||
|
+ reg = <0x100000 0x100000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 19:34:31 +0300
|
||||||
|
Subject: arm64:dts: sun50i-h5-orangepi-prime add regulator
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts | 43 ++++++++--
|
||||||
|
1 file changed, 36 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
index 6e44f86a8f63..375572d2f9b5 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
@@ -8,11 +8,19 @@
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
+#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Xunlong Orange Pi Prime";
|
||||||
|
compatible = "xunlong,orangepi-prime", "allwinner,sun50i-h5";
|
||||||
|
|
||||||
|
+ reg_vcc3v3: vcc3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
aliases {
|
||||||
|
ethernet0 = &emac;
|
||||||
|
serial0 = &uart0;
|
||||||
|
@@ -68,13 +76,6 @@ reg_gmac_3v3: gmac-3v3 {
|
||||||
|
gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
- reg_vcc3v3: vcc3v3 {
|
||||||
|
- compatible = "regulator-fixed";
|
||||||
|
- regulator-name = "vcc3v3";
|
||||||
|
- regulator-min-microvolt = <3300000>;
|
||||||
|
- regulator-max-microvolt = <3300000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
reg_usb0_vbus: usb0-vbus {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "usb0-vbus";
|
||||||
|
@@ -91,6 +92,10 @@ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <®_vdd_cpux>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&codec {
|
||||||
|
allwinner,audio-routing =
|
||||||
|
"Line Out", "LINEOUT",
|
||||||
|
@@ -189,6 +194,30 @@ &ohci3 {
|
||||||
|
&sound_hdmi {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
+&r_i2c {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ reg_vdd_cpux: regulator@65 {
|
||||||
|
+ compatible = "silergy,sy8106a";
|
||||||
|
+ reg = <0x65>;
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ silergy,fixed-microvolt = <1200000>;
|
||||||
|
+ /*
|
||||||
|
+ * The datasheet uses 1.1V as the minimum value of VDD-CPUX,
|
||||||
|
+ * however both the Armbian DVFS table and the official one
|
||||||
|
+ * have operating points with voltage under 1.1V, and both
|
||||||
|
+ * DVFS table are known to work properly at the lowest
|
||||||
|
+ * operating point.
|
||||||
|
+ *
|
||||||
|
+ * Use 1.0V as the minimum voltage instead.
|
||||||
|
+ */
|
||||||
|
+ regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-max-microvolt = <1400000>;
|
||||||
|
+ regulator-ramp-delay = <200>;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
|
||||||
|
&uart0 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 7 Feb 2022 19:11:07 +0300
|
||||||
|
Subject: arm64:dts: sun50i-h5-orangepi-prime add rtl8723cs
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
index 8b92d5e77220..f430acd8558f 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
|
||||||
|
@@ -25,6 +25,7 @@ reg_vcc3v3: vcc3v3 {
|
||||||
|
aliases {
|
||||||
|
ethernet0 = &emac;
|
||||||
|
serial0 = &uart0;
|
||||||
|
+ ethernet1 = &rtl8723cs;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
@@ -174,6 +175,10 @@ &mmc1 {
|
||||||
|
bus-width = <4>;
|
||||||
|
non-removable;
|
||||||
|
status = "okay";
|
||||||
|
+
|
||||||
|
+ rtl8723cs: sdio_wifi@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
&ohci0 {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 19:49:11 +0300
|
||||||
|
Subject: arm64:dts: sun50i-h5-orangepi-zero-plus add regulator
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus.dts | 25 +++++++++-
|
||||||
|
1 file changed, 24 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus.dts
|
||||||
|
index 7ec5ac850a0d..dfa5fd2a766c 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus.dts
|
||||||
|
@@ -4,6 +4,7 @@
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
@@ -36,12 +37,13 @@ leds {
|
||||||
|
led-0 {
|
||||||
|
label = "orangepi:green:pwr";
|
||||||
|
gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
|
||||||
|
- default-state = "on";
|
||||||
|
+ linux,default-trigger = "default-on";
|
||||||
|
};
|
||||||
|
|
||||||
|
led-1 {
|
||||||
|
label = "orangepi:red:status";
|
||||||
|
gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -54,6 +56,27 @@ reg_gmac_3v3: gmac-3v3 {
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; /* PD6 */
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ reg_sy8113b: gpio-regulator {
|
||||||
|
+ compatible = "regulator-gpio";
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ regulator-type = "voltage";
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1100000>;
|
||||||
|
+ regulator-max-microvolt = <1300000>;
|
||||||
|
+ regulator-ramp-delay = <50>; /* 4ms */
|
||||||
|
+
|
||||||
|
+ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpios-states = <0x1>;
|
||||||
|
+ states = <1100000 0x0
|
||||||
|
+ 1300000 0x1>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <®_sy8113b>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&ehci0 {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Mon, 24 Jan 2022 19:54:04 +0300
|
||||||
|
Subject: arm64:dts: sun50i-h5-orangepi-zero-plus2 regulator-gpio fix
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts | 58 +++++++---
|
||||||
|
1 file changed, 45 insertions(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts
|
||||||
|
index 3e69ebde50d3..999fdcd96143 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts
|
||||||
|
@@ -4,6 +4,7 @@
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
#include "sun50i-h5.dtsi"
|
||||||
|
+#include "sun50i-h5-cpu-opp.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
@@ -30,33 +31,55 @@ hdmi_con_in: endpoint {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+ reg_vcc3v3: vcc3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc3v3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wifi_pwrseq: wifi_pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ reset-gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
|
||||||
|
+ post-power-on-delay-ms = <200>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
led-0 {
|
||||||
|
label = "orangepi:green:pwr";
|
||||||
|
- gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
- default-state = "on";
|
||||||
|
+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
|
||||||
|
+ linux,default-trigger = "default-on";
|
||||||
|
};
|
||||||
|
|
||||||
|
led-1 {
|
||||||
|
label = "orangepi:red:status";
|
||||||
|
- gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */
|
||||||
|
+ linux,default-trigger = "heartbeat";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
- reg_vcc3v3: vcc3v3 {
|
||||||
|
- compatible = "regulator-fixed";
|
||||||
|
- regulator-name = "vcc3v3";
|
||||||
|
- regulator-min-microvolt = <3300000>;
|
||||||
|
- regulator-max-microvolt = <3300000>;
|
||||||
|
+ reg_vdd_cpux: gpio-regulator {
|
||||||
|
+ compatible = "regulator-gpio";
|
||||||
|
+ regulator-name = "vdd-cpux";
|
||||||
|
+ regulator-type = "voltage";
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1108475>;
|
||||||
|
+ regulator-max-microvolt = <1307810>;
|
||||||
|
+ regulator-ramp-delay = <50>; /* 4ms */
|
||||||
|
+// enable-gpios = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
|
||||||
|
+ gpios = <&r_pio 0 6 0>; /* PL6 */
|
||||||
|
+ enable-active-high;
|
||||||
|
+ gpios-states = <0x1>;
|
||||||
|
+ states = <1108475 0x0
|
||||||
|
+ 1307810 0x1>;
|
||||||
|
};
|
||||||
|
+};
|
||||||
|
|
||||||
|
- wifi_pwrseq: wifi_pwrseq {
|
||||||
|
- compatible = "mmc-pwrseq-simple";
|
||||||
|
- reset-gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
|
||||||
|
- post-power-on-delay-ms = <200>;
|
||||||
|
- };
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <®_vdd_cpux>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&de {
|
||||||
|
@@ -149,3 +172,12 @@ &usb_otg {
|
||||||
|
&usbphy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+&usb_otg {
|
||||||
|
+ dr_mode = "otg";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbphy {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Sun, 23 Jan 2022 20:49:27 +0300
|
||||||
|
Subject: arm64:dts: sun50i-h6 Add r_uart uart2-3 pins
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 60 ++++++++--
|
||||||
|
1 file changed, 50 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
index 48ae4a362502..a039a90302c5 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||||
|
@@ -310,6 +310,17 @@ msgbox: mailbox@3003000 {
|
||||||
|
#mbox-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ gic: interrupt-controller@3021000 {
|
||||||
|
+ compatible = "arm,gic-400";
|
||||||
|
+ reg = <0x03021000 0x1000>,
|
||||||
|
+ <0x03022000 0x2000>,
|
||||||
|
+ <0x03024000 0x2000>,
|
||||||
|
+ <0x03026000 0x2000>;
|
||||||
|
+ interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||||
|
+ interrupt-controller;
|
||||||
|
+ #interrupt-cells = <3>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
sid: efuse@3006000 {
|
||||||
|
compatible = "allwinner,sun50i-h6-sid";
|
||||||
|
reg = <0x03006000 0x400>;
|
||||||
|
@@ -369,6 +380,7 @@ pio: pinctrl@300b000 {
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <3>;
|
||||||
|
|
||||||
|
+ /omit-if-no-ref/
|
||||||
|
ext_rgmii_pins: rgmii-pins {
|
||||||
|
pins = "PD0", "PD1", "PD2", "PD3", "PD4",
|
||||||
|
"PD5", "PD7", "PD8", "PD9", "PD10",
|
||||||
|
@@ -414,6 +426,7 @@ mmc1_pins: mmc1-pins {
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ /omit-if-no-ref/
|
||||||
|
mmc2_pins: mmc2-pins {
|
||||||
|
pins = "PC1", "PC4", "PC5", "PC6",
|
||||||
|
"PC7", "PC8", "PC9", "PC10",
|
||||||
|
@@ -467,17 +480,26 @@ uart1_rts_cts_pins: uart1-rts-cts-pins {
|
||||||
|
pins = "PG8", "PG9";
|
||||||
|
function = "uart1";
|
||||||
|
};
|
||||||
|
- };
|
||||||
|
|
||||||
|
- gic: interrupt-controller@3021000 {
|
||||||
|
- compatible = "arm,gic-400";
|
||||||
|
- reg = <0x03021000 0x1000>,
|
||||||
|
- <0x03022000 0x2000>,
|
||||||
|
- <0x03024000 0x2000>,
|
||||||
|
- <0x03026000 0x2000>;
|
||||||
|
- interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||||
|
- interrupt-controller;
|
||||||
|
- #interrupt-cells = <3>;
|
||||||
|
+ uart2_pins: uart2-pins {
|
||||||
|
+ pins = "PD19", "PD20";
|
||||||
|
+ function = "uart2";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ uart2_rts_cts_pins: uart2-rts-cts-pins {
|
||||||
|
+ pins = "PD21", "PD22";
|
||||||
|
+ function = "uart2";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ uart3_pins: uart3-pins {
|
||||||
|
+ pins = "PD23", "PD24";
|
||||||
|
+ function = "uart3";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ uart3_rts_cts_pins: uart3-rts-cts-pins {
|
||||||
|
+ pins = "PD25", "PD26";
|
||||||
|
+ function = "uart3";
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
iommu: iommu@30f0000 {
|
||||||
|
@@ -964,6 +986,19 @@ tcon_tv_out_tcon_top: endpoint@1 {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+ r_uart: serial@7080000 {
|
||||||
|
+ compatible = "snps,dw-apb-uart";
|
||||||
|
+ reg = <0x07080000 0x400>;
|
||||||
|
+ interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
+ reg-shift = <2>;
|
||||||
|
+ reg-io-width = <4>;
|
||||||
|
+ clocks = <&r_ccu CLK_R_APB2_UART>;
|
||||||
|
+ resets = <&r_ccu RST_R_APB2_UART>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&r_uart_pins>;
|
||||||
|
+ status = "disabled";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
rtc: rtc@7000000 {
|
||||||
|
compatible = "allwinner,sun50i-h6-rtc";
|
||||||
|
reg = <0x07000000 0x400>;
|
||||||
|
@@ -1029,6 +1064,11 @@ r_rsb_pins: r-rsb-pins {
|
||||||
|
pins = "PL0", "PL1";
|
||||||
|
function = "s_rsb";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+ r_uart_pins: r-uart-pins {
|
||||||
|
+ pins = "PL2", "PL3";
|
||||||
|
+ function = "s_uart";
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
r_ir: ir@7040000 {
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Wed, 2 Feb 2022 20:12:37 +0300
|
||||||
|
Subject: arm64:dts: sun50i-h6-orangepi-3 add r_uart aliase
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
|
||||||
|
index 500744cc1442..5e3405408244 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
|
||||||
|
@@ -15,6 +15,7 @@ / {
|
||||||
|
aliases {
|
||||||
|
serial0 = &uart0;
|
||||||
|
serial1 = &uart1;
|
||||||
|
+ serial9 = &r_uart;
|
||||||
|
ethernet0 = &emac;
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||||
|
Date: Tue, 25 Jan 2022 17:06:21 +0300
|
||||||
|
Subject: arm64:dts: sun50i-h6-orangepi-3 delete-node &spi0
|
||||||
|
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
|
||||||
|
index c84c78bb9f88..500744cc1442 100644
|
||||||
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
|
||||||
|
@@ -347,6 +347,8 @@ &sound_hdmi {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+/delete-node/ &spi0;
|
||||||
|
+
|
||||||
|
&uart0 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart0_ph_pins>;
|
||||||
|
--
|
||||||
|
Armbian
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user